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

btCollisionWorld Class Reference

CollisionWorld is interface and container for the collision detection. More...

#include <btCollisionWorld.h>

Inheritance diagram for btCollisionWorld:
Inheritance graph
[legend]

List of all members.

Classes

struct  AllHitsRayResultCallback
struct  ClosestConvexResultCallback
struct  ClosestRayResultCallback
struct  ContactResultCallback
 ContactResultCallback is used to report contact points. More...
struct  ConvexResultCallback
 RayResultCallback is used to report new raycast results. More...
struct  LocalConvexResult
struct  LocalRayResult
struct  LocalShapeInfo
struct  RayResultCallback
 RayResultCallback is used to report new raycast results. More...

Public Member Functions

 btCollisionWorld (btDispatcher *dispatcher, btBroadphaseInterface *broadphasePairCache, btCollisionConfiguration *collisionConfiguration)
 for debug drawing
virtual ~btCollisionWorld ()
void setBroadphase (btBroadphaseInterface *pairCache)
const btBroadphaseInterfacegetBroadphase () const
btBroadphaseInterfacegetBroadphase ()
btOverlappingPairCachegetPairCache ()
btDispatchergetDispatcher ()
const btDispatchergetDispatcher () const
void updateSingleAabb (btCollisionObject *colObj)
virtual void updateAabbs ()
virtual void setDebugDrawer (btIDebugDraw *debugDrawer)
virtual btIDebugDrawgetDebugDrawer ()
virtual void debugDrawWorld ()
virtual void debugDrawObject (const btTransform &worldTransform, const btCollisionShape *shape, const btVector3 &color)
int getNumCollisionObjects () const
virtual void rayTest (const btVector3 &rayFromWorld, const btVector3 &rayToWorld, RayResultCallback &resultCallback) const
void convexSweepTest (const btConvexShape *castShape, const btTransform &from, const btTransform &to, ConvexResultCallback &resultCallback, btScalar allowedCcdPenetration=btScalar(0.)) const
void contactTest (btCollisionObject *colObj, ContactResultCallback &resultCallback)
void contactPairTest (btCollisionObject *colObjA, btCollisionObject *colObjB, ContactResultCallback &resultCallback)
virtual void addCollisionObject (btCollisionObject *collisionObject, short int collisionFilterGroup=btBroadphaseProxy::DefaultFilter, short int collisionFilterMask=btBroadphaseProxy::AllFilter)
btCollisionObjectArraygetCollisionObjectArray ()
const btCollisionObjectArraygetCollisionObjectArray () const
virtual void removeCollisionObject (btCollisionObject *collisionObject)
virtual void performDiscreteCollisionDetection ()
btDispatcherInfogetDispatchInfo ()
const btDispatcherInfogetDispatchInfo () const
bool getForceUpdateAllAabbs () const
void setForceUpdateAllAabbs (bool forceUpdateAllAabbs)
virtual void serialize (btSerializer *serializer)
 Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (Bullet/Demos/SerializeDemo)

Static Public Member Functions

static void rayTestSingle (const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, RayResultCallback &resultCallback)
static void objectQuerySingle (const btConvexShape *castShape, const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, ConvexResultCallback &resultCallback, btScalar allowedPenetration)
 objectQuerySingle performs a collision detection query and calls the resultCallback. It is used internally by rayTest.

Protected Member Functions

void serializeCollisionObjects (btSerializer *serializer)

Protected Attributes

btAlignedObjectArray
< btCollisionObject * > 
m_collisionObjects
btDispatcherm_dispatcher1
btDispatcherInfo m_dispatchInfo
btStackAllocm_stackAlloc
btBroadphaseInterfacem_broadphasePairCache
btIDebugDrawm_debugDrawer
bool m_forceUpdateAllAabbs

Detailed Description

CollisionWorld is interface and container for the collision detection.

Definition at line 82 of file btCollisionWorld.h.


Constructor & Destructor Documentation

btCollisionWorld::btCollisionWorld ( btDispatcher dispatcher,
btBroadphaseInterface broadphasePairCache,
btCollisionConfiguration collisionConfiguration 
)
btCollisionWorld::~btCollisionWorld ( ) [virtual]

Member Function Documentation

void btCollisionWorld::addCollisionObject ( btCollisionObject *  collisionObject,
short int  collisionFilterGroup = btBroadphaseProxy::DefaultFilter,
short int  collisionFilterMask = btBroadphaseProxy::AllFilter 
) [virtual]
void btCollisionWorld::contactPairTest ( btCollisionObject *  colObjA,
btCollisionObject *  colObjB,
ContactResultCallback resultCallback 
)

contactTest performs a discrete collision test between two collision objects and calls the resultCallback if overlap if detected. it reports one or more contact points (including the one with deepest penetration)

Definition at line 1117 of file btCollisionWorld.cpp.

References btDispatcher::findAlgorithm(), btDispatcher::freeCollisionAlgorithm(), getDispatcher(), getDispatchInfo(), btCollisionAlgorithm::processCollision(), and btCollisionAlgorithm::~btCollisionAlgorithm().

void btCollisionWorld::contactTest ( btCollisionObject *  colObj,
ContactResultCallback resultCallback 
)

contactTest performs a discrete collision test between colObj against all objects in the btCollisionWorld, and calls the resultCallback. it reports one or more contact points for every overlapping object (including the one with deepest penetration)

contactTest performs a discrete collision test against all objects in the btCollisionWorld, and calls the resultCallback. it reports one or more contact points for every overlapping object (including the one with deepest penetration)

Definition at line 1105 of file btCollisionWorld.cpp.

References btBroadphaseInterface::aabbTest(), and m_broadphasePairCache.

void btCollisionWorld::convexSweepTest ( const btConvexShape *  castShape,
const btTransform from,
const btTransform to,
ConvexResultCallback resultCallback,
btScalar  allowedCcdPenetration = btScalar(0.) 
) const

convexTest performs a swept convex cast on all objects in the btCollisionWorld, and calls the resultCallback This allows for several queries: first hit, all hits, any hit, dependent on the value return by the callback.

use the broadphase to accelerate the search for objects, based on their aabb and for each object with ray-aabb overlap, perform an exact ray test unfortunately the implementation for rayTest and convexSweepTest duplicated, albeit practically identical

Definition at line 943 of file btCollisionWorld.cpp.

References AabbExpand(), BT_PROFILE, btRayAabb(), btTransformUtil::calculateVelocity(), btTransform::getOrigin(), btTransform::getRotation(), i, m_broadphasePairCache, m_collisionObjects, btCollisionWorld::ConvexResultCallback::needsCollision(), objectQuerySingle(), R, btBroadphaseInterface::rayTest(), btTransform::setIdentity(), btTransform::setRotation(), and btAlignedObjectArray< T >::size().

Referenced by btDiscreteDynamicsWorld::integrateTransforms(), btKinematicCharacterController::stepDown(), btKinematicCharacterController::stepForwardAndStrafe(), and btKinematicCharacterController::stepUp().

void btCollisionWorld::debugDrawObject ( const btTransform worldTransform,
const btCollisionShape shape,
const btVector3 &  color 
) [virtual]

Todo:
pass camera, for some culling? no -> we are not a graphics lib

for polyhedral shapes

Definition at line 1181 of file btCollisionWorld.cpp.

References BOX_SHAPE_PROXYTYPE, BT_LARGE_FLOAT, CAPSULE_SHAPE_PROXYTYPE, MakeCursor::color, COMPOUND_SHAPE_PROXYTYPE, CONE_SHAPE_PROXYTYPE, CONVEX_TRIANGLEMESH_SHAPE_PROXYTYPE, CYLINDER_SHAPE_PROXYTYPE, btIDebugDraw::drawBox(), btIDebugDraw::drawCapsule(), btIDebugDraw::drawCone(), btIDebugDraw::drawCylinder(), btIDebugDraw::drawLine(), btIDebugDraw::drawPlane(), btIDebugDraw::drawSphere(), btIDebugDraw::drawTransform(), btConeShape::getConeUpIndex(), getDebugDrawer(), btPolyhedralConvexShape::getEdge(), btBoxShape::getHalfExtentsWithMargin(), btCylinderShape::getHalfExtentsWithMargin(), btCapsuleShape::getHalfHeight(), btConeShape::getHeight(), btConvexTriangleMeshShape::getMeshInterface(), btPolyhedralConvexShape::getNumEdges(), btConeShape::getRadius(), btCylinderShape::getRadius(), btCapsuleShape::getRadius(), btCollisionShape::getShapeType(), btMultiSphereShape::getSphereCount(), btMultiSphereShape::getSpherePosition(), btMultiSphereShape::getSphereRadius(), btCylinderShape::getUpAxis(), btCapsuleShape::getUpAxis(), i, btStridingMeshInterface::InternalProcessAllTriangles(), btCollisionShape::isConcave(), btCollisionShape::isPolyhedral(), MULTI_SPHERE_SHAPE_PROXYTYPE, btConcaveShape::processAllTriangles(), btTransform::setIdentity(), btTransform::setOrigin(), SPHERE_SHAPE_PROXYTYPE, and STATIC_PLANE_PROXYTYPE.

Referenced by debugDrawWorld().

void btCollisionWorld::debugDrawWorld ( ) [virtual]
btBroadphaseInterface* btCollisionWorld::getBroadphase ( ) [inline]

Definition at line 123 of file btCollisionWorld.h.

References m_broadphasePairCache.

const btBroadphaseInterface* btCollisionWorld::getBroadphase ( ) const [inline]
btCollisionObjectArray& btCollisionWorld::getCollisionObjectArray ( ) [inline]
const btCollisionObjectArray& btCollisionWorld::getCollisionObjectArray ( ) const [inline]

Definition at line 474 of file btCollisionWorld.h.

References m_collisionObjects.

virtual btIDebugDraw* btCollisionWorld::getDebugDrawer ( ) [inline, virtual]
btDispatcher* btCollisionWorld::getDispatcher ( ) [inline]
const btDispatcher* btCollisionWorld::getDispatcher ( ) const [inline]

Definition at line 139 of file btCollisionWorld.h.

References m_dispatcher1.

const btDispatcherInfo& btCollisionWorld::getDispatchInfo ( ) const [inline]

Definition at line 489 of file btCollisionWorld.h.

References m_dispatchInfo.

btDispatcherInfo& btCollisionWorld::getDispatchInfo ( ) [inline]
bool btCollisionWorld::getForceUpdateAllAabbs ( ) const [inline]

Definition at line 494 of file btCollisionWorld.h.

References m_forceUpdateAllAabbs.

int btCollisionWorld::getNumCollisionObjects ( ) const [inline]
btOverlappingPairCache* btCollisionWorld::getPairCache ( ) [inline]
void btCollisionWorld::objectQuerySingle ( const btConvexShape *  castShape,
const btTransform rayFromTrans,
const btTransform rayToTrans,
btCollisionObject *  collisionObject,
const btCollisionShape collisionShape,
const btTransform colObjWorldTransform,
ConvexResultCallback resultCallback,
btScalar  allowedPenetration 
) [static]
void btCollisionWorld::performDiscreteCollisionDetection ( ) [virtual]
void btCollisionWorld::rayTest ( const btVector3 &  rayFromWorld,
const btVector3 &  rayToWorld,
RayResultCallback resultCallback 
) const [virtual]

rayTest performs a raycast on all objects in the btCollisionWorld, and calls the resultCallback This allows for several queries: first hit, all hits, any hit, dependent on the value returned by the callback.

use the broadphase to accelerate the search for objects, based on their aabb and for each object with ray-aabb overlap, perform an exact ray test

Reimplemented in btSoftRigidDynamicsWorld.

Definition at line 865 of file btCollisionWorld.cpp.

References getNumCollisionObjects(), i, m_broadphasePairCache, m_collisionObjects, btSingleRayCallback::process(), and btBroadphaseInterface::rayTest().

Referenced by btDefaultVehicleRaycaster::castRay(), and rayTestSingle().

void btCollisionWorld::rayTestSingle ( const btTransform rayFromTrans,
const btTransform rayToTrans,
btCollisionObject *  collisionObject,
const btCollisionShape collisionShape,
const btTransform colObjWorldTransform,
RayResultCallback resultCallback 
) [static]
void btCollisionWorld::removeCollisionObject ( btCollisionObject *  collisionObject) [virtual]
void btCollisionWorld::serialize ( btSerializer serializer) [virtual]

Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (Bullet/Demos/SerializeDemo)

Reimplemented in btDiscreteDynamicsWorld, and btSoftRigidDynamicsWorld.

Definition at line 1436 of file btCollisionWorld.cpp.

References btSerializer::finishSerialization(), serializeCollisionObjects(), and btSerializer::startSerialization().

void btCollisionWorld::serializeCollisionObjects ( btSerializer serializer) [protected]
void btCollisionWorld::setBroadphase ( btBroadphaseInterface pairCache) [inline]

Definition at line 113 of file btCollisionWorld.h.

References m_broadphasePairCache.

virtual void btCollisionWorld::setDebugDrawer ( btIDebugDraw debugDrawer) [inline, virtual]

Definition at line 148 of file btCollisionWorld.h.

References m_debugDrawer.

Referenced by CcdPhysicsEnvironment::setDebugDrawer().

void btCollisionWorld::setForceUpdateAllAabbs ( bool  forceUpdateAllAabbs) [inline]

Definition at line 498 of file btCollisionWorld.h.

References m_forceUpdateAllAabbs.

void btCollisionWorld::updateAabbs ( ) [virtual]
void btCollisionWorld::updateSingleAabb ( btCollisionObject *  colObj)

Member Data Documentation

Definition at line 92 of file btCollisionWorld.h.

Referenced by btCollisionWorld(), and getDispatchInfo().

m_forceUpdateAllAabbs can be set to false as an optimization to only update active object AABBs it is true by default, because it is error-prone (setting the position of static objects wouldn't update their AABB)

Definition at line 102 of file btCollisionWorld.h.

Referenced by getForceUpdateAllAabbs(), setForceUpdateAllAabbs(), and updateAabbs().


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