summaryrefslogtreecommitdiffstats
path: root/src/animation/AnimBlendNode.h
diff options
context:
space:
mode:
authorFire_Head <Fire-Head@users.noreply.github.com>2019-06-12 00:57:49 +0200
committerGitHub <noreply@github.com>2019-06-12 00:57:49 +0200
commit0f402c97ea94c3980aa7aa0305a35db1a3f59c2b (patch)
tree1d9bb0ba737fcd4ba0189c72ecd651eddbe04ac4 /src/animation/AnimBlendNode.h
parenttmp (diff)
parentadded animation system (with skin support for now) (diff)
downloadre3-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.h29
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");