From 38e19caf18a1fa43feae49080ef0e46e83f2c09b Mon Sep 17 00:00:00 2001 From: Henrique Gemignani Passos Lima Date: Fri, 7 Oct 2022 02:10:07 +0300 Subject: [PATCH] Move CPASDatabase to Kyoto/Animation --- include/Kyoto/Animation/CPASAnimParmData.hpp | 39 +++++++++++++++++++ .../Animation}/CPASAnimState.hpp | 7 ++++ .../Animation}/CPASDatabase.hpp | 2 +- include/MetroidPrime/CCharacterInfo.hpp | 2 +- .../Weapons/GunController/CGunMotion.cpp | 19 +++++---- 5 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 include/Kyoto/Animation/CPASAnimParmData.hpp rename include/{MetroidPrime => Kyoto/Animation}/CPASAnimState.hpp (87%) rename include/{MetroidPrime => Kyoto/Animation}/CPASDatabase.hpp (90%) diff --git a/include/Kyoto/Animation/CPASAnimParmData.hpp b/include/Kyoto/Animation/CPASAnimParmData.hpp new file mode 100644 index 00000000..5f26e571 --- /dev/null +++ b/include/Kyoto/Animation/CPASAnimParmData.hpp @@ -0,0 +1,39 @@ +#ifndef _CPASANIMPARMDATA_HPP +#define _CPASANIMPARMDATA_HPP + +#include "Kyoto/Animation/CPASAnimState.hpp" + +class CPASAnimParmData { + pas::EAnimationState x0_stateId; + rstl::reserved_vector< CPASAnimParm, 8 > x4_parms; + +public: + CPASAnimParmData(pas::EAnimationState stateId, + const CPASAnimParm& parm1 = CPASAnimParm::NoParameter(), + const CPASAnimParm& parm2 = CPASAnimParm::NoParameter(), + const CPASAnimParm& parm3 = CPASAnimParm::NoParameter(), + const CPASAnimParm& parm4 = CPASAnimParm::NoParameter(), + const CPASAnimParm& parm5 = CPASAnimParm::NoParameter(), + const CPASAnimParm& parm6 = CPASAnimParm::NoParameter(), + const CPASAnimParm& parm7 = CPASAnimParm::NoParameter(), + const CPASAnimParm& parm8 = CPASAnimParm::NoParameter()) + : x0_stateId(stateId) { + x4_parms.push_back(parm1); + x4_parms.push_back(parm2); + x4_parms.push_back(parm3); + x4_parms.push_back(parm4); + x4_parms.push_back(parm5); + x4_parms.push_back(parm6); + x4_parms.push_back(parm7); + x4_parms.push_back(parm8); + } + + pas::EAnimationState GetStateId() const { return x0_stateId; } + const rstl::reserved_vector< CPASAnimParm, 8 >& GetAnimParmData() const { return x4_parms; } + + static CPASAnimParmData NoParameters(pas::EAnimationState stateId) { + return CPASAnimParmData(stateId); + } +}; + +#endif // _CPASANIMPARMDATA_HPP diff --git a/include/MetroidPrime/CPASAnimState.hpp b/include/Kyoto/Animation/CPASAnimState.hpp similarity index 87% rename from include/MetroidPrime/CPASAnimState.hpp rename to include/Kyoto/Animation/CPASAnimState.hpp index 4ccb43ab..d0df199b 100644 --- a/include/MetroidPrime/CPASAnimState.hpp +++ b/include/Kyoto/Animation/CPASAnimState.hpp @@ -54,6 +54,13 @@ public: bool m_bool; }; + static CPASAnimParm FromEnum(s32 val); + static CPASAnimParm FromBool(bool val); + static CPASAnimParm FromReal32(float val); + static CPASAnimParm FromUint32(u32 val); + static CPASAnimParm FromInt32(s32 val); + static CPASAnimParm NoParameter(); + private: UParmValue x0_value; EParmType x4_type; diff --git a/include/MetroidPrime/CPASDatabase.hpp b/include/Kyoto/Animation/CPASDatabase.hpp similarity index 90% rename from include/MetroidPrime/CPASDatabase.hpp rename to include/Kyoto/Animation/CPASDatabase.hpp index a0391a32..89750595 100644 --- a/include/MetroidPrime/CPASDatabase.hpp +++ b/include/Kyoto/Animation/CPASDatabase.hpp @@ -3,7 +3,7 @@ #include "types.h" -#include "MetroidPrime/CPASAnimState.hpp" +#include "Kyoto/Animation/CPASAnimState.hpp" #include "rstl/vector.hpp" #include "rstl/pair.hpp" diff --git a/include/MetroidPrime/CCharacterInfo.hpp b/include/MetroidPrime/CCharacterInfo.hpp index 97de8de6..0afc7143 100644 --- a/include/MetroidPrime/CCharacterInfo.hpp +++ b/include/MetroidPrime/CCharacterInfo.hpp @@ -4,10 +4,10 @@ #include "types.h" #include "MetroidPrime/CEffectComponent.hpp" -#include "MetroidPrime/CPASDatabase.hpp" #include "Kyoto/IObjectStore.hpp" #include "Kyoto/Math/CAABox.hpp" +#include "Kyoto/Animation/CPASDatabase.hpp" #include "rstl/pair.hpp" #include "rstl/string.hpp" diff --git a/src/MetroidPrime/Weapons/GunController/CGunMotion.cpp b/src/MetroidPrime/Weapons/GunController/CGunMotion.cpp index d8bdf9ae..8da00e5a 100644 --- a/src/MetroidPrime/Weapons/GunController/CGunMotion.cpp +++ b/src/MetroidPrime/Weapons/GunController/CGunMotion.cpp @@ -2,9 +2,12 @@ #include "MetroidPrime/CAnimRes.hpp" #include "MetroidPrime/CAnimData.hpp" -#include "MetroidPrime/CPASDatabase.hpp" #include "MetroidPrime/CStateManager.hpp" +#include "Kyoto/Animation/CPASDatabase.hpp" +#include "Kyoto/Animation/CPASAnimParmData.hpp" + + CGunMotion::CGunMotion(CAssetId ancsId, const CVector3f& scale) : x0_modelData(CAnimRes(ancsId, 0, scale, 0, false)) , x4c_gunController(x0_modelData) @@ -21,22 +24,22 @@ bool CGunMotion::PlayPasAnim(SamusGun::EAnimationState state, CStateManager& mgr bool loop = true; switch (state) { case SamusGun::kAS_Wander: { - CPASAnimParmData* parms; //((pas::EAnimationState(state))); - rstl::pair anim = pas.FindBestAnimation(*parms, *mgr.GetActiveRandom(), -1); + CPASAnimParmData parms((pas::EAnimationState(state))); + rstl::pair anim = pas.FindBestAnimation(parms, *mgr.GetActiveRandom(), -1); animId = anim.second; break; } case SamusGun::kAS_Idle: { - CPASAnimParmData* parms; //(pas::EAnimationState(state), CPASAnimParm::FromEnum(0)); - rstl::pair anim = pas.FindBestAnimation(*parms, *mgr.GetActiveRandom(), -1); + CPASAnimParmData parms(pas::EAnimationState(state), CPASAnimParm::FromEnum(0)); + rstl::pair anim = pas.FindBestAnimation(parms, *mgr.GetActiveRandom(), -1); animId = anim.second; break; } case SamusGun::kAS_Struck: { - CPASAnimParmData* parms; /*(pas::EAnimationState(state), CPASAnimParm::FromInt32(0), + CPASAnimParmData parms(pas::EAnimationState(state), CPASAnimParm::FromInt32(0), CPASAnimParm::FromReal32(angle), CPASAnimParm::FromBool(bigStrike), - CPASAnimParm::FromBool(false));*/ - rstl::pair anim = pas.FindBestAnimation(*parms, *mgr.GetActiveRandom(), -1); + CPASAnimParm::FromBool(false)); + rstl::pair anim = pas.FindBestAnimation(parms, *mgr.GetActiveRandom(), -1); animId = anim.second; loop = false; break;