openscenegraph
Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
osgUtil::IntersectVisitor Class Reference
Inheritance diagram for osgUtil::IntersectVisitor:
osg::NodeVisitor osg::Referenced osgUtil::PickVisitor

Classes

class  IntersectState
 

Public Types

enum  LODSelectionMode { USE_HIGHEST_LEVEL_OF_DETAIL, USE_SEGMENT_START_POINT_AS_EYE_POINT_FOR_LOD_LEVEL_SELECTION }
 
typedef std::vector< HitHitList
 
typedef std::map< const
osg::LineSegment *, HitList
LineSegmentHitListMap
 
- Public Types inherited from osg::NodeVisitor
enum  TraversalMode { TRAVERSE_NONE, TRAVERSE_PARENTS, TRAVERSE_ALL_CHILDREN, TRAVERSE_ACTIVE_CHILDREN }
 
enum  VisitorType {
  NODE_VISITOR = 0, UPDATE_VISITOR, EVENT_VISITOR, COLLECT_OCCLUDER_VISITOR,
  CULL_VISITOR
}
 

Public Member Functions

 IntersectVisitor ()
 
virtual ~IntersectVisitor ()
 
 META_NodeVisitor (osgUtil, IntersectVisitor) void reset()
 
void addLineSegment (osg::LineSegment *seg)
 
HitListgetHitList (const osg::LineSegment *seg)
 
int getNumHits (const osg::LineSegment *seg)
 
LineSegmentHitListMapgetSegHitList ()
 
bool hits ()
 
void setLODSelectionMode (LODSelectionMode mode)
 
LODSelectionMode getLODSelectionMode () const
 
void setEyePoint (const osg::Vec3 &eye)
 
virtual osg::Vec3 getEyePoint () const
 
virtual float getDistanceToEyePoint (const osg::Vec3 &pos, bool withLODScale) const
 
virtual void apply (osg::Node &)
 
virtual void apply (osg::Geode &node)
 
virtual void apply (osg::Billboard &node)
 
virtual void apply (osg::Group &node)
 
virtual void apply (osg::Transform &node)
 
virtual void apply (osg::Switch &node)
 
virtual void apply (osg::LOD &node)
 
- Public Member Functions inherited from osg::NodeVisitor
 NodeVisitor (TraversalMode tm=TRAVERSE_NONE)
 
 NodeVisitor (VisitorType type, TraversalMode tm=TRAVERSE_NONE)
 
virtual ~NodeVisitor ()
 
virtual const char * libraryName () const
 
virtual const char * className () const
 
virtual void reset ()
 
void setVisitorType (VisitorType type)
 
VisitorType getVisitorType () const
 
void setTraversalNumber (unsigned int fn)
 
unsigned int getTraversalNumber () const
 
void setFrameStamp (FrameStamp *fs)
 
const FrameStampgetFrameStamp () const
 
void setTraversalMask (Node::NodeMask mask)
 
Node::NodeMask getTraversalMask () const
 
void setNodeMaskOverride (Node::NodeMask mask)
 
Node::NodeMask getNodeMaskOverride () const
 
bool validNodeMask (const osg::Node &node) const
 
void setTraversalMode (TraversalMode mode)
 
TraversalMode getTraversalMode () const
 
void setUserData (Referenced *obj)
 
ReferencedgetUserData ()
 
const ReferencedgetUserData () const
 
void traverse (Node &node)
 
void pushOntoNodePath (Node *node)
 
void popFromNodePath ()
 
NodePathgetNodePath ()
 
const NodePathgetNodePath () const
 
virtual osg::Vec3 getViewPoint () const
 
virtual float getDistanceFromEyePoint (const Vec3 &, bool) const
 
virtual float getDistanceToViewPoint (const Vec3 &, bool) const
 
virtual void apply (ProxyNode &node)
 
virtual void apply (Projection &node)
 
virtual void apply (CoordinateSystemNode &node)
 
virtual void apply (ClipNode &node)
 
virtual void apply (TexGenNode &node)
 
virtual void apply (LightSource &node)
 
virtual void apply (Camera &node)
 
virtual void apply (CameraView &node)
 
virtual void apply (MatrixTransform &node)
 
virtual void apply (PositionAttitudeTransform &node)
 
virtual void apply (Sequence &node)
 
virtual void apply (PagedLOD &node)
 
virtual void apply (ClearNode &node)
 
virtual void apply (OccluderNode &node)
 
virtual void apply (OcclusionQueryNode &node)
 
void setDatabaseRequestHandler (DatabaseRequestHandler *handler)
 
DatabaseRequestHandlergetDatabaseRequestHandler ()
 
const DatabaseRequestHandlergetDatabaseRequestHandler () const
 
void setImageRequestHandler (ImageRequestHandler *handler)
 
ImageRequestHandlergetImageRequestHandler ()
 
const ImageRequestHandlergetImageRequestHandler () const
 
- Public Member Functions inherited from osg::Referenced
 Referenced ()
 
 Referenced (bool threadSafeRefUnref)
 
 Referenced (const Referenced &)
 
Referencedoperator= (const Referenced &)
 
virtual void setThreadSafeRefUnref (bool threadSafe)
 
bool getThreadSafeRefUnref () const
 
OpenThreads::MutexgetRefMutex () const
 
int ref () const
 
int unref () const
 
int unref_nodelete () const
 
int referenceCount () const
 
ObserverSetgetObserverSet () const
 
ObserverSetgetOrCreateObserverSet () const
 
void addObserver (Observer *observer) const
 
void removeObserver (Observer *observer) const
 

Protected Types

typedef std::vector
< osg::ref_ptr< IntersectState > > 
IntersectStateStack
 

Protected Member Functions

bool intersect (osg::Drawable &gset)
 
void pushMatrix (osg::RefMatrix *matrix, osg::Transform::ReferenceFrame rf)
 
void popMatrix ()
 
bool enterNode (osg::Node &node)
 
void leaveNode ()
 

Protected Attributes

IntersectStateStack _intersectStateStack
 
LineSegmentHitListMap _segHitList
 
LODSelectionMode _lodSelectionMode
 
osg::Vec3 _pseudoEyePoint
 
- Protected Attributes inherited from osg::NodeVisitor
VisitorType _visitorType
 
unsigned int _traversalNumber
 
ref_ptr< FrameStamp_frameStamp
 
TraversalMode _traversalMode
 
Node::NodeMask _traversalMask
 
Node::NodeMask _nodeMaskOverride
 
NodePath _nodePath
 
ref_ptr< Referenced_userData
 
ref_ptr< DatabaseRequestHandler_databaseRequestHandler
 
ref_ptr< ImageRequestHandler_imageRequestHandler
 
- Protected Attributes inherited from osg::Referenced
OpenThreads::AtomicPtr _observerSet
 
OpenThreads::Atomic _refCount
 

Additional Inherited Members

- Static Public Member Functions inherited from osg::Referenced
static OpenThreads::MutexgetGlobalReferencedMutex ()
 
static void setThreadSafeReferenceCounting (bool enableThreadSafeReferenceCounting)
 
static bool getThreadSafeReferenceCounting ()
 
static void setDeleteHandler (DeleteHandler *handler)
 
static DeleteHandlergetDeleteHandler ()
 

Detailed Description

Deprecated - use IntersectionVisitor instead.

Member Typedef Documentation

Member Enumeration Documentation

Enumerator
USE_HIGHEST_LEVEL_OF_DETAIL 
USE_SEGMENT_START_POINT_AS_EYE_POINT_FOR_LOD_LEVEL_SELECTION 

Constructor & Destructor Documentation

osgUtil::IntersectVisitor::IntersectVisitor ( )
virtual osgUtil::IntersectVisitor::~IntersectVisitor ( )
virtual

Member Function Documentation

void osgUtil::IntersectVisitor::addLineSegment ( osg::LineSegment seg)

Add a line segment to use for intersection testing during scene traversal. Note, a maximum of 32 line segments can be added to a IntersectVistor, adding more than this will result in warning being emitted to the console and the excess segments being ignored.

virtual void osgUtil::IntersectVisitor::apply ( osg::Node )
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectVisitor::apply ( osg::Geode node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectVisitor::apply ( osg::Billboard node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectVisitor::apply ( osg::Group node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectVisitor::apply ( osg::Transform node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectVisitor::apply ( osg::Switch node)
virtual

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectVisitor::apply ( osg::LOD node)
virtual

Reimplemented from osg::NodeVisitor.

bool osgUtil::IntersectVisitor::enterNode ( osg::Node node)
protected
virtual float osgUtil::IntersectVisitor::getDistanceToEyePoint ( const osg::Vec3 pos,
bool  withLODScale 
) const
virtual

Get the distance from a point to the eye point, distance value in local coordinate system. This is calculated using the pseudo-EyePoint (above) when doing LOD calculcations.

Reimplemented from osg::NodeVisitor.

virtual osg::Vec3 osgUtil::IntersectVisitor::getEyePoint ( ) const
virtual

Get the eye point in local coordinates. Note, not all NodeVisitor implement this method, it is mainly cull visitors which will implement.

Reimplemented from osg::NodeVisitor.

HitList& osgUtil::IntersectVisitor::getHitList ( const osg::LineSegment seg)
inline
LODSelectionMode osgUtil::IntersectVisitor::getLODSelectionMode ( ) const
inline
int osgUtil::IntersectVisitor::getNumHits ( const osg::LineSegment seg)
inline
LineSegmentHitListMap& osgUtil::IntersectVisitor::getSegHitList ( )
inline
bool osgUtil::IntersectVisitor::hits ( )
bool osgUtil::IntersectVisitor::intersect ( osg::Drawable gset)
protected
void osgUtil::IntersectVisitor::leaveNode ( )
protected
osgUtil::IntersectVisitor::META_NodeVisitor ( osgUtil  ,
IntersectVisitor   
)
void osgUtil::IntersectVisitor::popMatrix ( )
protected
void osgUtil::IntersectVisitor::pushMatrix ( osg::RefMatrix matrix,
osg::Transform::ReferenceFrame  rf 
)
protected
void osgUtil::IntersectVisitor::setEyePoint ( const osg::Vec3 eye)
inline

Set the eye point in local coordinates. This is a pseudo-EyePoint for billboarding and LOD purposes. It is copied from the Start point of the most-recently-added segment of the intersection ray set (IntersectState::_segList).

void osgUtil::IntersectVisitor::setLODSelectionMode ( LODSelectionMode  mode)
inline

Member Data Documentation

IntersectStateStack osgUtil::IntersectVisitor::_intersectStateStack
protected
LODSelectionMode osgUtil::IntersectVisitor::_lodSelectionMode
protected
osg::Vec3 osgUtil::IntersectVisitor::_pseudoEyePoint
protected
LineSegmentHitListMap osgUtil::IntersectVisitor::_segHitList
protected

The documentation for this class was generated from the following file: