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