Fix some issues with verify-lods

This commit is contained in:
David Rose 2006-09-13 15:57:55 +00:00
parent a5f3e3f539
commit 169a946914
2 changed files with 8 additions and 3 deletions

View File

@ -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 "

View File

@ -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;
}