Files
bluflame/aiwaz/Aiwaz/Resources/Bone/BoneController.h
2026-04-18 22:31:51 +02:00

52 lines
1.3 KiB
C++

#pragma once
#include "IBone.h"
#include "IEngine.h"
#include "ITimeLine.h"
#include "IUpdatable.h"
#include "../ShaderParameterCollection/ShaderParameterCollection.h"
class BoneController
: public IBoneController
, public ShaderParameterCollection
, public IUpdatable
{
public:
BoneController(IEngine& argEngine);
virtual ~BoneController();
virtual void Initialize(IBone& argRootBone);
virtual void Initialize(const IBoneController& argOther);
virtual void Apply();
virtual void RegisterSequence(const string16& argName, float argStart, float argEnd, bool argLoop);
virtual void PlaySequence(const string16& argName);
virtual const string16& get_CurrentSequence() const;
virtual const std::map<string16, Sequence >& get_Sequences() const { return m_Sequences; }
virtual IBone& get_RootBone() const { return *m_RootBone; }
// IUpdatable
virtual void Update(bool argForceUpdate) { this->Apply(); }
virtual bool get_WantsUpdate() const { return true; }
protected:
// ICommandUser
virtual string8 get_UserName() const { return "BoneController"; }
private:
float get_CurrentTime();
IBone* m_RootBone;
double m_StartTime;
string16 m_CurrentSequence;
Sequence m_CurrentSequenceInfo;
std::map<string16, Sequence > m_Sequences;
std::map<int, IBone*> m_Bones;
D3DXMATRIX* m_LastMatrixArray;
};