Inheritance diagram for osgUtil::IntersectVisitor:
Public Types | |
typedef std::vector< Hit > | HitList |
typedef std::map< const osg::LineSegment *, HitList > | LineSegmentHitListMap |
enum | LODSelectionMode { USE_HEIGHEST_LEVEL_OF_DETAIL, USE_SEGMENT_START_POINT_AS_EYE_POINT_FOR_LOD_LEVEL_SELECTION } |
Public Member Functions | |
IntersectVisitor () | |
virtual | ~IntersectVisitor () |
void | reset () |
Method to call to reset visitor. | |
void | addLineSegment (osg::LineSegment *seg) |
Add a line segment to use for intersection testing during scene traversal. | |
HitList & | getHitList (const osg::LineSegment *seg) |
int | getNumHits (const osg::LineSegment *seg) |
bool | hits () |
void | setLODSelectionMode (LODSelectionMode mode) |
LODSelectionMode | getLODSelectionMode () const |
void | setEyePoint (const osg::Vec3 &eye) |
Set the eye point in local coordinates. | |
virtual osg::Vec3 | getEyePoint () const |
Get the eye point in local coordinates. | |
virtual float | getDistanceToEyePoint (const osg::Vec3 &pos, bool withLODScale) const |
Get the distance from a point to the eye point, distance value in local coordinate system. | |
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) |
Protected Types | |
typedef std::vector< osg::ref_ptr< IntersectState > > | IntersectStateStack |
Protected Member Functions | |
bool | intersect (osg::Drawable &gset) |
void | pushMatrix (const osg::Matrix &matrix) |
void | popMatrix () |
bool | enterNode (osg::Node &node) |
void | leaveNode () |
Protected Attributes | |
IntersectStateStack | _intersectStateStack |
LineSegmentHitListMap | _segHitList |
LODSelectionMode | _lodSelectionMode |
osg::Vec3 | _pseudoEyePoint |
|
|
|
|
|
|
|
|
|
|
|
|
|
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. |
|
Reimplemented from osg::NodeVisitor. |
|
Reimplemented from osg::NodeVisitor. |
|
Reimplemented from osg::NodeVisitor. |
|
Reimplemented from osg::NodeVisitor. |
|
Reimplemented from osg::NodeVisitor. |
|
Reimplemented from osg::NodeVisitor. |
|
Reimplemented from osg::NodeVisitor. |
|
|
|
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. |
|
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. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Method to call to reset visitor. Useful if your visitor accumulates state during a traversal, and you plan to reuse the visitor. To flush that state for the next traversal: call reset() prior to each traversal. Reimplemented from osg::NodeVisitor. |
|
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). |
|
|
|
|
|
|
|
|
|
|