00001 #ifndef BT_DEFAULT_MOTION_STATE_H 00002 #define BT_DEFAULT_MOTION_STATE_H 00003 00004 #include "btMotionState.h" 00005 00007 struct btDefaultMotionState : public btMotionState 00008 { 00009 btTransform m_graphicsWorldTrans; 00010 btTransform m_centerOfMassOffset; 00011 btTransform m_startWorldTrans; 00012 void* m_userPointer; 00013 00014 btDefaultMotionState(const btTransform& startTrans = btTransform::getIdentity(),const btTransform& centerOfMassOffset = btTransform::getIdentity()) 00015 : m_graphicsWorldTrans(startTrans), 00016 m_centerOfMassOffset(centerOfMassOffset), 00017 m_startWorldTrans(startTrans), 00018 m_userPointer(0) 00019 00020 { 00021 } 00022 00024 virtual void getWorldTransform(btTransform& centerOfMassWorldTrans ) const 00025 { 00026 centerOfMassWorldTrans = m_centerOfMassOffset.inverse() * m_graphicsWorldTrans ; 00027 } 00028 00031 virtual void setWorldTransform(const btTransform& centerOfMassWorldTrans) 00032 { 00033 m_graphicsWorldTrans = centerOfMassWorldTrans * m_centerOfMassOffset ; 00034 } 00035 00036 00037 00038 }; 00039 00040 #endif //BT_DEFAULT_MOTION_STATE_H