mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-18 02:38:59 +00:00
58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "AnimBlendList.h"
|
||
|
|
||
|
|
||
|
// TODO: put somewhere else
|
||
|
struct AnimBlendFrameData
|
||
|
{
|
||
|
enum {
|
||
|
IGNORE_ROTATION = 2,
|
||
|
IGNORE_TRANSLATION = 4,
|
||
|
VELOCITY_EXTRACTION = 8,
|
||
|
VELOCITY_EXTRACTION_3D = 0x10,
|
||
|
};
|
||
|
|
||
|
uint8 flag;
|
||
|
RwV3d resetPos;
|
||
|
#ifdef PED_SKIN
|
||
|
union {
|
||
|
RwFrame *frame;
|
||
|
RpHAnimStdKeyFrame *hanimframe;
|
||
|
};
|
||
|
int32 nodeID;
|
||
|
#else
|
||
|
RwFrame *frame;
|
||
|
#endif
|
||
|
};
|
||
|
#ifndef PED_SKIN
|
||
|
static_assert(sizeof(AnimBlendFrameData) == 0x14, "AnimBlendFrameData: error");
|
||
|
#endif
|
||
|
|
||
|
|
||
|
class CAnimBlendClumpData
|
||
|
{
|
||
|
public:
|
||
|
CAnimBlendLink link;
|
||
|
int32 numFrames;
|
||
|
#ifdef PED_SKIN
|
||
|
int32 modelNumber; // doesn't seem to be used
|
||
|
#endif
|
||
|
CVector *pedPosition;
|
||
|
// order of frames is determined by RW hierarchy
|
||
|
AnimBlendFrameData *frames;
|
||
|
|
||
|
CAnimBlendClumpData(void);
|
||
|
~CAnimBlendClumpData(void);
|
||
|
void SetNumberOfFrames(int n);
|
||
|
#ifdef PED_SKIN
|
||
|
void SetNumberOfBones(int n) { SetNumberOfFrames(n); }
|
||
|
#endif
|
||
|
void ForAllFrames(void (*cb)(AnimBlendFrameData*, void*), void *arg);
|
||
|
|
||
|
|
||
|
CAnimBlendClumpData *ctor(void) { return ::new (this) CAnimBlendClumpData(); }
|
||
|
void dtor(void) { this->CAnimBlendClumpData::~CAnimBlendClumpData(); }
|
||
|
};
|
||
|
static_assert(sizeof(CAnimBlendClumpData) == 0x14, "CAnimBlendClumpData: error");
|