mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-01 01:07:51 -04:00
*** empty log message ***
This commit is contained in:
parent
63c7d213e2
commit
2de90c8caa
@ -1127,18 +1127,21 @@ make_node(EggGroup *egg_group, NamedNode *parent) {
|
|||||||
} else if (cmp_nocase_uh(objecttype, "turnstile") == 0) {
|
} else if (cmp_nocase_uh(objecttype, "turnstile") == 0) {
|
||||||
egg_syntax = "<Collide> { Polyset descend turnstile }";
|
egg_syntax = "<Collide> { Polyset descend turnstile }";
|
||||||
|
|
||||||
|
} else if (cmp_nocase_uh(objecttype, "sphere") == 0) {
|
||||||
|
egg_syntax = "<Collide> { Sphere descend }";
|
||||||
|
|
||||||
} else if (cmp_nocase_uh(objecttype, "trigger") == 0) {
|
} else if (cmp_nocase_uh(objecttype, "trigger") == 0) {
|
||||||
egg_syntax = "<Collide> { Polyset descend intangible }";
|
egg_syntax = "<Collide> { Polyset descend intangible }";
|
||||||
|
|
||||||
|
} else if (cmp_nocase_uh(objecttype, "trigger_sphere") == 0) {
|
||||||
|
egg_syntax = "<Collide> { Sphere descend intangible }";
|
||||||
|
|
||||||
} else if (cmp_nocase_uh(objecttype, "eye_trigger") == 0) {
|
} else if (cmp_nocase_uh(objecttype, "eye_trigger") == 0) {
|
||||||
egg_syntax = "<Collide> { Polyset descend intangible center }";
|
egg_syntax = "<Collide> { Polyset descend intangible center }";
|
||||||
|
|
||||||
} else if (cmp_nocase_uh(objecttype, "bubble") == 0) {
|
} else if (cmp_nocase_uh(objecttype, "bubble") == 0) {
|
||||||
egg_syntax = "<Collide> { Sphere keep descend }";
|
egg_syntax = "<Collide> { Sphere keep descend }";
|
||||||
|
|
||||||
} else if (cmp_nocase_uh(objecttype, "missile") == 0) {
|
|
||||||
egg_syntax = "<Collide> missile { Sphere keep descend event }";
|
|
||||||
|
|
||||||
} else if (cmp_nocase_uh(objecttype, "ghost") == 0) {
|
} else if (cmp_nocase_uh(objecttype, "ghost") == 0) {
|
||||||
egg_syntax = "<Scalar> collide-mask { 0 }";
|
egg_syntax = "<Scalar> collide-mask { 0 }";
|
||||||
|
|
||||||
@ -1391,19 +1394,19 @@ make_collision_solids(EggGroup *start_group, EggGroup *egg_group,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case EggGroup::CST_plane:
|
case EggGroup::CST_plane:
|
||||||
make_collision_plane(egg_group, cnode);
|
make_collision_plane(egg_group, cnode, start_group->get_collide_flags());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EggGroup::CST_polygon:
|
case EggGroup::CST_polygon:
|
||||||
make_collision_polygon(egg_group, cnode);
|
make_collision_polygon(egg_group, cnode, start_group->get_collide_flags());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EggGroup::CST_polyset:
|
case EggGroup::CST_polyset:
|
||||||
make_collision_polyset(egg_group, cnode);
|
make_collision_polyset(egg_group, cnode, start_group->get_collide_flags());
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case EggGroup::CST_sphere:
|
case EggGroup::CST_sphere:
|
||||||
make_collision_sphere(egg_group, cnode);
|
make_collision_sphere(egg_group, cnode, start_group->get_collide_flags());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1425,7 +1428,8 @@ make_collision_solids(EggGroup *start_group, EggGroup *egg_group,
|
|||||||
// to the first polygon associated with this group.
|
// to the first polygon associated with this group.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void EggLoader::
|
void EggLoader::
|
||||||
make_collision_plane(EggGroup *egg_group, CollisionNode *cnode) {
|
make_collision_plane(EggGroup *egg_group, CollisionNode *cnode,
|
||||||
|
EggGroup::CollideFlags flags) {
|
||||||
EggGroup *geom_group = find_collision_geometry(egg_group);
|
EggGroup *geom_group = find_collision_geometry(egg_group);
|
||||||
if (geom_group != (EggGroup *)NULL) {
|
if (geom_group != (EggGroup *)NULL) {
|
||||||
EggGroup::const_iterator ci;
|
EggGroup::const_iterator ci;
|
||||||
@ -1434,6 +1438,7 @@ make_collision_plane(EggGroup *egg_group, CollisionNode *cnode) {
|
|||||||
CollisionPlane *csplane =
|
CollisionPlane *csplane =
|
||||||
create_collision_plane(DCAST(EggPolygon, *ci));
|
create_collision_plane(DCAST(EggPolygon, *ci));
|
||||||
if (csplane != (CollisionPlane *)NULL) {
|
if (csplane != (CollisionPlane *)NULL) {
|
||||||
|
apply_collision_flags(csplane, flags);
|
||||||
cnode->add_solid(csplane);
|
cnode->add_solid(csplane);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1449,7 +1454,9 @@ make_collision_plane(EggGroup *egg_group, CollisionNode *cnode) {
|
|||||||
// to the first polygon associated with this group.
|
// to the first polygon associated with this group.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void EggLoader::
|
void EggLoader::
|
||||||
make_collision_polygon(EggGroup *egg_group, CollisionNode *cnode) {
|
make_collision_polygon(EggGroup *egg_group, CollisionNode *cnode,
|
||||||
|
EggGroup::CollideFlags flags) {
|
||||||
|
|
||||||
EggGroup *geom_group = find_collision_geometry(egg_group);
|
EggGroup *geom_group = find_collision_geometry(egg_group);
|
||||||
if (geom_group != (EggGroup *)NULL) {
|
if (geom_group != (EggGroup *)NULL) {
|
||||||
EggGroup::const_iterator ci;
|
EggGroup::const_iterator ci;
|
||||||
@ -1458,6 +1465,7 @@ make_collision_polygon(EggGroup *egg_group, CollisionNode *cnode) {
|
|||||||
CollisionPolygon *cspoly =
|
CollisionPolygon *cspoly =
|
||||||
create_collision_polygon(DCAST(EggPolygon, *ci));
|
create_collision_polygon(DCAST(EggPolygon, *ci));
|
||||||
if (cspoly != (CollisionPolygon *)NULL) {
|
if (cspoly != (CollisionPolygon *)NULL) {
|
||||||
|
apply_collision_flags(cspoly, flags);
|
||||||
cnode->add_solid(cspoly);
|
cnode->add_solid(cspoly);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1473,7 +1481,8 @@ make_collision_polygon(EggGroup *egg_group, CollisionNode *cnode) {
|
|||||||
// to the polygons associated with this group.
|
// to the polygons associated with this group.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void EggLoader::
|
void EggLoader::
|
||||||
make_collision_polyset(EggGroup *egg_group, CollisionNode *cnode) {
|
make_collision_polyset(EggGroup *egg_group, CollisionNode *cnode,
|
||||||
|
EggGroup::CollideFlags flags) {
|
||||||
EggGroup *geom_group = find_collision_geometry(egg_group);
|
EggGroup *geom_group = find_collision_geometry(egg_group);
|
||||||
if (geom_group != (EggGroup *)NULL) {
|
if (geom_group != (EggGroup *)NULL) {
|
||||||
EggGroup::const_iterator ci;
|
EggGroup::const_iterator ci;
|
||||||
@ -1482,6 +1491,7 @@ make_collision_polyset(EggGroup *egg_group, CollisionNode *cnode) {
|
|||||||
CollisionPolygon *cspoly =
|
CollisionPolygon *cspoly =
|
||||||
create_collision_polygon(DCAST(EggPolygon, *ci));
|
create_collision_polygon(DCAST(EggPolygon, *ci));
|
||||||
if (cspoly != (CollisionPolygon *)NULL) {
|
if (cspoly != (CollisionPolygon *)NULL) {
|
||||||
|
apply_collision_flags(cspoly, flags);
|
||||||
cnode->add_solid(cspoly);
|
cnode->add_solid(cspoly);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1496,7 +1506,8 @@ make_collision_polyset(EggGroup *egg_group, CollisionNode *cnode) {
|
|||||||
// to the polygons associated with this group.
|
// to the polygons associated with this group.
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void EggLoader::
|
void EggLoader::
|
||||||
make_collision_sphere(EggGroup *egg_group, CollisionNode *cnode) {
|
make_collision_sphere(EggGroup *egg_group, CollisionNode *cnode,
|
||||||
|
EggGroup::CollideFlags flags) {
|
||||||
EggGroup *geom_group = find_collision_geometry(egg_group);
|
EggGroup *geom_group = find_collision_geometry(egg_group);
|
||||||
if (geom_group != (EggGroup *)NULL) {
|
if (geom_group != (EggGroup *)NULL) {
|
||||||
// Collect all of the vertices.
|
// Collect all of the vertices.
|
||||||
@ -1556,11 +1567,27 @@ make_collision_sphere(EggGroup *egg_group, CollisionNode *cnode) {
|
|||||||
float radius = sqrtf(radius2);
|
float radius = sqrtf(radius2);
|
||||||
CollisionSphere *cssphere =
|
CollisionSphere *cssphere =
|
||||||
new CollisionSphere(LCAST(float, center), radius);
|
new CollisionSphere(LCAST(float, center), radius);
|
||||||
|
apply_collision_flags(cssphere, flags);
|
||||||
cnode->add_solid(cssphere);
|
cnode->add_solid(cssphere);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: EggLoader::apply_collision_flags
|
||||||
|
// Access: Private
|
||||||
|
// Description: Does funny stuff to the CollisionSolid as
|
||||||
|
// appropriate, based on the settings of the given
|
||||||
|
// CollideFlags.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
void EggLoader::
|
||||||
|
apply_collision_flags(CollisionSolid *solid,
|
||||||
|
EggGroup::CollideFlags flags) {
|
||||||
|
if ((flags & EggGroup::CF_intangible) != 0) {
|
||||||
|
solid->set_tangible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: EggLoader::find_collision_geometry
|
// Function: EggLoader::find_collision_geometry
|
||||||
// Access: Private
|
// Access: Private
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include <eggData.h>
|
#include <eggData.h>
|
||||||
#include <eggTexture.h>
|
#include <eggTexture.h>
|
||||||
|
#include <eggGroup.h>
|
||||||
#include <texture.h>
|
#include <texture.h>
|
||||||
#include <namedNode.h>
|
#include <namedNode.h>
|
||||||
#include <pt_NamedNode.h>
|
#include <pt_NamedNode.h>
|
||||||
@ -24,12 +25,12 @@
|
|||||||
|
|
||||||
class EggNode;
|
class EggNode;
|
||||||
class EggBin;
|
class EggBin;
|
||||||
class EggGroup;
|
|
||||||
class EggTable;
|
class EggTable;
|
||||||
class EggPrimitive;
|
class EggPrimitive;
|
||||||
class EggPolygon;
|
class EggPolygon;
|
||||||
class ComputedVerticesMaker;
|
class ComputedVerticesMaker;
|
||||||
class RenderRelation;
|
class RenderRelation;
|
||||||
|
class CollisionSolid;
|
||||||
class CollisionNode;
|
class CollisionNode;
|
||||||
class CollisionPlane;
|
class CollisionPlane;
|
||||||
class CollisionPolygon;
|
class CollisionPolygon;
|
||||||
@ -86,10 +87,16 @@ private:
|
|||||||
|
|
||||||
void make_collision_solids(EggGroup *start_group, EggGroup *egg_group,
|
void make_collision_solids(EggGroup *start_group, EggGroup *egg_group,
|
||||||
CollisionNode *cnode);
|
CollisionNode *cnode);
|
||||||
void make_collision_plane(EggGroup *egg_group, CollisionNode *cnode);
|
void make_collision_plane(EggGroup *egg_group, CollisionNode *cnode,
|
||||||
void make_collision_polygon(EggGroup *egg_group, CollisionNode *cnode);
|
EggGroup::CollideFlags flags);
|
||||||
void make_collision_polyset(EggGroup *egg_group, CollisionNode *cnode);
|
void make_collision_polygon(EggGroup *egg_group, CollisionNode *cnode,
|
||||||
void make_collision_sphere(EggGroup *egg_group, CollisionNode *cnode);
|
EggGroup::CollideFlags flags);
|
||||||
|
void make_collision_polyset(EggGroup *egg_group, CollisionNode *cnode,
|
||||||
|
EggGroup::CollideFlags flags);
|
||||||
|
void make_collision_sphere(EggGroup *egg_group, CollisionNode *cnode,
|
||||||
|
EggGroup::CollideFlags flags);
|
||||||
|
void apply_collision_flags(CollisionSolid *solid,
|
||||||
|
EggGroup::CollideFlags flags);
|
||||||
EggGroup *find_collision_geometry(EggGroup *egg_group);
|
EggGroup *find_collision_geometry(EggGroup *egg_group);
|
||||||
CollisionPlane *create_collision_plane(EggPolygon *egg_poly);
|
CollisionPlane *create_collision_plane(EggPolygon *egg_poly);
|
||||||
CollisionPolygon *create_collision_polygon(EggPolygon *egg_poly);
|
CollisionPolygon *create_collision_polygon(EggPolygon *egg_poly);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user