Blender V2.61 - r43446
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes

btDbvtBroadphase Struct Reference

#include <btDbvtBroadphase.h>

Inheritance diagram for btDbvtBroadphase:
Inheritance graph
[legend]

List of all members.

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 ()
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 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
virtual btOverlappingPairCachegetOverlappingPairCache ()
virtual const
btOverlappingPairCache
getOverlappingPairCache () 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
void performDeferredRemoval (btDispatcher *dispatcher)
void setVelocityPrediction (btScalar prediction)
btScalar getVelocityPrediction () const
void setAabbForceUpdate (btBroadphaseProxy *absproxy, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *)

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

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
Enumerator:
DYNAMIC_SET 
FIXED_SET 
STAGECOUNT 

Definition at line 65 of file btDbvtBroadphase.h.


Constructor & Destructor Documentation

btDbvtBroadphase::btDbvtBroadphase ( btOverlappingPairCache paircache = 0)
btDbvtBroadphase::~btDbvtBroadphase ( )

Member Function Documentation

void btDbvtBroadphase::aabbTest ( const btVector3 &  aabbMin,
const btVector3 &  aabbMax,
btBroadphaseAabbCallback callback 
) [virtual]
void btDbvtBroadphase::benchmark ( btBroadphaseInterface ) [static]

Definition at line 789 of file btDbvtBroadphase.cpp.

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 390 of file btDbvtBroadphase.cpp.

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

void btDbvtBroadphase::collide ( btDispatcher dispatcher)
btBroadphaseProxy * btDbvtBroadphase::createProxy ( const btVector3 &  aabbMin,
const btVector3 &  aabbMax,
int  shapeType,
void *  userPtr,
short int  collisionFilterGroup,
short int  collisionFilterMask,
btDispatcher dispatcher,
void *  multiSapProxy 
) [virtual]
void btDbvtBroadphase::destroyProxy ( btBroadphaseProxy *  proxy,
btDispatcher dispatcher 
) [virtual]
void btDbvtBroadphase::getAabb ( btBroadphaseProxy *  proxy,
btVector3 &  aabbMin,
btVector3 &  aabbMax 
) const [virtual]

Implements btBroadphaseInterface.

Definition at line 206 of file btDbvtBroadphase.cpp.

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 615 of file btDbvtBroadphase.cpp.

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

btOverlappingPairCache * btDbvtBroadphase::getOverlappingPairCache ( ) [virtual]

Implements btBroadphaseInterface.

Definition at line 603 of file btDbvtBroadphase.cpp.

References m_paircache.

const btOverlappingPairCache * btDbvtBroadphase::getOverlappingPairCache ( ) const [virtual]

Implements btBroadphaseInterface.

Definition at line 609 of file btDbvtBroadphase.cpp.

References m_paircache.

btScalar btDbvtBroadphase::getVelocityPrediction ( ) const [inline]

Definition at line 130 of file btDbvtBroadphase.h.

References m_prediction.

void btDbvtBroadphase::optimize ( )

Definition at line 596 of file btDbvtBroadphase.cpp.

References m_sets, and btDbvt::optimizeTopDown().

void btDbvtBroadphase::performDeferredRemoval ( btDispatcher dispatcher)
void btDbvtBroadphase::printStats ( ) [virtual]

Implements btBroadphaseInterface.

Definition at line 665 of file btDbvtBroadphase.cpp.

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]
void btDbvtBroadphase::resetPool ( btDispatcher dispatcher) [virtual]

reset broadphase internal structures, to ensure determinism/reproducability

Reimplemented from btBroadphaseInterface.

Definition at line 632 of file btDbvtBroadphase.cpp.

References btDbvt::clear(), i, 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.

void btDbvtBroadphase::setAabb ( btBroadphaseProxy *  proxy,
const btVector3 &  aabbMin,
const btVector3 &  aabbMax,
btDispatcher dispatcher 
) [virtual]
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 350 of file btDbvtBroadphase.cpp.

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

void btDbvtBroadphase::setVelocityPrediction ( btScalar  prediction) [inline]

Definition at line 126 of file btDbvtBroadphase.h.

References m_prediction.


Member Data Documentation

Definition at line 85 of file btDbvtBroadphase.h.

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

Definition at line 78 of file btDbvtBroadphase.h.

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

Definition at line 77 of file btDbvtBroadphase.h.

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

Definition at line 80 of file btDbvtBroadphase.h.

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

Definition at line 76 of file btDbvtBroadphase.h.

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

Definition at line 86 of file btDbvtBroadphase.h.

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

Definition at line 84 of file btDbvtBroadphase.h.

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

Definition at line 87 of file btDbvtBroadphase.h.

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

Definition at line 81 of file btDbvtBroadphase.h.

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

Definition at line 82 of file btDbvtBroadphase.h.

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

Definition at line 83 of file btDbvtBroadphase.h.

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


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