38#ifndef COAL_BROAD_PHASE_DYNAMIC_AABB_TREE_ARRAY_H
39#define COAL_BROAD_PHASE_DYNAMIC_AABB_TREE_ARRAY_H
41#include <unordered_map>
58 using Base::getObjects;
65 int* tree_topdown_balance_threshold{
nullptr};
66 int* tree_topdown_level{
nullptr};
93 void update(
const std::vector<CollisionObject*>& updated_objs);
99 void getObjects(std::vector<CollisionObject*>& objs)
const;
135 std::unordered_map<CollisionObject*, size_t> table;
Base class for broad phase collision. It helps to accelerate the collision/distance between N objects...
Definition broadphase_collision_manager.h:53
the object for collision or distance computation, contains the geometry and the transform information
Definition collision_object.h:216
Definition broadphase_dynamic_AABB_tree_array.h:55
void distance(DistanceCallBackBase *callback) const
perform distance test for the objects belonging to the manager (i.e., N^2 self distance)
int tree_incremental_balance_pass
Definition broadphase_dynamic_AABB_tree_array.h:64
void unregisterObject(CollisionObject *obj)
remove one object from the manager
int tree_init_level
Definition broadphase_dynamic_AABB_tree_array.h:67
void distance(CollisionObject *obj, DistanceCallBackBase *callback) const
perform distance computation between one object and all the objects belonging to the manager
std::unordered_map< CollisionObject *, size_t > DynamicAABBTable
Definition broadphase_dynamic_AABB_tree_array.h:61
bool octree_as_geometry_collide
Definition broadphase_dynamic_AABB_tree_array.h:69
void registerObject(CollisionObject *obj)
add one object to the manager
void update(CollisionObject *updated_obj)
update the manager by explicitly given the object updated
bool empty() const
whether the manager is empty
void setup()
initialize the manager, related with the specific type of manager
BroadPhaseCollisionManager Base
Definition broadphase_dynamic_AABB_tree_array.h:57
const detail::implementation_array::HierarchyTree< AABB > & getTree() const
size_t size() const
the number of objects managed by the manager
void getObjects(std::vector< CollisionObject * > &objs) const
return the objects managed by the manager
int max_tree_nonbalanced_level
Definition broadphase_dynamic_AABB_tree_array.h:63
void collide(CollisionCallBackBase *callback) const
perform collision test for the objects belonging to the manager (i.e., N^2 self collision)
bool octree_as_geometry_distance
Definition broadphase_dynamic_AABB_tree_array.h:70
void collide(CollisionObject *obj, CollisionCallBackBase *callback) const
perform collision test between one object and all the objects belonging to the manager
void clear()
clear the manager
void registerObjects(const std::vector< CollisionObject * > &other_objs)
add objects to the manager
void update(const std::vector< CollisionObject * > &updated_objs)
update the manager by explicitly given the set of objects update
void collide(BroadPhaseCollisionManager *other_manager_, CollisionCallBackBase *callback) const
perform collision test with objects belonging to another manager
virtual void update()
update the condition of manager
DynamicAABBTreeArrayCollisionManager()
void distance(BroadPhaseCollisionManager *other_manager_, DistanceCallBackBase *callback) const
perform distance test with objects belonging to another manager
Class for hierarchy tree structure.
Definition hierarchy_tree_array.h:58
#define COAL_DLLAPI
Definition config.hh:88
Main namespace.
Definition broadphase_bruteforce.h:44
Base callback class for collision queries. This class can be supersed by child classes to provide des...
Definition broadphase_callbacks.h:49
Base callback class for distance queries. This class can be supersed by child classes to provide desi...
Definition broadphase_callbacks.h:72
Definition node_base_array.h:50