16#ifndef BT_DISCRETE_DYNAMICS_WORLD_H
17#define BT_DISCRETE_DYNAMICS_WORLD_H
24class btTypedConstraint;
117 virtual void addConstraint(btTypedConstraint * constraint,
bool disableCollisionsBetweenLinkedBodies =
false);
144 virtual void addCollisionObject(btCollisionObject * collisionObject,
int collisionFilterGroup = btBroadphaseProxy::StaticFilter,
int collisionFilterMask = btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter);
167 virtual const btTypedConstraint*
getConstraint(
int index)
const;
void updateActions(btScalar timeStep)
BT_DECLARE_ALIGNED_ALLOCATOR()
virtual void clearForces()
the forces on each rigidbody is accumulating together with gravity. clear this after each timestep.
virtual btConstraintSolver * getConstraintSolver()
void integrateTransformsInternal(btRigidBody **bodies, int numBodies, btScalar timeStep)
btSimulationIslandManager * m_islandManager
virtual void saveKinematicState(btScalar timeStep)
virtual void solveConstraints(btContactSolverInfo &solverInfo)
void setApplySpeculativeContactRestitution(bool enable)
virtual void removeRigidBody(btRigidBody *body)
virtual void serialize(btSerializer *serializer)
Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (see B...
InplaceSolverIslandCallback * m_solverIslandCallback
virtual void removeConstraint(btTypedConstraint *constraint)
bool m_applySpeculativeContactRestitution
virtual void createPredictiveContacts(btScalar timeStep)
void synchronizeSingleMotionState(btRigidBody *body)
this can be useful to synchronize a single rigid body -> graphics object
void createPredictiveContactsInternal(btRigidBody **bodies, int numBodies, btScalar timeStep)
virtual void addRigidBody(btRigidBody *body)
virtual void removeCharacter(btActionInterface *character)
obsolete, use removeAction instead
bool m_ownsConstraintSolver
btAlignedObjectArray< btRigidBody * > & getNonStaticRigidBodies()
void serializeRigidBodies(btSerializer *serializer)
btAlignedObjectArray< btRigidBody * > m_nonStaticRigidBodies
virtual btVector3 getGravity() const
virtual void synchronizeMotionStates()
bool m_synchronizeAllMotionStates
virtual btTypedConstraint * getConstraint(int index)
virtual void setGravity(const btVector3 &gravity)
void serializeDynamicsWorldInfo(btSerializer *serializer)
virtual void addCollisionObject(btCollisionObject *collisionObject, int collisionFilterGroup=btBroadphaseProxy::StaticFilter, int collisionFilterMask=btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter)
btCollisionWorld * getCollisionWorld()
virtual void addAction(btActionInterface *)
bool getApplySpeculativeContactRestitution() const
virtual void addVehicle(btActionInterface *vehicle)
obsolete, use addAction instead
bool getSynchronizeAllMotionStates() const
virtual void updateActivationState(btScalar timeStep)
btDiscreteDynamicsWorld(btDispatcher *dispatcher, btBroadphaseInterface *pairCache, btConstraintSolver *constraintSolver, btCollisionConfiguration *collisionConfiguration)
this btDiscreteDynamicsWorld constructor gets created objects from the user, and will not delete thos...
virtual int getNumConstraints() const
virtual void addConstraint(btTypedConstraint *constraint, bool disableCollisionsBetweenLinkedBodies=false)
virtual btDynamicsWorldType getWorldType() const
virtual void removeAction(btActionInterface *)
virtual void calculateSimulationIslands()
virtual void debugDrawWorld()
virtual void predictUnconstraintMotion(btScalar timeStep)
btAlignedObjectArray< btTypedConstraint * > m_constraints
btAlignedObjectArray< btPersistentManifold * > m_predictiveManifolds
virtual void integrateTransforms(btScalar timeStep)
virtual void setNumTasks(int numTasks)
btSimulationIslandManager * getSimulationIslandManager()
virtual void removeCollisionObject(btCollisionObject *collisionObject)
removeCollisionObject will first check if it is a rigid body, if so call removeRigidBody otherwise ca...
bool getLatencyMotionStateInterpolation() const
virtual void addCharacter(btActionInterface *character)
obsolete, use addAction instead
btAlignedObjectArray< btActionInterface * > m_actions
virtual void setConstraintSolver(btConstraintSolver *solver)
bool m_latencyMotionStateInterpolation
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 removeVehicle(btActionInterface *vehicle)
obsolete, use removeAction instead
void setLatencyMotionStateInterpolation(bool latencyInterpolation)
virtual void debugDrawConstraint(btTypedConstraint *constraint)
btSpinMutex m_predictiveManifoldsMutex
btConstraintSolver * m_constraintSolver
virtual ~btDiscreteDynamicsWorld()
virtual void applyGravity()
apply gravity, call this once per timestep
virtual void updateVehicles(btScalar timeStep)
obsolete, use updateActions instead
virtual void internalSingleStepSimulation(btScalar timeStep)
void setSynchronizeAllMotionStates(bool synchronizeAll)
void releasePredictiveContacts()
void startProfiling(btScalar timeStep)
@ BT_DISCRETE_DYNAMICS_WORLD
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
#define ATTRIBUTE_ALIGNED16(a)
btSequentialImpulseConstraintSolverMt int numBodies
Basic interface to allow actions such as vehicles and characters to be updated inside a btDynamicsWor...
CollisionWorld is interface and container for the collision detection.
The btDynamicsWorld is the interface class for several dynamics implementation, basic,...
SimulationIslandManager creates and handles simulation islands, using btUnionFind.
btTypedConstraint ** m_sortedConstraints