Browse Source

Fix some issues with verify-lods

David Rose 19 years ago
parent
commit
169a946914
2 changed files with 8 additions and 3 deletions
  1. 1 1
      panda/src/pgraph/config_pgraph.cxx
  2. 7 2
      panda/src/pgraph/lodNode.cxx

+ 1 - 1
panda/src/pgraph/config_pgraph.cxx

@@ -220,7 +220,7 @@ ConfigVariableDouble lod_fade_time
           "transitions between its different levels."));
 
 ConfigVariableBool verify_lods
-("verify-lods", false,
+("verify-lods", true,
  PRC_DESC("When this is true, LODNodes will test when they are rendered to "
           "ensure that each child's geometry fits entirely within the radius "
           "defined by its switch-out distance.  When it is false, LODNodes "

+ 7 - 2
panda/src/pgraph/lodNode.cxx

@@ -586,6 +586,7 @@ do_verify_child_bounds(const LODNode::CData *cdata, int index,
       if (flags == 0) {
         // This child's radius doesn't even come close to containing
         // its volume.
+        nassertr(!gbv->is_infinite(), false);
         sphere.extend_by(gbv);
         suggested_radius = sphere.get_radius();
         return false;
@@ -621,9 +622,13 @@ do_verify_child_bounds(const LODNode::CData *cdata, int index,
       // So if any part of this inscribed sphere is outside of the
       // radius, then the radius is bad.
       flags = sphere.contains(&box_sphere);
-      if (flags != BoundingVolume::IF_all) {
+      if ((flags & BoundingVolume::IF_all) == 0) {
         // No good.  
-        sphere.extend_by(gbv);
+        if (gbv->is_infinite()) {
+          sphere.extend_by(&box_sphere);
+        } else {
+          sphere.extend_by(gbv);
+        }
         suggested_radius = sphere.get_radius();
         return false;
       }