mirror of https://github.com/PrimeDecomp/prime.git
108 lines
2.1 KiB
C++
108 lines
2.1 KiB
C++
#ifndef _CPASANIMSTATE
|
|
#define _CPASANIMSTATE
|
|
|
|
#include "types.h"
|
|
|
|
#include "rstl/reserved_vector.hpp"
|
|
#include "rstl/vector.hpp"
|
|
|
|
namespace pas {
|
|
enum EAnimationState {
|
|
kAS_Invalid = -1,
|
|
kAS_Fall = 0,
|
|
kAS_Getup = 1,
|
|
kAS_LieOnGround = 2,
|
|
kAS_Step = 3,
|
|
kAS_Death = 4,
|
|
kAS_Locomotion = 5,
|
|
kAS_KnockBack = 6,
|
|
kAS_MeleeAttack = 7,
|
|
kAS_Turn = 8,
|
|
kAS_LoopAttack = 9,
|
|
kAS_LoopReaction = 10,
|
|
kAS_GroundHit = 11,
|
|
kAS_Generate = 12,
|
|
kAS_Jump = 13,
|
|
kAS_Hurled = 14,
|
|
kAS_Slide = 15,
|
|
kAS_Taunt = 16,
|
|
kAS_Scripted = 17,
|
|
kAS_ProjectileAttack = 18,
|
|
kAS_Cover = 19,
|
|
kAS_WallHang = 20,
|
|
kAS_AdditiveIdle = 21,
|
|
kAS_AdditiveAim = 22,
|
|
kAS_AdditiveFlinch = 23,
|
|
kAS_AdditiveReaction = 24,
|
|
};
|
|
} // namespace pas
|
|
|
|
class CPASAnimParm {
|
|
public:
|
|
enum EParmType {
|
|
kPT_None = -1,
|
|
kPT_Int32 = 0,
|
|
kPT_UInt32 = 1,
|
|
kPT_Float = 2,
|
|
kPT_Bool = 3,
|
|
kPT_Enum = 4,
|
|
};
|
|
union UParmValue {
|
|
int m_int;
|
|
uint m_uint;
|
|
float m_float;
|
|
bool m_bool;
|
|
};
|
|
CPASAnimParm(const CPASAnimParm& other) : x0_value(other.x0_value), x4_type(other.x4_type) {}
|
|
|
|
static CPASAnimParm FromEnum(int val);
|
|
static CPASAnimParm FromBool(bool val);
|
|
static CPASAnimParm FromReal32(float val);
|
|
static CPASAnimParm FromUint32(uint val);
|
|
static CPASAnimParm FromInt32(int val);
|
|
static CPASAnimParm NoParameter();
|
|
|
|
int GetInt32Value() const;
|
|
|
|
private:
|
|
UParmValue x0_value;
|
|
EParmType x4_type;
|
|
};
|
|
|
|
class CPASParmInfo {
|
|
public:
|
|
enum EWeightFunction {
|
|
kWF_ExactMatch,
|
|
kWF_PercentError,
|
|
kWF_AngularPercent,
|
|
kWF_NoWeight,
|
|
};
|
|
|
|
private:
|
|
CPASAnimParm::EParmType x0_type;
|
|
EWeightFunction x4_weightFunction;
|
|
float x8_weight;
|
|
CPASAnimParm::UParmValue xc_min;
|
|
CPASAnimParm::UParmValue x10_max;
|
|
};
|
|
|
|
class CPASAnimInfo {
|
|
private:
|
|
uint x0_id;
|
|
rstl::reserved_vector< CPASAnimParm::UParmValue, 8 > x4_parms;
|
|
};
|
|
|
|
class CPASAnimState {
|
|
public:
|
|
CPASAnimParm GetAnimParmData(int, unsigned int) const;
|
|
|
|
private:
|
|
pas::EAnimationState x0_id;
|
|
rstl::vector< CPASParmInfo > x4_parms;
|
|
rstl::vector< CPASAnimInfo > x14_anims;
|
|
rstl::vector< int > x24_selectionCache;
|
|
};
|
|
CHECK_SIZEOF(CPASAnimState, 0x34)
|
|
|
|
#endif // _CPASANIMSTATE
|