From f31654ef7ab30681d3876e1d3e3a4a1d8eeeaee3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Sun, 20 Sep 2020 11:52:02 +0200 Subject: [PATCH] ksys/res: Implement GParamList AnimalUnit --- CMakeLists.txt | 1 + data/uking_functions.csv | 4 +- .../resGParamListObjectAnimalUnit.h | 56 +++++++++++++++++++ .../Resource/resResourceGParamList.cpp | 2 + 4 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 src/KingSystem/Resource/GeneralParamList/resGParamListObjectAnimalUnit.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 02d9b56e..11a6a93a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,6 +65,7 @@ add_executable(uking src/KingSystem/Resource/GeneralParamList/resGParamListObject.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectAnimalFollowOffset.h + src/KingSystem/Resource/GeneralParamList/resGParamListObjectAnimalUnit.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectArmor.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectArmorEffect.h src/KingSystem/Resource/GeneralParamList/resGParamListObjectArmorHead.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 11e7569e..59befde7 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89098,7 +89098,7 @@ 0x000000710119839c,BgparamlistObjectTraveler::ctor,29996,_ZN4ksys3res24GParamListObjectTravelerC1Ev 0x000000710119f8c8,BgparamlistObjectPrey::ctor,508,_ZN4ksys3res20GParamListObjectPreyC2Ev 0x000000710119fac4,BgparamlistObjectEatTarget::ctor,684,_ZN4ksys3res25GParamListObjectEatTargetC2Ev -0x000000710119fd70,BgparamlistObjectAnimalUnit::ctor,1380, +0x000000710119fd70,BgparamlistObjectAnimalUnit::ctor,1380,_ZN4ksys3res26GParamListObjectAnimalUnitC2Ev 0x00000071011a02d4,BgparamlistObjectFish::ctor,500, 0x00000071011a04c8,BgparamlistObjectRope::ctor,820, 0x00000071011a07fc,BgparamlistObjectHorse::ctor,1068, @@ -89192,7 +89192,7 @@ 0x00000071011a7dac,sub_71011A7DAC,12,_ZNK4ksys3res30GParamListObjectExtendedEntity7getNameEv 0x00000071011a7db8,sub_71011A7DB8,12,_ZNK4ksys3res25GParamListObjectBindActor7getNameEv 0x00000071011a7dc4,sub_71011A7DC4,12,_ZNK4ksys3res25GParamListObjectEatTarget7getNameEv -0x00000071011a7dd0,sub_71011A7DD0,12, +0x00000071011a7dd0,sub_71011A7DD0,12,_ZNK4ksys3res26GParamListObjectAnimalUnit7getNameEv 0x00000071011a7ddc,sub_71011A7DDC,12, 0x00000071011a7de8,sub_71011A7DE8,12, 0x00000071011a7df4,sub_71011A7DF4,12, diff --git a/src/KingSystem/Resource/GeneralParamList/resGParamListObjectAnimalUnit.h b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectAnimalUnit.h new file mode 100644 index 00000000..b6db6cfa --- /dev/null +++ b/src/KingSystem/Resource/GeneralParamList/resGParamListObjectAnimalUnit.h @@ -0,0 +1,56 @@ +#pragma once + +#include +#include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" +#include "KingSystem/Utils/Types.h" + +namespace ksys::res { + +class GParamListObjectAnimalUnit : public GParamListObject { +public: + GParamListObjectAnimalUnit(); + const char* getName() const override { return "AnimalUnit"; } + + agl::utl::Parameter mSpeedActorName; + agl::utl::Parameter mBasePlayRate; + agl::utl::Parameter mGearMaxNum; + agl::utl::Parameter mIsSetWaitASAtGear0; + agl::utl::Parameter mStressFramesMin; + agl::utl::Parameter mStressFramesMax; + agl::utl::Parameter mSteeringOutputKp; + agl::utl::Parameter mSteeringOutputKi; + agl::utl::Parameter mSteeringOutputKd; + agl::utl::Parameter mSteeringOutputIClamp; + agl::utl::Parameter mSteeringOutputIReduceRatio; + agl::utl::Parameter mSteeringOutputDLerpRatio; + agl::utl::Parameter mSteeringOutputAvoidanceLerpRatio; + agl::utl::Parameter mSteeringOutputIIRLerpRatio; + agl::utl::Parameter mOverrideSteeringOutputKp; + agl::utl::Parameter mOverrideSteeringOutputKi; + agl::utl::Parameter mOverrideSteeringOutputKd; +}; +KSYS_CHECK_SIZE_NX150(GParamListObjectAnimalUnit, 0x260); + +inline GParamListObjectAnimalUnit::GParamListObjectAnimalUnit() { + auto* const obj = &mObj; + + mSpeedActorName.init("", "SpeedActorName", "", obj); + mBasePlayRate.init(1.0, "BasePlayRate", "", obj); + mGearMaxNum.init(4, "GearMaxNum", "", obj); + mIsSetWaitASAtGear0.init(true, "IsSetWaitASAtGear0", "", obj); + mStressFramesMin.init(0.0, "StressFramesMin", "", obj); + mStressFramesMax.init(0.0, "StressFramesMax", "", obj); + mSteeringOutputKp.init(0.6, "SteeringOutputKp", "", obj); + mSteeringOutputKi.init(0.15, "SteeringOutputKi", "", obj); + mSteeringOutputKd.init(0.002, "SteeringOutputKd", "", obj); + mSteeringOutputIClamp.init(1.0, "SteeringOutputIClamp", "", obj); + mSteeringOutputIReduceRatio.init(0.0, "SteeringOutputIReduceRatio", "", obj); + mSteeringOutputDLerpRatio.init(0.2, "SteeringOutputDLerpRatio", "", obj); + mSteeringOutputAvoidanceLerpRatio.init(0.08, "SteeringOutputAvoidanceLerpRatio", "", obj); + mSteeringOutputIIRLerpRatio.init(0.4, "SteeringOutputIIRLerpRatio", "", obj); + mOverrideSteeringOutputKp.init(-1.0, "OverrideSteeringOutputKp", "", obj); + mOverrideSteeringOutputKi.init(-1.0, "OverrideSteeringOutputKi", "", obj); + mOverrideSteeringOutputKd.init(-1.0, "OverrideSteeringOutputKd", "", obj); +} + +} // namespace ksys::res diff --git a/src/KingSystem/Resource/resResourceGParamList.cpp b/src/KingSystem/Resource/resResourceGParamList.cpp index ea863236..9de521ef 100644 --- a/src/KingSystem/Resource/resResourceGParamList.cpp +++ b/src/KingSystem/Resource/resResourceGParamList.cpp @@ -4,6 +4,7 @@ #include "KingSystem/ActorSystem/actActorParamMgr.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObject.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectAnimalFollowOffset.h" +#include "KingSystem/Resource/GeneralParamList/resGParamListObjectAnimalUnit.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectArmor.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectArmorEffect.h" #include "KingSystem/Resource/GeneralParamList/resGParamListObjectArmorHead.h" @@ -136,6 +137,7 @@ bool GParamList::parse_(u8* data, size_t, sead::Heap* heap) { dummy_list); add(archive.getRootList(), "BindActor", heap, dummy_list); add(archive.getRootList(), "EatTarget", heap, dummy_list); + add(archive.getRootList(), "AnimalUnit", heap, dummy_list); // TODO: the rest