Blender V2.61 - r43446
|
#include <btMultiSapBroadphase.h>
Classes | |
struct | btBridgeProxy |
struct | btMultiSapProxy |
Public Member Functions | |
btMultiSapBroadphase (int maxProxies=16384, btOverlappingPairCache *pairCache=0) | |
btSapBroadphaseArray & | getBroadphaseArray () |
const btSapBroadphaseArray & | getBroadphaseArray () const |
virtual | ~btMultiSapBroadphase () |
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)) |
void | addToChildBroadphase (btMultiSapProxy *parentMultiSapProxy, btBroadphaseProxy *childProxy, btBroadphaseInterface *childBroadphase) |
virtual void | calculateOverlappingPairs (btDispatcher *dispatcher) |
calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb | |
bool | testAabbOverlap (btBroadphaseProxy *proxy0, btBroadphaseProxy *proxy1) |
virtual btOverlappingPairCache * | getOverlappingPairCache () |
virtual const btOverlappingPairCache * | getOverlappingPairCache () const |
virtual void | getBroadphaseAabb (btVector3 &aabbMin, btVector3 &aabbMax) const |
void | buildTree (const btVector3 &bvhAabbMin, const btVector3 &bvhAabbMax) |
virtual void | printStats () |
void | quicksort (btBroadphasePairArray &a, int lo, int hi) |
virtual void | resetPool (btDispatcher *dispatcher) |
reset broadphase internal structures, to ensure determinism/reproducability | |
Protected Attributes | |
btAlignedObjectArray < btMultiSapProxy * > | m_multiSapProxies |
The btMultiSapBroadphase is a research project, not recommended to use in production. Use btAxisSweep3 or btDbvtBroadphase instead. The btMultiSapBroadphase is a broadphase that contains multiple SAP broadphases. The user can add SAP broadphases that cover the world. A btBroadphaseProxy can be in multiple child broadphases at the same time. A btQuantizedBvh acceleration structures finds overlapping SAPs for each btBroadphaseProxy. See http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=328 and http://www.continuousphysics.com/Bullet/phpBB2/viewtopic.php?t=1329
Definition at line 35 of file btMultiSapBroadphase.h.
btMultiSapBroadphase::btMultiSapBroadphase | ( | int | maxProxies = 16384 , |
btOverlappingPairCache * | pairCache = 0 |
||
) |
Definition at line 40 of file btMultiSapBroadphase.cpp.
References btAlignedAlloc, and btOverlappingPairCache::setOverlapFilterCallback().
btMultiSapBroadphase::~btMultiSapBroadphase | ( | ) | [virtual] |
Definition at line 78 of file btMultiSapBroadphase.cpp.
References btAlignedFree, and btOverlappingPairCache::~btOverlappingPairCache().
void btMultiSapBroadphase::addToChildBroadphase | ( | btMultiSapProxy * | parentMultiSapProxy, |
btBroadphaseProxy * | childProxy, | ||
btBroadphaseInterface * | childBroadphase | ||
) |
Definition at line 128 of file btMultiSapBroadphase.cpp.
References btAlignedAlloc, btMultiSapBroadphase::btMultiSapProxy::m_bridgeProxies, and btAlignedObjectArray< T >::push_back().
void btMultiSapBroadphase::buildTree | ( | const btVector3 & | bvhAabbMin, |
const btVector3 & | bvhAabbMax | ||
) |
Definition at line 88 of file btMultiSapBroadphase.cpp.
References i, MAX_NUM_PARTS_IN_BITS, nodes, btAlignedObjectArray< T >::push_back(), and btAlignedObjectArray< T >::size().
void btMultiSapBroadphase::calculateOverlappingPairs | ( | btDispatcher * | dispatcher | ) | [virtual] |
calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb
if you don't like to skip the invalid pairs in the array, execute following code:
Implements btBroadphaseInterface.
Definition at line 359 of file btMultiSapBroadphase.cpp.
References btAssert, btOverlappingPairCache::cleanOverlappingPair(), btOverlappingPairCache::getOverlappingPairArray(), getOverlappingPairCache(), gOverlappingPairs, i, btAlignedObjectArray< T >::quickSort(), btAlignedObjectArray< T >::resize(), btAlignedObjectArray< T >::size(), stopUpdating, and testAabbOverlap().
btBroadphaseProxy * btMultiSapBroadphase::createProxy | ( | const btVector3 & | aabbMin, |
const btVector3 & | aabbMax, | ||
int | shapeType, | ||
void * | userPtr, | ||
short int | collisionFilterGroup, | ||
short int | collisionFilterMask, | ||
btDispatcher * | dispatcher, | ||
void * | multiSapProxy | ||
) | [virtual] |
this should deal with inserting/removal into child broadphases
Implements btBroadphaseInterface.
Definition at line 107 of file btMultiSapBroadphase.cpp.
References btAlignedAlloc, m_multiSapProxies, btAlignedObjectArray< T >::push_back(), and setAabb().
void btMultiSapBroadphase::destroyProxy | ( | btBroadphaseProxy * | proxy, |
btDispatcher * | dispatcher | ||
) | [virtual] |
not yet
Implements btBroadphaseInterface.
Definition at line 120 of file btMultiSapBroadphase.cpp.
References btAssert.
void btMultiSapBroadphase::getAabb | ( | btBroadphaseProxy * | proxy, |
btVector3 & | aabbMin, | ||
btVector3 & | aabbMax | ||
) | const [virtual] |
Implements btBroadphaseInterface.
Definition at line 152 of file btMultiSapBroadphase.cpp.
References btMultiSapBroadphase::btMultiSapProxy::m_aabbMax, and btMultiSapBroadphase::btMultiSapProxy::m_aabbMin.
virtual void btMultiSapBroadphase::getBroadphaseAabb | ( | btVector3 & | aabbMin, |
btVector3 & | aabbMax | ||
) | const [inline, virtual] |
getAabb returns the axis aligned bounding box in the 'global' coordinate frame will add some transform later
Implements btBroadphaseInterface.
Definition at line 134 of file btMultiSapBroadphase.h.
References BT_LARGE_FLOAT.
const btSapBroadphaseArray& btMultiSapBroadphase::getBroadphaseArray | ( | ) | const [inline] |
Definition at line 102 of file btMultiSapBroadphase.h.
btSapBroadphaseArray& btMultiSapBroadphase::getBroadphaseArray | ( | ) | [inline] |
Definition at line 97 of file btMultiSapBroadphase.h.
virtual btOverlappingPairCache* btMultiSapBroadphase::getOverlappingPairCache | ( | ) | [inline, virtual] |
Implements btBroadphaseInterface.
Definition at line 123 of file btMultiSapBroadphase.h.
Referenced by calculateOverlappingPairs().
virtual const btOverlappingPairCache* btMultiSapBroadphase::getOverlappingPairCache | ( | ) | const [inline, virtual] |
Implements btBroadphaseInterface.
Definition at line 127 of file btMultiSapBroadphase.h.
void btMultiSapBroadphase::printStats | ( | ) | [virtual] |
Implements btBroadphaseInterface.
Definition at line 467 of file btMultiSapBroadphase.cpp.
void btMultiSapBroadphase::quicksort | ( | btBroadphasePairArray & | a, |
int | lo, | ||
int | hi | ||
) |
void btMultiSapBroadphase::rayTest | ( | const btVector3 & | rayFrom, |
const btVector3 & | rayTo, | ||
btBroadphaseRayCallback & | rayCallback, | ||
const btVector3 & | aabbMin = btVector3(0,0,0) , |
||
const btVector3 & | aabbMax = btVector3(0,0,0) |
||
) | [virtual] |
Implements btBroadphaseInterface.
Definition at line 159 of file btMultiSapBroadphase.cpp.
References i, m_multiSapProxies, btBroadphaseAabbCallback::process(), and btAlignedObjectArray< T >::size().
void btMultiSapBroadphase::resetPool | ( | btDispatcher * | dispatcher | ) | [virtual] |
reset broadphase internal structures, to ensure determinism/reproducability
Reimplemented from btBroadphaseInterface.
Definition at line 486 of file btMultiSapBroadphase.cpp.
void btMultiSapBroadphase::setAabb | ( | btBroadphaseProxy * | proxy, |
const btVector3 & | aabbMin, | ||
const btVector3 & | aabbMax, | ||
btDispatcher * | dispatcher | ||
) | [virtual] |
Implements btBroadphaseInterface.
Definition at line 170 of file btMultiSapBroadphase.cpp.
References btBroadphaseInterface::createProxy(), i, btMultiSapBroadphase::btMultiSapProxy::m_aabbMax, btMultiSapBroadphase::btMultiSapProxy::m_aabbMin, btMultiSapBroadphase::btMultiSapProxy::m_bridgeProxies, btAlignedObjectArray< T >::pop_back(), btAlignedObjectArray< T >::size(), btAlignedObjectArray< T >::swap(), and TestAabbAgainstAabb2().
Referenced by createProxy().
bool btMultiSapBroadphase::testAabbOverlap | ( | btBroadphaseProxy * | proxy0, |
btBroadphaseProxy * | proxy1 | ||
) |
Definition at line 456 of file btMultiSapBroadphase.cpp.
References btMultiSapBroadphase::btMultiSapProxy::m_aabbMax, btMultiSapBroadphase::btMultiSapProxy::m_aabbMin, and TestAabbAgainstAabb2().
Referenced by calculateOverlappingPairs().
Definition at line 90 of file btMultiSapBroadphase.h.
Referenced by createProxy(), and rayTest().