Blender V2.61 - r43446
Classes | Public Member Functions | Protected Attributes

btMultiSapBroadphase Class Reference

#include <btMultiSapBroadphase.h>

Inheritance diagram for btMultiSapBroadphase:
Inheritance graph
[legend]

List of all members.

Classes

struct  btBridgeProxy
struct  btMultiSapProxy

Public Member Functions

 btMultiSapBroadphase (int maxProxies=16384, btOverlappingPairCache *pairCache=0)
btSapBroadphaseArraygetBroadphaseArray ()
const btSapBroadphaseArraygetBroadphaseArray () 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 btOverlappingPairCachegetOverlappingPairCache ()
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

Detailed Description

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.


Constructor & Destructor Documentation

btMultiSapBroadphase::btMultiSapBroadphase ( int  maxProxies = 16384,
btOverlappingPairCache pairCache = 0 
)
btMultiSapBroadphase::~btMultiSapBroadphase ( ) [virtual]

Member Function Documentation

void btMultiSapBroadphase::addToChildBroadphase ( btMultiSapProxy parentMultiSapProxy,
btBroadphaseProxy *  childProxy,
btBroadphaseInterface childBroadphase 
)
void btMultiSapBroadphase::buildTree ( const btVector3 &  bvhAabbMin,
const btVector3 &  bvhAabbMax 
)
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]
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]
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]
bool btMultiSapBroadphase::testAabbOverlap ( btBroadphaseProxy *  proxy0,
btBroadphaseProxy *  proxy1 
)

Member Data Documentation

Definition at line 90 of file btMultiSapBroadphase.h.

Referenced by createProxy(), and rayTest().


The documentation for this class was generated from the following files: