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:
@@ -179,7 +179,7 @@ class OSG_EXPORT KdTreeBuilder : public osg::NodeVisitor
|
||||
|
||||
virtual KdTreeBuilder* clone() { return new KdTreeBuilder(*this); }
|
||||
|
||||
void apply(osg::Geode& geode);
|
||||
void apply(Geometry& geometry);
|
||||
|
||||
KdTree::BuildOptions _buildOptions;
|
||||
|
||||
|
||||
@@ -225,7 +225,7 @@ class OSG_EXPORT NodeVisitor : public virtual Object
|
||||
virtual float getDistanceToViewPoint(const Vec3& /*pos*/, bool /*useLODScale*/) const { return 0.0f; }
|
||||
|
||||
virtual void apply(Drawable& drawable);
|
||||
virtual void apply(Geometry& drawable);
|
||||
virtual void apply(Geometry& geometry);
|
||||
|
||||
virtual void apply(Node& node);
|
||||
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user