Files
2026-04-18 22:31:51 +02:00

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;
};