Added new Node/Drawable::s/getInitialBound and Node/Drawable::s/getComputeBoundCallback

methods and reimplement computeBound so that it passes back a bounding volume rather
than modifying the local one.
This commit is contained in:
Robert Osfield
2005-05-12 14:03:22 +00:00
parent ad2bd31ac8
commit bf4d63f6ea
52 changed files with 337 additions and 377 deletions

View File

@@ -337,15 +337,12 @@ bool Group::setChild( unsigned int i, Node* newNode )
}
bool Group::computeBound() const
BoundingSphere Group::computeBound() const
{
_bsphere.init();
BoundingSphere bsphere;
if (_children.empty())
{
_bsphere_computed = true;
return false;
return bsphere;
}
// note, special handling of the case when a child is an Transform,
@@ -368,12 +365,11 @@ bool Group::computeBound() const
if (!bb.valid())
{
_bsphere_computed = true;
return false;
return bsphere;
}
_bsphere._center = bb.center();
_bsphere._radius = 0.0f;
bsphere._center = bb.center();
bsphere._radius = 0.0f;
for(itr=_children.begin();
itr!=_children.end();
++itr)
@@ -381,12 +377,11 @@ bool Group::computeBound() const
const osg::Transform* transform = (*itr)->asTransform();
if (!transform || transform->getReferenceFrame()==osg::Transform::RELATIVE_RF)
{
_bsphere.expandRadiusBy((*itr)->getBound());
bsphere.expandRadiusBy((*itr)->getBound());
}
}
_bsphere_computed = true;
return true;
return bsphere;
}
void Group::releaseGLObjects(osg::State* state) const