summaryrefslogtreecommitdiffstats
path: root/src/animation/AnimBlendClumpData.cpp
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/AnimBlendClumpData.cpp
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 'src/animation/AnimBlendClumpData.cpp')
-rw-r--r--src/animation/AnimBlendClumpData.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/animation/AnimBlendClumpData.cpp b/src/animation/AnimBlendClumpData.cpp
new file mode 100644
index 00000000..57985533
--- /dev/null
+++ b/src/animation/AnimBlendClumpData.cpp
@@ -0,0 +1,46 @@
+#include "common.h"
+#include "patcher.h"
+#include "AnimBlendClumpData.h"
+
+// TODO: implement those
+#define RwFreeAlign RwFree
+#define RwMallocAlign(sz, algn) RwMalloc(sz)
+
+CAnimBlendClumpData::CAnimBlendClumpData(void)
+{
+ numFrames = 0;
+ pedPosition = nil;
+ frames = nil;
+ link.Init();
+}
+
+CAnimBlendClumpData::~CAnimBlendClumpData(void)
+{
+ link.Remove();
+ if(frames)
+ RwFreeAlign(frames);
+}
+
+void
+CAnimBlendClumpData::SetNumberOfFrames(int n)
+{
+ if(frames)
+ RwFreeAlign(frames);
+ numFrames = n;
+ frames = (AnimBlendFrameData*)RwMallocAlign(numFrames * sizeof(AnimBlendFrameData), 64);
+}
+
+void
+CAnimBlendClumpData::ForAllFrames(void (*cb)(AnimBlendFrameData*, void*), void *arg)
+{
+ int i;
+ for(i = 0; i < numFrames; i++)
+ cb(&frames[i], arg);
+}
+
+STARTPATCHES
+ InjectHook(0x401880, &CAnimBlendClumpData::ctor, PATCH_JUMP);
+ InjectHook(0x4018B0, &CAnimBlendClumpData::dtor, PATCH_JUMP);
+ InjectHook(0x4018F0, &CAnimBlendClumpData::SetNumberOfFrames, PATCH_JUMP);
+ InjectHook(0x401930, &CAnimBlendClumpData::ForAllFrames, PATCH_JUMP);
+ENDPATCHES