Bullet Collision Detection & Physics Library: btSoftRigidDynamicsWorld Class Reference

Bullet Collision Detection & Physics Library

Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Attributes | List of all members
btSoftRigidDynamicsWorld Class Reference

`#include <btSoftRigidDynamicsWorld.h>`

Inheritance diagram for btSoftRigidDynamicsWorld:
[legend]
Collaboration diagram for btSoftRigidDynamicsWorld:
[legend]

## Public Member Functions
| btSoftRigidDynamicsWorld (btDispatcher *dispatcher, btBroadphaseInterface *pairCache, btConstraintSolver *constraintSolver, btCollisionConfiguration *collisionConfiguration, btSoftBodySolver *softBodySolver=0)
virtual | ~btSoftRigidDynamicsWorld ()
virtual void | debugDrawWorld ()
void | addSoftBody (btSoftBody *body, int collisionFilterGroup=btBroadphaseProxy::DefaultFilter, int collisionFilterMask=btBroadphaseProxy::AllFilter)
void | removeSoftBody (btSoftBody *body)
virtual void | removeCollisionObject (btCollisionObject *collisionObject)
| removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btDiscreteDynamicsWorld::removeCollisionObject
int | getDrawFlags () const
void | setDrawFlags (int f)
btSoftBodyWorldInfo & | getWorldInfo ()
const btSoftBodyWorldInfo & | getWorldInfo () const
virtual btDynamicsWorldType | getWorldType () const
btSoftBodyArray & | getSoftBodyArray ()
const btSoftBodyArray & | getSoftBodyArray () 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.
virtual void | serialize (btSerializer *serializer)
| Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (see Bullet/Demos/SerializeDemo).
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
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
virtual void | solveConstraints (btContactSolverInfo &solverInfo)
virtual void | synchronizeMotionStates ()
void | synchronizeSingleMotionState (btRigidBody *body)
| this can be useful to synchronize a single rigid body -> graphics object
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 | debugDrawConstraint (btTypedConstraint *constraint)
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 void | clearForces ()
| the forces on each rigidbody is accumulating together with gravity. clear this after each timestep.
virtual void | applyGravity ()
| apply gravity, call this once per timestep
virtual void | setNumTasks (int numTasks)
virtual void | updateVehicles (btScalar timeStep)
| obsolete, use updateActions instead
virtual void | addVehicle (btActionInterface *vehicle)
| obsolete, use addAction instead
virtual void | removeVehicle (btActionInterface *vehicle)
| obsolete, use removeAction instead
virtual void | addCharacter (btActionInterface *character)
| obsolete, use addAction instead
virtual void | removeCharacter (btActionInterface *character)
| obsolete, use removeAction instead
void | setSynchronizeAllMotionStates (bool synchronizeAll)
bool | getSynchronizeAllMotionStates () const
void | setApplySpeculativeContactRestitution (bool enable)
bool | getApplySpeculativeContactRestitution () const
void | setLatencyMotionStateInterpolation (bool latencyInterpolation)
| Interpolate motion state between previous and current transform, instead of current and next transform.
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 ()
void | setInternalTickCallback (btInternalTickCallback cb, void *worldUserInfo=0, bool isPreTick=false)
| Set the callback for when an internal tick (simulation substep) happens, optional user info.
void | setWorldUserInfo (void *worldUserInfo)
void * | getWorldUserInfo () const
btContactSolverInfo & | getSolverInfo ()
const btContactSolverInfo & | getSolverInfo () const
Public Member Functions inherited from btCollisionWorld
| btCollisionWorld (btDispatcher *dispatcher, btBroadphaseInterface *broadphasePairCache, btCollisionConfiguration *collisionConfiguration)
| for debug drawing
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
virtual void | setDebugDrawer (btIDebugDraw *debugDrawer)
virtual btIDebugDraw * | getDebugDrawer ()
virtual void | debugDrawObject (const btTransform &worldTransform, const btCollisionShape *shape, const btVector3 &color)
int | getNumCollisionObjects () const
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.
void | contactTest (btCollisionObject *colObj, ContactResultCallback &resultCallback)
| contactTest performs a discrete collision test between colObj against all objects in the btCollisionWorld, and calls the resultCallback.
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.
virtual void | refreshBroadphaseProxy (btCollisionObject *collisionObject)
btCollisionObjectArray & | getCollisionObjectArray ()
const btCollisionObjectArray & | getCollisionObjectArray () const
virtual void | performDiscreteCollisionDetection ()
btDispatcherInfo & | getDispatchInfo ()
const btDispatcherInfo & | getDispatchInfo () const
bool | getForceUpdateAllAabbs () const
void | setForceUpdateAllAabbs (bool forceUpdateAllAabbs)

## Static Public Member Functions
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.
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.
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.
static void | objectQuerySingleInternal (const btConvexShape *castShape, const btTransform &convexFromTrans, const btTransform &convexToTrans, const btCollisionObjectWrapper *colObjWrap, ConvexResultCallback &resultCallback, btScalar allowedPenetration)

## Protected Member Functions
virtual void | predictUnconstraintMotion (btScalar timeStep)
virtual void | internalSingleStepSimulation (btScalar timeStep)
void | solveSoftBodiesConstraints (btScalar timeStep)
void | serializeSoftBodies (btSerializer *serializer)
Protected Member Functions inherited from btDiscreteDynamicsWorld
void | integrateTransformsInternal (btRigidBody **bodies, int numBodies, btScalar timeStep)
virtual void | integrateTransforms (btScalar timeStep)
virtual void | calculateSimulationIslands ()
virtual void | updateActivationState (btScalar timeStep)
void | updateActions (btScalar timeStep)
void | startProfiling (btScalar timeStep)
void | releasePredictiveContacts ()
void | createPredictiveContactsInternal (btRigidBody **bodies, int numBodies, btScalar timeStep)
virtual void | createPredictiveContacts (btScalar timeStep)
virtual void | saveKinematicState (btScalar timeStep)
void | serializeRigidBodies (btSerializer *serializer)
void | serializeDynamicsWorldInfo (btSerializer *serializer)
Protected Member Functions inherited from btCollisionWorld
void | serializeCollisionObjects (btSerializer *serializer)
void | serializeContactManifolds (btSerializer *serializer)

## Private Attributes
btSoftBodyArray | m_softBodies
int | m_drawFlags
bool | m_drawNodeTree
bool | m_drawFaceTree
bool | m_drawClusterTree
btSoftBodyWorldInfo | m_sbi
btSoftBodySolver * | m_softBodySolver
| Solver classes that encapsulate multiple soft bodies for solving.
bool | m_ownsSolver

## Additional Inherited Members
Protected Attributes inherited from btDiscreteDynamicsWorld
btAlignedObjectArray< btTypedConstraint * > | m_sortedConstraints
InplaceSolverIslandCallback * | m_solverIslandCallback
btConstraintSolver * | m_constraintSolver
btSimulationIslandManager * | m_islandManager
btAlignedObjectArray< btTypedConstraint * > | m_constraints
btAlignedObjectArray< btRigidBody * > | m_nonStaticRigidBodies
btVector3 | m_gravity
btScalar | m_localTime
btScalar | m_fixedTimeStep
bool | m_ownsIslandManager
bool | m_ownsConstraintSolver
bool | m_synchronizeAllMotionStates
bool | m_applySpeculativeContactRestitution
btAlignedObjectArray< btActionInterface * > | m_actions
int | m_profileTimings
bool | m_latencyMotionStateInterpolation
btAlignedObjectArray< btPersistentManifold * > | m_predictiveManifolds
btSpinMutex | m_predictiveManifoldsMutex
Protected Attributes inherited from btDynamicsWorld
btInternalTickCallback | m_internalTickCallback
btInternalTickCallback | m_internalPreTickCallback
void * | m_worldUserInfo
btContactSolverInfo | m_solverInfo
Protected Attributes inherited from btCollisionWorld
btAlignedObjectArray< btCollisionObject * > | m_collisionObjects
btDispatcher * | m_dispatcher1
btDispatcherInfo | m_dispatchInfo
btBroadphaseInterface * | m_broadphasePairCache
btIDebugDraw * | m_debugDrawer
bool | m_forceUpdateAllAabbs
| 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)

## Detailed Description

Definition at line 26 of file btSoftRigidDynamicsWorld.h.

## Constructor & Destructor Documentation

## ◆ btSoftRigidDynamicsWorld()

btSoftRigidDynamicsWorld::btSoftRigidDynamicsWorld | ( | btDispatcher * | dispatcher,
|  | btBroadphaseInterface * | pairCache,
|  | btConstraintSolver * | constraintSolver,
|  | btCollisionConfiguration * | collisionConfiguration,
|  | btSoftBodySolver * | softBodySolver = 0 )

Definition at line 26 of file btSoftRigidDynamicsWorld.cpp.

## ◆ ~btSoftRigidDynamicsWorld()

btSoftRigidDynamicsWorld::~btSoftRigidDynamicsWorld | ( |  | ) |
| virtual

Definition at line 60 of file btSoftRigidDynamicsWorld.cpp.

## Member Function Documentation

## ◆ addSoftBody()

void btSoftRigidDynamicsWorld::addSoftBody | ( | btSoftBody * | body,
|  | int | collisionFilterGroup = btBroadphaseProxy::DefaultFilter,
|  | int | collisionFilterMask = btBroadphaseProxy::AllFilter )

Definition at line 120 of file btSoftRigidDynamicsWorld.cpp.

## ◆ debugDrawWorld()

void btSoftRigidDynamicsWorld::debugDrawWorld | ( |  | ) |
| virtual

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 149 of file btSoftRigidDynamicsWorld.cpp.

## ◆ getDrawFlags()

int btSoftRigidDynamicsWorld::getDrawFlags | ( |  | ) | const
| inline

Definition at line 61 of file btSoftRigidDynamicsWorld.h.

## ◆ getSoftBodyArray() [1/2]

btSoftBodyArray & btSoftRigidDynamicsWorld::getSoftBodyArray | ( |  | ) |
| inline

Definition at line 78 of file btSoftRigidDynamicsWorld.h.

## ◆ getSoftBodyArray() [2/2]

const btSoftBodyArray & btSoftRigidDynamicsWorld::getSoftBodyArray | ( |  | ) | const
| inline

Definition at line 83 of file btSoftRigidDynamicsWorld.h.

## ◆ getWorldInfo() [1/2]

btSoftBodyWorldInfo & btSoftRigidDynamicsWorld::getWorldInfo | ( |  | ) |
| inline

Definition at line 64 of file btSoftRigidDynamicsWorld.h.

## ◆ getWorldInfo() [2/2]

const btSoftBodyWorldInfo & btSoftRigidDynamicsWorld::getWorldInfo | ( |  | ) | const
| inline

Definition at line 68 of file btSoftRigidDynamicsWorld.h.

## ◆ getWorldType()

virtual btDynamicsWorldType btSoftRigidDynamicsWorld::getWorldType | ( |  | ) | const
| inlinevirtual

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 73 of file btSoftRigidDynamicsWorld.h.

## ◆ internalSingleStepSimulation()

void btSoftRigidDynamicsWorld::internalSingleStepSimulation | ( | btScalar | timeStep | ) |
| protectedvirtual

solve soft bodies constraints

update soft bodies

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 78 of file btSoftRigidDynamicsWorld.cpp.

## ◆ predictUnconstraintMotion()

void btSoftRigidDynamicsWorld::predictUnconstraintMotion | ( | btScalar | timeStep | ) |
| protectedvirtual

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 69 of file btSoftRigidDynamicsWorld.cpp.

## ◆ rayTest()

void btSoftRigidDynamicsWorld::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 from btCollisionWorld.

Definition at line 249 of file btSoftRigidDynamicsWorld.cpp.

## ◆ rayTestSingle()

void btSoftRigidDynamicsWorld::rayTestSingle | ( | const btTransform & | rayFromTrans,
|  | const btTransform & | rayToTrans,
|  | btCollisionObject * | collisionObject,
|  | const btCollisionShape * | collisionShape,
|  | const btTransform & | colObjWorldTransform,
|  | RayResultCallback & | resultCallback )
| static

rayTestSingle performs a raycast call and calls the resultCallback.

It is used internally by rayTest. In a future implementation, we consider moving the ray test as a virtual method in btCollisionShape. This allows more customization.

Definition at line 266 of file btSoftRigidDynamicsWorld.cpp.

## ◆ removeCollisionObject()

void btSoftRigidDynamicsWorld::removeCollisionObject | ( | btCollisionObject * | collisionObject | ) |
| virtual

removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise call btDiscreteDynamicsWorld::removeCollisionObject

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 140 of file btSoftRigidDynamicsWorld.cpp.

## ◆ removeSoftBody()

void btSoftRigidDynamicsWorld::removeSoftBody | ( | btSoftBody * | body | ) |

Definition at line 133 of file btSoftRigidDynamicsWorld.cpp.

## ◆ serialize()

void btSoftRigidDynamicsWorld::serialize | ( | btSerializer * | serializer | ) |
| virtual

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

Reimplemented from btDiscreteDynamicsWorld.

Definition at line 333 of file btSoftRigidDynamicsWorld.cpp.

## ◆ serializeSoftBodies()

void btSoftRigidDynamicsWorld::serializeSoftBodies | ( | btSerializer * | serializer | ) |
| protected

Definition at line 316 of file btSoftRigidDynamicsWorld.cpp.

## ◆ setDrawFlags()

void btSoftRigidDynamicsWorld::setDrawFlags | ( | int | f | ) |
| inline

Definition at line 62 of file btSoftRigidDynamicsWorld.h.

## ◆ solveSoftBodiesConstraints()

void btSoftRigidDynamicsWorld::solveSoftBodiesConstraints | ( | btScalar | timeStep | ) |
| protected

Definition at line 107 of file btSoftRigidDynamicsWorld.cpp.

## Member Data Documentation

## ◆ m_drawClusterTree

bool btSoftRigidDynamicsWorld::m_drawClusterTree
| private

Definition at line 32 of file btSoftRigidDynamicsWorld.h.

## ◆ m_drawFaceTree

bool btSoftRigidDynamicsWorld::m_drawFaceTree
| private

Definition at line 31 of file btSoftRigidDynamicsWorld.h.

## ◆ m_drawFlags

int btSoftRigidDynamicsWorld::m_drawFlags
| private

Definition at line 29 of file btSoftRigidDynamicsWorld.h.

## ◆ m_drawNodeTree

bool btSoftRigidDynamicsWorld::m_drawNodeTree
| private

Definition at line 30 of file btSoftRigidDynamicsWorld.h.

## ◆ m_ownsSolver

bool btSoftRigidDynamicsWorld::m_ownsSolver
| private

Definition at line 36 of file btSoftRigidDynamicsWorld.h.

## ◆ m_sbi

btSoftBodyWorldInfo btSoftRigidDynamicsWorld::m_sbi
| private

Definition at line 33 of file btSoftRigidDynamicsWorld.h.

## ◆ m_softBodies

btSoftBodyArray btSoftRigidDynamicsWorld::m_softBodies
| private

Definition at line 28 of file btSoftRigidDynamicsWorld.h.

## ◆ m_softBodySolver

btSoftBodySolver* btSoftRigidDynamicsWorld::m_softBodySolver
| private

Solver classes that encapsulate multiple soft bodies for solving.

Definition at line 35 of file btSoftRigidDynamicsWorld.h.

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

- btSoftRigidDynamicsWorld.h
- btSoftRigidDynamicsWorld.cpp