
Public Types | |
| enum | LODSelectionMode { USE_HIGHEST_LEVEL_OF_DETAIL, USE_SEGMENT_START_POINT_AS_EYE_POINT_FOR_LOD_LEVEL_SELECTION } |
| typedef std::vector < Hit > | HitList |
| typedef std::map < const osg::LineSegment *, HitList > | LineSegmentHitListMap |
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) |
| LineSegmentHitListMap & | getSegHitList () |
| 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 (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 |
Classes | |
| class | IntersectState |
| typedef std::vector<Hit> osgUtil::IntersectVisitor::HitList |
| typedef std::map<const osg::LineSegment*,HitList > osgUtil::IntersectVisitor::LineSegmentHitListMap |
typedef std::vector<osg::ref_ptr<IntersectState> > osgUtil::IntersectVisitor::IntersectStateStack [protected] |
| osgUtil::IntersectVisitor::IntersectVisitor | ( | ) |
| virtual osgUtil::IntersectVisitor::~IntersectVisitor | ( | ) | [virtual] |
| void osgUtil::IntersectVisitor::reset | ( | ) | [virtual] |
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.
| 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.
| HitList& osgUtil::IntersectVisitor::getHitList | ( | const osg::LineSegment * | seg | ) | [inline] |
| int osgUtil::IntersectVisitor::getNumHits | ( | const osg::LineSegment * | seg | ) | [inline] |
| LineSegmentHitListMap& osgUtil::IntersectVisitor::getSegHitList | ( | ) | [inline] |
| bool osgUtil::IntersectVisitor::hits | ( | ) |
| void osgUtil::IntersectVisitor::setLODSelectionMode | ( | LODSelectionMode | mode | ) | [inline] |
| LODSelectionMode osgUtil::IntersectVisitor::getLODSelectionMode | ( | ) | const [inline] |
| 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).
| 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.
| 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 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::intersect | ( | osg::Drawable & | gset | ) | [protected] |
| void osgUtil::IntersectVisitor::pushMatrix | ( | osg::RefMatrix * | matrix, | |
| osg::Transform::ReferenceFrame | rf | |||
| ) | [protected] |
| void osgUtil::IntersectVisitor::popMatrix | ( | ) | [protected] |
| bool osgUtil::IntersectVisitor::enterNode | ( | osg::Node & | node | ) | [protected] |
| void osgUtil::IntersectVisitor::leaveNode | ( | ) | [protected] |
osg::Vec3 osgUtil::IntersectVisitor::_pseudoEyePoint [protected] |