diff --git a/include/osg/KdTree b/include/osg/KdTree index 86dee7302..2432bed9a 100644 --- a/include/osg/KdTree +++ b/include/osg/KdTree @@ -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; diff --git a/include/osg/NodeVisitor b/include/osg/NodeVisitor index 07ff5665c..d03eaffd2 100644 --- a/include/osg/NodeVisitor +++ b/include/osg/NodeVisitor @@ -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); diff --git a/src/osg/KdTree.cpp b/src/osg/KdTree.cpp index bf6bf8041..a1afac029 100644 --- a/src/osg/KdTree.cpp +++ b/src/osg/KdTree.cpp @@ -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(geometry.getShape()); + if (previous) return; + + osg::ref_ptr kdTree = osg::clone(_kdTreePrototype.get()); + + if (kdTree->build(_buildOptions, &geometry)) { - - osg::Geometry* geom = geode.getDrawable(i)->asGeometry(); - if (geom) - { - osg::KdTree* previous = dynamic_cast(geom->getShape()); - if (previous) continue; - - osg::ref_ptr obj = _kdTreePrototype->cloneType(); - osg::ref_ptr kdTree = dynamic_cast(obj.get()); - - if (kdTree->build(_buildOptions, geom)) - { - geom->setShape(kdTree.get()); - } - } + geometry.setShape(kdTree.get()); } }