Bullet Collision Detection & Physics Library
|
The btDbvtBroadphase implements a broadphase using two dynamic AABB bounding volume hierarchies/trees (see btDbvt). More...
#include <btDbvtBroadphase.h>
Public Types | |
enum | { DYNAMIC_SET = 0, FIXED_SET = 1, STAGECOUNT = 2 } |
Public Member Functions | |
btDbvtBroadphase (btOverlappingPairCache *paircache=0) | |
~btDbvtBroadphase () | |
void | collide (btDispatcher *dispatcher) |
void | optimize () |
btBroadphaseProxy * | createProxy (const btVector3 &aabbMin, const btVector3 &aabbMax, int shapeType, void *userPtr, short int collisionFilterGroup, short int collisionFilterMask, btDispatcher *dispatcher, void *multiSapProxy) |
virtual void | destroyProxy (btBroadphaseProxy *proxy, btDispatcher *dispatcher) |
virtual void | setAabb (btBroadphaseProxy *proxy, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *dispatcher) |
virtual void | rayTest (const btVector3 &rayFrom, const btVector3 &rayTo, btBroadphaseRayCallback &rayCallback, const btVector3 &aabbMin=btVector3(0, 0, 0), const btVector3 &aabbMax=btVector3(0, 0, 0)) |
virtual void | aabbTest (const btVector3 &aabbMin, const btVector3 &aabbMax, btBroadphaseAabbCallback &callback) |
virtual void | getAabb (btBroadphaseProxy *proxy, btVector3 &aabbMin, btVector3 &aabbMax) const |
virtual void | calculateOverlappingPairs (btDispatcher *dispatcher) |
calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb More... | |
virtual btOverlappingPairCache * | getOverlappingPairCache () |
virtual const btOverlappingPairCache * | getOverlappingPairCache () const |
virtual void | getBroadphaseAabb (btVector3 &aabbMin, btVector3 &aabbMax) const |
getAabb returns the axis aligned bounding box in the 'global' coordinate frame will add some transform later More... | |
virtual void | printStats () |
virtual void | resetPool (btDispatcher *dispatcher) |
reset broadphase internal structures, to ensure determinism/reproducability More... | |
void | performDeferredRemoval (btDispatcher *dispatcher) |
void | setVelocityPrediction (btScalar prediction) |
btScalar | getVelocityPrediction () const |
void | setAabbForceUpdate (btBroadphaseProxy *absproxy, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *) |
this setAabbForceUpdate is similar to setAabb but always forces the aabb update. More... | |
Public Member Functions inherited from btBroadphaseInterface | |
virtual | ~btBroadphaseInterface () |
Static Public Member Functions | |
static void | benchmark (btBroadphaseInterface *) |
Public Attributes | |
btDbvt | m_sets [2] |
btDbvtProxy * | m_stageRoots [STAGECOUNT+1] |
btOverlappingPairCache * | m_paircache |
btScalar | m_prediction |
int | m_stageCurrent |
int | m_fupdates |
int | m_dupdates |
int | m_cupdates |
int | m_newpairs |
int | m_fixedleft |
unsigned | m_updates_call |
unsigned | m_updates_done |
btScalar | m_updates_ratio |
int | m_pid |
int | m_cid |
int | m_gid |
bool | m_releasepaircache |
bool | m_deferedcollide |
bool | m_needcleanup |
The btDbvtBroadphase implements a broadphase using two dynamic AABB bounding volume hierarchies/trees (see btDbvt).
One tree is used for static/non-moving objects, and another tree is used for dynamic objects. Objects can move from one tree to the other. This is a very fast broadphase, especially for very dynamic worlds where many objects are moving. Its insert/add and remove of objects is generally faster than the sweep and prune broadphases btAxisSweep3 and bt32BitAxisSweep3.
Definition at line 62 of file btDbvtBroadphase.h.
anonymous enum |
Enumerator | |
---|---|
DYNAMIC_SET | |
FIXED_SET | |
STAGECOUNT |
Definition at line 65 of file btDbvtBroadphase.h.
btDbvtBroadphase::btDbvtBroadphase | ( | btOverlappingPairCache * | paircache = 0 | ) |
Definition at line 122 of file btDbvtBroadphase.cpp.
btDbvtBroadphase::~btDbvtBroadphase | ( | ) |
Definition at line 151 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 268 of file btDbvtBroadphase.cpp.
|
static |
Definition at line 789 of file btDbvtBroadphase.cpp.
|
virtual |
calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb
Implements btBroadphaseInterface.
Definition at line 390 of file btDbvtBroadphase.cpp.
void btDbvtBroadphase::collide | ( | btDispatcher * | dispatcher | ) |
Definition at line 490 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 161 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 192 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 206 of file btDbvtBroadphase.cpp.
getAabb returns the axis aligned bounding box in the 'global' coordinate frame will add some transform later
Implements btBroadphaseInterface.
Definition at line 615 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 603 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 609 of file btDbvtBroadphase.cpp.
|
inline |
Definition at line 130 of file btDbvtBroadphase.h.
void btDbvtBroadphase::optimize | ( | ) |
Definition at line 596 of file btDbvtBroadphase.cpp.
void btDbvtBroadphase::performDeferredRemoval | ( | btDispatcher * | dispatcher | ) |
Definition at line 417 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 665 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 227 of file btDbvtBroadphase.cpp.
|
virtual |
reset broadphase internal structures, to ensure determinism/reproducability
Reimplemented from btBroadphaseInterface.
Definition at line 632 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 282 of file btDbvtBroadphase.cpp.
void btDbvtBroadphase::setAabbForceUpdate | ( | btBroadphaseProxy * | absproxy, |
const btVector3 & | aabbMin, | ||
const btVector3 & | aabbMax, | ||
btDispatcher * | |||
) |
this setAabbForceUpdate is similar to setAabb but always forces the aabb update.
it is not part of the btBroadphaseInterface but specific to btDbvtBroadphase. it bypasses certain optimizations that prevent aabb updates (when the aabb shrinks), see http://code.google.com/p/bullet/issues/detail?id=223
Definition at line 350 of file btDbvtBroadphase.cpp.
|
inline |
Definition at line 126 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_cid |
Definition at line 85 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_cupdates |
Definition at line 78 of file btDbvtBroadphase.h.
bool btDbvtBroadphase::m_deferedcollide |
Definition at line 88 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_dupdates |
Definition at line 77 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_fixedleft |
Definition at line 80 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_fupdates |
Definition at line 76 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_gid |
Definition at line 86 of file btDbvtBroadphase.h.
bool btDbvtBroadphase::m_needcleanup |
Definition at line 89 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_newpairs |
Definition at line 79 of file btDbvtBroadphase.h.
btOverlappingPairCache* btDbvtBroadphase::m_paircache |
Definition at line 73 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_pid |
Definition at line 84 of file btDbvtBroadphase.h.
btScalar btDbvtBroadphase::m_prediction |
Definition at line 74 of file btDbvtBroadphase.h.
bool btDbvtBroadphase::m_releasepaircache |
Definition at line 87 of file btDbvtBroadphase.h.
btDbvt btDbvtBroadphase::m_sets[2] |
Definition at line 71 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_stageCurrent |
Definition at line 75 of file btDbvtBroadphase.h.
btDbvtProxy* btDbvtBroadphase::m_stageRoots[STAGECOUNT+1] |
Definition at line 72 of file btDbvtBroadphase.h.
unsigned btDbvtBroadphase::m_updates_call |
Definition at line 81 of file btDbvtBroadphase.h.
unsigned btDbvtBroadphase::m_updates_done |
Definition at line 82 of file btDbvtBroadphase.h.
btScalar btDbvtBroadphase::m_updates_ratio |
Definition at line 83 of file btDbvtBroadphase.h.