00001 #ifndef __GXSKELTON_H 00002 #define __GXSKELTON_H 00003 00004 00005 #include "GXStandardDefines.h" 00006 #include "GXAutoArray.h" 00007 #include "GXKeyFrameTemplate.h" 00008 #include "GXSquareTemplate.h" 00009 #include "GXAnimationKeyFrame.h" 00010 #include "GXBone.h" 00011 00012 class CGXSkeleton 00013 { 00014 public: 00015 CGXSkeleton(); 00016 virtual ~CGXSkeleton(); 00017 00018 virtual bool LoadFromStream(IStream* pStream); 00019 virtual bool LoadFromData(UINT uBoneCount, 00020 CGXBone* pBones);//each row is an animation, each column is a bone 00021 00022 00023 00024 virtual bool WriteToStream(IStream* pStream); 00025 00026 virtual UINT GetBoneCount(); 00027 virtual UINT GetAnimationCount(); 00028 00029 virtual void GetFrameAt(SGXAnimationKeyFrame* pOut, UINT uAnimation, UINT uBone, float fPos);//todo, add different interpolation methods to this call 00030 00031 virtual void Cleanup(); 00032 00033 virtual bool AddAnimation(CGXKeyframeTemplate<SGXAnimationKeyFrame>* pAnimations);//count = bone count 00034 00035 protected: 00036 CGXAutoArray< CGXBone > m_Bones; 00037 }; 00038 00039 00040 00041 00042 00043 #endif