60 lines
1.7 KiB
C++
60 lines
1.7 KiB
C++
#pragma once
|
|
|
|
struct ITransformationAnimation;
|
|
struct __declspec(novtable) IBone
|
|
{
|
|
virtual ~IBone() {};
|
|
|
|
virtual void Initialize(const string16& argName, int argIndex, const D3DXVECTOR3& argPoseTranslation, const D3DXVECTOR3& argPoseScale, const D3DXQUATERNION& argPoseRotation) = 0;
|
|
|
|
virtual const D3DXMATRIX& GetTransformationAtTime(float argTime, const D3DXMATRIX& argRootTransformationMatrix) = 0;
|
|
virtual const D3DXMATRIX& get_PoseTransformation() const = 0;
|
|
|
|
virtual void set_Parent(IBone* argParent_) = 0;
|
|
virtual IBone* get_Parent() const = 0;
|
|
virtual std::vector<IBone*>& get_ChildBones() = 0;
|
|
|
|
virtual string16 get_Name() const = 0;
|
|
virtual int get_Index() const = 0;
|
|
|
|
virtual void set_TransformationAnimation(ITransformationAnimation* argTransformationAnimation) = 0;
|
|
virtual ITransformationAnimation* get_TransformationAnimation() const = 0;
|
|
|
|
virtual std::map<int, IBone*>& get_BoneIndexList() = 0;
|
|
|
|
virtual D3DXMATRIX* get_MatrixArray() = 0;
|
|
virtual unsigned int get_MatrixArraySize() = 0;
|
|
};
|
|
|
|
|
|
struct Sequence
|
|
{
|
|
Sequence()
|
|
: m_Start(0.0f)
|
|
, m_End(0.0f)
|
|
, m_Loop(false)
|
|
{
|
|
}
|
|
float m_Start;
|
|
float m_End;
|
|
bool m_Loop;
|
|
};
|
|
|
|
|
|
struct __declspec(novtable) IBoneController
|
|
{
|
|
virtual ~IBoneController() {}
|
|
|
|
virtual void Initialize(IBone& argRootBone) = 0;
|
|
virtual void Initialize(const IBoneController& argOther) = 0;
|
|
virtual void Apply() = 0;
|
|
|
|
virtual void RegisterSequence(const string16& argName, float argStart, float argEnd, bool argLoop) = 0;
|
|
virtual void PlaySequence(const string16& argName) = 0;
|
|
|
|
virtual const string16& get_CurrentSequence() const = 0;
|
|
virtual const std::map<string16, Sequence >& get_Sequences() const = 0;
|
|
|
|
virtual IBone& get_RootBone() const = 0;
|
|
};
|