prime/include/MetroidPrime/CPASAnimState.hpp

95 lines
1.7 KiB
C++

#ifndef _CPASANIMSTATE_HPP
#define _CPASANIMSTATE_HPP
#include "types.h"
#include "rstl/vector.hpp"
#include "rstl/reserved_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;
f32 m_float;
bool m_bool;
};
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 {
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