diff --git a/configure.py b/configure.py index 1ef578da..ee80cb1c 100755 --- a/configure.py +++ b/configure.py @@ -492,7 +492,7 @@ LIBS = [ "Kyoto/Animation/CMetaTransPhaseTrans", "Kyoto/Animation/CMetaTransSnap", "Kyoto/Animation/CMetaTransTrans", - "Kyoto/Animation/CPASAnimInfo", + ["Kyoto/Animation/CPASAnimInfo", True], ["Kyoto/Animation/CPASAnimParm", True], "Kyoto/Animation/CPASAnimState", "Kyoto/Animation/CPASDatabase", diff --git a/include/Kyoto/Animation/CPASAnimInfo.hpp b/include/Kyoto/Animation/CPASAnimInfo.hpp new file mode 100644 index 00000000..56f4d484 --- /dev/null +++ b/include/Kyoto/Animation/CPASAnimInfo.hpp @@ -0,0 +1,21 @@ +#ifndef _CPASANIMINFO +#define _CPASANIMINFO + +#include "Kyoto/Animation/CPASAnimParm.hpp" + +#include "rstl/reserved_vector.hpp" + +class CPASAnimInfo { +public: + CPASAnimInfo(int id); + CPASAnimInfo(int id, const rstl::reserved_vector& parms); + + int GetAnimId() const { return x0_id; } + CPASAnimParm GetAnimParmData(uint idx, CPASAnimParm::EParmType type) const; + const CPASAnimParm::UParmValue& GetAnimParmValue(uint idx) const; +private: + uint x0_id; + rstl::reserved_vector< CPASAnimParm::UParmValue, 8 > x4_parms; +}; + +#endif // _CPASANIMINFO diff --git a/include/Kyoto/Animation/CPASAnimState.hpp b/include/Kyoto/Animation/CPASAnimState.hpp index beb30458..4c2fff0a 100644 --- a/include/Kyoto/Animation/CPASAnimState.hpp +++ b/include/Kyoto/Animation/CPASAnimState.hpp @@ -3,6 +3,7 @@ #include "types.h" +#include "Kyoto/Animation/CPASAnimInfo.hpp" #include "Kyoto/Animation/CPASAnimParm.hpp" #include "Kyoto/Animation/CPASParmInfo.hpp" #include "Kyoto/Animation/CharacterCommon.hpp" @@ -10,12 +11,6 @@ #include "rstl/reserved_vector.hpp" #include "rstl/vector.hpp" -class CPASAnimInfo { -private: - uint x0_id; - rstl::reserved_vector< CPASAnimParm::UParmValue, 8 > x4_parms; -}; - class CPASAnimState { public: CPASAnimParm GetAnimParmData(int, unsigned int) const; diff --git a/src/Kyoto/Animation/CPASAnimInfo.cpp b/src/Kyoto/Animation/CPASAnimInfo.cpp new file mode 100644 index 00000000..edbca14d --- /dev/null +++ b/src/Kyoto/Animation/CPASAnimInfo.cpp @@ -0,0 +1,30 @@ +#include "Kyoto/Animation/CPASAnimInfo.hpp" + +CPASAnimInfo::CPASAnimInfo(int id) : x0_id(id) {} + +CPASAnimInfo::CPASAnimInfo(int id, + const rstl::reserved_vector< CPASAnimParm::UParmValue, 8 >& parms) +: x0_id(id), x4_parms(parms) {} + +CPASAnimParm CPASAnimInfo::GetAnimParmData(uint idx, CPASAnimParm::EParmType type) const { + const CPASAnimParm::UParmValue& parm = x4_parms[idx]; + + switch (type) { + case CPASAnimParm::kPT_Int32: + return CPASAnimParm::FromInt32(parm.m_int); + case CPASAnimParm::kPT_UInt32: + return CPASAnimParm::FromUint32(parm.m_uint); + case CPASAnimParm::kPT_Float: + return CPASAnimParm::FromReal32(parm.m_float); + case CPASAnimParm::kPT_Bool: + return CPASAnimParm::FromBool(parm.m_bool); + case CPASAnimParm::kPT_Enum: + return CPASAnimParm::FromEnum(parm.m_int); + default: + return CPASAnimParm::NoParameter(); + } +} + +const CPASAnimParm::UParmValue& CPASAnimInfo::GetAnimParmValue(uint idx) const { + return x4_parms[idx]; +}