17#ifndef BT_DBVT_BROADPHASE_H
18#define BT_DBVT_BROADPHASE_H
27#define DBVT_BP_PROFILE 0
29#define DBVT_BP_PREVENTFALSEUPDATE 0
30#define DBVT_BP_ACCURATESLEEPING 0
31#define DBVT_BP_ENABLE_BENCHMARK 0
36#define DBVT_BP_PROFILING_RATE 256
96 unsigned long m_total;
97 unsigned long m_ddcollide;
98 unsigned long m_fdcollide;
99 unsigned long m_cleanup;
100 unsigned long m_jobcount;
btAlignedObjectArray< btDbvtProxy * > btDbvtProxyArray
btScalar gDbvtMargin
btDbvtBroadphase implementation by Nathanael Presson
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs.
The btClock is a portable basic clock that measures accurate time in seconds, use for profiling.
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
The btOverlappingPairCache provides an interface for overlapping pair management (add,...
btVector3 can be used to represent 3D points and vectors.
The btBroadphaseProxy is the main class that can be used with the Bullet broadphases.
The btDbvtBroadphase implements a broadphase using two dynamic AABB bounding volume hierarchies/trees...
void performDeferredRemoval(btDispatcher *dispatcher)
virtual void calculateOverlappingPairs(btDispatcher *dispatcher)
calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during th...
static void benchmark(btBroadphaseInterface *)
void setVelocityPrediction(btScalar prediction)
virtual void destroyProxy(btBroadphaseProxy *proxy, btDispatcher *dispatcher)
virtual void getAabb(btBroadphaseProxy *proxy, btVector3 &aabbMin, btVector3 &aabbMax) const
void collide(btDispatcher *dispatcher)
btDbvtProxy * m_stageRoots[STAGECOUNT+1]
btBroadphaseProxy * createProxy(const btVector3 &aabbMin, const btVector3 &aabbMax, int shapeType, void *userPtr, int collisionFilterGroup, int collisionFilterMask, btDispatcher *dispatcher)
virtual void resetPool(btDispatcher *dispatcher)
reset broadphase internal structures, to ensure determinism/reproducability
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.
btDbvtBroadphase(btOverlappingPairCache *paircache=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))
virtual void aabbTest(const btVector3 &aabbMin, const btVector3 &aabbMax, btBroadphaseAabbCallback &callback)
virtual void printStats()
virtual void getBroadphaseAabb(btVector3 &aabbMin, btVector3 &aabbMax) const
getAabb returns the axis aligned bounding box in the 'global' coordinate frame will add some transfor...
btAlignedObjectArray< btAlignedObjectArray< const btDbvtNode * > > m_rayTestStacks
btOverlappingPairCache * m_paircache
virtual void setAabb(btBroadphaseProxy *proxy, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *dispatcher)
virtual btOverlappingPairCache * getOverlappingPairCache()
btDbvtProxy(const btVector3 &aabbMin, const btVector3 &aabbMax, void *userPtr, int collisionFilterGroup, int collisionFilterMask)
The btDbvt class implements a fast dynamic bounding volume tree based on axis aligned bounding boxes ...