fix infinite bounds case

This commit is contained in:
David Rose 2007-06-05 19:12:54 +00:00
parent 3a169d14b1
commit aeae2e0198

View File

@ -459,28 +459,28 @@ center_trackball(const NodePath &object) {
gbv = new_gbv;
}
// Determine the bounding sphere around the object. The
// BoundingVolume might be a sphere (it's likely), but since it
// might not, we'll take no chances and make our own sphere.
PT(BoundingSphere) sphere = new BoundingSphere(gbv->get_approx_center(), 0.0f);
if (!sphere->extend_by(gbv)) {
framework_cat.warning()
<< "Cannot determine bounding volume of " << object << "\n";
return;
}
if (sphere->is_infinite()) {
// Determine the bounding sphere around the object.
if (gbv->is_infinite()) {
framework_cat.warning()
<< "Infinite bounding volume for " << object << "\n";
return;
}
if (sphere->is_empty()) {
if (gbv->is_empty()) {
framework_cat.warning()
<< "Empty bounding volume for " << object << "\n";
return;
}
// The BoundingVolume might be a sphere (it's likely), but since it
// might not, we'll take no chances and make our own sphere.
PT(BoundingSphere) sphere = new BoundingSphere(gbv->get_approx_center(), 0.0f);
if (!sphere->extend_by(gbv)) {
framework_cat.warning()
<< "Cannot determine bounding volume of " << object << "\n";
return;
}
LPoint3f center = sphere->get_center();
float radius = sphere->get_radius();