2019-06-11 06:59:28 +00:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
class CAnimBlendNode;
|
|
|
|
class CAnimBlendAssociation;
|
|
|
|
class CAnimBlendClumpData;
|
|
|
|
struct AnimBlendFrameData;
|
|
|
|
|
|
|
|
struct AnimBlendFrameUpdateData
|
|
|
|
{
|
2020-04-23 20:25:18 +00:00
|
|
|
int foobar; // TODO: figure out what this actually means
|
2019-06-11 06:59:28 +00:00
|
|
|
CAnimBlendNode *nodes[16];
|
|
|
|
};
|
|
|
|
|
2020-04-17 05:54:14 +00:00
|
|
|
extern RwInt32 ClumpOffset;
|
2019-06-11 06:59:28 +00:00
|
|
|
#define RPANIMBLENDCLUMPDATA(o) (RWPLUGINOFFSET(CAnimBlendClumpData*, o, ClumpOffset))
|
|
|
|
|
|
|
|
bool RpAnimBlendPluginAttach(void);
|
|
|
|
CAnimBlendAssociation *RpAnimBlendGetNextAssociation(CAnimBlendAssociation *assoc);
|
|
|
|
CAnimBlendAssociation *RpAnimBlendGetNextAssociation(CAnimBlendAssociation *assoc, uint32 mask);
|
|
|
|
void RpAnimBlendAllocateData(RpClump *clump);
|
|
|
|
|
|
|
|
void RpAnimBlendClumpSetBlendDeltas(RpClump *clump, uint32 mask, float delta);
|
|
|
|
void RpAnimBlendClumpRemoveAllAssociations(RpClump *clump);
|
|
|
|
void RpAnimBlendClumpRemoveAssociations(RpClump *clump, uint32 mask);
|
|
|
|
void RpAnimBlendClumpInit(RpClump *clump);
|
|
|
|
bool RpAnimBlendClumpIsInitialized(RpClump *clump);
|
2019-06-30 21:50:40 +00:00
|
|
|
void RpAnimBlendClumpFillFrameArray(RpClump* clump, AnimBlendFrameData** frames);
|
2019-06-11 06:59:28 +00:00
|
|
|
AnimBlendFrameData *RpAnimBlendClumpFindFrame(RpClump *clump, const char *name);
|
2020-05-08 13:59:57 +00:00
|
|
|
AnimBlendFrameData *RpAnimBlendClumpFindBone(RpClump *clump, uint32 boneTag);
|
2019-06-11 06:59:28 +00:00
|
|
|
void FillFrameArrayCallBack(AnimBlendFrameData *frame, void *arg);
|
|
|
|
CAnimBlendAssociation *RpAnimBlendClumpGetAssociation(RpClump *clump, uint32 id);
|
|
|
|
CAnimBlendAssociation *RpAnimBlendClumpGetMainAssociation(RpClump *clump, CAnimBlendAssociation **assocRet, float *blendRet);
|
|
|
|
CAnimBlendAssociation *RpAnimBlendClumpGetMainPartialAssociation(RpClump *clump);
|
|
|
|
CAnimBlendAssociation *RpAnimBlendClumpGetMainAssociation_N(RpClump *clump, int n);
|
|
|
|
CAnimBlendAssociation *RpAnimBlendClumpGetMainPartialAssociation_N(RpClump *clump, int n);
|
|
|
|
CAnimBlendAssociation *RpAnimBlendClumpGetFirstAssociation(RpClump *clump, uint32 mask);
|
|
|
|
CAnimBlendAssociation *RpAnimBlendClumpGetFirstAssociation(RpClump *clump);
|
2020-05-10 21:47:53 +00:00
|
|
|
void RpAnimBlendNodeUpdateKeyframes(AnimBlendFrameData *frames, AnimBlendFrameUpdateData *updateData, int32 numNodes);
|
|
|
|
void RpAnimBlendClumpUpdateAnimations(RpClump* clump, float timeDelta, bool doRender = true);
|
2019-06-11 06:59:28 +00:00
|
|
|
|
|
|
|
|
2020-04-16 08:50:45 +00:00
|
|
|
extern CAnimBlendClumpData *gpAnimBlendClump;
|
2020-04-23 20:25:18 +00:00
|
|
|
void FrameUpdateCallBackNonSkinned(AnimBlendFrameData *frame, void *arg);
|
|
|
|
void FrameUpdateCallBackSkinned(AnimBlendFrameData *frame, void *arg);
|
2020-05-10 21:47:53 +00:00
|
|
|
void FrameUpdateCallBackOffscreen(AnimBlendFrameData *frame, void *arg);
|
2020-12-18 22:46:51 +00:00
|
|
|
|
|
|
|
void FrameUpdateCallBackNonSkinnedCompressed(AnimBlendFrameData *frame, void *arg);
|
|
|
|
void FrameUpdateCallBackSkinnedCompressed(AnimBlendFrameData *frame, void *arg);
|