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

btDiscreteDynamicsWorld Class Reference

#include <btDiscreteDynamicsWorld.h>

Inheritance diagram for btDiscreteDynamicsWorld:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 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 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 *)
btSimulationIslandManagergetSimulationIslandManager ()
const btSimulationIslandManagergetSimulationIslandManager () const
btCollisionWorldgetCollisionWorld ()
virtual void setGravity (const btVector3 &gravity)
virtual btVector3 getGravity () const
virtual void addCollisionObject (btCollisionObject *collisionObject, short int collisionFilterGroup=btBroadphaseProxy::StaticFilter, short int collisionFilterMask=btBroadphaseProxy::AllFilter^btBroadphaseProxy::StaticFilter)
virtual void addRigidBody (btRigidBody *body)
virtual void addRigidBody (btRigidBody *body, short group, short 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
void debugDrawConstraint (btTypedConstraint *constraint)
virtual void debugDrawWorld ()
virtual void setConstraintSolver (btConstraintSolver *solver)
virtual btConstraintSolvergetConstraintSolver ()
virtual int getNumConstraints () const
virtual btTypedConstraintgetConstraint (int index)
virtual const btTypedConstraintgetConstraint (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.
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
virtual void serialize (btSerializer *serializer)
 Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (see Bullet/Demos/SerializeDemo)

Protected Member Functions

virtual void predictUnconstraintMotion (btScalar timeStep)
virtual void integrateTransforms (btScalar timeStep)
virtual void calculateSimulationIslands ()
virtual void solveConstraints (btContactSolverInfo &solverInfo)
void updateActivationState (btScalar timeStep)
void updateActions (btScalar timeStep)
void startProfiling (btScalar timeStep)
virtual void internalSingleStepSimulation (btScalar timeStep)
virtual void saveKinematicState (btScalar timeStep)
void serializeRigidBodies (btSerializer *serializer)

Protected Attributes

btConstraintSolverm_constraintSolver
btSimulationIslandManagerm_islandManager
btAlignedObjectArray
< btTypedConstraint * > 
m_constraints
btAlignedObjectArray
< btRigidBody * > 
m_nonStaticRigidBodies
btVector3 m_gravity
btScalar m_localTime
bool m_ownsIslandManager
bool m_ownsConstraintSolver
bool m_synchronizeAllMotionStates
btAlignedObjectArray
< btActionInterface * > 
m_actions
int m_profileTimings

Detailed Description

btDiscreteDynamicsWorld provides discrete rigid body simulation those classes replace the obsolete CcdPhysicsEnvironment/CcdPhysicsController

Definition at line 35 of file btDiscreteDynamicsWorld.h.


Constructor & Destructor Documentation

btDiscreteDynamicsWorld::btDiscreteDynamicsWorld ( btDispatcher dispatcher,
btBroadphaseInterface pairCache,
btConstraintSolver constraintSolver,
btCollisionConfiguration collisionConfiguration 
)

this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete those

Definition at line 51 of file btDiscreteDynamicsWorld.cpp.

References btAlignedAlloc, m_constraintSolver, m_islandManager, m_ownsConstraintSolver, and m_ownsIslandManager.

btDiscreteDynamicsWorld::~btDiscreteDynamicsWorld ( ) [virtual]

Member Function Documentation

void btDiscreteDynamicsWorld::addAction ( btActionInterface action) [virtual]

Implements btDynamicsWorld.

Definition at line 495 of file btDiscreteDynamicsWorld.cpp.

References m_actions, and btAlignedObjectArray< T >::push_back().

Referenced by addCharacter(), and addVehicle().

void btDiscreteDynamicsWorld::addCharacter ( btActionInterface character) [virtual]

obsolete, use addAction instead

Reimplemented from btDynamicsWorld.

Definition at line 516 of file btDiscreteDynamicsWorld.cpp.

References addAction().

void btDiscreteDynamicsWorld::addCollisionObject ( btCollisionObject *  collisionObject,
short int  collisionFilterGroup = btBroadphaseProxy::StaticFilter,
short int  collisionFilterMask = btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter 
) [virtual]
void btDiscreteDynamicsWorld::addConstraint ( btTypedConstraint constraint,
bool  disableCollisionsBetweenLinkedBodies = false 
) [virtual]
void btDiscreteDynamicsWorld::addRigidBody ( btRigidBody body) [virtual]
void btDiscreteDynamicsWorld::addRigidBody ( btRigidBody body,
short  group,
short  mask 
) [virtual]
void btDiscreteDynamicsWorld::addVehicle ( btActionInterface vehicle) [virtual]

obsolete, use addAction instead

Reimplemented from btDynamicsWorld.

Definition at line 506 of file btDiscreteDynamicsWorld.cpp.

References addAction().

void btDiscreteDynamicsWorld::applyGravity ( ) [virtual]

apply gravity, call this once per timestep

Todo:
: iterate over awake simulation islands!

Definition at line 168 of file btDiscreteDynamicsWorld.cpp.

References btRigidBody::applyGravity(), i, m_nonStaticRigidBodies, and btAlignedObjectArray< T >::size().

Referenced by stepSimulation().

void btDiscreteDynamicsWorld::calculateSimulationIslands ( ) [protected, virtual]
void btDiscreteDynamicsWorld::clearForces ( ) [virtual]

the forces on each rigidbody is accumulating together with gravity. clear this after each timestep.

Todo:
: iterate over awake simulation islands!

Implements btDynamicsWorld.

Definition at line 155 of file btDiscreteDynamicsWorld.cpp.

References btRigidBody::clearForces(), i, m_nonStaticRigidBodies, and btAlignedObjectArray< T >::size().

Referenced by stepSimulation().

void btDiscreteDynamicsWorld::debugDrawConstraint ( btTypedConstraint constraint)

Definition at line 909 of file btDiscreteDynamicsWorld.cpp.

References btCos(), btSin(), CONETWIST_CONSTRAINT_TYPE, D6_CONSTRAINT_TYPE, D6_SPRING_CONSTRAINT_TYPE, btIDebugDraw::DBG_DrawConstraintLimits, btIDebugDraw::DBG_DrawConstraints, btIDebugDraw::drawArc(), btIDebugDraw::drawBox(), btIDebugDraw::drawLine(), btIDebugDraw::drawSpherePatch(), btIDebugDraw::drawTransform(), btConeTwistConstraint::getAFrame(), btGeneric6DofConstraint::getAngle(), btTransform::getBasis(), btConeTwistConstraint::getBFrame(), btGeneric6DofConstraint::getCalculatedTransformA(), btSliderConstraint::getCalculatedTransformA(), btGeneric6DofConstraint::getCalculatedTransformB(), btSliderConstraint::getCalculatedTransformB(), btRigidBody::getCenterOfMassTransform(), btMatrix3x3::getColumn(), btTypedConstraint::getConstraintType(), btTypedConstraint::getDbgDrawSize(), btCollisionWorld::getDebugDrawer(), btIDebugDraw::getDebugMode(), btRigidBody::getInvMass(), btSliderConstraint::getLowerAngLimit(), btSliderConstraint::getLowerLinLimit(), btTransform::getOrigin(), btConeTwistConstraint::GetPointForAngle(), btConeTwistConstraint::getRigidBodyA(), btConeTwistConstraint::getRigidBodyB(), btGeneric6DofConstraint::getRotationalLimitMotor(), btGeneric6DofConstraint::getTranslationalLimitMotor(), btConeTwistConstraint::getTwistAngle(), btConeTwistConstraint::getTwistSpan(), btSliderConstraint::getUpperAngLimit(), btSliderConstraint::getUpperLinLimit(), btSliderConstraint::getUseLinearReferenceFrameA(), HINGE_CONSTRAINT_TYPE, i, length(), btRotationalLimitMotor::m_hiLimit, btRotationalLimitMotor::m_loLimit, btTranslationalLimitMotor::m_lowerLimit, btTranslationalLimitMotor::m_upperLimit, POINT2POINT_CONSTRAINT_TYPE, btTransform::setIdentity(), btTransform::setOrigin(), SIMD_2_PI, SIMD_PI, and SLIDER_CONSTRAINT_TYPE.

Referenced by debugDrawWorld().

void btDiscreteDynamicsWorld::debugDrawWorld ( ) [virtual]
btCollisionWorld* btDiscreteDynamicsWorld::getCollisionWorld ( ) [inline]

Definition at line 117 of file btDiscreteDynamicsWorld.h.

Referenced by calculateSimulationIslands(), and solveConstraints().

const btTypedConstraint * btDiscreteDynamicsWorld::getConstraint ( int  index) const [virtual]

Reimplemented from btDynamicsWorld.

Definition at line 1117 of file btDiscreteDynamicsWorld.cpp.

References m_constraints.

btTypedConstraint * btDiscreteDynamicsWorld::getConstraint ( int  index) [virtual]

Reimplemented from btDynamicsWorld.

Definition at line 1113 of file btDiscreteDynamicsWorld.cpp.

References m_constraints.

Referenced by debugDrawWorld(), and CcdPhysicsEnvironment::removeConstraint().

btConstraintSolver * btDiscreteDynamicsWorld::getConstraintSolver ( ) [virtual]

Implements btDynamicsWorld.

Definition at line 1103 of file btDiscreteDynamicsWorld.cpp.

References m_constraintSolver.

btVector3 btDiscreteDynamicsWorld::getGravity ( ) const [virtual]

Implements btDynamicsWorld.

Definition at line 358 of file btDiscreteDynamicsWorld.cpp.

References m_gravity.

Referenced by CcdPhysicsEnvironment::getGravity().

int btDiscreteDynamicsWorld::getNumConstraints ( ) const [virtual]
btSimulationIslandManager* btDiscreteDynamicsWorld::getSimulationIslandManager ( ) [inline]

Definition at line 107 of file btDiscreteDynamicsWorld.h.

References m_islandManager.

Referenced by calculateSimulationIslands().

const btSimulationIslandManager* btDiscreteDynamicsWorld::getSimulationIslandManager ( ) const [inline]

Definition at line 112 of file btDiscreteDynamicsWorld.h.

References m_islandManager.

bool btDiscreteDynamicsWorld::getSynchronizeAllMotionStates ( ) const [inline]

Definition at line 188 of file btDiscreteDynamicsWorld.h.

References m_synchronizeAllMotionStates.

virtual btDynamicsWorldType btDiscreteDynamicsWorld::getWorldType ( ) const [inline, virtual]

Implements btDynamicsWorld.

Reimplemented in btContinuousDynamicsWorld.

Definition at line 153 of file btDiscreteDynamicsWorld.h.

References BT_DISCRETE_DYNAMICS_WORLD.

void btDiscreteDynamicsWorld::integrateTransforms ( btScalar  timeStep) [protected, virtual]
void btDiscreteDynamicsWorld::internalSingleStepSimulation ( btScalar  timeStep) [protected, virtual]
void btDiscreteDynamicsWorld::predictUnconstraintMotion ( btScalar  timeStep) [protected, virtual]
void btDiscreteDynamicsWorld::removeAction ( btActionInterface action) [virtual]

Implements btDynamicsWorld.

Definition at line 500 of file btDiscreteDynamicsWorld.cpp.

References m_actions, and btAlignedObjectArray< T >::remove().

Referenced by removeCharacter(), and removeVehicle().

void btDiscreteDynamicsWorld::removeCharacter ( btActionInterface character) [virtual]

obsolete, use removeAction instead

Reimplemented from btDynamicsWorld.

Definition at line 521 of file btDiscreteDynamicsWorld.cpp.

References removeAction().

void btDiscreteDynamicsWorld::removeCollisionObject ( btCollisionObject *  collisionObject) [virtual]

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

Reimplemented from btCollisionWorld.

Reimplemented in btSoftRigidDynamicsWorld.

Definition at line 368 of file btDiscreteDynamicsWorld.cpp.

References removeRigidBody(), and btRigidBody::upcast().

Referenced by removeRigidBody().

void btDiscreteDynamicsWorld::removeConstraint ( btTypedConstraint constraint) [virtual]
void btDiscreteDynamicsWorld::removeRigidBody ( btRigidBody body) [virtual]
void btDiscreteDynamicsWorld::removeVehicle ( btActionInterface vehicle) [virtual]

obsolete, use removeAction instead

Reimplemented from btDynamicsWorld.

Definition at line 511 of file btDiscreteDynamicsWorld.cpp.

References removeAction().

void btDiscreteDynamicsWorld::saveKinematicState ( btScalar  timeStep) [protected, virtual]

would like to iterate over m_nonStaticRigidBodies, but unfortunately old API allows to switch status _after_ adding kinematic objects to the world fix it for Bullet 3.x release

Definition at line 94 of file btDiscreteDynamicsWorld.cpp.

References i, ISLAND_SLEEPING, btCollisionWorld::m_collisionObjects, btRigidBody::saveKinematicState(), btAlignedObjectArray< T >::size(), and btRigidBody::upcast().

Referenced by stepSimulation().

void btDiscreteDynamicsWorld::serialize ( btSerializer serializer) [virtual]

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

Reimplemented from btCollisionWorld.

Reimplemented in btSoftRigidDynamicsWorld.

Definition at line 1151 of file btDiscreteDynamicsWorld.cpp.

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

void btDiscreteDynamicsWorld::serializeRigidBodies ( btSerializer serializer) [protected]
void btDiscreteDynamicsWorld::setConstraintSolver ( btConstraintSolver solver) [virtual]
void btDiscreteDynamicsWorld::setGravity ( const btVector3 &  gravity) [virtual]
virtual void btDiscreteDynamicsWorld::setNumTasks ( int  numTasks) [inline, virtual]

Definition at line 164 of file btDiscreteDynamicsWorld.h.

void btDiscreteDynamicsWorld::setSynchronizeAllMotionStates ( bool  synchronizeAll) [inline]

Definition at line 184 of file btDiscreteDynamicsWorld.h.

References m_synchronizeAllMotionStates.

void btDiscreteDynamicsWorld::solveConstraints ( btContactSolverInfo solverInfo) [protected, virtual]
void btDiscreteDynamicsWorld::startProfiling ( btScalar  timeStep) [protected]
int btDiscreteDynamicsWorld::stepSimulation ( btScalar  timeStep,
int  maxSubSteps = 1,
btScalar  fixedTimeStep = btScalar(1.)/btScalar(60.) 
) [virtual]
void btDiscreteDynamicsWorld::synchronizeMotionStates ( ) [virtual]
void btDiscreteDynamicsWorld::synchronizeSingleMotionState ( btRigidBody body)

this can be useful to synchronize a single rigid body -> graphics object

Todo:
: add 'dirty' flag

Definition at line 182 of file btDiscreteDynamicsWorld.cpp.

References btAssert, btRigidBody::getMotionState(), btTransformUtil::integrateTransform(), m_localTime, and btMotionState::setWorldTransform().

Referenced by synchronizeMotionStates().

void btDiscreteDynamicsWorld::updateActions ( btScalar  timeStep) [protected]
void btDiscreteDynamicsWorld::updateActivationState ( btScalar  timeStep) [protected]
virtual void btDiscreteDynamicsWorld::updateVehicles ( btScalar  timeStep) [inline, virtual]

obsolete, use updateActions instead

Definition at line 170 of file btDiscreteDynamicsWorld.h.

References updateActions().


Member Data Documentation

Definition at line 57 of file btDiscreteDynamicsWorld.h.

Referenced by addAction(), debugDrawWorld(), removeAction(), and updateActions().

btVector3 btDiscreteDynamicsWorld::m_gravity [protected]

Definition at line 47 of file btDiscreteDynamicsWorld.h.

Referenced by addRigidBody(), getGravity(), and setGravity().

Definition at line 50 of file btDiscreteDynamicsWorld.h.

Referenced by stepSimulation(), and synchronizeSingleMotionState().

Definition at line 53 of file btDiscreteDynamicsWorld.h.

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

Definition at line 59 of file btDiscreteDynamicsWorld.h.


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