57 lines
1.5 KiB
C++
57 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include "IBone.h"
|
|
#include "IEngine.h"
|
|
|
|
class Bone
|
|
: public IBone
|
|
{
|
|
public:
|
|
Bone(IEngine& argEngine);
|
|
virtual ~Bone();
|
|
|
|
virtual void Initialize(const string16& argName, int argIndex, const D3DXVECTOR3& argPoseTranslation, const D3DXVECTOR3& argPoseScale, const D3DXQUATERNION& argPoseRotation);
|
|
|
|
virtual const D3DXMATRIX& GetTransformationAtTime(float argTime, const D3DXMATRIX& argRootTransformationMatrix);
|
|
virtual const D3DXMATRIX& get_PoseTransformation() const;
|
|
|
|
virtual void set_Parent(IBone* argParent_);
|
|
virtual IBone* get_Parent() const;
|
|
virtual std::vector<IBone*>& get_ChildBones();
|
|
|
|
virtual string16 get_Name() const;
|
|
virtual int get_Index() const;
|
|
|
|
virtual void set_TransformationAnimation(ITransformationAnimation* argTransformationAnimation);
|
|
virtual ITransformationAnimation* get_TransformationAnimation() const;
|
|
|
|
virtual std::map<int, IBone*>& get_BoneIndexList();
|
|
|
|
virtual D3DXMATRIX* get_MatrixArray();
|
|
virtual unsigned int get_MatrixArraySize();
|
|
|
|
private:
|
|
void FillBoneIndexList(IBone* argCurrentBone, std::map<int, IBone*>& argList);
|
|
|
|
private:
|
|
IEngine& m_Engine;
|
|
|
|
string16 m_Name;
|
|
int m_BoneIndex;
|
|
|
|
D3DXMATRIX m_PoseTransformation;
|
|
D3DXMATRIX m_InvPoseTransformation;
|
|
|
|
float m_LastAnimationTime;
|
|
D3DXMATRIX m_Transformation;
|
|
|
|
std::vector<IBone*> m_Children;
|
|
IBone* m_Parent;
|
|
|
|
ITransformationAnimation* m_TransformationAnimation;
|
|
|
|
std::map<int, IBone*> m_BoneIndexList;
|
|
|
|
D3DXMATRIX* m_MatrixArray;
|
|
unsigned int m_MatrixArraySize;
|
|
}; |