Revised KdTreeBuilder so that is used the new apply(osg::Geometry&) method rather than expanding an osg::Geode.

git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14303 16af8721-9629-0410-8352-f15c8da7e697
This commit is contained in:
Robert Osfield
2014-06-26 14:16:11 +00:00
parent a21ce3469b
commit 92d684de6b
3 changed files with 10 additions and 19 deletions

View File

@@ -801,24 +801,15 @@ KdTreeBuilder::KdTreeBuilder(const KdTreeBuilder& rhs):
{
}
void KdTreeBuilder::apply(osg::Geode& geode)
void KdTreeBuilder::apply(osg::Geometry& geometry)
{
for(unsigned int i=0; i<geode.getNumDrawables(); ++i)
osg::KdTree* previous = dynamic_cast<osg::KdTree*>(geometry.getShape());
if (previous) return;
osg::ref_ptr<osg::KdTree> kdTree = osg::clone(_kdTreePrototype.get());
if (kdTree->build(_buildOptions, &geometry))
{
osg::Geometry* geom = geode.getDrawable(i)->asGeometry();
if (geom)
{
osg::KdTree* previous = dynamic_cast<osg::KdTree*>(geom->getShape());
if (previous) continue;
osg::ref_ptr<osg::Object> obj = _kdTreePrototype->cloneType();
osg::ref_ptr<osg::KdTree> kdTree = dynamic_cast<osg::KdTree*>(obj.get());
if (kdTree->build(_buildOptions, geom))
{
geom->setShape(kdTree.get());
}
}
geometry.setShape(kdTree.get());
}
}