Bullet Collision Detection & Physics Library
|
btDiscreteDynamicsWorldMt – a version of DiscreteDynamicsWorld with some minor changes to support solving simulation islands on multiple threads. More...
#include <btDiscreteDynamicsWorldMt.h>
Classes | |
struct | UpdaterCreatePredictiveContacts |
struct | UpdaterIntegrateTransforms |
Public Member Functions | |
BT_DECLARE_ALIGNED_ALLOCATOR () | |
btDiscreteDynamicsWorldMt (btDispatcher *dispatcher, btBroadphaseInterface *pairCache, btConstraintSolverPoolMt *solverPool, btConstraintSolver *constraintSolverMt, btCollisionConfiguration *collisionConfiguration) | |
btDiscreteDynamicsWorldMt More... | |
virtual | ~btDiscreteDynamicsWorldMt () |
virtual int | stepSimulation (btScalar timeStep, int maxSubSteps, btScalar fixedTimeStep) BT_OVERRIDE |
if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's More... | |
Public Member Functions inherited from btDiscreteDynamicsWorld | |
BT_DECLARE_ALIGNED_ALLOCATOR () | |
btDiscreteDynamicsWorld (btDispatcher *dispatcher, btBroadphaseInterface *pairCache, btConstraintSolver *constraintSolver, btCollisionConfiguration *collisionConfiguration) | |
this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those More... | |
virtual | ~btDiscreteDynamicsWorld () |
virtual int | stepSimulation (btScalar timeStep, int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.)) |
if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's More... | |
virtual void | solveConstraints (btContactSolverInfo &solverInfo) |
virtual void | synchronizeMotionStates () |
void | synchronizeSingleMotionState (btRigidBody *body) |
this can be useful to synchronize a single rigid body -> graphics object More... | |
virtual void | addConstraint (btTypedConstraint *constraint, bool disableCollisionsBetweenLinkedBodies=false) |
virtual void | removeConstraint (btTypedConstraint *constraint) |
virtual void | addAction (btActionInterface *) |
virtual void | removeAction (btActionInterface *) |
btSimulationIslandManager * | getSimulationIslandManager () |
const btSimulationIslandManager * | getSimulationIslandManager () const |
btCollisionWorld * | getCollisionWorld () |
virtual void | setGravity (const btVector3 &gravity) |
virtual btVector3 | getGravity () const |
virtual void | addCollisionObject (btCollisionObject *collisionObject, int collisionFilterGroup=btBroadphaseProxy::StaticFilter, int collisionFilterMask=btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter) |
virtual void | addRigidBody (btRigidBody *body) |
virtual void | addRigidBody (btRigidBody *body, int group, int mask) |
virtual void | removeRigidBody (btRigidBody *body) |
virtual void | removeCollisionObject (btCollisionObject *collisionObject) |
removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btCollisionWorld::removeCollisionObject More... | |
virtual void | debugDrawConstraint (btTypedConstraint *constraint) |
virtual void | debugDrawWorld () |
virtual void | setConstraintSolver (btConstraintSolver *solver) |
virtual btConstraintSolver * | getConstraintSolver () |
virtual int | getNumConstraints () const |
virtual btTypedConstraint * | getConstraint (int index) |
virtual const btTypedConstraint * | getConstraint (int index) const |
virtual btDynamicsWorldType | getWorldType () const |
virtual void | clearForces () |
the forces on each rigidbody is accumulating together with gravity. clear this after each timestep. More... | |
virtual void | applyGravity () |
apply gravity, call this once per timestep More... | |
virtual void | setNumTasks (int numTasks) |
virtual void | updateVehicles (btScalar timeStep) |
obsolete, use updateActions instead More... | |
virtual void | addVehicle (btActionInterface *vehicle) |
obsolete, use addAction instead More... | |
virtual void | removeVehicle (btActionInterface *vehicle) |
obsolete, use removeAction instead More... | |
virtual void | addCharacter (btActionInterface *character) |
obsolete, use addAction instead More... | |
virtual void | removeCharacter (btActionInterface *character) |
obsolete, use removeAction instead More... | |
void | setSynchronizeAllMotionStates (bool synchronizeAll) |
bool | getSynchronizeAllMotionStates () const |
void | setApplySpeculativeContactRestitution (bool enable) |
bool | getApplySpeculativeContactRestitution () const |
virtual void | serialize (btSerializer *serializer) |
Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (see Bullet/Demos/SerializeDemo) More... | |
void | setLatencyMotionStateInterpolation (bool latencyInterpolation) |
Interpolate motion state between previous and current transform, instead of current and next transform. More... | |
bool | getLatencyMotionStateInterpolation () const |
btAlignedObjectArray< btRigidBody * > & | getNonStaticRigidBodies () |
const btAlignedObjectArray< btRigidBody * > & | getNonStaticRigidBodies () const |
Public Member Functions inherited from btDynamicsWorld | |
btDynamicsWorld (btDispatcher *dispatcher, btBroadphaseInterface *broadphase, btCollisionConfiguration *collisionConfiguration) | |
virtual | ~btDynamicsWorld () |
virtual int | stepSimulation (btScalar timeStep, int maxSubSteps=1, btScalar fixedTimeStep=btScalar(1.)/btScalar(60.))=0 |
stepSimulation proceeds the simulation over 'timeStep', units in preferably in seconds. More... | |
virtual void | debugDrawWorld ()=0 |
virtual void | addConstraint (btTypedConstraint *constraint, bool disableCollisionsBetweenLinkedBodies=false) |
virtual void | removeConstraint (btTypedConstraint *constraint) |
virtual void | addAction (btActionInterface *action)=0 |
virtual void | removeAction (btActionInterface *action)=0 |
virtual void | setGravity (const btVector3 &gravity)=0 |
virtual btVector3 | getGravity () const =0 |
virtual void | synchronizeMotionStates ()=0 |
virtual void | addRigidBody (btRigidBody *body)=0 |
virtual void | addRigidBody (btRigidBody *body, int group, int mask)=0 |
virtual void | removeRigidBody (btRigidBody *body)=0 |
virtual void | setConstraintSolver (btConstraintSolver *solver)=0 |
virtual btConstraintSolver * | getConstraintSolver ()=0 |
virtual int | getNumConstraints () const |
virtual btTypedConstraint * | getConstraint (int index) |
virtual const btTypedConstraint * | getConstraint (int index) const |
virtual btDynamicsWorldType | getWorldType () const =0 |
virtual void | clearForces ()=0 |
void | setInternalTickCallback (btInternalTickCallback cb, void *worldUserInfo=0, bool isPreTick=false) |
Set the callback for when an internal tick (simulation substep) happens, optional user info. More... | |
void | setWorldUserInfo (void *worldUserInfo) |
void * | getWorldUserInfo () const |
btContactSolverInfo & | getSolverInfo () |
const btContactSolverInfo & | getSolverInfo () const |
virtual void | addVehicle (btActionInterface *vehicle) |
obsolete, use addAction instead. More... | |
virtual void | removeVehicle (btActionInterface *vehicle) |
obsolete, use removeAction instead More... | |
virtual void | addCharacter (btActionInterface *character) |
obsolete, use addAction instead. More... | |
virtual void | removeCharacter (btActionInterface *character) |
obsolete, use removeAction instead More... | |
Public Member Functions inherited from btCollisionWorld | |
btCollisionWorld (btDispatcher *dispatcher, btBroadphaseInterface *broadphasePairCache, btCollisionConfiguration *collisionConfiguration) | |
for debug drawing More... | |
virtual | ~btCollisionWorld () |
void | setBroadphase (btBroadphaseInterface *pairCache) |
const btBroadphaseInterface * | getBroadphase () const |
btBroadphaseInterface * | getBroadphase () |
btOverlappingPairCache * | getPairCache () |
btDispatcher * | getDispatcher () |
const btDispatcher * | getDispatcher () const |
void | updateSingleAabb (btCollisionObject *colObj) |
virtual void | updateAabbs () |
virtual void | computeOverlappingPairs () |
the computeOverlappingPairs is usually already called by performDiscreteCollisionDetection (or stepSimulation) it can be useful to use if you perform ray tests without collision detection/simulation More... | |
virtual void | setDebugDrawer (btIDebugDraw *debugDrawer) |
virtual btIDebugDraw * | getDebugDrawer () |
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 |
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. More... | |
void | 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. More... | |
void | contactTest (btCollisionObject *colObj, ContactResultCallback &resultCallback) |
contactTest performs a discrete collision test between colObj against all objects in the btCollisionWorld, and calls the resultCallback. More... | |
void | 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. More... | |
virtual void | addCollisionObject (btCollisionObject *collisionObject, int collisionFilterGroup=btBroadphaseProxy::DefaultFilter, int collisionFilterMask=btBroadphaseProxy::AllFilter) |
virtual void | refreshBroadphaseProxy (btCollisionObject *collisionObject) |
btCollisionObjectArray & | getCollisionObjectArray () |
const btCollisionObjectArray & | getCollisionObjectArray () const |
virtual void | removeCollisionObject (btCollisionObject *collisionObject) |
virtual void | performDiscreteCollisionDetection () |
btDispatcherInfo & | getDispatchInfo () |
const btDispatcherInfo & | getDispatchInfo () 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) More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from btCollisionWorld | |
static void | rayTestSingle (const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, RayResultCallback &resultCallback) |
rayTestSingle performs a raycast call and calls the resultCallback. More... | |
static void | rayTestSingleInternal (const btTransform &rayFromTrans, const btTransform &rayToTrans, const btCollisionObjectWrapper *collisionObjectWrap, 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. More... | |
static void | objectQuerySingleInternal (const btConvexShape *castShape, const btTransform &convexFromTrans, const btTransform &convexToTrans, const btCollisionObjectWrapper *colObjWrap, ConvexResultCallback &resultCallback, btScalar allowedPenetration) |
btDiscreteDynamicsWorldMt – a version of DiscreteDynamicsWorld with some minor changes to support solving simulation islands on multiple threads.
Should function exactly like btDiscreteDynamicsWorld. Also 3 methods that iterate over all of the rigidbodies can run in parallel:
Definition at line 82 of file btDiscreteDynamicsWorldMt.h.
btDiscreteDynamicsWorldMt::btDiscreteDynamicsWorldMt | ( | btDispatcher * | dispatcher, |
btBroadphaseInterface * | pairCache, | ||
btConstraintSolverPoolMt * | solverPool, | ||
btConstraintSolver * | constraintSolverMt, | ||
btCollisionConfiguration * | collisionConfiguration | ||
) |
Definition at line 148 of file btDiscreteDynamicsWorldMt.cpp.
|
virtual |
Definition at line 169 of file btDiscreteDynamicsWorldMt.cpp.
btDiscreteDynamicsWorldMt::BT_DECLARE_ALIGNED_ALLOCATOR | ( | ) |
|
protectedvirtual |
Reimplemented from btDiscreteDynamicsWorld.
Definition at line 225 of file btDiscreteDynamicsWorldMt.cpp.
|
protectedvirtual |
Reimplemented from btDiscreteDynamicsWorld.
Definition at line 240 of file btDiscreteDynamicsWorldMt.cpp.
|
protectedvirtual |
Reimplemented from btDiscreteDynamicsWorld.
Definition at line 212 of file btDiscreteDynamicsWorldMt.cpp.
|
protectedvirtual |
solve all the constraints for this island
Reimplemented from btDiscreteDynamicsWorld.
Definition at line 173 of file btDiscreteDynamicsWorldMt.cpp.
|
virtual |
if maxSubSteps > 0, it will interpolate motion between fixedTimeStep's
Reimplemented from btDiscreteDynamicsWorld.
Definition at line 254 of file btDiscreteDynamicsWorldMt.cpp.
|
protected |
Definition at line 86 of file btDiscreteDynamicsWorldMt.h.