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/AnimBlendClumpData.cpp | |
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 'src/animation/AnimBlendClumpData.cpp')
-rw-r--r-- | src/animation/AnimBlendClumpData.cpp | 46 |
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 |