From 92d684de6b65b05a21ab34a4b939d53d2750aba4 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 26 Jun 2014 14:16:11 +0000 Subject: [PATCH] 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 --- include/osg/KdTree | 2 +- include/osg/NodeVisitor | 2 +- src/osg/KdTree.cpp | 25 ++++++++----------------- 3 files changed, 10 insertions(+), 19 deletions(-) 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()); } }