Class BroadPhaseCollisionManager

Inheritance Relationships

Derived Types

Class Documentation

class BroadPhaseCollisionManager

Base class for broad phase collision. It helps to accelerate the collision/distance between N objects. Also support self collision, self distance and collision/distance with another M objects.

Subclassed by coal::DynamicAABBTreeArrayCollisionManager, coal::DynamicAABBTreeCollisionManager, coal::IntervalTreeCollisionManager, coal::NaiveCollisionManager, coal::SSaPCollisionManager, coal::SaPCollisionManager, coal::SpatialHashingCollisionManager< HashTable >

Public Functions

BroadPhaseCollisionManager()
virtual ~BroadPhaseCollisionManager()
virtual void registerObjects(const std::vector<CollisionObject*> &other_objs)

add objects to the manager

virtual void registerObject(CollisionObject *obj) = 0

add one object to the manager

virtual void unregisterObject(CollisionObject *obj) = 0

remove one object from the manager

virtual void setup() = 0

initialize the manager, related with the specific type of manager

virtual void update() = 0

update the condition of manager

virtual void update(CollisionObject *updated_obj)

update the manager by explicitly given the object updated

virtual void update(const std::vector<CollisionObject*> &updated_objs)

update the manager by explicitly given the set of objects update

virtual void clear() = 0

clear the manager

virtual void getObjects(std::vector<CollisionObject*> &objs) const = 0

return the objects managed by the manager

inline virtual std::vector<CollisionObject*> getObjects() const

return the objects managed by the manager

virtual void collide(CollisionObject *obj, CollisionCallBackBase *callback) const = 0

perform collision test between one object and all the objects belonging to the manager

virtual void distance(CollisionObject *obj, DistanceCallBackBase *callback) const = 0

perform distance computation between one object and all the objects belonging to the manager

virtual void collide(CollisionCallBackBase *callback) const = 0

perform collision test for the objects belonging to the manager (i.e., N^2 self collision)

virtual void distance(DistanceCallBackBase *callback) const = 0

perform distance test for the objects belonging to the manager (i.e., N^2 self distance)

virtual void collide(BroadPhaseCollisionManager *other_manager, CollisionCallBackBase *callback) const = 0

perform collision test with objects belonging to another manager

virtual void distance(BroadPhaseCollisionManager *other_manager, DistanceCallBackBase *callback) const = 0

perform distance test with objects belonging to another manager

virtual bool empty() const = 0

whether the manager is empty

virtual size_t size() const = 0

the number of objects managed by the manager

Protected Functions

bool inTestedSet(CollisionObject *a, CollisionObject *b) const
void insertTestedSet(CollisionObject *a, CollisionObject *b) const

Protected Attributes

mutable std::set<std::pair<CollisionObject*, CollisionObject*>> tested_set

tools help to avoid repeating collision or distance callback for the pairs of objects tested before. It can be useful for some of the broadphase algorithms.

mutable bool enable_tested_set_