16#ifndef BT_MULTIBODY_DYNAMICS_WORLD_H
17#define BT_MULTIBODY_DYNAMICS_WORLD_H
22#define BT_USE_VIRTUAL_CLEARFORCES_AND_GRAVITY
26class btMultiBodyConstraintSolver;
62 virtual void addMultiBody(
btMultiBody* body,
int group = btBroadphaseProxy::DefaultFilter,
int mask = btBroadphaseProxy::AllFilter);
virtual void clearForces()
the forces on each rigidbody is accumulating together with gravity. clear this after each 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 void debugDrawWorld()
virtual void predictUnconstraintMotion(btScalar timeStep)
virtual void integrateTransforms(btScalar timeStep)
virtual void setConstraintSolver(btConstraintSolver *solver)
virtual void applyGravity()
apply gravity, call this once per timestep
void forwardKinematics(btAlignedObjectArray< btQuaternion > &world_to_local, btAlignedObjectArray< btVector3 > &local_origin)
virtual bool serialize(void *o_alignedDataBuffer, unsigned i_dataBufferSize, bool i_swapEndian) const
Data buffer MUST be 16 byte aligned.
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
SIMD_FORCE_INLINE int size() const
return the number of elements in the array
virtual btMultiBodyConstraint * getMultiBodyConstraint(int constraintIndex)
btAlignedObjectArray< btMultiBodyConstraint * > m_multiBodyConstraints
virtual void solveInternalConstraints(btContactSolverInfo &solverInfo)
virtual void updateActivationState(btScalar timeStep)
btAlignedObjectArray< btQuaternion > m_scratch_world_to_local
btMultiBody * getMultiBody(int mbIndex)
btAlignedObjectArray< btQuaternion > m_scratch_world_to_local1
btAlignedObjectArray< btMatrix3x3 > m_scratch_m
MultiBodyInplaceSolverIslandCallback * m_solverMultiBodyIslandCallback
btAlignedObjectArray< btVector3 > m_scratch_local_origin1
virtual void serializeMultiBodies(btSerializer *serializer)
virtual void addMultiBodyConstraint(btMultiBodyConstraint *constraint)
btAlignedObjectArray< btVector3 > m_scratch_v
const btMultiBody * getMultiBody(int mbIndex) const
virtual void calculateSimulationIslands()
virtual void removeMultiBodyConstraint(btMultiBodyConstraint *constraint)
void predictMultiBodyTransforms(btScalar timeStep)
btMultiBodyConstraintSolver * m_multiBodyConstraintSolver
btAlignedObjectArray< btMultiBody * > m_multiBodies
virtual void getAnalyticsData(btAlignedObjectArray< struct btSolverAnalyticsData > &m_islandAnalyticsData) const
virtual void solveConstraints(btContactSolverInfo &solverInfo)
void integrateMultiBodyTransforms(btScalar timeStep)
virtual void debugDrawMultiBodyConstraint(btMultiBodyConstraint *constraint)
virtual int getNumMultibodies() const
virtual void solveExternalForces(btContactSolverInfo &solverInfo)
btAlignedObjectArray< btVector3 > m_scratch_local_origin
virtual void clearMultiBodyForces()
virtual int getNumMultiBodyConstraints() const
btAlignedObjectArray< btScalar > m_scratch_r
virtual void removeMultiBody(btMultiBody *body)
btAlignedObjectArray< btMultiBodyConstraint * > m_sortedMultiBodyConstraints
virtual void addMultiBody(btMultiBody *body, int group=btBroadphaseProxy::DefaultFilter, int mask=btBroadphaseProxy::AllFilter)
btMultiBodyDynamicsWorld(btDispatcher *dispatcher, btBroadphaseInterface *pairCache, btMultiBodyConstraintSolver *constraintSolver, btCollisionConfiguration *collisionConfiguration)
virtual void clearMultiBodyConstraintForces()
virtual void setMultiBodyConstraintSolver(btMultiBodyConstraintSolver *solver)
virtual const btMultiBodyConstraint * getMultiBodyConstraint(int constraintIndex) const
ccl_device_inline float2 mask(const MaskType mask, const float2 a)