16#ifndef BT_DISCRETE_DYNAMICS_WORLD_H
17#define BT_DISCRETE_DYNAMICS_WORLD_H
144 virtual void addCollisionObject(
btCollisionObject * collisionObject,
int collisionFilterGroup = btBroadphaseProxy::StaticFilter,
int collisionFilterMask = btBroadphaseProxy::AllFilter ^ btBroadphaseProxy::StaticFilter);
void updateActions(btScalar timeStep)
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)
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 void synchronizeMotionStates()
bool m_synchronizeAllMotionStates
virtual btTypedConstraint * getConstraint(int index)
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 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
btVector3 getGravity() const
void setGravity(const btVector3 &gravity)
virtual bool serialize(void *o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const
Data buffer MUST be 16 byte aligned.
#define BT_DECLARE_ALIGNED_ALLOCATOR()
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
#define ATTRIBUTE_ALIGNED16(a)
btSequentialImpulseConstraintSolverMt int numBodies
btTypedConstraint(btTypedConstraintType type, btRigidBody &rbA)
btVector3
btVector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16-by...
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.
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
btTypedConstraint ** m_sortedConstraints