Bullet Collision Detection & Physics Library
|
The btAxisSweep3 is an efficient implementation of the 3d axis sweep and prune broadphase. More...
#include <btAxisSweep3.h>
Public Member Functions | |
btAxisSweep3 (const btVector3 &worldAabbMin, const btVector3 &worldAabbMax, unsigned short int maxHandles=16384, btOverlappingPairCache *pairCache=0, bool disableRaycastAccelerator=false) | |
Public Member Functions inherited from btAxisSweep3Internal< unsigned short int > | |
BT_DECLARE_ALIGNED_ALLOCATOR () | |
btAxisSweep3Internal (const btVector3 &worldAabbMin, const btVector3 &worldAabbMax, unsigned short inthandleMask, unsigned short inthandleSentinel, unsigned short intmaxHandles=16384, btOverlappingPairCache *pairCache=0, bool disableRaycastAccelerator=false) | |
virtual | ~btAxisSweep3Internal () |
unsigned short int | getNumHandles () const |
virtual void | calculateOverlappingPairs (btDispatcher *dispatcher) |
calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb More... | |
unsigned short int | addHandle (const btVector3 &aabbMin, const btVector3 &aabbMax, void *pOwner, short int collisionFilterGroup, short int collisionFilterMask, btDispatcher *dispatcher, void *multiSapProxy) |
void | removeHandle (unsigned short inthandle, btDispatcher *dispatcher) |
void | updateHandle (unsigned short inthandle, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *dispatcher) |
Handle * | getHandle (unsigned short intindex) const |
virtual void | resetPool (btDispatcher *dispatcher) |
reset broadphase internal structures, to ensure determinism/reproducability More... | |
void | processAllOverlappingPairs (btOverlapCallback *callback) |
virtual 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 | getAabb (btBroadphaseProxy *proxy, btVector3 &aabbMin, btVector3 &aabbMax) const |
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) |
void | quantize (unsigned short int *out, const btVector3 &point, int isMax) const |
void | unQuantize (btBroadphaseProxy *proxy, btVector3 &aabbMin, btVector3 &aabbMax) const |
unQuantize should be conservative: aabbMin/aabbMax should be larger then 'getAabb' result More... | |
bool | testAabbOverlap (btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1) |
btOverlappingPairCache * | getOverlappingPairCache () |
const btOverlappingPairCache * | getOverlappingPairCache () const |
void | setOverlappingPairUserCallback (btOverlappingPairCallback *pairCallback) |
const btOverlappingPairCallback * | getOverlappingPairUserCallback () 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 () |
Public Member Functions inherited from btBroadphaseInterface | |
virtual | ~btBroadphaseInterface () |
Additional Inherited Members | |
Protected Member Functions inherited from btAxisSweep3Internal< unsigned short int > | |
unsigned short int | allocHandle () |
void | freeHandle (unsigned short inthandle) |
bool | testOverlap2D (const Handle *pHandleA, const Handle *pHandleB, int axis0, int axis1) |
void | sortMinDown (int axis, unsigned short intedge, btDispatcher *dispatcher, bool updateOverlaps) |
void | sortMinUp (int axis, unsigned short intedge, btDispatcher *dispatcher, bool updateOverlaps) |
void | sortMaxDown (int axis, unsigned short intedge, btDispatcher *dispatcher, bool updateOverlaps) |
void | sortMaxUp (int axis, unsigned short intedge, btDispatcher *dispatcher, bool updateOverlaps) |
Protected Attributes inherited from btAxisSweep3Internal< unsigned short int > | |
unsigned short int | m_bpHandleMask |
unsigned short int | m_handleSentinel |
btVector3 | m_worldAabbMin |
btVector3 | m_worldAabbMax |
btVector3 | m_quantize |
unsigned short int | m_numHandles |
unsigned short int | m_maxHandles |
Handle * | m_pHandles |
unsigned short int | m_firstFreeHandle |
Edge * | m_pEdges [3] |
void * | m_pEdgesRawPtr [3] |
btOverlappingPairCache * | m_pairCache |
btOverlappingPairCallback * | m_userPairCallback |
btOverlappingPairCallback is an additional optional user callback for adding/removing overlapping pairs, similar interface to btOverlappingPairCache. More... | |
bool | m_ownsPairCache |
int | m_invalidPair |
btDbvtBroadphase * | m_raycastAccelerator |
additional dynamic aabb structure, used to accelerate ray cast queries. More... | |
btOverlappingPairCache * | m_nullPairCache |
The btAxisSweep3 is an efficient implementation of the 3d axis sweep and prune broadphase.
It uses arrays rather then lists for storage of the 3 axis. Also it operates using 16 bit integer coordinates instead of floats. For large worlds and many objects, use bt32BitAxisSweep3 or btDbvtBroadphase instead. bt32BitAxisSweep3 has higher precision and allows more then 16384 objects at the cost of more memory and bit of performance.
Definition at line 1031 of file btAxisSweep3.h.
btAxisSweep3::btAxisSweep3 | ( | const btVector3 & | worldAabbMin, |
const btVector3 & | worldAabbMax, | ||
unsigned short int | maxHandles = 16384 , |
||
btOverlappingPairCache * | pairCache = 0 , |
||
bool | disableRaycastAccelerator = false |
||
) |
Definition at line 23 of file btAxisSweep3.cpp.