#pragma once struct KeyFrameTarget { enum Enumeration { Position, Rotation, Scale }; }; struct KeyFrame { KeyFrame() : m_Target(KeyFrameTarget::Position) , m_Time(0.0f) {} KeyFrame(KeyFrameTarget::Enumeration argTarget, const D3DXVECTOR3& argValue, float argTime) : m_Target(argTarget) , m_Value(argValue) , m_Time(argTime) {} KeyFrameTarget::Enumeration m_Target; D3DXVECTOR3 m_Value; float m_Time; }; struct __declspec(novtable) ITransformationAnimation { virtual ~ITransformationAnimation() {}; //virtual std::wstring get_Name() const = 0; virtual void AddKeyFrame(const KeyFrame& argKeyFrame) = 0; virtual float get_Duration() const = 0; virtual D3DXMATRIX GetTransformationAtTime(float argT) = 0; // [0.0] - [1.0] };