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, int collisionFilterGroup, int collisionFilterMask, btDispatcher *dispatcher) |
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 () |
virtual btBroadphaseProxy * | createProxy (const btVector3 &aabbMin, const btVector3 &aabbMax, int shapeType, void *userPtr, int collisionFilterGroup, int collisionFilterMask, btDispatcher *dispatcher)=0 |
virtual void | destroyProxy (btBroadphaseProxy *proxy, btDispatcher *dispatcher)=0 |
virtual void | setAabb (btBroadphaseProxy *proxy, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *dispatcher)=0 |
virtual void | getAabb (btBroadphaseProxy *proxy, btVector3 &aabbMin, btVector3 &aabbMax) const =0 |
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))=0 |
virtual void | aabbTest (const btVector3 &aabbMin, const btVector3 &aabbMax, btBroadphaseAabbCallback &callback)=0 |
virtual void | calculateOverlappingPairs (btDispatcher *dispatcher)=0 |
calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb More... | |
virtual btOverlappingPairCache * | getOverlappingPairCache ()=0 |
virtual const btOverlappingPairCache * | getOverlappingPairCache () const =0 |
virtual void | getBroadphaseAabb (btVector3 &aabbMin, btVector3 &aabbMax) const =0 |
getAabb returns the axis aligned bounding box in the 'global' coordinate frame will add some transform later More... | |
virtual void | resetPool (btDispatcher *dispatcher) |
reset broadphase internal structures, to ensure determinism/reproducability More... | |
virtual void | printStats ()=0 |
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 |
btAlignedObjectArray< btAlignedObjectArray< const btDbvtNode * > > | m_rayTestStacks |
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 131 of file btDbvtBroadphase.cpp.
btDbvtBroadphase::~btDbvtBroadphase | ( | ) |
Definition at line 165 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 300 of file btDbvtBroadphase.cpp.
|
static |
Definition at line 821 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 417 of file btDbvtBroadphase.cpp.
void btDbvtBroadphase::collide | ( | btDispatcher * | dispatcher | ) |
Definition at line 512 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 175 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 205 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 219 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 646 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 634 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 640 of file btDbvtBroadphase.cpp.
|
inline |
Definition at line 132 of file btDbvtBroadphase.h.
void btDbvtBroadphase::optimize | ( | ) |
Definition at line 627 of file btDbvtBroadphase.cpp.
void btDbvtBroadphase::performDeferredRemoval | ( | btDispatcher * | dispatcher | ) |
Definition at line 443 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 697 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 240 of file btDbvtBroadphase.cpp.
|
virtual |
reset broadphase internal structures, to ensure determinism/reproducability
Reimplemented from btBroadphaseInterface.
Definition at line 665 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 311 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 376 of file btDbvtBroadphase.cpp.
|
inline |
Definition at line 128 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_cid |
Definition at line 86 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_cupdates |
Definition at line 79 of file btDbvtBroadphase.h.
bool btDbvtBroadphase::m_deferedcollide |
Definition at line 89 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_dupdates |
Definition at line 78 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_fixedleft |
Definition at line 81 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_fupdates |
Definition at line 77 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_gid |
Definition at line 87 of file btDbvtBroadphase.h.
bool btDbvtBroadphase::m_needcleanup |
Definition at line 90 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_newpairs |
Definition at line 80 of file btDbvtBroadphase.h.
btOverlappingPairCache* btDbvtBroadphase::m_paircache |
Definition at line 74 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_pid |
Definition at line 85 of file btDbvtBroadphase.h.
btScalar btDbvtBroadphase::m_prediction |
Definition at line 75 of file btDbvtBroadphase.h.
btAlignedObjectArray<btAlignedObjectArray<const btDbvtNode*> > btDbvtBroadphase::m_rayTestStacks |
Definition at line 91 of file btDbvtBroadphase.h.
bool btDbvtBroadphase::m_releasepaircache |
Definition at line 88 of file btDbvtBroadphase.h.
btDbvt btDbvtBroadphase::m_sets[2] |
Definition at line 72 of file btDbvtBroadphase.h.
int btDbvtBroadphase::m_stageCurrent |
Definition at line 76 of file btDbvtBroadphase.h.
btDbvtProxy* btDbvtBroadphase::m_stageRoots[STAGECOUNT+1] |
Definition at line 73 of file btDbvtBroadphase.h.
unsigned btDbvtBroadphase::m_updates_call |
Definition at line 82 of file btDbvtBroadphase.h.
unsigned btDbvtBroadphase::m_updates_done |
Definition at line 83 of file btDbvtBroadphase.h.
btScalar btDbvtBroadphase::m_updates_ratio |
Definition at line 84 of file btDbvtBroadphase.h.