#ifndef __URDE_CPASANIMPARM_HPP__ #define __URDE_CPASANIMPARM_HPP__ #include "RetroTypes.hpp" namespace urde { class CPASAnimParm { public: enum class EParmType { None = -1, Int32 = 0, UInt32 = 1, Float = 2, Bool = 3, Enum = 4 }; union UParmValue { s32 m_int; u32 m_uint; float m_float; bool m_bool; }; private: UParmValue x0_value; EParmType x4_type; public: CPASAnimParm(UParmValue val, EParmType tp) : x4_type(tp), x0_value(val) {} s32 GetEnumValue() const {return x0_value.m_int;} bool GetBoolValue() const {return x0_value.m_bool;} float GetReal32Value() const {return x0_value.m_float;} u32 GetUint32Value() const {return x0_value.m_uint;} s32 GetInt32Value() const {return x0_value.m_int;} static CPASAnimParm FromEnum(s32 val) { UParmValue valin; valin.m_int = val; return CPASAnimParm(valin, EParmType::Enum); } static CPASAnimParm FromBool(bool val) { UParmValue valin; valin.m_bool = val; return CPASAnimParm(valin, EParmType::Bool); } static CPASAnimParm FromReal32(float val) { UParmValue valin; valin.m_float = val; return CPASAnimParm(valin, EParmType::Float); } static CPASAnimParm FromUint32(u32 val) { UParmValue valin; valin.m_uint = val; return CPASAnimParm(valin, EParmType::UInt32); } static CPASAnimParm FromInt32(s32 val) { UParmValue valin; valin.m_int = val; return CPASAnimParm(valin, EParmType::Int32); } static CPASAnimParm NoParameter() { UParmValue valin; valin.m_int = -1; return CPASAnimParm(valin, EParmType::None); } }; } #endif // __URDE_CPASANIMPARM_HPP__