summaryrefslogtreecommitdiff
path: root/src/animation/AnimBlendClumpData.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/animation/AnimBlendClumpData.h')
-rw-r--r--src/animation/AnimBlendClumpData.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/animation/AnimBlendClumpData.h b/src/animation/AnimBlendClumpData.h
new file mode 100644
index 0000000..bb711b2
--- /dev/null
+++ b/src/animation/AnimBlendClumpData.h
@@ -0,0 +1,45 @@
+#pragma once
+
+#include "AnimBlendList.h"
+
+
+struct AnimBlendFrameData
+{
+ enum {
+ IGNORE_ROTATION = 2,
+ IGNORE_TRANSLATION = 4,
+ VELOCITY_EXTRACTION = 8,
+ VELOCITY_EXTRACTION_3D = 0x10,
+ UPDATE_KEYFRAMES = 0x20,
+ COMPRESSED = 0x40
+ };
+
+ uint8 flag;
+ RwV3d resetPos;
+ union {
+ RwFrame *frame;
+ RpHAnimStdInterpFrame *hanimFrame;
+ };
+ int32 nodeID;
+};
+VALIDATE_SIZE(AnimBlendFrameData, 0x18);
+
+
+class CAnimBlendClumpData
+{
+public:
+ CAnimBlendLink link;
+ int32 numFrames;
+ union {
+ CVector2D *velocity2d;
+ CVector *velocity3d;
+ };
+ // order of frames is determined by RW hierarchy
+ AnimBlendFrameData *frames;
+
+ CAnimBlendClumpData(void);
+ ~CAnimBlendClumpData(void);
+ void SetNumberOfFrames(int n);
+ void SetNumberOfBones(int n) { SetNumberOfFrames(n); }
+ void ForAllFrames(void (*cb)(AnimBlendFrameData*, void*), void *arg);
+};