SOFA API  7226d276
Open source framework for multi-physics simuation
sofa::core::collision::IntersectorMap Class Reference

#include <Intersection.h>

Detailed Description

Table storing associations between types of collision models and intersectors implementing intersection tests

This class uses the new ClassInfo metaclass to be able to recognize derived classes. So it is no longer necessary to register all derived collision models (i.e. an intersector registered for RayCollisionModel will also be used for RayPickIntersector).

Protected Attributes

InternalMap intersectorsMap
 
std::map< helper::TypeInfo, helper::TypeInfo > castMap
 
std::set< const objectmodel::ClassInfo * > classes
 

Public Member Functions

template<class Model1 , class Model2 , class T >
void add (T *ptr)
 
template<class Model1 , class Model2 >
void ignore ()
 
 ~IntersectorMap ()
 
helper::TypeInfo getType (core::CollisionModel *model)
 
ElementIntersector * get (core::CollisionModel *model1, core::CollisionModel *model2, bool &swapModels)
 

Protected Member Functions

template<class Model1 , class Model2 >
void add_impl (ElementIntersector *intersector)
 
void add_impl (const objectmodel::ClassInfo &c1, const objectmodel::ClassInfo &c2, ElementIntersector *intersector)
 
void insert (const helper::TypeInfo &t1, const helper::TypeInfo &t2, ElementIntersector *intersector)
 

Attribute details

◆ castMap

std::map< helper::TypeInfo, helper::TypeInfo > sofa::core::collision::IntersectorMap::castMap
protected

◆ classes

std::set< const objectmodel::ClassInfo* > sofa::core::collision::IntersectorMap::classes
protected

◆ intersectorsMap

InternalMap sofa::core::collision::IntersectorMap::intersectorsMap
protected

Constructor details

◆ ~IntersectorMap()

sofa::core::collision::IntersectorMap::~IntersectorMap ( )

Function details

◆ add()

template<class Model1 , class Model2 , class T >
void sofa::core::collision::IntersectorMap::add ( T *  ptr)

◆ add_impl() [1/2]

void sofa::core::collision::IntersectorMap::add_impl ( const objectmodel::ClassInfo &  c1,
const objectmodel::ClassInfo &  c2,
ElementIntersector *  intersector 
)
protected

◆ add_impl() [2/2]

template<class Model1 , class Model2 >
void sofa::core::collision::IntersectorMap::add_impl ( ElementIntersector *  intersector)
protected

◆ get()

ElementIntersector * sofa::core::collision::IntersectorMap::get ( core::CollisionModel *  model1,
core::CollisionModel *  model2,
bool &  swapModels 
)

◆ getType()

helper::TypeInfo sofa::core::collision::IntersectorMap::getType ( core::CollisionModel *  model)

◆ ignore()

template<class Model1 , class Model2 >
void sofa::core::collision::IntersectorMap::ignore

◆ insert()

void sofa::core::collision::IntersectorMap::insert ( const helper::TypeInfo &  t1,
const helper::TypeInfo &  t2,
ElementIntersector *  intersector 
)
protected