diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 97e8986e..fefe37e3 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -89049,7 +89049,7 @@ 0x000000710118576c,memsetSomeMemory,36,_ZN4ksys3act10ActorParam19resetDummyResourcesEv 0x0000007101185790,ActorParam::Event::ctor,244,_ZN4ksys3act10ActorParamC1Ev 0x0000007101185884,sub_7101185884,60,_ZN4ksys3act10ActorParamD1Ev -0x00000071011858c0,ActorParam::Data::doUnload,440,_ZN4ksys3act10ActorParam10deleteDataEv? +0x00000071011858c0,ActorParam::Data::doUnload,440,_ZN4ksys3act10ActorParam10deleteDataEv 0x0000007101185a78,sub_7101185A78,68,_ZN4ksys3act10ActorParamD0Ev 0x0000007101185abc,ActorParam::Load::deleteRes2,164,_ZN4ksys3act10ActorParam16deleteResHandlesEv 0x0000007101185b60,ActorParam::Load::isDummyParamResource,136,_ZNK4ksys3act10ActorParam12isDummyParamENS_3res9ActorLink5Users4UserE diff --git a/expected/_ZN4ksys3act10ActorParam10deleteDataEv.bin b/expected/_ZN4ksys3act10ActorParam10deleteDataEv.bin deleted file mode 100644 index 2f45a6e1..00000000 Binary files a/expected/_ZN4ksys3act10ActorParam10deleteDataEv.bin and /dev/null differ diff --git a/src/KingSystem/ActorSystem/actActorParam.cpp b/src/KingSystem/ActorSystem/actActorParam.cpp index 26b89dc5..7ce2bc06 100644 --- a/src/KingSystem/ActorSystem/actActorParam.cpp +++ b/src/KingSystem/ActorSystem/actActorParam.cpp @@ -11,7 +11,7 @@ void ActorParam::resetDummyResources() { ActorParam::ActorParam() { mRes = {}; - mNumHandles1 = mNumHandles2 = 0; + mNumHandles = {}; mEvent.resetSignal(); } @@ -26,13 +26,11 @@ void ActorParam::deleteData() { if (mActorName.isEmpty()) return; - for (s32 i = 0; i < mNumHandles1; ++i) - mHandles1[i].requestUnload(); - mNumHandles1 = 0; - - for (s32 i = 0; i < mNumHandles2; ++i) - mHandles2[i].requestUnload(); - mNumHandles2 = 0; + for (size_t i = 0; i < mNumHandles.size(); ++i) { + for (s32 handle_idx = 0; handle_idx < mNumHandles[i]; ++handle_idx) + mHandles[i][handle_idx].requestUnload(); + mNumHandles[i] = 0; + } deleteResHandles(); @@ -44,8 +42,8 @@ void ActorParam::deleteData() { } void ActorParam::deleteResHandles() { - mHandles1.freeBuffer(); - mHandles2.freeBuffer(); + for (auto& handles : mHandles) + handles.freeBuffer(); } bool ActorParam::isDummyParam(res::ActorLink::Users::User user) const { diff --git a/src/KingSystem/ActorSystem/actActorParam.h b/src/KingSystem/ActorSystem/actActorParam.h index 097ee3e9..7bbe536d 100644 --- a/src/KingSystem/ActorSystem/actActorParam.h +++ b/src/KingSystem/ActorSystem/actActorParam.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -112,10 +113,8 @@ public: Priority mPriority = Priority::AllAfter; u32 _74 = 2; Resources mRes; - sead::Buffer mHandles1; - sead::Buffer mHandles2; - s32 mNumHandles1; - s32 mNumHandles2; + std::array, 2> mHandles; + std::array mNumHandles; u32 _168{}; static void resetDummyResources();