Pārlūkot izejas kodu

automatically triangulate non-planar collision polygons

David Rose 21 gadi atpakaļ
vecāks
revīzija
1ed3266d9e
1 mainītis faili ar 15 papildinājumiem un 9 dzēšanām
  1. 15 9
      panda/src/egg2pg/eggLoader.cxx

+ 15 - 9
panda/src/egg2pg/eggLoader.cxx

@@ -2567,13 +2567,19 @@ find_collision_geometry(EggGroup *egg_group) {
 CollisionPlane *EggLoader::
 CollisionPlane *EggLoader::
 create_collision_plane(EggPolygon *egg_poly, EggGroup *parent_group) {
 create_collision_plane(EggPolygon *egg_poly, EggGroup *parent_group) {
   if (!egg_poly->cleanup()) {
   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";
       << "\n";
-    _error = true;
     return NULL;
     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();
   LMatrix4d mat = egg_poly->get_vertex_to_node();
 
 
   pvector<Vertexf> vertices;
   pvector<Vertexf> vertices;
@@ -2620,18 +2626,18 @@ create_collision_polygons(CollisionNode *cnode, EggPolygon *egg_poly,
   PT(EggGroup) group = new EggGroup;
   PT(EggGroup) group = new EggGroup;
 
 
   if (!egg_poly->triangulate_into(group, false)) {
   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";
       << "\n";
-    _error = true;
     return;
     return;
   }
   }
 
 
   if (group->size() != 1) {
   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";
       << "\n";
-    _error = true;
   }
   }
 
 
   EggGroup::iterator ci;
   EggGroup::iterator ci;