diff --git a/include/osgUtil/CullVisitor b/include/osgUtil/CullVisitor index a77fce11f..42d31acf5 100644 --- a/include/osgUtil/CullVisitor +++ b/include/osgUtil/CullVisitor @@ -70,9 +70,19 @@ class OSGUTIL_EXPORT CullVisitor : public osg::NodeVisitor, public osg::CullStac virtual void reset(); + struct Identifier : public osg::Referenced + { + Identifier() {} + virtual ~Identifier() {} + }; + + void setIdentifier(Identifier* identifier) { _identifier = identifier; } + Identifier* getIdentifier() { return _identifier.get(); } + const Identifier* getIdentifier() const { return _identifier.get(); } + virtual osg::Vec3 getEyePoint() const { return getEyeLocal(); } virtual osg::Vec3 getViewPoint() const { return getViewPointLocal(); } - + virtual float getDistanceToEyePoint(const osg::Vec3& pos, bool withLODScale) const; virtual float getDistanceFromEyePoint(const osg::Vec3& pos, bool withLODScale) const; @@ -369,7 +379,8 @@ class OSGUTIL_EXPORT CullVisitor : public osg::NodeVisitor, public osg::CullStac typedef std::multimap DistanceMatrixDrawableMap; DistanceMatrixDrawableMap _nearPlaneCandidateMap; - + + osg::ref_ptr _identifier; }; inline void CullVisitor::addDrawable(osg::Drawable* drawable,osg::RefMatrix* matrix) diff --git a/src/osgUtil/CullVisitor.cpp b/src/osgUtil/CullVisitor.cpp index 4013334a7..28ccedce2 100644 --- a/src/osgUtil/CullVisitor.cpp +++ b/src/osgUtil/CullVisitor.cpp @@ -53,6 +53,7 @@ CullVisitor::CullVisitor(): _currentReuseRenderLeafIndex(0), _numberOfEncloseOverrideRenderBinDetails(0) { + _identifier = new Identifier; } CullVisitor::CullVisitor(const CullVisitor& rhs): @@ -63,7 +64,8 @@ CullVisitor::CullVisitor(const CullVisitor& rhs): _computed_znear(FLT_MAX), _computed_zfar(-FLT_MAX), _currentReuseRenderLeafIndex(0), - _numberOfEncloseOverrideRenderBinDetails(0) + _numberOfEncloseOverrideRenderBinDetails(0), + _identifier(rhs._identifier) { }