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 32 #define DBVT_BP_MARGIN (btScalar)0.05 35 #define DBVT_BP_PROFILING_RATE 256 51 btBroadphaseProxy(aabbMin,aabbMax,userPtr,collisionFilterGroup,collisionFilterMask)
94 unsigned long m_total;
95 unsigned long m_ddcollide;
96 unsigned long m_fdcollide;
97 unsigned long m_cleanup;
98 unsigned long m_jobcount;
virtual void aabbTest(const btVector3 &aabbMin, const btVector3 &aabbMax, btBroadphaseAabbCallback &callback)
static void benchmark(btBroadphaseInterface *)
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< btDbvtProxy * > btDbvtProxyArray
virtual void resetPool(btDispatcher *dispatcher)
reset broadphase internal structures, to ensure determinism/reproducability
The btAlignedObjectArray template class uses a subset of the stl::vector interface for its methods It...
btOverlappingPairCache * m_paircache
void setVelocityPrediction(btScalar prediction)
The btDbvt class implements a fast dynamic bounding volume tree based on axis aligned bounding boxes ...
The btClock is a portable basic clock that measures accurate time in seconds, use for profiling...
The btDbvtBroadphase implements a broadphase using two dynamic AABB bounding volume hierarchies/trees...
void performDeferredRemoval(btDispatcher *dispatcher)
void collide(btDispatcher *dispatcher)
The btOverlappingPairCache provides an interface for overlapping pair management (add, remove, storage), used by the btBroadphaseInterface broadphases.
btDbvtProxy * m_stageRoots[STAGECOUNT+1]
btDbvtBroadphase(btOverlappingPairCache *paircache=0)
virtual void setAabb(btBroadphaseProxy *proxy, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *dispatcher)
virtual btOverlappingPairCache * getOverlappingPairCache()
virtual void destroyProxy(btBroadphaseProxy *proxy, 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 printStats()
The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs...
The btBroadphaseProxy is the main class that can be used with the Bullet broadphases.
btVector3 can be used to represent 3D points and vectors.
void setAabbForceUpdate(btBroadphaseProxy *absproxy, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *)
this setAabbForceUpdate is similar to setAabb but always forces the aabb update.
btScalar getVelocityPrediction() const
btAlignedObjectArray< btAlignedObjectArray< const btDbvtNode * > > m_rayTestStacks
btDbvtProxy(const btVector3 &aabbMin, const btVector3 &aabbMax, void *userPtr, int collisionFilterGroup, int collisionFilterMask)
virtual void calculateOverlappingPairs(btDispatcher *dispatcher)
calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during th...
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
btBroadphaseProxy * createProxy(const btVector3 &aabbMin, const btVector3 &aabbMax, int shapeType, void *userPtr, int collisionFilterGroup, int collisionFilterMask, btDispatcher *dispatcher)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
virtual void getAabb(btBroadphaseProxy *proxy, btVector3 &aabbMin, btVector3 &aabbMax) const