|
@@ -63,18 +63,20 @@ void CullBinBackToFront::
|
|
|
add_object(CullableObject *object, Thread *current_thread) {
|
|
add_object(CullableObject *object, Thread *current_thread) {
|
|
|
// Determine the center of the bounding volume.
|
|
// Determine the center of the bounding volume.
|
|
|
CPT(BoundingVolume) volume = object->_geom->get_bounds(current_thread);
|
|
CPT(BoundingVolume) volume = object->_geom->get_bounds(current_thread);
|
|
|
-
|
|
|
|
|
- if (!volume->is_empty()) {
|
|
|
|
|
- const GeometricBoundingVolume *gbv;
|
|
|
|
|
- DCAST_INTO_V(gbv, volume);
|
|
|
|
|
-
|
|
|
|
|
- LPoint3f center = gbv->get_approx_center();
|
|
|
|
|
- nassertv(object->_modelview_transform != (const TransformState *)NULL);
|
|
|
|
|
- center = center * object->_modelview_transform->get_mat();
|
|
|
|
|
-
|
|
|
|
|
- float distance = _gsg->compute_distance_to(center);
|
|
|
|
|
- _objects.push_back(ObjectData(object, distance));
|
|
|
|
|
|
|
+ if (volume->is_empty()) {
|
|
|
|
|
+ delete object;
|
|
|
|
|
+ return;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ const GeometricBoundingVolume *gbv;
|
|
|
|
|
+ DCAST_INTO_V(gbv, volume);
|
|
|
|
|
+
|
|
|
|
|
+ LPoint3f center = gbv->get_approx_center();
|
|
|
|
|
+ nassertv(object->_modelview_transform != (const TransformState *)NULL);
|
|
|
|
|
+ center = center * object->_modelview_transform->get_mat();
|
|
|
|
|
+
|
|
|
|
|
+ float distance = _gsg->compute_distance_to(center);
|
|
|
|
|
+ _objects.push_back(ObjectData(object, distance));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////
|