Blender
V3.3
|
#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 |
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 *) |
![]() | |
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 |
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.
References BT_MAX_THREAD_COUNT, btAlignedAlloc, btHashedOverlappingPairCache(), clear(), m_cid, m_cupdates, m_deferedcollide, m_dupdates, m_fixedleft, m_fupdates, m_gid, m_needcleanup, m_newpairs, m_paircache, m_pid, m_prediction, m_rayTestStacks, m_releasepaircache, m_stageCurrent, m_stageRoots, m_updates_call, m_updates_done, m_updates_ratio, btAlignedObjectArray< T >::resize(), and STAGECOUNT.
btDbvtBroadphase::~btDbvtBroadphase | ( | ) |
Definition at line 165 of file btDbvtBroadphase.cpp.
References btAlignedFree, m_paircache, m_releasepaircache, and btOverlappingPairCache::~btOverlappingPairCache().
Referenced by btAxisSweep3Internal< BP_FP_INT_TYPE >::~btAxisSweep3Internal().
|
virtual |
Implements btBroadphaseInterface.
Definition at line 300 of file btDbvtBroadphase.cpp.
References ATTRIBUTE_ALIGNED16, bounds(), callback, btDbvt::collideTV(), btDbvtAabbMm::FromMM(), and m_sets.
Referenced by btAxisSweep3Internal< BP_FP_INT_TYPE >::aabbTest().
|
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.
References clear(), collide(), btOverlappingPairCache::getNumOverlappingPairs(), btDbvt::m_leaves, m_paircache, m_pid, m_sets, performDeferredRemoval(), and sum().
void btDbvtBroadphase::collide | ( | btDispatcher * | dispatcher | ) |
Definition at line 512 of file btDbvtBroadphase.cpp.
References ATTRIBUTE_ALIGNED16, btBroadphasePair, btMin(), btSwap(), btDbvt::collideTTpersistentStack(), btDbvt::collideTV(), count, btDbvtAabbMm::FromMM(), btOverlappingPairCache::getOverlappingPairArray(), btDbvt::insert(), Intersect(), btDbvtProxy::leaf, btDbvtProxy::links, listappend(), listremove(), m_cid, m_cupdates, m_deferedcollide, m_dupdates, m_fixedleft, m_fupdates, btDbvt::m_leaves, m_needcleanup, m_newpairs, m_paircache, m_pid, m_sets, m_stageCurrent, m_stageRoots, m_updates_call, m_updates_done, m_updates_ratio, next, btDbvt::optimizeIncremental(), btDbvtTreeCollider::proxy, btDbvt::remove(), btOverlappingPairCallback::removeOverlappingPair(), btOverlappingPairCallback::removeOverlappingPairsContainingProxy(), btAlignedObjectArray< T >::size(), SPC, btDbvtProxy::stage, STAGECOUNT, and btDbvtNode::volume.
Referenced by calculateOverlappingPairs().
|
virtual |
Implements btBroadphaseInterface.
Definition at line 175 of file btDbvtBroadphase.cpp.
References btAlignedAlloc, btDbvt::collideTV(), btDbvtAabbMm::FromMM(), btDbvt::insert(), btDbvtProxy::leaf, listappend(), m_deferedcollide, m_gid, m_sets, m_stageCurrent, m_stageRoots, btDbvtTreeCollider::proxy, and btDbvtProxy::stage.
Referenced by btAxisSweep3Internal< BP_FP_INT_TYPE >::createProxy().
|
virtual |
Implements btBroadphaseInterface.
Definition at line 205 of file btDbvtBroadphase.cpp.
References btAlignedFree, btDbvtProxy::leaf, listremove(), m_needcleanup, m_paircache, m_sets, m_stageRoots, btDbvt::remove(), btOverlappingPairCallback::removeOverlappingPairsContainingProxy(), btDbvtProxy::stage, and STAGECOUNT.
Referenced by btAxisSweep3Internal< BP_FP_INT_TYPE >::destroyProxy().
|
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.
References ATTRIBUTE_ALIGNED16, bounds(), btVector3, btDbvtAabbMm::FromCR(), btDbvt::m_root, m_sets, btDbvtAabbMm::Maxs(), Merge(), btDbvtAabbMm::Mins(), and btDbvtNode::volume.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 634 of file btDbvtBroadphase.cpp.
References m_paircache.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 640 of file btDbvtBroadphase.cpp.
References m_paircache.
|
inline |
Definition at line 132 of file btDbvtBroadphase.h.
References m_prediction.
void btDbvtBroadphase::optimize | ( | ) |
Definition at line 627 of file btDbvtBroadphase.cpp.
References m_sets, and btDbvt::optimizeTopDown().
void btDbvtBroadphase::performDeferredRemoval | ( | btDispatcher * | dispatcher | ) |
Definition at line 443 of file btDbvtBroadphase.cpp.
References btAssert, btBroadphasePair, btOverlappingPairCache::cleanOverlappingPair(), btOverlappingPairCache::getOverlappingPairArray(), btOverlappingPairCache::hasDeferredRemoval(), Intersect(), btDbvtProxy::leaf, m_paircache, btAlignedObjectArray< T >::quickSort(), btAlignedObjectArray< T >::resize(), btAlignedObjectArray< T >::size(), and btDbvtNode::volume.
Referenced by calculateOverlappingPairs().
|
virtual |
Implements btBroadphaseInterface.
Definition at line 697 of file btDbvtBroadphase.cpp.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 240 of file btDbvtBroadphase.cpp.
References btGetCurrentThreadIndex(), callback, btBroadphaseRayCallback::m_lambda_max, btBroadphaseRayCallback::m_rayDirectionInverse, m_rayTestStacks, m_sets, btBroadphaseRayCallback::m_signs, and btDbvt::rayTestInternal().
Referenced by btAxisSweep3Internal< BP_FP_INT_TYPE >::rayTest().
|
virtual |
reset broadphase internal structures, to ensure determinism/reproducability
Reimplemented from btBroadphaseInterface.
Definition at line 665 of file btDbvtBroadphase.cpp.
References btDbvt::clear(), m_cid, m_cupdates, m_deferedcollide, m_dupdates, m_fixedleft, m_fupdates, m_gid, btDbvt::m_leaves, m_needcleanup, m_newpairs, m_pid, m_sets, m_stageCurrent, m_stageRoots, m_updates_call, m_updates_done, m_updates_ratio, and STAGECOUNT.
|
virtual |
Implements btBroadphaseInterface.
Definition at line 311 of file btDbvtBroadphase.cpp.
References ATTRIBUTE_ALIGNED16, btVector3, btDbvt::collideTTpersistentStack(), btDbvtAabbMm::FromMM(), gDbvtMargin, btDbvt::insert(), Intersect(), btDbvtProxy::leaf, listappend(), listremove(), m_deferedcollide, m_needcleanup, m_prediction, m_sets, m_stageCurrent, m_stageRoots, m_updates_call, m_updates_done, NotEqual(), btDbvt::remove(), btDbvtProxy::stage, STAGECOUNT, update(), btDbvt::update(), and btDbvtNode::volume.
Referenced by btAxisSweep3Internal< BP_FP_INT_TYPE >::setAabb().
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.
References ATTRIBUTE_ALIGNED16, btDbvt::collideTTpersistentStack(), btDbvtAabbMm::FromMM(), btDbvt::insert(), btDbvtProxy::leaf, listappend(), listremove(), m_deferedcollide, m_needcleanup, m_sets, m_stageCurrent, m_stageRoots, m_updates_call, m_updates_done, btDbvt::remove(), btDbvtProxy::stage, STAGECOUNT, and btDbvt::update().
Definition at line 128 of file btDbvtBroadphase.h.
References m_prediction.
int btDbvtBroadphase::m_cid |
Definition at line 86 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), and resetPool().
int btDbvtBroadphase::m_cupdates |
Definition at line 79 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), and resetPool().
bool btDbvtBroadphase::m_deferedcollide |
Definition at line 89 of file btDbvtBroadphase.h.
Referenced by btAxisSweep3Internal< BP_FP_INT_TYPE >::btAxisSweep3Internal(), btDbvtBroadphase(), collide(), createProxy(), resetPool(), setAabb(), and setAabbForceUpdate().
int btDbvtBroadphase::m_dupdates |
Definition at line 78 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), and resetPool().
int btDbvtBroadphase::m_fixedleft |
Definition at line 81 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), and resetPool().
int btDbvtBroadphase::m_fupdates |
Definition at line 77 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), and resetPool().
int btDbvtBroadphase::m_gid |
Definition at line 87 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), createProxy(), and resetPool().
bool btDbvtBroadphase::m_needcleanup |
Definition at line 90 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), destroyProxy(), resetPool(), setAabb(), and setAabbForceUpdate().
int btDbvtBroadphase::m_newpairs |
Definition at line 80 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), btDbvtTreeCollider::Process(), and resetPool().
btOverlappingPairCache* btDbvtBroadphase::m_paircache |
Definition at line 74 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), calculateOverlappingPairs(), collide(), destroyProxy(), getOverlappingPairCache(), performDeferredRemoval(), btDbvtTreeCollider::Process(), and ~btDbvtBroadphase().
int btDbvtBroadphase::m_pid |
Definition at line 85 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), calculateOverlappingPairs(), collide(), and resetPool().
btScalar btDbvtBroadphase::m_prediction |
Definition at line 75 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), getVelocityPrediction(), setAabb(), and setVelocityPrediction().
btAlignedObjectArray<btAlignedObjectArray<const btDbvtNode*> > btDbvtBroadphase::m_rayTestStacks |
Definition at line 91 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), and rayTest().
bool btDbvtBroadphase::m_releasepaircache |
Definition at line 88 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), and ~btDbvtBroadphase().
btDbvt btDbvtBroadphase::m_sets[2] |
Definition at line 72 of file btDbvtBroadphase.h.
Referenced by aabbTest(), calculateOverlappingPairs(), collide(), createProxy(), destroyProxy(), getBroadphaseAabb(), optimize(), rayTest(), resetPool(), setAabb(), and setAabbForceUpdate().
int btDbvtBroadphase::m_stageCurrent |
Definition at line 76 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), createProxy(), resetPool(), setAabb(), and setAabbForceUpdate().
btDbvtProxy* btDbvtBroadphase::m_stageRoots[STAGECOUNT+1] |
Definition at line 73 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), createProxy(), destroyProxy(), resetPool(), setAabb(), and setAabbForceUpdate().
unsigned btDbvtBroadphase::m_updates_call |
Definition at line 82 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), resetPool(), setAabb(), and setAabbForceUpdate().
unsigned btDbvtBroadphase::m_updates_done |
Definition at line 83 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), resetPool(), setAabb(), and setAabbForceUpdate().
btScalar btDbvtBroadphase::m_updates_ratio |
Definition at line 84 of file btDbvtBroadphase.h.
Referenced by btDbvtBroadphase(), collide(), and resetPool().