summaryrefslogtreecommitdiff
path: root/src/animation/AnimBlendNode.h
diff options
context:
space:
mode:
authorclaude-bot <[email protected]>2026-07-13 12:27:07 +0000
committerclaude-bot <[email protected]>2026-07-13 12:27:07 +0000
commit9f61c9e6ac6b1ac5692cf6352d2ebbd47a31a686 (patch)
treea84756b82513739a2672db3a1f0ec579db6d18ff /src/animation/AnimBlendNode.h
downloadre3-9f61c9e6ac6b1ac5692cf6352d2ebbd47a31a686.tar.gz
re3-9f61c9e6ac6b1ac5692cf6352d2ebbd47a31a686.zip
Import Cai1Hsu/re3 @ miami (reVC / GTA:VC decompilation)HEADmiami
Snapshot import (no upstream history) into git.ancap.in.ua/claude, per @lzcnt. Source: https://github.com/Cai1Hsu/re3 branch miami.
Diffstat (limited to 'src/animation/AnimBlendNode.h')
-rw-r--r--src/animation/AnimBlendNode.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/animation/AnimBlendNode.h b/src/animation/AnimBlendNode.h
new file mode 100644
index 0000000..99a657a
--- /dev/null
+++ b/src/animation/AnimBlendNode.h
@@ -0,0 +1,37 @@
+#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 UpdateCompressed(CVector &trans, CQuaternion &rot, float weight);
+ bool NextKeyFrame(void);
+ bool NextKeyFrameCompressed(void);
+ bool FindKeyFrame(float t);
+ bool SetupKeyFrameCompressed(void);
+ void CalcDeltas(void);
+ void CalcDeltasCompressed(void);
+ void GetCurrentTranslation(CVector &trans, float weight);
+ void GetCurrentTranslationCompressed(CVector &trans, float weight);
+ void GetEndTranslation(CVector &trans, float weight);
+ void GetEndTranslationCompressed(CVector &trans, float weight);
+};
+
+
+VALIDATE_SIZE(CAnimBlendNode, 0x1C);