Blender  V3.3
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
btDbvtBroadphase Struct Reference

#include <btDbvtBroadphase.h>

Inheritance diagram for btDbvtBroadphase:
btBroadphaseInterface

Public Types

enum  { DYNAMIC_SET = 0 , FIXED_SET = 1 , STAGECOUNT = 2 }
 

Public Member Functions

 btDbvtBroadphase (btOverlappingPairCache *paircache=0)
 
 ~btDbvtBroadphase ()
 
void collide (btDispatcher *dispatcher)
 
void optimize ()
 
btBroadphaseProxycreateProxy (const btVector3 &aabbMin, const btVector3 &aabbMax, int shapeType, void *userPtr, int collisionFilterGroup, int collisionFilterMask, btDispatcher *dispatcher)
 
virtual void destroyProxy (btBroadphaseProxy *proxy, btDispatcher *dispatcher)
 
virtual void setAabb (btBroadphaseProxy *proxy, const btVector3 &aabbMin, const btVector3 &aabbMax, 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 aabbTest (const btVector3 &aabbMin, const btVector3 &aabbMax, btBroadphaseAabbCallback &callback)
 
virtual void getAabb (btBroadphaseProxy *proxy, btVector3 &aabbMin, btVector3 &aabbMax) const
 
virtual void calculateOverlappingPairs (btDispatcher *dispatcher)
 calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb More...
 
virtual btOverlappingPairCachegetOverlappingPairCache ()
 
virtual const btOverlappingPairCachegetOverlappingPairCache () const
 
virtual void getBroadphaseAabb (btVector3 &aabbMin, btVector3 &aabbMax) const
 
virtual void printStats ()
 
virtual void resetPool (btDispatcher *dispatcher)
 reset broadphase internal structures, to ensure determinism/reproducability More...
 
void performDeferredRemoval (btDispatcher *dispatcher)
 
void setVelocityPrediction (btScalar prediction)
 
btScalar getVelocityPrediction () const
 
void setAabbForceUpdate (btBroadphaseProxy *absproxy, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *)
 
- Public Member Functions inherited from btBroadphaseInterface
virtual ~btBroadphaseInterface ()
 

Static Public Member Functions

static void benchmark (btBroadphaseInterface *)
 

Public Attributes

btDbvt m_sets [2]
 
btDbvtProxym_stageRoots [STAGECOUNT+1]
 
btOverlappingPairCachem_paircache
 
btScalar m_prediction
 
int m_stageCurrent
 
int m_fupdates
 
int m_dupdates
 
int m_cupdates
 
int m_newpairs
 
int m_fixedleft
 
unsigned m_updates_call
 
unsigned m_updates_done
 
btScalar m_updates_ratio
 
int m_pid
 
int m_cid
 
int m_gid
 
bool m_releasepaircache
 
bool m_deferedcollide
 
bool m_needcleanup
 
btAlignedObjectArray< btAlignedObjectArray< const btDbvtNode * > > m_rayTestStacks
 

Detailed Description

The btDbvtBroadphase implements a broadphase using two dynamic AABB bounding volume hierarchies/trees (see btDbvt). One tree is used for static/non-moving objects, and another tree is used for dynamic objects. Objects can move from one tree to the other. This is a very fast broadphase, especially for very dynamic worlds where many objects are moving. Its insert/add and remove of objects is generally faster than the sweep and prune broadphases btAxisSweep3 and bt32BitAxisSweep3.

Definition at line 62 of file btDbvtBroadphase.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
DYNAMIC_SET 
FIXED_SET 
STAGECOUNT 

Definition at line 65 of file btDbvtBroadphase.h.

Constructor & Destructor Documentation

◆ btDbvtBroadphase()

btDbvtBroadphase::btDbvtBroadphase ( btOverlappingPairCache paircache = 0)

◆ ~btDbvtBroadphase()

btDbvtBroadphase::~btDbvtBroadphase ( )

Member Function Documentation

◆ aabbTest()

void btDbvtBroadphase::aabbTest ( const btVector3 aabbMin,
const btVector3 aabbMax,
btBroadphaseAabbCallback callback 
)
virtual

◆ benchmark()

void btDbvtBroadphase::benchmark ( btBroadphaseInterface )
static

Definition at line 821 of file btDbvtBroadphase.cpp.

◆ calculateOverlappingPairs()

void btDbvtBroadphase::calculateOverlappingPairs ( btDispatcher dispatcher)
virtual

calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during the set aabb

Implements btBroadphaseInterface.

Definition at line 417 of file btDbvtBroadphase.cpp.

References clear(), collide(), btOverlappingPairCache::getNumOverlappingPairs(), btDbvt::m_leaves, m_paircache, m_pid, m_sets, performDeferredRemoval(), and sum().

◆ collide()

void btDbvtBroadphase::collide ( btDispatcher dispatcher)

◆ createProxy()

btBroadphaseProxy * btDbvtBroadphase::createProxy ( const btVector3 aabbMin,
const btVector3 aabbMax,
int  shapeType,
void userPtr,
int  collisionFilterGroup,
int  collisionFilterMask,
btDispatcher dispatcher 
)
virtual

◆ destroyProxy()

void btDbvtBroadphase::destroyProxy ( btBroadphaseProxy proxy,
btDispatcher dispatcher 
)
virtual

◆ getAabb()

void btDbvtBroadphase::getAabb ( btBroadphaseProxy proxy,
btVector3 aabbMin,
btVector3 aabbMax 
) const
virtual

Implements btBroadphaseInterface.

Definition at line 219 of file btDbvtBroadphase.cpp.

◆ getBroadphaseAabb()

void btDbvtBroadphase::getBroadphaseAabb ( btVector3 aabbMin,
btVector3 aabbMax 
) const
virtual

getAabb returns the axis aligned bounding box in the 'global' coordinate frame will add some transform later

Implements btBroadphaseInterface.

Definition at line 646 of file btDbvtBroadphase.cpp.

References ATTRIBUTE_ALIGNED16, bounds(), btVector3, btDbvtAabbMm::FromCR(), btDbvt::m_root, m_sets, btDbvtAabbMm::Maxs(), Merge(), btDbvtAabbMm::Mins(), and btDbvtNode::volume.

◆ getOverlappingPairCache() [1/2]

btOverlappingPairCache * btDbvtBroadphase::getOverlappingPairCache ( )
virtual

Implements btBroadphaseInterface.

Definition at line 634 of file btDbvtBroadphase.cpp.

References m_paircache.

◆ getOverlappingPairCache() [2/2]

const btOverlappingPairCache * btDbvtBroadphase::getOverlappingPairCache ( ) const
virtual

Implements btBroadphaseInterface.

Definition at line 640 of file btDbvtBroadphase.cpp.

References m_paircache.

◆ getVelocityPrediction()

btScalar btDbvtBroadphase::getVelocityPrediction ( ) const
inline

Definition at line 132 of file btDbvtBroadphase.h.

References m_prediction.

◆ optimize()

void btDbvtBroadphase::optimize ( )

Definition at line 627 of file btDbvtBroadphase.cpp.

References m_sets, and btDbvt::optimizeTopDown().

◆ performDeferredRemoval()

void btDbvtBroadphase::performDeferredRemoval ( btDispatcher dispatcher)

◆ printStats()

void btDbvtBroadphase::printStats ( )
virtual

Implements btBroadphaseInterface.

Definition at line 697 of file btDbvtBroadphase.cpp.

◆ rayTest()

void btDbvtBroadphase::rayTest ( const btVector3 rayFrom,
const btVector3 rayTo,
btBroadphaseRayCallback rayCallback,
const btVector3 aabbMin = btVector3(0, 0, 0),
const btVector3 aabbMax = btVector3(0, 0, 0) 
)
virtual

◆ resetPool()

void btDbvtBroadphase::resetPool ( btDispatcher dispatcher)
virtual

reset broadphase internal structures, to ensure determinism/reproducability

Reimplemented from btBroadphaseInterface.

Definition at line 665 of file btDbvtBroadphase.cpp.

References btDbvt::clear(), m_cid, m_cupdates, m_deferedcollide, m_dupdates, m_fixedleft, m_fupdates, m_gid, btDbvt::m_leaves, m_needcleanup, m_newpairs, m_pid, m_sets, m_stageCurrent, m_stageRoots, m_updates_call, m_updates_done, m_updates_ratio, and STAGECOUNT.

◆ setAabb()

void btDbvtBroadphase::setAabb ( btBroadphaseProxy proxy,
const btVector3 aabbMin,
const btVector3 aabbMax,
btDispatcher dispatcher 
)
virtual

◆ setAabbForceUpdate()

void btDbvtBroadphase::setAabbForceUpdate ( btBroadphaseProxy absproxy,
const btVector3 aabbMin,
const btVector3 aabbMax,
btDispatcher  
)

this setAabbForceUpdate is similar to setAabb but always forces the aabb update. it is not part of the btBroadphaseInterface but specific to btDbvtBroadphase. it bypasses certain optimizations that prevent aabb updates (when the aabb shrinks), see http://code.google.com/p/bullet/issues/detail?id=223

Definition at line 376 of file btDbvtBroadphase.cpp.

References ATTRIBUTE_ALIGNED16, btDbvt::collideTTpersistentStack(), btDbvtAabbMm::FromMM(), btDbvt::insert(), btDbvtProxy::leaf, listappend(), listremove(), m_deferedcollide, m_needcleanup, m_sets, m_stageCurrent, m_stageRoots, m_updates_call, m_updates_done, btDbvt::remove(), btDbvtProxy::stage, STAGECOUNT, and btDbvt::update().

◆ setVelocityPrediction()

void btDbvtBroadphase::setVelocityPrediction ( btScalar  prediction)
inline

Definition at line 128 of file btDbvtBroadphase.h.

References m_prediction.

Member Data Documentation

◆ m_cid

int btDbvtBroadphase::m_cid

Definition at line 86 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), collide(), and resetPool().

◆ m_cupdates

int btDbvtBroadphase::m_cupdates

Definition at line 79 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), collide(), and resetPool().

◆ m_deferedcollide

bool btDbvtBroadphase::m_deferedcollide

◆ m_dupdates

int btDbvtBroadphase::m_dupdates

Definition at line 78 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), collide(), and resetPool().

◆ m_fixedleft

int btDbvtBroadphase::m_fixedleft

Definition at line 81 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), collide(), and resetPool().

◆ m_fupdates

int btDbvtBroadphase::m_fupdates

Definition at line 77 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), collide(), and resetPool().

◆ m_gid

int btDbvtBroadphase::m_gid

Definition at line 87 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), createProxy(), and resetPool().

◆ m_needcleanup

bool btDbvtBroadphase::m_needcleanup

◆ m_newpairs

int btDbvtBroadphase::m_newpairs

◆ m_paircache

btOverlappingPairCache* btDbvtBroadphase::m_paircache

◆ m_pid

int btDbvtBroadphase::m_pid

Definition at line 85 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), calculateOverlappingPairs(), collide(), and resetPool().

◆ m_prediction

btScalar btDbvtBroadphase::m_prediction

◆ m_rayTestStacks

btAlignedObjectArray<btAlignedObjectArray<const btDbvtNode*> > btDbvtBroadphase::m_rayTestStacks

Definition at line 91 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), and rayTest().

◆ m_releasepaircache

bool btDbvtBroadphase::m_releasepaircache

Definition at line 88 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), and ~btDbvtBroadphase().

◆ m_sets

btDbvt btDbvtBroadphase::m_sets[2]

◆ m_stageCurrent

int btDbvtBroadphase::m_stageCurrent

◆ m_stageRoots

btDbvtProxy* btDbvtBroadphase::m_stageRoots[STAGECOUNT+1]

◆ m_updates_call

unsigned btDbvtBroadphase::m_updates_call

Definition at line 82 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), collide(), resetPool(), setAabb(), and setAabbForceUpdate().

◆ m_updates_done

unsigned btDbvtBroadphase::m_updates_done

Definition at line 83 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), collide(), resetPool(), setAabb(), and setAabbForceUpdate().

◆ m_updates_ratio

btScalar btDbvtBroadphase::m_updates_ratio

Definition at line 84 of file btDbvtBroadphase.h.

Referenced by btDbvtBroadphase(), collide(), and resetPool().


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