2019-06-11 06:59:28 +00:00
|
|
|
#include "common.h"
|
|
|
|
#include "patcher.h"
|
|
|
|
#include "AnimBlendClumpData.h"
|
2019-06-17 13:32:38 +00:00
|
|
|
#include "RwHelper.h"
|
2019-06-11 06:59:28 +00:00
|
|
|
|
|
|
|
|
|
|
|
CAnimBlendClumpData::CAnimBlendClumpData(void)
|
|
|
|
{
|
|
|
|
numFrames = 0;
|
2019-06-12 19:17:02 +00:00
|
|
|
velocity = nil;
|
2019-06-11 06:59:28 +00:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2020-03-28 08:37:04 +00:00
|
|
|
#include <new>
|
|
|
|
|
|
|
|
class CAnimBlendClumpData_ : public CAnimBlendClumpData
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CAnimBlendClumpData *ctor(void) { return ::new (this) CAnimBlendClumpData(); }
|
|
|
|
void dtor(void) { this->CAnimBlendClumpData::~CAnimBlendClumpData(); }
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2019-06-11 06:59:28 +00:00
|
|
|
STARTPATCHES
|
2020-03-28 08:37:04 +00:00
|
|
|
InjectHook(0x401880, &CAnimBlendClumpData_::ctor, PATCH_JUMP);
|
|
|
|
InjectHook(0x4018B0, &CAnimBlendClumpData_::dtor, PATCH_JUMP);
|
2019-06-11 06:59:28 +00:00
|
|
|
InjectHook(0x4018F0, &CAnimBlendClumpData::SetNumberOfFrames, PATCH_JUMP);
|
|
|
|
InjectHook(0x401930, &CAnimBlendClumpData::ForAllFrames, PATCH_JUMP);
|
|
|
|
ENDPATCHES
|