btDefaultMotionState.h

Go to the documentation of this file.
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