1 #ifndef BT_DEFAULT_MOTION_STATE_H
2 #define BT_DEFAULT_MOTION_STATE_H
4 #include "btMotionState.h"
6 ///The btDefaultMotionState provides a common implementation to synchronize world transforms with offsets.
7 ATTRIBUTE_ALIGNED16(struct)
8 btDefaultMotionState : public btMotionState
10 btTransform m_graphicsWorldTrans;
11 btTransform m_centerOfMassOffset;
12 btTransform m_startWorldTrans;
15 BT_DECLARE_ALIGNED_ALLOCATOR();
17 btDefaultMotionState(const btTransform& startTrans = btTransform::getIdentity(), const btTransform& centerOfMassOffset = btTransform::getIdentity())
18 : m_graphicsWorldTrans(startTrans),
19 m_centerOfMassOffset(centerOfMassOffset),
20 m_startWorldTrans(startTrans),
26 ///synchronizes world transform from user to physics
27 virtual void getWorldTransform(btTransform & centerOfMassWorldTrans) const
29 centerOfMassWorldTrans = m_graphicsWorldTrans * m_centerOfMassOffset.inverse();
32 ///synchronizes world transform from physics to user
33 ///Bullet only calls the update of worldtransform for active objects
34 virtual void setWorldTransform(const btTransform& centerOfMassWorldTrans)
36 m_graphicsWorldTrans = centerOfMassWorldTrans * m_centerOfMassOffset;
40 #endif //BT_DEFAULT_MOTION_STATE_H