automatically triangulate non-planar collision polygons

This commit is contained in:
David Rose 2004-11-24 22:18:48 +00:00
parent a25a78ebbc
commit 1ed3266d9e

View File

@ -2567,13 +2567,19 @@ find_collision_geometry(EggGroup *egg_group) {
CollisionPlane *EggLoader::
create_collision_plane(EggPolygon *egg_poly, EggGroup *parent_group) {
if (!egg_poly->cleanup()) {
egg2pg_cat.error()
<< "Degenerate collision plane in " << parent_group->get_name()
egg2pg_cat.info()
<< "Ignoring degenerate collision plane in " << parent_group->get_name()
<< "\n";
_error = true;
return NULL;
}
if (!egg_poly->is_planar()) {
egg2pg_cat.warning()
<< "Non-planar polygon defining collision plane in "
<< parent_group->get_name()
<< "\n";
}
LMatrix4d mat = egg_poly->get_vertex_to_node();
pvector<Vertexf> vertices;
@ -2620,18 +2626,18 @@ create_collision_polygons(CollisionNode *cnode, EggPolygon *egg_poly,
PT(EggGroup) group = new EggGroup;
if (!egg_poly->triangulate_into(group, false)) {
egg2pg_cat.error()
<< "Degenerate collision polygon in " << parent_group->get_name()
egg2pg_cat.info()
<< "Ignoring degenerate collision polygon in "
<< parent_group->get_name()
<< "\n";
_error = true;
return;
}
if (group->size() != 1) {
egg2pg_cat.error()
<< "Concave collision polygon in " << parent_group->get_name()
egg2pg_cat.info()
<< "Triangulating concave or non-planar collision polygon in "
<< parent_group->get_name()
<< "\n";
_error = true;
}
EggGroup::iterator ci;