openscenegraph
Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes
osgUtil::IntersectionVisitor Class Reference
Inheritance diagram for osgUtil::IntersectionVisitor:
osg::NodeVisitor osg::Referenced

List of all members.

Classes

struct  ReadCallback

Public Types

enum  LODSelectionMode { USE_HIGHEST_LEVEL_OF_DETAIL, USE_EYE_POINT_FOR_LOD_LEVEL_SELECTION }

Public Member Functions

 IntersectionVisitor (Intersector *intersector=0, ReadCallback *readCallback=0)
 META_NodeVisitor ("osgUtil","IntersectionVisitor") virtual void reset()
void setIntersector (Intersector *intersector)
IntersectorgetIntersector ()
const IntersectorgetIntersector () const
void setUseKdTreeWhenAvailable (bool useKdTrees)
bool getUseKdTreeWhenAvailable () const
void setDoDummyTraversal (bool dummy)
bool getDoDummyTraversal () const
void setReadCallback (ReadCallback *rc)
ReadCallbackgetReadCallback ()
const ReadCallbackgetReadCallback () const
void pushWindowMatrix (osg::RefMatrix *matrix)
void pushWindowMatrix (osg::Viewport *viewport)
void popWindowMatrix ()
osg::RefMatrixgetWindowMatrix ()
const osg::RefMatrixgetWindowMatrix () const
void pushProjectionMatrix (osg::RefMatrix *matrix)
void popProjectionMatrix ()
osg::RefMatrixgetProjectionMatrix ()
const osg::RefMatrixgetProjectionMatrix () const
void pushViewMatrix (osg::RefMatrix *matrix)
void popViewMatrix ()
osg::RefMatrixgetViewMatrix ()
const osg::RefMatrixgetViewMatrix () const
void pushModelMatrix (osg::RefMatrix *matrix)
void popModelMatrix ()
osg::RefMatrixgetModelMatrix ()
const osg::RefMatrixgetModelMatrix () const
void setReferenceEyePoint (const osg::Vec3 &ep)
const osg::Vec3getReferenceEyePoint () const
void setReferenceEyePointCoordinateFrame (Intersector::CoordinateFrame cf)
Intersector::CoordinateFrame getReferenceEyePointCoordinateFrame () const
virtual osg::Vec3 getEyePoint () const
void setLODSelectionMode (LODSelectionMode mode)
LODSelectionMode getLODSelectionMode () const
virtual float getDistanceToEyePoint (const osg::Vec3 &pos, bool withLODScale) const
virtual void apply (osg::Node &node)
virtual void apply (osg::Geode &geode)
virtual void apply (osg::Billboard &geode)
virtual void apply (osg::Group &group)
virtual void apply (osg::LOD &lod)
virtual void apply (osg::PagedLOD &lod)
virtual void apply (osg::Transform &transform)
virtual void apply (osg::Projection &projection)
virtual void apply (osg::Camera &camera)

Protected Types

typedef std::list
< osg::ref_ptr< Intersector > > 
IntersectorStack
typedef std::list
< osg::ref_ptr< osg::RefMatrix > > 
MatrixStack

Protected Member Functions

bool enter (const osg::Node &node)
void leave ()
void intersect (osg::Drawable *drawable)
void push_clone ()
void pop_clone ()

Protected Attributes

IntersectorStack _intersectorStack
bool _useKdTreesWhenAvailable
bool _dummyTraversal
osg::ref_ptr< ReadCallback_readCallback
MatrixStack _windowStack
MatrixStack _projectionStack
MatrixStack _viewStack
MatrixStack _modelStack
osg::Vec3 _referenceEyePoint
Intersector::CoordinateFrame _referenceEyePointCoordinateFrame
LODSelectionMode _lodSelectionMode
bool _eyePointDirty
osg::Vec3 _eyePoint

Detailed Description

InteresectionVisitor is used to testing for intersections with the scene, traversing the scene using generic osgUtil::Intersector's to test against the scene. To implement different types of intersection techniques, one implements custom versions of the osgUtil::Intersector, and then pass the constructed intersector to the IntersectionVisitor.


Member Typedef Documentation


Member Enumeration Documentation

Enumerator:
USE_HIGHEST_LEVEL_OF_DETAIL 
USE_EYE_POINT_FOR_LOD_LEVEL_SELECTION 

Constructor & Destructor Documentation

osgUtil::IntersectionVisitor::IntersectionVisitor ( Intersector intersector = 0,
ReadCallback readCallback = 0 
)

Member Function Documentation

virtual void osgUtil::IntersectionVisitor::apply ( osg::Node node) [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectionVisitor::apply ( osg::Geode geode) [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectionVisitor::apply ( osg::Billboard geode) [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectionVisitor::apply ( osg::Group group) [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectionVisitor::apply ( osg::LOD lod) [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectionVisitor::apply ( osg::PagedLOD lod) [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectionVisitor::apply ( osg::Transform transform) [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectionVisitor::apply ( osg::Projection projection) [virtual]

Reimplemented from osg::NodeVisitor.

virtual void osgUtil::IntersectionVisitor::apply ( osg::Camera camera) [virtual]

Reimplemented from osg::NodeVisitor.

bool osgUtil::IntersectionVisitor::enter ( const osg::Node node) [inline, protected]
virtual float osgUtil::IntersectionVisitor::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.

Get the eye point in the local coordinate frame a given traversal point.

Reimplemented from osg::NodeVisitor.

Get the intersector that will be used to intersect with the scene, and to store any hits that occur.

Get the const intersector that will be used to intersect with the scene, and to store any hits that occur.

Get the LOD selection scheme.

Get the read callback.

Get the const read callback.

Get the reference eye point.

Get the coordinate frame of the reference eye point.

Set whether the intersectors should use KdTrees.

void osgUtil::IntersectionVisitor::intersect ( osg::Drawable drawable) [inline, protected]
void osgUtil::IntersectionVisitor::leave ( ) [inline, protected]
osgUtil::IntersectionVisitor::META_NodeVisitor ( "osgUtil"  ,
"IntersectionVisitor"   
)
void osgUtil::IntersectionVisitor::pop_clone ( ) [inline, protected]
void osgUtil::IntersectionVisitor::push_clone ( ) [inline, protected]

Set the intersector that will be used to intersect with the scene, and to store any hits that occur.

Set the LOD selection scheme.

Set the read callback.

Set the reference eye point that is used for nodes that require an eye point to position themselves, such as billboards.

Set the coordinate frame of the reference eye point.

void osgUtil::IntersectionVisitor::setUseKdTreeWhenAvailable ( bool  useKdTrees) [inline]

Set whether the intersectors should use KdTrees when they are found on the scene graph.


Member Data Documentation


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