openscenegraph
Public Types | Public Member Functions | Protected Attributes | List of all members
osgUtil::Intersector Class Referenceabstract

#include <IntersectionVisitor>

Inheritance diagram for osgUtil::Intersector:
osg::Referenced osgUtil::IntersectorGroup osgUtil::LineSegmentIntersector osgUtil::PlaneIntersector osgUtil::PolytopeIntersector osgUtil::RayIntersector

Public Types

enum  CoordinateFrame { WINDOW , PROJECTION , VIEW , MODEL }
 
enum  IntersectionLimit { NO_LIMIT , LIMIT_ONE_PER_DRAWABLE , LIMIT_ONE , LIMIT_NEAREST }
 
enum  PrecisionHint { USE_DOUBLE_CALCULATIONS , USE_FLOAT_CALCULATIONS }
 

Public Member Functions

 Intersector (CoordinateFrame cf=MODEL, IntersectionLimit il=NO_LIMIT)
 
void setCoordinateFrame (CoordinateFrame cf)
 
CoordinateFrame getCoordinateFrame () const
 
void setIntersectionLimit (IntersectionLimit limit)
 
IntersectionLimit getIntersectionLimit () const
 
virtual Intersectorclone (osgUtil::IntersectionVisitor &iv)=0
 
virtual bool enter (const osg::Node &node)=0
 
virtual void leave ()=0
 
virtual void intersect (osgUtil::IntersectionVisitor &iv, osg::Drawable *drawable)=0
 
virtual void reset ()
 
virtual bool containsIntersections ()=0
 
bool disabled () const
 
void incrementDisabledCount ()
 
void decrementDisabledCount ()
 
bool reachedLimit ()
 
void setPrecisionHint (PrecisionHint hint)
 
PrecisionHint getPrecisionHint () const
 
- Public Member Functions inherited from osg::Referenced
 Referenced ()
 
 Referenced (bool threadSafeRefUnref)
 
 Referenced (const Referenced &)
 
Referencedoperator= (const Referenced &)
 
virtual void setThreadSafeRefUnref (bool)
 
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 Attributes

CoordinateFrame _coordinateFrame
 
IntersectionLimit _intersectionLimit
 
unsigned int _disabledCount
 
PrecisionHint _precisionHint
 
- 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 setDeleteHandler (DeleteHandler *handler)
 
static DeleteHandlergetDeleteHandler ()
 
- Protected Member Functions inherited from osg::Referenced
virtual ~Referenced ()
 
void signalObserversAndDelete (bool signalDelete, bool doDelete) const
 
void deleteUsingDeleteHandler () const
 

Detailed Description

Pure virtual base class for implementing custom intersection technique. To implement a specific intersection technique on must override all the pure virtual methods, concrete examples of how to do this can be seen in the LineSegmentIntersector.

Member Enumeration Documentation

◆ CoordinateFrame

Enumerator
WINDOW 
PROJECTION 
VIEW 
MODEL 

◆ IntersectionLimit

Enumerator
NO_LIMIT 
LIMIT_ONE_PER_DRAWABLE 
LIMIT_ONE 
LIMIT_NEAREST 

◆ PrecisionHint

Hint to precision used in the internal intersections calculations.

Enumerator
USE_DOUBLE_CALCULATIONS 
USE_FLOAT_CALCULATIONS 

Constructor & Destructor Documentation

◆ Intersector()

osgUtil::Intersector::Intersector ( CoordinateFrame  cf = MODEL,
IntersectionLimit  il = NO_LIMIT 
)
inline

Member Function Documentation

◆ clone()

virtual Intersector * osgUtil::Intersector::clone ( osgUtil::IntersectionVisitor iv)
pure virtual

◆ containsIntersections()

virtual bool osgUtil::Intersector::containsIntersections ( )
pure virtual

◆ decrementDisabledCount()

void osgUtil::Intersector::decrementDisabledCount ( )
inline

◆ disabled()

bool osgUtil::Intersector::disabled ( ) const
inline

◆ enter()

virtual bool osgUtil::Intersector::enter ( const osg::Node node)
pure virtual

◆ getCoordinateFrame()

CoordinateFrame osgUtil::Intersector::getCoordinateFrame ( ) const
inline

◆ getIntersectionLimit()

IntersectionLimit osgUtil::Intersector::getIntersectionLimit ( ) const
inline

◆ getPrecisionHint()

PrecisionHint osgUtil::Intersector::getPrecisionHint ( ) const
inline

Get the hint to what precision should be used in the intersections calculations.

◆ incrementDisabledCount()

void osgUtil::Intersector::incrementDisabledCount ( )
inline

◆ intersect()

virtual void osgUtil::Intersector::intersect ( osgUtil::IntersectionVisitor iv,
osg::Drawable drawable 
)
pure virtual

◆ leave()

virtual void osgUtil::Intersector::leave ( )
pure virtual

◆ reachedLimit()

bool osgUtil::Intersector::reachedLimit ( )
inline

◆ reset()

virtual void osgUtil::Intersector::reset ( )
inlinevirtual

◆ setCoordinateFrame()

void osgUtil::Intersector::setCoordinateFrame ( CoordinateFrame  cf)
inline

◆ setIntersectionLimit()

void osgUtil::Intersector::setIntersectionLimit ( IntersectionLimit  limit)
inline

◆ setPrecisionHint()

void osgUtil::Intersector::setPrecisionHint ( PrecisionHint  hint)
inline

Set the hint to what precision to use in the intersections calculations.

Member Data Documentation

◆ _coordinateFrame

CoordinateFrame osgUtil::Intersector::_coordinateFrame
protected

◆ _disabledCount

unsigned int osgUtil::Intersector::_disabledCount
protected

◆ _intersectionLimit

IntersectionLimit osgUtil::Intersector::_intersectionLimit
protected

◆ _precisionHint

PrecisionHint osgUtil::Intersector::_precisionHint
protected

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