Visualization Library 2.0.0

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
vl::RayIntersector Class Reference

The RayIntersector class is used to detect the intersection points between a Ray and a set of Actor[s]. More...

#include <RayIntersector.hpp>

+ Inheritance diagram for vl::RayIntersector:

Public Member Functions

 RayIntersector ()
 
const ActorCollectionactors () const
 The Actors against which the intersection test is performed. More...
 
ActorCollectionactors ()
 The Actors against which the intersection test is performed. More...
 
const Rayray () const
 The ray in world coordinates to be intersected with the actors() More...
 
void setRay (const Ray &ray)
 The ray in world coordinates to be intersected with the actors() More...
 
const Frustumfrustum () const
 The frustum in world coordinates used to cull the objects. More...
 
void setFrustum (const Frustum &frustum)
 The frustum in world coordinates used to cull the objects. More...
 
const std::vector< ref< RayIntersection > > & intersections () const
 The intersection points detected by the last intersect() call sorted according to their distance (the first one is the closest). More...
 
void intersect ()
 Executes the intersection test. More...
 
void intersect (const Ray &ray, SceneManager *scene_manager)
 Computes the intersections between the given ray and the Actor[s] contained in the given scene manager. More...
 
- Public Member Functions inherited from vl::Object
 Object ()
 Constructor. More...
 
 Object (const Object &other)
 Copy constructor: copies the name, ref count mutex and user data. More...
 
Objectoperator= (const Object &other)
 Copy operator: copies the object's name, ref count mutex and user data. More...
 
const std::string & objectName () const
 The name of the object, by default set to the object's class name. More...
 
void setObjectName (const char *name)
 The name of the object, by default set to the object's class name in debug builds. More...
 
void setObjectName (const std::string &name)
 The name of the object, by default set to the object's class name in debug builds. More...
 
void setRefCountMutex (IMutex *mutex)
 The mutex used to protect the reference counting of an Object across multiple threads. More...
 
IMutexrefCountMutex ()
 The mutex used to protect the reference counting of an Object across multiple threads. More...
 
const IMutexrefCountMutex () const
 The mutex used to protect the reference counting of an Object across multiple threads. More...
 
int referenceCount () const
 Returns the number of references of an object. More...
 
void incReference () const
 Increments the reference count of an object. More...
 
void decReference ()
 Decrements the reference count of an object and deletes it if both automaticDelete() is true the count reaches 0. More...
 
void setAutomaticDelete (bool autodel_on)
 If set to true the Object is deleted when its reference count reaches 0. More...
 
bool automaticDelete () const
 If set to true the Object is deleted when its reference count reaches 0. More...
 
template<class T >
T * as ()
 Casts an Object to the specified class. More...
 
template<class T >
const T * as () const
 Casts an Object to the specified class. More...
 

Protected Member Functions

void intersect (Actor *act)
 
void intersectGeometry (Actor *act, Geometry *geom)
 
template<class T >
void intersectTriangle (const T &a, const T &b, const T &c, int ia, int ib, int ic, Actor *, Geometry *geom, DrawCall *prim, int prim_idx)
 
- Protected Member Functions inherited from vl::Object
virtual ~Object ()
 

Static Protected Member Functions

static bool sorter (const ref< RayIntersection > &a, const ref< RayIntersection > &b)
 

Protected Attributes

Frustum mFrustum
 
std::vector< ref< RayIntersection > > mIntersections
 
ref< ActorCollectionmActors
 
Ray mRay
 
- Protected Attributes inherited from vl::Object
std::string mObjectName
 
IMutexmRefCountMutex
 
int mReferenceCount
 
bool mAutomaticDelete
 

Detailed Description

The RayIntersector class is used to detect the intersection points between a Ray and a set of Actor[s].

Definition at line 133 of file RayIntersector.hpp.

Constructor & Destructor Documentation

◆ RayIntersector()

vl::RayIntersector::RayIntersector ( )
inline

Definition at line 138 of file RayIntersector.hpp.

Member Function Documentation

◆ actors() [1/2]

const ActorCollection* vl::RayIntersector::actors ( ) const
inline

The Actors against which the intersection test is performed.

Definition at line 145 of file RayIntersector.hpp.

Referenced by intersect().

◆ actors() [2/2]

ActorCollection* vl::RayIntersector::actors ( )
inline

The Actors against which the intersection test is performed.

Definition at line 147 of file RayIntersector.hpp.

◆ frustum()

const Frustum& vl::RayIntersector::frustum ( ) const
inline

The frustum in world coordinates used to cull the objects.

Definition at line 155 of file RayIntersector.hpp.

Referenced by intersect().

◆ intersect() [1/3]

void RayIntersector::intersect ( )

Executes the intersection test.

Note
Before calling this function the transforms and the bounding volumes of the Actor[s] to be intersected must be updated, in this order.
All the intersections are mande on the Actor's LOD level #0.

Definition at line 46 of file RayIntersector.cpp.

References actors(), vl::Frustum::cull(), frustum(), mIntersections, vl::Collection< T >::size(), and sorter().

Referenced by intersect().

◆ intersect() [2/3]

void RayIntersector::intersect ( const Ray ray,
SceneManager scene_manager 
)

Computes the intersections between the given ray and the Actor[s] contained in the given scene manager.

This is an utility function equivalent to:

intersector->actors()->clear();
scene_manager->extractActors( *intersector->actors() );
intersector->setRay(ray);
intersector->intersect();

Definition at line 38 of file RayIntersector.cpp.

References actors(), vl::Collection< T >::clear(), vl::SceneManager::extractVisibleActors(), intersect(), NULL, and setRay().

◆ intersect() [3/3]

void RayIntersector::intersect ( Actor act)
protected

Definition at line 60 of file RayIntersector.cpp.

References intersectGeometry(), and vl::Actor::lod().

◆ intersectGeometry()

void RayIntersector::intersectGeometry ( Actor act,
Geometry geom 
)
protected

◆ intersections()

const std::vector< ref<RayIntersection> >& vl::RayIntersector::intersections ( ) const
inline

The intersection points detected by the last intersect() call sorted according to their distance (the first one is the closest).

Definition at line 160 of file RayIntersector.hpp.

◆ intersectTriangle()

template<class T >
void RayIntersector::intersectTriangle ( const T &  a,
const T &  b,
const T &  c,
int  ia,
int  ib,
int  ic,
Actor act,
Geometry geom,
DrawCall prim,
int  prim_idx 
)
protected

◆ ray()

const Ray& vl::RayIntersector::ray ( ) const
inline

The ray in world coordinates to be intersected with the actors()

Definition at line 150 of file RayIntersector.hpp.

Referenced by intersectTriangle().

◆ setFrustum()

void vl::RayIntersector::setFrustum ( const Frustum frustum)
inline

The frustum in world coordinates used to cull the objects.

Definition at line 157 of file RayIntersector.hpp.

◆ setRay()

void vl::RayIntersector::setRay ( const Ray ray)
inline

The ray in world coordinates to be intersected with the actors()

Definition at line 152 of file RayIntersector.hpp.

Referenced by intersect().

◆ sorter()

static bool vl::RayIntersector::sorter ( const ref< RayIntersection > &  a,
const ref< RayIntersection > &  b 
)
inlinestaticprotected

Definition at line 180 of file RayIntersector.hpp.

Referenced by intersect().

Member Data Documentation

◆ mActors

ref<ActorCollection> vl::RayIntersector::mActors
protected

Definition at line 192 of file RayIntersector.hpp.

◆ mFrustum

Frustum vl::RayIntersector::mFrustum
protected

Definition at line 190 of file RayIntersector.hpp.

◆ mIntersections

std::vector< ref<RayIntersection> > vl::RayIntersector::mIntersections
protected

Definition at line 191 of file RayIntersector.hpp.

Referenced by intersect(), and intersectTriangle().

◆ mRay

Ray vl::RayIntersector::mRay
protected

Definition at line 193 of file RayIntersector.hpp.


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