add indexed flag to egg files
This commit is contained in:
parent
4ebc6b2750
commit
831e0a84e7
|
|
@ -58,5 +58,6 @@ egg-object-type-portal <Scalar> portal { 1 }
|
|||
egg-object-type-polylight <Scalar> polylight { 1 }
|
||||
egg-object-type-seq24 <Switch> { 1 } <Scalar> fps { 24 }
|
||||
egg-object-type-seq12 <Switch> { 1 } <Scalar> fps { 12 }
|
||||
egg-object-type-indexed <Scalar> indexed { 1 }
|
||||
|
||||
#end 20_panda.prc
|
||||
|
|
|
|||
|
|
@ -514,6 +514,53 @@ get_polylight_flag() const {
|
|||
return ((_flags2 & F2_polylight_flag) != 0);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: EggGroup::set_indexed_flag
|
||||
// Access: Public
|
||||
// Description: If this flag is true, geometry at this node and below
|
||||
// will be generated as indexed geometry.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void EggGroup::
|
||||
set_indexed_flag(bool flag) {
|
||||
if (flag) {
|
||||
_flags2 |= F2_indexed_flag;
|
||||
} else {
|
||||
_flags2 &= ~F2_indexed_flag;
|
||||
}
|
||||
_flags2 |= F2_has_indexed_flag;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: EggGroup::clear_indexed_flag
|
||||
// Access: Public
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void EggGroup::
|
||||
clear_indexed_flag() {
|
||||
_flags2 &= ~(F2_indexed_flag | F2_has_indexed_flag);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: EggGroup::has_indexed_flag
|
||||
// Access: Public
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE bool EggGroup::
|
||||
has_indexed_flag() const {
|
||||
return (_flags2 & F2_has_indexed_flag) != 0;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: EggGroup::get_indexed_flag
|
||||
// Access: Public
|
||||
// Description:
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE bool EggGroup::
|
||||
get_indexed_flag() const {
|
||||
nassertr(has_indexed_flag(), false);
|
||||
return ((_flags2 & F2_indexed_flag) != 0);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: EggGroup::set_collide_mask
|
||||
// Access: Public
|
||||
|
|
|
|||
|
|
@ -210,11 +210,16 @@ write(ostream &out, int indent_level) const {
|
|||
write_render_mode(out, indent_level + 2);
|
||||
|
||||
if (get_portal_flag()) {
|
||||
indent(out, indent_level) << "<Portal> { 1 }\n";
|
||||
indent(out, indent_level) << "<Scalar> portal { 1 }\n";
|
||||
}
|
||||
|
||||
if (get_polylight_flag()) {
|
||||
indent(out, indent_level) << "<Polylight> { 1 }\n";
|
||||
indent(out, indent_level) << "<Scalar> polylight { 1 }\n";
|
||||
}
|
||||
|
||||
if (has_indexed_flag()) {
|
||||
indent(out, indent_level)
|
||||
<< "<Scalar> indexed { " << get_indexed_flag() << " }\n";
|
||||
}
|
||||
|
||||
// We have to write the children nodes before we write the vertex
|
||||
|
|
@ -514,6 +519,25 @@ determine_bin() {
|
|||
return EggGroupNode::determine_bin();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: EggGroup::determine_indexed
|
||||
// Access: Public, Virtual
|
||||
// Description: Walks back up the hierarchy, looking for an EggGroup
|
||||
// at this level or above that has the "indexed" scalar
|
||||
// set. Returns the value of the indexed scalar if it
|
||||
// is found, or false if it is not.
|
||||
//
|
||||
// In other words, returns true if the "indexed" flag is
|
||||
// in effect for the indicated node, false otherwise.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
bool EggGroup::
|
||||
determine_indexed() {
|
||||
if (has_indexed_flag()) {
|
||||
return get_indexed_flag();
|
||||
}
|
||||
return EggGroupNode::determine_indexed();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: EggGroup::ref_vertex
|
||||
// Access: Public
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ PUBLISHED:
|
|||
virtual EggRenderMode *determine_visibility_mode();
|
||||
virtual EggRenderMode *determine_draw_order();
|
||||
virtual EggRenderMode *determine_bin();
|
||||
virtual bool determine_indexed();
|
||||
|
||||
void set_group_type(GroupType type);
|
||||
INLINE GroupType get_group_type() const;
|
||||
|
|
@ -180,6 +181,11 @@ PUBLISHED:
|
|||
INLINE void set_polylight_flag(bool flag);
|
||||
INLINE bool get_polylight_flag() const;
|
||||
|
||||
INLINE void set_indexed_flag(bool flag);
|
||||
INLINE void clear_indexed_flag();
|
||||
INLINE bool has_indexed_flag() const;
|
||||
INLINE bool get_indexed_flag() const;
|
||||
|
||||
INLINE void set_collide_mask(CollideMask mask);
|
||||
INLINE void clear_collide_mask();
|
||||
INLINE bool has_collide_mask() const;
|
||||
|
|
@ -272,6 +278,8 @@ private:
|
|||
F2_dcs_type = 0x00000030,
|
||||
F2_portal_flag = 0x00000040,
|
||||
F2_polylight_flag = 0x00000080,
|
||||
F2_indexed_flag = 0x00000100,
|
||||
F2_has_indexed_flag = 0x00000200,
|
||||
};
|
||||
|
||||
int _flags;
|
||||
|
|
|
|||
|
|
@ -177,6 +177,26 @@ determine_bin() {
|
|||
return _parent->determine_bin();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: EggNode::determine_indexed
|
||||
// Access: Public, Virtual
|
||||
// Description: Walks back up the hierarchy, looking for an EggGroup
|
||||
// at this level or above that has the "indexed" scalar
|
||||
// set. Returns the value of the indexed scalar if it
|
||||
// is found, or false if it is not.
|
||||
//
|
||||
// In other words, returns true if the "indexed" flag is
|
||||
// in effect for the indicated node, false otherwise.
|
||||
////////////////////////////////////////////////////////////////////
|
||||
bool EggNode::
|
||||
determine_indexed() {
|
||||
if (_parent == (EggGroupNode *)NULL) {
|
||||
// Too bad; we're done.
|
||||
return false;
|
||||
}
|
||||
return _parent->determine_indexed();
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: EggNode::parse_egg
|
||||
|
|
|
|||
|
|
@ -79,6 +79,7 @@ PUBLISHED:
|
|||
virtual EggRenderMode *determine_visibility_mode();
|
||||
virtual EggRenderMode *determine_draw_order();
|
||||
virtual EggRenderMode *determine_bin();
|
||||
virtual bool determine_indexed();
|
||||
|
||||
virtual void write(ostream &out, int indent_level) const=0;
|
||||
bool parse_egg(const string &egg_syntax);
|
||||
|
|
|
|||
|
|
@ -433,24 +433,24 @@ static const short yyrline[] =
|
|||
805, 817, 817, 862, 867, 871, 875, 879, 879, 894,
|
||||
895, 896, 904, 922, 927, 935, 952, 957, 965, 982,
|
||||
987, 995, 1012, 1012, 1032, 1032, 1053, 1053, 1074, 1076,
|
||||
1144, 1156, 1161, 1168, 1174, 1187, 1194, 1207, 1213, 1219,
|
||||
1225, 1230, 1236, 1237, 1238, 1239, 1252, 1282, 1284, 1305,
|
||||
1305, 1321, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1332,
|
||||
1338, 1344, 1350, 1356, 1362, 1366, 1372, 1376, 1378, 1399,
|
||||
1399, 1418, 1420, 1421, 1422, 1423, 1426, 1432, 1438, 1444,
|
||||
1447, 1449, 1467, 1500, 1505, 1529, 1541, 1547, 1563, 1563,
|
||||
1582, 1582, 1601, 1601, 1620, 1620, 1639, 1639, 1659, 1661,
|
||||
1662, 1663, 1664, 1665, 1666, 1667, 1668, 1726, 1728, 1729,
|
||||
1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1744,
|
||||
1745, 1808, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1817,
|
||||
1818, 1819, 1887, 1904, 1944, 1961, 1966, 1974, 1991, 1996,
|
||||
2004, 2021, 2037, 2068, 2086, 2106, 2126, 2132, 2142, 2149,
|
||||
2167, 2183, 2204, 2204, 2226, 2226, 2248, 2250, 2254, 2258,
|
||||
2262, 2266, 2280, 2280, 2301, 2303, 2315, 2328, 2328, 2349,
|
||||
2351, 2368, 2381, 2381, 2402, 2404, 2419, 2433, 2438, 2451,
|
||||
2456, 2469, 2490, 2511, 2535, 2541, 2552, 2564, 2570, 2580,
|
||||
2585, 2598, 2603, 2607, 2619, 2624, 2639, 2644, 2657, 2659,
|
||||
2673, 2680, 2686, 2702, 2711, 2717
|
||||
1146, 1158, 1163, 1170, 1176, 1189, 1196, 1209, 1215, 1221,
|
||||
1227, 1232, 1238, 1239, 1240, 1241, 1254, 1284, 1286, 1307,
|
||||
1307, 1323, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1334,
|
||||
1340, 1346, 1352, 1358, 1364, 1368, 1374, 1378, 1380, 1401,
|
||||
1401, 1420, 1422, 1423, 1424, 1425, 1428, 1434, 1440, 1446,
|
||||
1449, 1451, 1469, 1502, 1507, 1531, 1543, 1549, 1565, 1565,
|
||||
1584, 1584, 1603, 1603, 1622, 1622, 1641, 1641, 1661, 1663,
|
||||
1664, 1665, 1666, 1667, 1668, 1669, 1670, 1728, 1730, 1731,
|
||||
1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1746,
|
||||
1747, 1810, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819,
|
||||
1820, 1821, 1889, 1906, 1946, 1963, 1968, 1976, 1993, 1998,
|
||||
2006, 2023, 2039, 2070, 2088, 2108, 2128, 2134, 2144, 2151,
|
||||
2169, 2185, 2206, 2206, 2228, 2228, 2250, 2252, 2256, 2260,
|
||||
2264, 2268, 2282, 2282, 2303, 2305, 2317, 2330, 2330, 2351,
|
||||
2353, 2370, 2383, 2383, 2404, 2406, 2421, 2435, 2440, 2453,
|
||||
2458, 2471, 2492, 2513, 2537, 2543, 2554, 2566, 2572, 2582,
|
||||
2587, 2600, 2605, 2609, 2621, 2626, 2641, 2646, 2659, 2661,
|
||||
2675, 2682, 2688, 2704, 2713, 2719
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
@ -2496,13 +2496,15 @@ case 69:
|
|||
group->set_portal_flag(value != 0);
|
||||
} else if (cmp_nocase_uh(name, "polylight") == 0) {
|
||||
group->set_polylight_flag(value != 0);
|
||||
} else if (cmp_nocase_uh(name, "indexed") == 0) {
|
||||
group->set_indexed_flag(value != 0);
|
||||
} else {
|
||||
eggyywarning("Unknown group scalar " + name);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 70:
|
||||
#line 1145 "parser.yxx"
|
||||
#line 1147 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
string strval = yyvsp[-1]._string;
|
||||
|
|
@ -2516,14 +2518,14 @@ case 70:
|
|||
}
|
||||
break;
|
||||
case 71:
|
||||
#line 1157 "parser.yxx"
|
||||
#line 1159 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
group->set_billboard_center(LPoint3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number));
|
||||
}
|
||||
break;
|
||||
case 72:
|
||||
#line 1162 "parser.yxx"
|
||||
#line 1164 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
string name = yyvsp[-4]._string;
|
||||
|
|
@ -2532,7 +2534,7 @@ case 72:
|
|||
}
|
||||
break;
|
||||
case 73:
|
||||
#line 1169 "parser.yxx"
|
||||
#line 1171 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
int value = (int)yyvsp[-1]._number;
|
||||
|
|
@ -2540,7 +2542,7 @@ case 73:
|
|||
}
|
||||
break;
|
||||
case 74:
|
||||
#line 1175 "parser.yxx"
|
||||
#line 1177 "parser.yxx"
|
||||
{
|
||||
// The special flavor of DCS, with { sync } or { nosync }.
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
|
|
@ -2555,7 +2557,7 @@ case 74:
|
|||
}
|
||||
break;
|
||||
case 75:
|
||||
#line 1188 "parser.yxx"
|
||||
#line 1190 "parser.yxx"
|
||||
{
|
||||
// The traditional flavor of DART, with { 0 } or { 1 }.
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
|
|
@ -2564,7 +2566,7 @@ case 75:
|
|||
}
|
||||
break;
|
||||
case 76:
|
||||
#line 1195 "parser.yxx"
|
||||
#line 1197 "parser.yxx"
|
||||
{
|
||||
// The special flavor of DART, with { sync } or { nosync }.
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
|
|
@ -2579,7 +2581,7 @@ case 76:
|
|||
}
|
||||
break;
|
||||
case 77:
|
||||
#line 1208 "parser.yxx"
|
||||
#line 1210 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
int value = (int)yyvsp[-1]._number;
|
||||
|
|
@ -2587,7 +2589,7 @@ case 77:
|
|||
}
|
||||
break;
|
||||
case 78:
|
||||
#line 1214 "parser.yxx"
|
||||
#line 1216 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
string type = yyvsp[-1]._string;
|
||||
|
|
@ -2595,7 +2597,7 @@ case 78:
|
|||
}
|
||||
break;
|
||||
case 79:
|
||||
#line 1220 "parser.yxx"
|
||||
#line 1222 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
int value = (int)yyvsp[-1]._number;
|
||||
|
|
@ -2603,14 +2605,14 @@ case 79:
|
|||
}
|
||||
break;
|
||||
case 80:
|
||||
#line 1226 "parser.yxx"
|
||||
#line 1228 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
group->set_tag(yyvsp[-3]._string, yyvsp[-1]._string);
|
||||
}
|
||||
break;
|
||||
case 81:
|
||||
#line 1231 "parser.yxx"
|
||||
#line 1233 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
int value = (int)yyvsp[-1]._number;
|
||||
|
|
@ -2618,13 +2620,13 @@ case 81:
|
|||
}
|
||||
break;
|
||||
case 85:
|
||||
#line 1240 "parser.yxx"
|
||||
#line 1242 "parser.yxx"
|
||||
{
|
||||
DCAST(EggGroup, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg));
|
||||
}
|
||||
break;
|
||||
case 86:
|
||||
#line 1254 "parser.yxx"
|
||||
#line 1256 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
string strval = yyvsp[0]._string;
|
||||
|
|
@ -2646,7 +2648,7 @@ case 86:
|
|||
}
|
||||
break;
|
||||
case 88:
|
||||
#line 1285 "parser.yxx"
|
||||
#line 1287 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
string strval = yyvsp[0]._string;
|
||||
|
|
@ -2660,55 +2662,55 @@ case 88:
|
|||
}
|
||||
break;
|
||||
case 89:
|
||||
#line 1307 "parser.yxx"
|
||||
#line 1309 "parser.yxx"
|
||||
{
|
||||
DCAST(EggGroup, egg_stack.back())->clear_transform();
|
||||
}
|
||||
break;
|
||||
case 99:
|
||||
#line 1333 "parser.yxx"
|
||||
#line 1335 "parser.yxx"
|
||||
{
|
||||
DCAST(EggGroup, egg_stack.back())->add_translate(LVector3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number));
|
||||
}
|
||||
break;
|
||||
case 100:
|
||||
#line 1339 "parser.yxx"
|
||||
#line 1341 "parser.yxx"
|
||||
{
|
||||
DCAST(EggGroup, egg_stack.back())->add_rotx(yyvsp[-1]._number);
|
||||
}
|
||||
break;
|
||||
case 101:
|
||||
#line 1345 "parser.yxx"
|
||||
#line 1347 "parser.yxx"
|
||||
{
|
||||
DCAST(EggGroup, egg_stack.back())->add_roty(yyvsp[-1]._number);
|
||||
}
|
||||
break;
|
||||
case 102:
|
||||
#line 1351 "parser.yxx"
|
||||
#line 1353 "parser.yxx"
|
||||
{
|
||||
DCAST(EggGroup, egg_stack.back())->add_rotz(yyvsp[-1]._number);
|
||||
}
|
||||
break;
|
||||
case 103:
|
||||
#line 1357 "parser.yxx"
|
||||
#line 1359 "parser.yxx"
|
||||
{
|
||||
DCAST(EggGroup, egg_stack.back())->add_rotate(yyvsp[-4]._number, LVector3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number));
|
||||
}
|
||||
break;
|
||||
case 104:
|
||||
#line 1363 "parser.yxx"
|
||||
#line 1365 "parser.yxx"
|
||||
{
|
||||
DCAST(EggGroup, egg_stack.back())->add_scale(LVecBase3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number));
|
||||
}
|
||||
break;
|
||||
case 105:
|
||||
#line 1367 "parser.yxx"
|
||||
#line 1369 "parser.yxx"
|
||||
{
|
||||
DCAST(EggGroup, egg_stack.back())->add_uniform_scale(yyvsp[-1]._number);
|
||||
}
|
||||
break;
|
||||
case 108:
|
||||
#line 1382 "parser.yxx"
|
||||
#line 1384 "parser.yxx"
|
||||
{
|
||||
DCAST(EggGroup, egg_stack.back())->add_matrix
|
||||
(LMatrix4d(yyvsp[-15]._number, yyvsp[-14]._number, yyvsp[-13]._number, yyvsp[-12]._number,
|
||||
|
|
@ -2718,37 +2720,37 @@ case 108:
|
|||
}
|
||||
break;
|
||||
case 109:
|
||||
#line 1401 "parser.yxx"
|
||||
#line 1403 "parser.yxx"
|
||||
{
|
||||
matrix_2d = LMatrix3d::ident_mat();
|
||||
}
|
||||
break;
|
||||
case 110:
|
||||
#line 1405 "parser.yxx"
|
||||
#line 1407 "parser.yxx"
|
||||
{
|
||||
DCAST(EggTexture, egg_stack.back())->set_transform(matrix_2d);
|
||||
}
|
||||
break;
|
||||
case 116:
|
||||
#line 1427 "parser.yxx"
|
||||
#line 1429 "parser.yxx"
|
||||
{
|
||||
matrix_2d *= LMatrix3d::translate_mat(yyvsp[-2]._number, yyvsp[-1]._number);
|
||||
}
|
||||
break;
|
||||
case 117:
|
||||
#line 1433 "parser.yxx"
|
||||
#line 1435 "parser.yxx"
|
||||
{
|
||||
matrix_2d *= LMatrix3d::rotate_mat(yyvsp[-1]._number);
|
||||
}
|
||||
break;
|
||||
case 118:
|
||||
#line 1439 "parser.yxx"
|
||||
#line 1441 "parser.yxx"
|
||||
{
|
||||
matrix_2d *= LMatrix3d::scale_mat(yyvsp[-2]._number, yyvsp[-1]._number);
|
||||
}
|
||||
break;
|
||||
case 121:
|
||||
#line 1452 "parser.yxx"
|
||||
#line 1454 "parser.yxx"
|
||||
{
|
||||
matrix_2d *= LMatrix3d(yyvsp[-8]._number, yyvsp[-7]._number, yyvsp[-6]._number,
|
||||
yyvsp[-5]._number, yyvsp[-4]._number, yyvsp[-3]._number,
|
||||
|
|
@ -2756,7 +2758,7 @@ case 121:
|
|||
}
|
||||
break;
|
||||
case 122:
|
||||
#line 1469 "parser.yxx"
|
||||
#line 1471 "parser.yxx"
|
||||
{
|
||||
if (yyvsp[-2]._egg != (EggVertexPool *)NULL) {
|
||||
EggVertexPool *pool = DCAST(EggVertexPool, yyvsp[-2]._egg);
|
||||
|
|
@ -2780,13 +2782,13 @@ case 122:
|
|||
}
|
||||
break;
|
||||
case 123:
|
||||
#line 1502 "parser.yxx"
|
||||
#line 1504 "parser.yxx"
|
||||
{
|
||||
yyval._number = 1.0;
|
||||
}
|
||||
break;
|
||||
case 124:
|
||||
#line 1506 "parser.yxx"
|
||||
#line 1508 "parser.yxx"
|
||||
{
|
||||
string name = yyvsp[-3]._string;
|
||||
double value = yyvsp[-1]._number;
|
||||
|
|
@ -2802,86 +2804,86 @@ case 124:
|
|||
}
|
||||
break;
|
||||
case 126:
|
||||
#line 1543 "parser.yxx"
|
||||
#line 1545 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
group->set_lod(EggSwitchConditionDistance(yyvsp[-8]._number, yyvsp[-7]._number, LPoint3d(yyvsp[-4]._number, yyvsp[-3]._number, yyvsp[-2]._number)));
|
||||
}
|
||||
break;
|
||||
case 127:
|
||||
#line 1548 "parser.yxx"
|
||||
#line 1550 "parser.yxx"
|
||||
{
|
||||
EggGroup *group = DCAST(EggGroup, egg_stack.back());
|
||||
group->set_lod(EggSwitchConditionDistance(yyvsp[-9]._number, yyvsp[-8]._number, LPoint3d(yyvsp[-4]._number, yyvsp[-3]._number, yyvsp[-2]._number), yyvsp[-7]._number));
|
||||
}
|
||||
break;
|
||||
case 128:
|
||||
#line 1565 "parser.yxx"
|
||||
#line 1567 "parser.yxx"
|
||||
{
|
||||
egg_stack.push_back(new EggPolygon(yyvsp[0]._string));
|
||||
}
|
||||
break;
|
||||
case 129:
|
||||
#line 1569 "parser.yxx"
|
||||
#line 1571 "parser.yxx"
|
||||
{
|
||||
yyval._egg = egg_stack.back();
|
||||
egg_stack.pop_back();
|
||||
}
|
||||
break;
|
||||
case 130:
|
||||
#line 1584 "parser.yxx"
|
||||
#line 1586 "parser.yxx"
|
||||
{
|
||||
egg_stack.push_back(new EggPoint(yyvsp[0]._string));
|
||||
}
|
||||
break;
|
||||
case 131:
|
||||
#line 1588 "parser.yxx"
|
||||
#line 1590 "parser.yxx"
|
||||
{
|
||||
yyval._egg = egg_stack.back();
|
||||
egg_stack.pop_back();
|
||||
}
|
||||
break;
|
||||
case 132:
|
||||
#line 1603 "parser.yxx"
|
||||
#line 1605 "parser.yxx"
|
||||
{
|
||||
egg_stack.push_back(new EggLine(yyvsp[0]._string));
|
||||
}
|
||||
break;
|
||||
case 133:
|
||||
#line 1607 "parser.yxx"
|
||||
#line 1609 "parser.yxx"
|
||||
{
|
||||
yyval._egg = egg_stack.back();
|
||||
egg_stack.pop_back();
|
||||
}
|
||||
break;
|
||||
case 134:
|
||||
#line 1622 "parser.yxx"
|
||||
#line 1624 "parser.yxx"
|
||||
{
|
||||
egg_stack.push_back(new EggNurbsSurface(yyvsp[0]._string));
|
||||
}
|
||||
break;
|
||||
case 135:
|
||||
#line 1626 "parser.yxx"
|
||||
#line 1628 "parser.yxx"
|
||||
{
|
||||
yyval._egg = egg_stack.back();
|
||||
egg_stack.pop_back();
|
||||
}
|
||||
break;
|
||||
case 136:
|
||||
#line 1641 "parser.yxx"
|
||||
#line 1643 "parser.yxx"
|
||||
{
|
||||
egg_stack.push_back(new EggNurbsCurve(yyvsp[0]._string));
|
||||
}
|
||||
break;
|
||||
case 137:
|
||||
#line 1645 "parser.yxx"
|
||||
#line 1647 "parser.yxx"
|
||||
{
|
||||
yyval._egg = egg_stack.back();
|
||||
egg_stack.pop_back();
|
||||
}
|
||||
break;
|
||||
case 146:
|
||||
#line 1669 "parser.yxx"
|
||||
#line 1671 "parser.yxx"
|
||||
{
|
||||
EggPrimitive *primitive = DCAST(EggPrimitive, egg_stack.back());
|
||||
string name = yyvsp[-3]._string;
|
||||
|
|
@ -2932,7 +2934,7 @@ case 146:
|
|||
}
|
||||
break;
|
||||
case 158:
|
||||
#line 1739 "parser.yxx"
|
||||
#line 1741 "parser.yxx"
|
||||
{
|
||||
EggNurbsCurve *curve = DCAST(EggNurbsCurve, yyvsp[0]._egg);
|
||||
EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back());
|
||||
|
|
@ -2940,7 +2942,7 @@ case 158:
|
|||
}
|
||||
break;
|
||||
case 160:
|
||||
#line 1746 "parser.yxx"
|
||||
#line 1748 "parser.yxx"
|
||||
{
|
||||
EggNurbsSurface *primitive = DCAST(EggNurbsSurface, egg_stack.back());
|
||||
string name = yyvsp[-3]._string;
|
||||
|
|
@ -2995,7 +2997,7 @@ case 160:
|
|||
}
|
||||
break;
|
||||
case 171:
|
||||
#line 1820 "parser.yxx"
|
||||
#line 1822 "parser.yxx"
|
||||
{
|
||||
EggNurbsCurve *primitive = DCAST(EggNurbsCurve, egg_stack.back());
|
||||
string name = yyvsp[-3]._string;
|
||||
|
|
@ -3056,7 +3058,7 @@ case 171:
|
|||
}
|
||||
break;
|
||||
case 172:
|
||||
#line 1889 "parser.yxx"
|
||||
#line 1891 "parser.yxx"
|
||||
{
|
||||
if (yyvsp[0]._egg != (EggTexture *)NULL) {
|
||||
EggTexture *texture = DCAST(EggTexture, yyvsp[0]._egg);
|
||||
|
|
@ -3065,7 +3067,7 @@ case 172:
|
|||
}
|
||||
break;
|
||||
case 173:
|
||||
#line 1906 "parser.yxx"
|
||||
#line 1908 "parser.yxx"
|
||||
{
|
||||
EggTexture *texture = NULL;
|
||||
|
||||
|
|
@ -3097,7 +3099,7 @@ case 173:
|
|||
}
|
||||
break;
|
||||
case 174:
|
||||
#line 1946 "parser.yxx"
|
||||
#line 1948 "parser.yxx"
|
||||
{
|
||||
if (yyvsp[0]._egg != (EggMaterial *)NULL) {
|
||||
EggMaterial *material = DCAST(EggMaterial, yyvsp[0]._egg);
|
||||
|
|
@ -3106,13 +3108,13 @@ case 174:
|
|||
}
|
||||
break;
|
||||
case 175:
|
||||
#line 1963 "parser.yxx"
|
||||
#line 1965 "parser.yxx"
|
||||
{
|
||||
DCAST(EggPrimitive, egg_stack.back())->set_normal(Normald(yyvsp[-2]._number, yyvsp[-1]._number, yyvsp[0]._number));
|
||||
}
|
||||
break;
|
||||
case 176:
|
||||
#line 1967 "parser.yxx"
|
||||
#line 1969 "parser.yxx"
|
||||
{
|
||||
bool inserted = DCAST(EggPrimitive, egg_stack.back())->_dnormals.
|
||||
insert(EggMorphNormal(yyvsp[-5]._string, LVector3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number))).second;
|
||||
|
|
@ -3122,7 +3124,7 @@ case 176:
|
|||
}
|
||||
break;
|
||||
case 177:
|
||||
#line 1975 "parser.yxx"
|
||||
#line 1977 "parser.yxx"
|
||||
{
|
||||
bool inserted = DCAST(EggPrimitive, egg_stack.back())->_dnormals.
|
||||
insert(EggMorphNormal(yyvsp[-4]._string, LVector3d(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number))).second;
|
||||
|
|
@ -3132,13 +3134,13 @@ case 177:
|
|||
}
|
||||
break;
|
||||
case 178:
|
||||
#line 1993 "parser.yxx"
|
||||
#line 1995 "parser.yxx"
|
||||
{
|
||||
DCAST(EggPrimitive, egg_stack.back())->set_color(Colorf(yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number, yyvsp[0]._number));
|
||||
}
|
||||
break;
|
||||
case 179:
|
||||
#line 1997 "parser.yxx"
|
||||
#line 1999 "parser.yxx"
|
||||
{
|
||||
bool inserted = DCAST(EggPrimitive, egg_stack.back())->_drgbas.
|
||||
insert(EggMorphColor(yyvsp[-6]._string, LVector4f(yyvsp[-4]._number, yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number))).second;
|
||||
|
|
@ -3148,7 +3150,7 @@ case 179:
|
|||
}
|
||||
break;
|
||||
case 180:
|
||||
#line 2005 "parser.yxx"
|
||||
#line 2007 "parser.yxx"
|
||||
{
|
||||
bool inserted = DCAST(EggPrimitive, egg_stack.back())->_drgbas.
|
||||
insert(EggMorphColor(yyvsp[-5]._string, LVector4f(yyvsp[-4]._number, yyvsp[-3]._number, yyvsp[-2]._number, yyvsp[-1]._number))).second;
|
||||
|
|
@ -3158,7 +3160,7 @@ case 180:
|
|||
}
|
||||
break;
|
||||
case 181:
|
||||
#line 2023 "parser.yxx"
|
||||
#line 2025 "parser.yxx"
|
||||
{
|
||||
EggPrimitive *primitive = DCAST(EggPrimitive, egg_stack.back());
|
||||
int value = (int)yyvsp[0]._number;
|
||||
|
|
@ -3166,7 +3168,7 @@ case 181:
|
|||
}
|
||||
break;
|
||||
case 182:
|
||||
#line 2039 "parser.yxx"
|
||||
#line 2041 "parser.yxx"
|
||||
{
|
||||
if (yyvsp[-2]._egg != (EggVertexPool *)NULL) {
|
||||
EggVertexPool *pool = DCAST(EggVertexPool, yyvsp[-2]._egg);
|
||||
|
|
@ -3189,7 +3191,7 @@ case 182:
|
|||
}
|
||||
break;
|
||||
case 183:
|
||||
#line 2070 "parser.yxx"
|
||||
#line 2072 "parser.yxx"
|
||||
{
|
||||
EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back());
|
||||
int u_order = (int)yyvsp[-1]._number;
|
||||
|
|
@ -3199,7 +3201,7 @@ case 183:
|
|||
}
|
||||
break;
|
||||
case 184:
|
||||
#line 2088 "parser.yxx"
|
||||
#line 2090 "parser.yxx"
|
||||
{
|
||||
EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back());
|
||||
PTA_double nums = yyvsp[0]._number_list;
|
||||
|
|
@ -3211,7 +3213,7 @@ case 184:
|
|||
}
|
||||
break;
|
||||
case 185:
|
||||
#line 2108 "parser.yxx"
|
||||
#line 2110 "parser.yxx"
|
||||
{
|
||||
EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back());
|
||||
PTA_double nums = yyvsp[0]._number_list;
|
||||
|
|
@ -3223,14 +3225,14 @@ case 185:
|
|||
}
|
||||
break;
|
||||
case 186:
|
||||
#line 2128 "parser.yxx"
|
||||
#line 2130 "parser.yxx"
|
||||
{
|
||||
EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back());
|
||||
nurbs->_trims.push_back(EggNurbsSurface::Trim());
|
||||
}
|
||||
break;
|
||||
case 188:
|
||||
#line 2144 "parser.yxx"
|
||||
#line 2146 "parser.yxx"
|
||||
{
|
||||
EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back());
|
||||
nassertr(!nurbs->_trims.empty(), 0);
|
||||
|
|
@ -3238,7 +3240,7 @@ case 188:
|
|||
}
|
||||
break;
|
||||
case 189:
|
||||
#line 2150 "parser.yxx"
|
||||
#line 2152 "parser.yxx"
|
||||
{
|
||||
EggNurbsSurface *nurbs = DCAST(EggNurbsSurface, egg_stack.back());
|
||||
nassertr(!nurbs->_trims.empty(), 0);
|
||||
|
|
@ -3248,7 +3250,7 @@ case 189:
|
|||
}
|
||||
break;
|
||||
case 190:
|
||||
#line 2169 "parser.yxx"
|
||||
#line 2171 "parser.yxx"
|
||||
{
|
||||
EggNurbsCurve *nurbs = DCAST(EggNurbsCurve, egg_stack.back());
|
||||
int order = (int)yyvsp[0]._number;
|
||||
|
|
@ -3256,7 +3258,7 @@ case 190:
|
|||
}
|
||||
break;
|
||||
case 191:
|
||||
#line 2185 "parser.yxx"
|
||||
#line 2187 "parser.yxx"
|
||||
{
|
||||
EggNurbsCurve *nurbs = DCAST(EggNurbsCurve, egg_stack.back());
|
||||
PTA_double nums = yyvsp[0]._number_list;
|
||||
|
|
@ -3268,7 +3270,7 @@ case 191:
|
|||
}
|
||||
break;
|
||||
case 192:
|
||||
#line 2206 "parser.yxx"
|
||||
#line 2208 "parser.yxx"
|
||||
{
|
||||
EggTable *table = new EggTable(yyvsp[0]._string);
|
||||
table->set_table_type(EggTable::TT_table);
|
||||
|
|
@ -3276,14 +3278,14 @@ case 192:
|
|||
}
|
||||
break;
|
||||
case 193:
|
||||
#line 2212 "parser.yxx"
|
||||
#line 2214 "parser.yxx"
|
||||
{
|
||||
yyval._egg = egg_stack.back();
|
||||
egg_stack.pop_back();
|
||||
}
|
||||
break;
|
||||
case 194:
|
||||
#line 2228 "parser.yxx"
|
||||
#line 2230 "parser.yxx"
|
||||
{
|
||||
EggTable *table = new EggTable(yyvsp[0]._string);
|
||||
table->set_table_type(EggTable::TT_bundle);
|
||||
|
|
@ -3291,58 +3293,58 @@ case 194:
|
|||
}
|
||||
break;
|
||||
case 195:
|
||||
#line 2234 "parser.yxx"
|
||||
#line 2236 "parser.yxx"
|
||||
{
|
||||
yyval._egg = egg_stack.back();
|
||||
egg_stack.pop_back();
|
||||
}
|
||||
break;
|
||||
case 197:
|
||||
#line 2251 "parser.yxx"
|
||||
#line 2253 "parser.yxx"
|
||||
{
|
||||
DCAST(EggTable, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg));
|
||||
}
|
||||
break;
|
||||
case 198:
|
||||
#line 2255 "parser.yxx"
|
||||
#line 2257 "parser.yxx"
|
||||
{
|
||||
DCAST(EggTable, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg));
|
||||
}
|
||||
break;
|
||||
case 199:
|
||||
#line 2259 "parser.yxx"
|
||||
#line 2261 "parser.yxx"
|
||||
{
|
||||
DCAST(EggTable, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg));
|
||||
}
|
||||
break;
|
||||
case 200:
|
||||
#line 2263 "parser.yxx"
|
||||
#line 2265 "parser.yxx"
|
||||
{
|
||||
DCAST(EggTable, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg));
|
||||
}
|
||||
break;
|
||||
case 201:
|
||||
#line 2267 "parser.yxx"
|
||||
#line 2269 "parser.yxx"
|
||||
{
|
||||
DCAST(EggTable, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg));
|
||||
}
|
||||
break;
|
||||
case 202:
|
||||
#line 2282 "parser.yxx"
|
||||
#line 2284 "parser.yxx"
|
||||
{
|
||||
EggSAnimData *anim_data = new EggSAnimData(yyvsp[0]._string);
|
||||
egg_stack.push_back(anim_data);
|
||||
}
|
||||
break;
|
||||
case 203:
|
||||
#line 2287 "parser.yxx"
|
||||
#line 2289 "parser.yxx"
|
||||
{
|
||||
yyval._egg = egg_stack.back();
|
||||
egg_stack.pop_back();
|
||||
}
|
||||
break;
|
||||
case 205:
|
||||
#line 2304 "parser.yxx"
|
||||
#line 2306 "parser.yxx"
|
||||
{
|
||||
EggSAnimData *anim_data = DCAST(EggSAnimData, egg_stack.back());
|
||||
string name = yyvsp[-3]._string;
|
||||
|
|
@ -3356,27 +3358,27 @@ case 205:
|
|||
}
|
||||
break;
|
||||
case 206:
|
||||
#line 2316 "parser.yxx"
|
||||
#line 2318 "parser.yxx"
|
||||
{
|
||||
DCAST(EggSAnimData, egg_stack.back())->set_data(yyvsp[-1]._number_list);
|
||||
}
|
||||
break;
|
||||
case 207:
|
||||
#line 2330 "parser.yxx"
|
||||
#line 2332 "parser.yxx"
|
||||
{
|
||||
EggXfmAnimData *anim_data = new EggXfmAnimData(yyvsp[0]._string);
|
||||
egg_stack.push_back(anim_data);
|
||||
}
|
||||
break;
|
||||
case 208:
|
||||
#line 2335 "parser.yxx"
|
||||
#line 2337 "parser.yxx"
|
||||
{
|
||||
yyval._egg = egg_stack.back();
|
||||
egg_stack.pop_back();
|
||||
}
|
||||
break;
|
||||
case 210:
|
||||
#line 2352 "parser.yxx"
|
||||
#line 2354 "parser.yxx"
|
||||
{
|
||||
EggXfmAnimData *anim_data = DCAST(EggXfmAnimData, egg_stack.back());
|
||||
string name = yyvsp[-3]._string;
|
||||
|
|
@ -3395,27 +3397,27 @@ case 210:
|
|||
}
|
||||
break;
|
||||
case 211:
|
||||
#line 2369 "parser.yxx"
|
||||
#line 2371 "parser.yxx"
|
||||
{
|
||||
DCAST(EggXfmAnimData, egg_stack.back())->set_data(yyvsp[-1]._number_list);
|
||||
}
|
||||
break;
|
||||
case 212:
|
||||
#line 2383 "parser.yxx"
|
||||
#line 2385 "parser.yxx"
|
||||
{
|
||||
EggXfmSAnim *anim_group = new EggXfmSAnim(yyvsp[0]._string);
|
||||
egg_stack.push_back(anim_group);
|
||||
}
|
||||
break;
|
||||
case 213:
|
||||
#line 2388 "parser.yxx"
|
||||
#line 2390 "parser.yxx"
|
||||
{
|
||||
yyval._egg = egg_stack.back();
|
||||
egg_stack.pop_back();
|
||||
}
|
||||
break;
|
||||
case 215:
|
||||
#line 2405 "parser.yxx"
|
||||
#line 2407 "parser.yxx"
|
||||
{
|
||||
EggXfmSAnim *anim_group = DCAST(EggXfmSAnim, egg_stack.back());
|
||||
string name = yyvsp[-3]._string;
|
||||
|
|
@ -3432,37 +3434,37 @@ case 215:
|
|||
}
|
||||
break;
|
||||
case 216:
|
||||
#line 2420 "parser.yxx"
|
||||
#line 2422 "parser.yxx"
|
||||
{
|
||||
DCAST(EggXfmSAnim, egg_stack.back())->add_child(DCAST(EggNode, yyvsp[0]._egg));
|
||||
}
|
||||
break;
|
||||
case 217:
|
||||
#line 2435 "parser.yxx"
|
||||
#line 2437 "parser.yxx"
|
||||
{
|
||||
yyval._number_list = PTA_double::empty_array(0);
|
||||
}
|
||||
break;
|
||||
case 218:
|
||||
#line 2439 "parser.yxx"
|
||||
#line 2441 "parser.yxx"
|
||||
{
|
||||
yyval._number_list.push_back((double)yyvsp[0]._number);
|
||||
}
|
||||
break;
|
||||
case 219:
|
||||
#line 2453 "parser.yxx"
|
||||
#line 2455 "parser.yxx"
|
||||
{
|
||||
yyval._number_list = PTA_double::empty_array(0);
|
||||
}
|
||||
break;
|
||||
case 220:
|
||||
#line 2457 "parser.yxx"
|
||||
#line 2459 "parser.yxx"
|
||||
{
|
||||
yyval._number_list.push_back(yyvsp[0]._number);
|
||||
}
|
||||
break;
|
||||
case 221:
|
||||
#line 2471 "parser.yxx"
|
||||
#line 2473 "parser.yxx"
|
||||
{
|
||||
string name = yyvsp[0]._string;
|
||||
Textures::iterator vpi = textures.find(name);
|
||||
|
|
@ -3475,7 +3477,7 @@ case 221:
|
|||
}
|
||||
break;
|
||||
case 222:
|
||||
#line 2492 "parser.yxx"
|
||||
#line 2494 "parser.yxx"
|
||||
{
|
||||
string name = yyvsp[0]._string;
|
||||
Materials::iterator vpi = materials.find(name);
|
||||
|
|
@ -3488,7 +3490,7 @@ case 222:
|
|||
}
|
||||
break;
|
||||
case 223:
|
||||
#line 2513 "parser.yxx"
|
||||
#line 2515 "parser.yxx"
|
||||
{
|
||||
string name = yyvsp[0]._string;
|
||||
VertexPools::iterator vpi = vertex_pools.find(name);
|
||||
|
|
@ -3503,69 +3505,69 @@ case 223:
|
|||
}
|
||||
break;
|
||||
case 224:
|
||||
#line 2537 "parser.yxx"
|
||||
#line 2539 "parser.yxx"
|
||||
{
|
||||
eggyyerror("Name required.");
|
||||
yyval._string = "";
|
||||
}
|
||||
break;
|
||||
case 227:
|
||||
#line 2566 "parser.yxx"
|
||||
#line 2568 "parser.yxx"
|
||||
{
|
||||
eggyyerror("String required.");
|
||||
yyval._string = "";
|
||||
}
|
||||
break;
|
||||
case 229:
|
||||
#line 2582 "parser.yxx"
|
||||
#line 2584 "parser.yxx"
|
||||
{
|
||||
yyval._string = "";
|
||||
}
|
||||
break;
|
||||
case 231:
|
||||
#line 2600 "parser.yxx"
|
||||
#line 2602 "parser.yxx"
|
||||
{
|
||||
yyval._string = yyvsp[0]._string;
|
||||
}
|
||||
break;
|
||||
case 232:
|
||||
#line 2604 "parser.yxx"
|
||||
#line 2606 "parser.yxx"
|
||||
{
|
||||
yyval._string = yyvsp[0]._string;
|
||||
}
|
||||
break;
|
||||
case 234:
|
||||
#line 2621 "parser.yxx"
|
||||
#line 2623 "parser.yxx"
|
||||
{
|
||||
yyval._string = "";
|
||||
}
|
||||
break;
|
||||
case 235:
|
||||
#line 2625 "parser.yxx"
|
||||
#line 2627 "parser.yxx"
|
||||
{
|
||||
yyval._string = yyvsp[0]._string;
|
||||
}
|
||||
break;
|
||||
case 236:
|
||||
#line 2641 "parser.yxx"
|
||||
#line 2643 "parser.yxx"
|
||||
{
|
||||
yyval._string = yyvsp[0]._string;
|
||||
}
|
||||
break;
|
||||
case 237:
|
||||
#line 2645 "parser.yxx"
|
||||
#line 2647 "parser.yxx"
|
||||
{
|
||||
yyval._string = yyvsp[-1]._string + "\n" + yyvsp[0]._string;
|
||||
}
|
||||
break;
|
||||
case 239:
|
||||
#line 2660 "parser.yxx"
|
||||
#line 2662 "parser.yxx"
|
||||
{
|
||||
yyval._number = yyvsp[0]._ulong;
|
||||
}
|
||||
break;
|
||||
case 240:
|
||||
#line 2675 "parser.yxx"
|
||||
#line 2677 "parser.yxx"
|
||||
{
|
||||
yyval._number = yyvsp[0]._number;
|
||||
yyval._ulong = (unsigned long)yyvsp[0]._number;
|
||||
|
|
@ -3573,7 +3575,7 @@ case 240:
|
|||
}
|
||||
break;
|
||||
case 241:
|
||||
#line 2681 "parser.yxx"
|
||||
#line 2683 "parser.yxx"
|
||||
{
|
||||
yyval._number = yyvsp[0]._ulong;
|
||||
yyval._ulong = yyvsp[0]._ulong;
|
||||
|
|
@ -3581,7 +3583,7 @@ case 241:
|
|||
}
|
||||
break;
|
||||
case 242:
|
||||
#line 2687 "parser.yxx"
|
||||
#line 2689 "parser.yxx"
|
||||
{
|
||||
yyval._number = 0.0;
|
||||
yyval._ulong = 0;
|
||||
|
|
@ -3589,7 +3591,7 @@ case 242:
|
|||
}
|
||||
break;
|
||||
case 243:
|
||||
#line 2704 "parser.yxx"
|
||||
#line 2706 "parser.yxx"
|
||||
{
|
||||
int i = (int)yyvsp[0]._number;
|
||||
if ((double)i != yyvsp[0]._number) {
|
||||
|
|
@ -3599,7 +3601,7 @@ case 243:
|
|||
}
|
||||
break;
|
||||
case 244:
|
||||
#line 2712 "parser.yxx"
|
||||
#line 2714 "parser.yxx"
|
||||
{
|
||||
yyval._number = yyvsp[0]._ulong;
|
||||
}
|
||||
|
|
@ -3837,4 +3839,4 @@ yyreturn:
|
|||
#endif
|
||||
return yyresult;
|
||||
}
|
||||
#line 2719 "parser.yxx"
|
||||
#line 2721 "parser.yxx"
|
||||
|
|
|
|||
|
|
@ -1137,6 +1137,8 @@ group_body:
|
|||
group->set_portal_flag(value != 0);
|
||||
} else if (cmp_nocase_uh(name, "polylight") == 0) {
|
||||
group->set_polylight_flag(value != 0);
|
||||
} else if (cmp_nocase_uh(name, "indexed") == 0) {
|
||||
group->set_indexed_flag(value != 0);
|
||||
} else {
|
||||
eggyywarning("Unknown group scalar " + name);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -291,7 +291,8 @@ make_static_primitive(EggPrimitive *egg_primitive, EggGroupNode *prim_home) {
|
|||
egg_primitive->get_vertex_frame() *
|
||||
prim_home->get_node_frame_inv();
|
||||
|
||||
_loader.make_nonindexed_primitive(egg_primitive, node, &transform);
|
||||
_loader.make_nonindexed_primitive(egg_primitive, node, &transform,
|
||||
_comp_verts_maker);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
|
|
|||
|
|
@ -238,7 +238,16 @@ reparent_decals() {
|
|||
////////////////////////////////////////////////////////////////////
|
||||
void EggLoader::
|
||||
make_nonindexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
||||
const LMatrix4d *transform) {
|
||||
const LMatrix4d *transform,
|
||||
ComputedVerticesMaker &comp_verts_maker) {
|
||||
if (egg_prim->determine_indexed()) {
|
||||
// Whoops, the primitive inherits the "indexed" flag. This means
|
||||
// it should be an indexed primitive, even though the caller asked
|
||||
// for a nonindexed primitive.
|
||||
make_indexed_primitive(egg_prim, parent, transform, comp_verts_maker);
|
||||
return;
|
||||
}
|
||||
|
||||
BuilderBucket bucket;
|
||||
BakeInUVs bake_in_uvs;
|
||||
setup_bucket(bucket, bake_in_uvs, parent, egg_prim);
|
||||
|
|
@ -347,7 +356,7 @@ make_nonindexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
|||
void EggLoader::
|
||||
make_indexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
||||
const LMatrix4d *transform,
|
||||
ComputedVerticesMaker &_comp_verts_maker) {
|
||||
ComputedVerticesMaker &comp_verts_maker) {
|
||||
BuilderBucket bucket;
|
||||
BakeInUVs bake_in_uvs;
|
||||
setup_bucket(bucket, bake_in_uvs, parent, egg_prim);
|
||||
|
|
@ -375,16 +384,16 @@ make_indexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
|||
if (egg_prim->has_normal()) {
|
||||
// Define the transform space of the polygon normal. This will be
|
||||
// the average of all the vertex transform spaces.
|
||||
_comp_verts_maker.begin_new_space();
|
||||
comp_verts_maker.begin_new_space();
|
||||
EggPrimitive::const_iterator vi;
|
||||
for (vi = egg_prim->begin(); vi != egg_prim->end(); ++vi) {
|
||||
EggVertex *egg_vert = *vi;
|
||||
_comp_verts_maker.add_vertex_joints(egg_vert, egg_prim);
|
||||
comp_verts_maker.add_vertex_joints(egg_vert, egg_prim);
|
||||
}
|
||||
_comp_verts_maker.mark_space();
|
||||
comp_verts_maker.mark_space();
|
||||
|
||||
int nindex =
|
||||
_comp_verts_maker.add_normal(egg_prim->get_normal(),
|
||||
comp_verts_maker.add_normal(egg_prim->get_normal(),
|
||||
egg_prim->_dnormals, mat);
|
||||
|
||||
bprim.set_normal(nindex);
|
||||
|
|
@ -392,7 +401,7 @@ make_indexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
|||
|
||||
if (egg_prim->has_color() && !egg_false_color) {
|
||||
int cindex =
|
||||
_comp_verts_maker.add_color(egg_prim->get_color(),
|
||||
comp_verts_maker.add_color(egg_prim->get_color(),
|
||||
egg_prim->_drgbas);
|
||||
bprim.set_color(cindex);
|
||||
}
|
||||
|
|
@ -410,18 +419,18 @@ make_indexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
|||
} else {
|
||||
// Set up the ComputedVerticesMaker for the coordinate space of
|
||||
// the vertex.
|
||||
_comp_verts_maker.begin_new_space();
|
||||
_comp_verts_maker.add_vertex_joints(egg_vert, egg_prim);
|
||||
_comp_verts_maker.mark_space();
|
||||
comp_verts_maker.begin_new_space();
|
||||
comp_verts_maker.add_vertex_joints(egg_vert, egg_prim);
|
||||
comp_verts_maker.mark_space();
|
||||
|
||||
int vindex =
|
||||
_comp_verts_maker.add_vertex(egg_vert->get_pos3(),
|
||||
comp_verts_maker.add_vertex(egg_vert->get_pos3(),
|
||||
egg_vert->_dxyzs, mat);
|
||||
BuilderVertexI bvert(vindex);
|
||||
|
||||
if (egg_vert->has_normal()) {
|
||||
int nindex =
|
||||
_comp_verts_maker.add_normal(egg_vert->get_normal(),
|
||||
comp_verts_maker.add_normal(egg_vert->get_normal(),
|
||||
egg_vert->_dnormals,
|
||||
mat);
|
||||
bvert.set_normal(nindex);
|
||||
|
|
@ -429,7 +438,7 @@ make_indexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
|||
|
||||
if (egg_vert->has_color() && !egg_false_color) {
|
||||
int cindex =
|
||||
_comp_verts_maker.add_color(egg_vert->get_color(),
|
||||
comp_verts_maker.add_color(egg_vert->get_color(),
|
||||
egg_vert->_drgbas);
|
||||
bvert.set_color(cindex);
|
||||
} else {
|
||||
|
|
@ -458,7 +467,7 @@ make_indexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
|||
}
|
||||
|
||||
int tindex =
|
||||
_comp_verts_maker.add_texcoord(uv_name, uv, uv_obj->_duvs, mat);
|
||||
comp_verts_maker.add_texcoord(uv_name, uv, uv_obj->_duvs, mat);
|
||||
bvert.set_texcoord(uv_name, tindex);
|
||||
}
|
||||
|
||||
|
|
@ -470,7 +479,7 @@ make_indexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
|||
// vertex color, make it white.
|
||||
if (!egg_prim->has_color() && !has_vert_color && !egg_false_color) {
|
||||
int cindex =
|
||||
_comp_verts_maker.add_color(Colorf(1.0, 1.0, 1.0, 1.0),
|
||||
comp_verts_maker.add_color(Colorf(1.0, 1.0, 1.0, 1.0),
|
||||
EggMorphColorList());
|
||||
bprim.set_color(cindex);
|
||||
}
|
||||
|
|
@ -479,13 +488,13 @@ make_indexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
|||
// vertices, because iterating through the vertices might discover
|
||||
// additional texture coordinate sets that we didn't know about
|
||||
// before.
|
||||
bucket.set_coords(_comp_verts_maker._coords);
|
||||
bucket.set_normals(_comp_verts_maker._norms);
|
||||
bucket.set_colors(_comp_verts_maker._colors);
|
||||
bucket.set_coords(comp_verts_maker._coords);
|
||||
bucket.set_normals(comp_verts_maker._norms);
|
||||
bucket.set_colors(comp_verts_maker._colors);
|
||||
|
||||
ComputedVerticesMaker::TexCoords::const_iterator tci;
|
||||
for (tci = _comp_verts_maker._texcoords.begin();
|
||||
tci != _comp_verts_maker._texcoords.end();
|
||||
for (tci = comp_verts_maker._texcoords.begin();
|
||||
tci != comp_verts_maker._texcoords.end();
|
||||
++tci) {
|
||||
const TexCoordName *name = (*tci).first;
|
||||
bucket.set_texcoords(name, (*tci).second);
|
||||
|
|
@ -1708,7 +1717,7 @@ make_node(EggPrimitive *egg_prim, PandaNode *parent) {
|
|||
// so we need to create a placeholder now.
|
||||
PandaNode *group = new PandaNode(egg_prim->get_name());
|
||||
parent->add_child(group);
|
||||
make_nonindexed_primitive(egg_prim, group);
|
||||
make_nonindexed_primitive(egg_prim, group, NULL, _comp_verts_maker);
|
||||
return group;
|
||||
}
|
||||
|
||||
|
|
@ -1716,7 +1725,7 @@ make_node(EggPrimitive *egg_prim, PandaNode *parent) {
|
|||
// primitive is within its parent's list of children, and in fact
|
||||
// we want to allow it to be combined with other polygons added to
|
||||
// the same parent.
|
||||
make_nonindexed_primitive(egg_prim, parent);
|
||||
make_nonindexed_primitive(egg_prim, parent, NULL, _comp_verts_maker);
|
||||
}
|
||||
return (PandaNode *)NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
#include "textureStage.h"
|
||||
#include "texGenAttrib.h"
|
||||
#include "eggTransform3d.h"
|
||||
#include "computedVerticesMaker.h"
|
||||
|
||||
class EggNode;
|
||||
class EggBin;
|
||||
|
|
@ -47,7 +48,6 @@ class EggNurbsSurface;
|
|||
class EggPrimitive;
|
||||
class EggPolygon;
|
||||
class EggMaterial;
|
||||
class ComputedVerticesMaker;
|
||||
class RenderRelation;
|
||||
class CollisionSolid;
|
||||
class CollisionNode;
|
||||
|
|
@ -73,11 +73,12 @@ public:
|
|||
void reparent_decals();
|
||||
|
||||
void make_nonindexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
||||
const LMatrix4d *transform = NULL);
|
||||
const LMatrix4d *transform,
|
||||
ComputedVerticesMaker &comp_verts_maker);
|
||||
|
||||
void make_indexed_primitive(EggPrimitive *egg_prim, PandaNode *parent,
|
||||
const LMatrix4d *transform,
|
||||
ComputedVerticesMaker &_comp_verts_maker);
|
||||
ComputedVerticesMaker &comp_verts_maker);
|
||||
|
||||
private:
|
||||
class TextureDef {
|
||||
|
|
@ -188,6 +189,8 @@ private:
|
|||
|
||||
DeferredNodes _deferred_nodes;
|
||||
|
||||
ComputedVerticesMaker _comp_verts_maker;
|
||||
|
||||
public:
|
||||
PT(PandaNode) _root;
|
||||
EggData _data;
|
||||
|
|
|
|||
Loading…
Reference in New Issue