ksys/act: Finish ActorParam by adding updateResource

This commit is contained in:
Léo Lam 2021-05-18 00:41:14 +02:00
parent 8e0d05234f
commit 8b1eb8819a
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
15 changed files with 80 additions and 27 deletions

View File

@ -87656,7 +87656,7 @@
0x00000071010895ac,sub_71010895AC,664,_ZN4ksys3res12ActorCapture5resetEv
0x0000007101089844,sub_7101089844,180,_ZN4ksys3res12ActorCaptureD2Ev
0x00000071010898f8,sub_71010898F8,168,_ZN4ksys3res12ActorCaptureD0Ev
0x00000071010899a0,sub_71010899A0,8,_ZN4ksys3res12ActorCapture10ParamIO_m0Ev
0x00000071010899a0,sub_71010899A0,8,_ZN4ksys3res12ActorCapture10ParamIO_m0EPc
0x00000071010899a8,sub_71010899A8,8,_ZNK4ksys3res12ActorCapture27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071010899b0,sub_71010899B0,92,_ZNK4ksys3res12ActorCapture18getRuntimeTypeInfoEv
0x0000007101089a0c,sub_7101089A0C,8,_ZNK4ksys3res12ActorCapture10needsParseEv
@ -87669,7 +87669,7 @@
0x0000007101089c8c,sub_7101089C8C,172,_ZThn664_N4ksys3res12ActorCaptureD0Ev
0x0000007101089d38,sub_7101089D38,20,_ZN4ksys7ParamIOD2Ev
0x0000007101089d4c,j__ZdlPv_1140,4,_ZN4ksys7ParamIOD0Ev
0x0000007101089d50,sub_7101089D50,8,_ZN4ksys7ParamIO10ParamIO_m0Ev
0x0000007101089d50,sub_7101089D50,8,_ZN4ksys7ParamIO10ParamIO_m0EPc
0x0000007101089d58,sub_7101089D58,48,_ZN4ksys3res12ActorCapture10CameraInfoD2Ev
0x0000007101089d88,j__ZdlPv_1141,4,_ZN4ksys3res12ActorCapture10CameraInfoD0Ev
0x0000007101089d8c,sub_7101089D8C,64,_ZN4ksys3res12ActorCapture9ActorInfoD2Ev
@ -87915,7 +87915,7 @@
0x0000007101097834,sub_7101097834,956,_ZN4ksys3res11DamageParam17getDamageReactionERKN4sead14SafeStringBaseIcEES6_
0x0000007101097bf0,sub_7101097BF0,576,_ZN4ksys3res11DamageParamD2Ev
0x0000007101097e30,sub_7101097E30,36,_ZN4ksys3res11DamageParamD0Ev
0x0000007101097e54,sub_7101097E54,8,_ZN4ksys3res11DamageParam10ParamIO_m0Ev
0x0000007101097e54,sub_7101097E54,8,_ZN4ksys3res11DamageParam10ParamIO_m0EPc
0x0000007101097e5c,sub_7101097E5C,8,_ZNK4ksys3res11DamageParam27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x0000007101097e64,sub_7101097E64,92,_ZNK4ksys3res11DamageParam18getRuntimeTypeInfoEv
0x0000007101097ec0,sub_7101097EC0,8,_ZNK4ksys3res11DamageParam10needsParseEv
@ -87948,7 +87948,7 @@
0x0000007101099498,Bdrop::findTableIndex,336,_ZNK4ksys3res4Drop14findTableIndexERKN4sead14SafeStringBaseIcEE
0x00000071010995e8,sub_71010995E8,124,_ZN4ksys3res4DropD2Ev
0x0000007101099664,sub_7101099664,112,_ZN4ksys3res4DropD0Ev
0x00000071010996d4,sub_71010996D4,8,_ZN4ksys3res4Drop10ParamIO_m0Ev
0x00000071010996d4,sub_71010996D4,8,_ZN4ksys3res4Drop10ParamIO_m0EPc
0x00000071010996dc,sub_71010996DC,8,_ZNK4ksys3res4Drop27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071010996e4,sub_71010996E4,92,_ZNK4ksys3res4Drop18getRuntimeTypeInfoEv
0x0000007101099740,sub_7101099740,8,_ZNK4ksys3res4Drop10needsParseEv
@ -87968,7 +87968,7 @@
0x000000710109a1f4,_ZNK3aal8ShapeMgr20isTemplateRegisteredERKN4sead14SafeStringBaseIcEE,280,
0x000000710109a30c,sub_710109A30C,156,_ZN4ksys3res13LifeConditionD2Ev
0x000000710109a3a8,sub_710109A3A8,144,_ZN4ksys3res13LifeConditionD0Ev
0x000000710109a438,sub_710109A438,8,_ZN4ksys3res13LifeCondition10ParamIO_m0Ev
0x000000710109a438,sub_710109A438,8,_ZN4ksys3res13LifeCondition10ParamIO_m0EPc
0x000000710109a440,sub_710109A440,8,_ZNK4ksys3res13LifeCondition27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x000000710109a448,sub_710109A448,92,_ZNK4ksys3res13LifeCondition18getRuntimeTypeInfoEv
0x000000710109a4a4,sub_710109A4A4,8,_ZNK4ksys3res13LifeCondition10needsParseEv
@ -87989,7 +87989,7 @@
0x000000710109af18,sub_710109AF18,316,_ZNK4ksys3res18RagdollBlendWeight12findStateIdxERKN4sead14SafeStringBaseIcEE
0x000000710109b054,sub_710109B054,208,_ZN4ksys3res18RagdollBlendWeightD2Ev
0x000000710109b124,sub_710109B124,196,_ZN4ksys3res18RagdollBlendWeightD0Ev
0x000000710109b1e8,sub_710109B1E8,8,_ZN4ksys3res18RagdollBlendWeight10ParamIO_m0Ev
0x000000710109b1e8,sub_710109B1E8,8,_ZN4ksys3res18RagdollBlendWeight10ParamIO_m0EPc
0x000000710109b1f0,sub_710109B1F0,8,_ZNK4ksys3res18RagdollBlendWeight27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x000000710109b1f8,sub_710109B1F8,92,_ZNK4ksys3res18RagdollBlendWeight18getRuntimeTypeInfoEv
0x000000710109b254,sub_710109B254,8,_ZNK4ksys3res18RagdollBlendWeight10needsParseEv
@ -88010,7 +88010,7 @@
0x000000710109c2b8,sub_710109C2B8,336,_ZNK4ksys3res4Shop14findTableIndexERKN4sead14SafeStringBaseIcEE
0x000000710109c408,sub_710109C408,124,_ZN4ksys3res4ShopD2Ev
0x000000710109c484,sub_710109C484,112,_ZN4ksys3res4ShopD0Ev
0x000000710109c4f4,sub_710109C4F4,8,_ZN4ksys3res4Shop10ParamIO_m0Ev
0x000000710109c4f4,sub_710109C4F4,8,_ZN4ksys3res4Shop10ParamIO_m0EPc
0x000000710109c4fc,sub_710109C4FC,8,_ZNK4ksys3res4Shop27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x000000710109c504,sub_710109C504,92,_ZNK4ksys3res4Shop18getRuntimeTypeInfoEv
0x000000710109c560,sub_710109C560,8,_ZNK4ksys3res4Shop10needsParseEv
@ -91258,7 +91258,7 @@
0x0000007101185d68,ActorParam::Event::setSignal,8,_ZN4ksys3act10ActorParam14setEventSignalEv
0x0000007101185d70,ActorParam::Event::wait,8,_ZN4ksys3act10ActorParam12waitForEventEv
0x0000007101185d78,sub_7101185D78,8,_ZNK4ksys3act10ActorParam11isSignalSetEv
0x0000007101185d80,sub_7101185D80,684,
0x0000007101185d80,sub_7101185D80,684,_ZN4ksys3act10ActorParam14updateResourceEPKcPcS4_
0x000000710118602c,ActorParam::Load::x,52,_ZN4ksys3act10ActorParam11allocHandleEv
0x0000007101186060,sub_7101186060,24,_ZN4ksys3act10ActorParam14freeLastHandleEv
0x0000007101186078,ActorParam::Load::setResourcePointer,28,_ZN4ksys3act10ActorParam11setResourceENS1_12ResourceTypeEPNS_7ParamIOE
@ -91343,7 +91343,7 @@
0x00000071011a6c68,BgparamlistObjectMotorcycle::ctor,2736,_ZN4ksys3res26GParamListObjectMotorcycleC2Ev
0x00000071011a7718,sub_71011A7718,52,_ZN4ksys3res10GParamListD2Ev
0x00000071011a774c,sub_71011A774C,40,_ZN4ksys3res10GParamListD0Ev
0x00000071011a7774,sub_71011A7774,8,_ZN4ksys3res10GParamList10ParamIO_m0Ev
0x00000071011a7774,sub_71011A7774,8,_ZN4ksys3res10GParamList10ParamIO_m0EPc
0x00000071011a777c,sub_71011A777C,8,_ZNK4ksys3res10GParamList27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071011a7784,sub_71011A7784,92,_ZNK4ksys3res10GParamList18getRuntimeTypeInfoEv
0x00000071011a77e0,sub_71011A77E0,8,_ZNK4ksys3res10GParamList10needsParseEv
@ -96682,7 +96682,7 @@
0x00000071012f6a0c,ResourceBawareness::parse,28,_ZThn632_N4ksys3res9Awareness6parse_EPhmPN4sead4HeapE
0x00000071012f6a28,sub_71012F6A28,336,_ZN4ksys3res9AwarenessD2Ev
0x00000071012f6b78,sub_71012F6B78,324,_ZN4ksys3res9AwarenessD0Ev
0x00000071012f6cbc,sub_71012F6CBC,8,_ZN4ksys3res9Awareness10ParamIO_m0Ev
0x00000071012f6cbc,sub_71012F6CBC,8,_ZN4ksys3res9Awareness10ParamIO_m0EPc
0x00000071012f6cc4,sub_71012F6CC4,8,_ZNK4ksys3res9Awareness27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012f6ccc,sub_71012F6CCC,92,_ZNK4ksys3res9Awareness18getRuntimeTypeInfoEv
0x00000071012f6d28,sub_71012F6D28,8,_ZNK4ksys3res9Awareness10needsParseEv
@ -96707,7 +96707,7 @@
0x00000071012f9868,sub_71012F9868,312,_ZN4sead6BufferIN4ksys3res11BoneControl9BoneGroupEE14tryAllocBufferEiPNS_4HeapEi
0x00000071012f99a0,sub_71012F99A0,8,_ZThn632_N4ksys3res11BoneControl6parse_EPhmPN4sead4HeapE
0x00000071012f99a8,sub_71012F99A8,452,_ZNK4ksys3res11BoneControl12getBoneGroupERKN4sead14SafeStringBaseIcEE
0x00000071012f9b6c,sub_71012F9B6C,8,_ZN4ksys3res11BoneControl10ParamIO_m0Ev
0x00000071012f9b6c,sub_71012F9B6C,8,_ZN4ksys3res11BoneControl10ParamIO_m0EPc
0x00000071012f9b74,sub_71012F9B74,8,_ZNK4ksys3res11BoneControl27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012f9b7c,sub_71012F9B7C,92,_ZNK4ksys3res11BoneControl18getRuntimeTypeInfoEv
0x00000071012f9bd8,sub_71012F9BD8,8,_ZNK4ksys3res11BoneControl10needsParseEv
@ -96743,7 +96743,7 @@
0x00000071012fabd8,sub_71012FABD8,28,_ZThn632_N4ksys3res3Lod6parse_EPhmPN4sead4HeapE
0x00000071012fabf4,sub_71012FABF4,148,_ZN4ksys3res3LodD2Ev
0x00000071012fac88,sub_71012FAC88,136,_ZN4ksys3res3LodD0Ev
0x00000071012fad10,sub_71012FAD10,8,_ZN4ksys3res3Lod10ParamIO_m0Ev
0x00000071012fad10,sub_71012FAD10,8,_ZN4ksys3res3Lod10ParamIO_m0EPc
0x00000071012fad18,sub_71012FAD18,8,_ZNK4ksys3res3Lod27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012fad20,sub_71012FAD20,92,_ZNK4ksys3res3Lod18getRuntimeTypeInfoEv
0x00000071012fad7c,sub_71012FAD7C,8,_ZNK4ksys3res3Lod10needsParseEv
@ -96805,7 +96805,7 @@
0x00000071012fcbcc,ResourceBrecipe::parse,28,_ZThn632_N4ksys3res6Recipe6parse_EPhmPN4sead4HeapE
0x00000071012fcbe8,sub_71012FCBE8,124,_ZN4ksys3res6RecipeD2Ev
0x00000071012fcc64,sub_71012FCC64,112,_ZN4ksys3res6RecipeD0Ev
0x00000071012fccd4,sub_71012FCCD4,8,_ZN4ksys3res6Recipe10ParamIO_m0Ev
0x00000071012fccd4,sub_71012FCCD4,8,_ZN4ksys3res6Recipe10ParamIO_m0EPc
0x00000071012fccdc,sub_71012FCCDC,8,_ZNK4ksys3res6Recipe27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012fcce4,sub_71012FCCE4,92,_ZNK4ksys3res6Recipe18getRuntimeTypeInfoEv
0x00000071012fcd40,sub_71012FCD40,8,_ZNK4ksys3res6Recipe10needsParseEv

Can't render this file because it is too large.

View File

@ -3,7 +3,13 @@
#include <prim/seadScopedLock.h>
#include "KingSystem/ActorSystem/actActorParamMgr.h"
#include "KingSystem/ActorSystem/actActorTemplate.h"
#include "KingSystem/Resource/resResourceAS.h"
#include "KingSystem/Resource/resResourceASList.h"
#include "KingSystem/Resource/resResourceAttClient.h"
#include "KingSystem/Resource/resResourceRagdollConfig.h"
#include "KingSystem/Resource/resResourceRagdollConfigList.h"
#include "KingSystem/Utils/Byaml/Byaml.h"
#include "KingSystem/Utils/ParamIO.h"
namespace ksys::act {
@ -88,6 +94,51 @@ bool ActorParam::isSignalSet() const {
return mEvent.isSignalSet();
}
int ActorParam::updateResource(const char* data, char* data1, char* data2) {
for (int i = 0; i < mRes.mArray.size(); ++i) {
if (mRes.mArray[i] && mRes.mArray[i]->getPath().include(data)) {
if (mRes.mArray[i]->ParamIO_m0(data1))
return 1;
if (mRes.mArray[i]->applyResourceUpdate(data1, data2))
return 0;
}
}
for (int i = 0; i < mRes.mASList->getASDefines().size(); ++i) {
if (mRes.mASList->getASDefines()[i].as &&
mRes.mASList->getASDefines()[i].as->getPath().include(data)) {
if (mRes.mASList->getASDefines()[i].as->ParamIO_m0(data1))
return 1;
if (mRes.mASList->getASDefines()[i].as->applyResourceUpdate(data1, data2))
return 0;
}
}
auto* atcllist = mRes.mAttClientList;
for (int i = 0; i < atcllist->getClients().size(); ++i) {
auto* client = atcllist->getClients()[i].client;
if (client->getPath().include(data)) {
if (client->ParamIO_m0(data1))
return 1;
if (client->applyResourceUpdate(data1, data2))
return 0;
}
}
auto* rgconfiglist = mRes.mRagdollConfigList;
for (int i = 0; i < rgconfiglist->getImpulseParams().size(); ++i) {
auto* config = rgconfiglist->getImpulseParams()[i].config;
if (config->getPath().include(data)) {
if (config->ParamIO_m0(data1))
return 1;
if (config->applyResourceUpdate(data1, data2))
return 0;
}
}
return 2;
}
res::Handle* ActorParam::allocHandle() {
const auto idx = mNumHandles[mActiveBufferIdx];
++mNumHandles[mActiveBufferIdx];

View File

@ -13,6 +13,8 @@
namespace ksys {
class ParamIO;
namespace res {
class AIProgram;
class AISchedule;
@ -109,7 +111,7 @@ public:
res::UMii* mUMii;
res::AnimInfo* mAnimationInfo;
};
sead::SafeArray<void*, 25> mArray;
sead::SafeArray<ParamIO*, 25> mArray;
};
KSYS_CHECK_SIZE_NX150(Resources, 0xc8);
@ -144,7 +146,7 @@ private:
void setEventSignal();
void waitForEvent();
bool isSignalSet() const;
int updateResource(const char* data, const char* data1, const char* data2);
int updateResource(const char* data, char* data1, char* data2);
res::Handle* allocHandle();
void freeLastHandle();

View File

@ -54,7 +54,7 @@ public:
void doCreate_(u8*, u32, sead::Heap*) override {}
bool needsParse() const override { return true; }
bool ParamIO_m0() override { return true; }
bool ParamIO_m0(char* data) override { return true; }
void reset();

View File

@ -14,7 +14,7 @@ public:
~Awareness() override = default;
bool needsParse() const override { return true; }
bool ParamIO_m0() override { return true; }
bool ParamIO_m0(char* data) override { return true; }
private:
void doCreate_(u8*, u32, sead::Heap*) override {}

View File

@ -139,7 +139,7 @@ public:
void doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) override;
bool parse_(u8* data, size_t size, sead::Heap* heap) override;
bool ParamIO_m0() override { return true; }
bool ParamIO_m0(char* data) override { return true; }
bool needsParse() const override { return true; }
const Whole& getWhole() const { return mWhole; }

View File

@ -15,7 +15,7 @@ public:
~DamageParam() override = default;
bool needsParse() const override { return true; }
bool ParamIO_m0() override { return false; }
bool ParamIO_m0(char* data) override { return false; }
f32 getDamageRate(const sead::SafeString& damage_source);
const sead::SafeString& getDamageReaction(const sead::SafeString& damage_source,

View File

@ -35,7 +35,7 @@ public:
s32 getRepeatNum(s32 table_idx) const;
s32 getRepeatNum(const sead::SafeString& table_name) const;
bool ParamIO_m0() override { return true; }
bool ParamIO_m0(char* data) override { return true; }
void doCreate_(u8*, u32, sead::Heap*) override {}
bool needsParse() const override { return true; }

View File

@ -15,7 +15,7 @@ public:
GParamList() : ParamIO("bgparamlist", 0) {}
~GParamList() override = default;
bool ParamIO_m0() override { return false; }
bool ParamIO_m0(char* data) override { return false; }
void doCreate_(u8* buffer, u32 bufferSize, sead::Heap* heap) override;
bool needsParse() const override { return true; }

View File

@ -15,7 +15,7 @@ public:
~LifeCondition() override = default;
bool needsParse() const override { return true; }
bool ParamIO_m0() override { return true; }
bool ParamIO_m0(char* data) override { return true; }
private:
void doCreate_(u8*, u32, sead::Heap*) override {}

View File

@ -14,7 +14,7 @@ public:
Lod() : ParamIO("lod", 0) {}
~Lod() override = default;
bool ParamIO_m0() override { return true; }
bool ParamIO_m0(char* data) override { return true; }
void doCreate_(u8*, u32, sead::Heap*) override {}
bool needsParse() const override { return true; }

View File

@ -36,7 +36,7 @@ public:
float getWeightBlendRate(int state_idx, int weight_idx) const;
int findStateIdx(const sead::SafeString& key) const;
bool ParamIO_m0() override { return true; }
bool ParamIO_m0(char* data) override { return true; }
void doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) override;
bool needsParse() const override { return true; }
bool parse_(u8* data, size_t size, sead::Heap* heap) override;

View File

@ -28,7 +28,7 @@ public:
Recipe() : ParamIO("recipe", 0) {}
bool ParamIO_m0() override { return true; }
bool ParamIO_m0(char* data) override { return true; }
void doCreate_(u8*, u32, sead::Heap*) override {}
bool needsParse() const override { return true; }

View File

@ -35,7 +35,7 @@ public:
s32 findTableIndexOrNormal(const sead::SafeString& table_name) const;
s32 findTableIndex(const sead::SafeString& table_name) const;
bool ParamIO_m0() override { return true; }
bool ParamIO_m0(char* data) override { return true; }
void doCreate_(u8*, u32, sead::Heap*) override {}
bool needsParse() const override { return true; }

View File

@ -12,7 +12,7 @@ class ParamIO : public agl::utl::IParameterIO, public sead::hostio::Node {
public:
using agl::utl::IParameterIO::IParameterIO;
virtual bool ParamIO_m0() { return false; }
virtual bool ParamIO_m0(char* data) { return false; }
bool applyResourceUpdate(char* data, char* data1);