diff options
author | Fire_Head <Fire-Head@users.noreply.github.com> | 2019-06-12 00:57:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-12 00:57:49 +0200 |
commit | 0f402c97ea94c3980aa7aa0305a35db1a3f59c2b (patch) | |
tree | 1d9bb0ba737fcd4ba0189c72ecd651eddbe04ac4 /src/animation/AnimBlendNode.h | |
parent | tmp (diff) | |
parent | added animation system (with skin support for now) (diff) | |
download | re3-0f402c97ea94c3980aa7aa0305a35db1a3f59c2b.tar re3-0f402c97ea94c3980aa7aa0305a35db1a3f59c2b.tar.gz re3-0f402c97ea94c3980aa7aa0305a35db1a3f59c2b.tar.bz2 re3-0f402c97ea94c3980aa7aa0305a35db1a3f59c2b.tar.lz re3-0f402c97ea94c3980aa7aa0305a35db1a3f59c2b.tar.xz re3-0f402c97ea94c3980aa7aa0305a35db1a3f59c2b.tar.zst re3-0f402c97ea94c3980aa7aa0305a35db1a3f59c2b.zip |
Diffstat (limited to '')
-rw-r--r-- | src/animation/AnimBlendNode.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/animation/AnimBlendNode.h b/src/animation/AnimBlendNode.h new file mode 100644 index 00000000..ea75fbfa --- /dev/null +++ b/src/animation/AnimBlendNode.h @@ -0,0 +1,29 @@ +#pragma once + +#include "AnimBlendSequence.h" + +class CAnimBlendAssociation; + +// The interpolated state between two key frames in a sequence +class CAnimBlendNode +{ +public: + // for slerp + float theta; // angle between quaternions + float invSin; // 1/sin(theta) + // indices into array in sequence + int32 frameA; // next key frame + int32 frameB; // previous key frame + float remainingTime; // time until frames have to advance + CAnimBlendSequence *sequence; + CAnimBlendAssociation *association; + + void Init(void); + bool Update(CVector &trans, CQuaternion &rot, float weight); + bool NextKeyFrame(void); + bool FindKeyFrame(float t); + void CalcDeltas(void); + void GetCurrentTranslation(CVector &trans, float weight); + void GetEndTranslation(CVector &trans, float weight); +}; +static_assert(sizeof(CAnimBlendNode) == 0x1C, "CAnimBlendNode: error"); |