52 lines
1.3 KiB
C++
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;
|
|
};
|