summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLéo Lam <leo@leolam.fr>2026-09-28 03:39:31 +0200
committerLéo Lam <leo@leolam.fr>2026-10-13 03:33:27 +0200
commitea13bac74ad136aeb3dde81f07ccd62622be94ad (patch)
tree6ce7dd47659a2513c0f25236d49aa7953e354e0f
parente400fe702540b886b718b18e622be450008293a6 (diff)
ksys: move AS setting, RootAi and three others to match link order
Each file moves to where its code is linked, and namespaces follow the new paths. ASSettingMgr is an unofficial name. | Old | New | |---|---| | act::ASSetting (ActorSystem/actASSetting) | res::ASSettingMgr (Resource/Actor/resResourceASSettingMgr) | | Resource/resResourceASSetting, Resource/Actor/resResourceASResourceExtension | Resource/Actor/resResourceASSetting | | ksys::DebugFinder (System/DebugFinder) | ksys::act::DebugFinder (ActorSystem/actDebugFinder) | | ActorSystem/LOD/actLodState | ActorSystem/actLodState | | ActorSystem/actAiRoot | ActorSystem/aiRootAi | | Map/mapStagePreActorCache | System/StagePreActorCache (ksys) | (AI assisted using Claude Fable 5.1 and Claude Opus 5.5)
-rw-r--r--data/uking_functions.csv60
-rw-r--r--src/Game/Actor/Query/queryIsSuccessEndLastDemoAction.cpp2
-rw-r--r--src/KingSystem/ActorSystem/CMakeLists.txt13
-rw-r--r--src/KingSystem/ActorSystem/actASSetting.cpp31
-rw-r--r--src/KingSystem/ActorSystem/actASSetting.h26
-rw-r--r--src/KingSystem/ActorSystem/actActor.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actActorEditorNode.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actActorLinkConstDataAccess.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actActorParamMgr.cpp8
-rw-r--r--src/KingSystem/ActorSystem/actAiAction.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actAiActionBase.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actAiAi.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actAiBehavior.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actAiQuery.cpp2
-rw-r--r--src/KingSystem/ActorSystem/actDebugFinder.cpp (renamed from src/KingSystem/System/DebugFinder.cpp)6
-rw-r--r--src/KingSystem/ActorSystem/actDebugFinder.h (renamed from src/KingSystem/System/DebugFinder.h)4
-rw-r--r--src/KingSystem/ActorSystem/actLodState.cpp (renamed from src/KingSystem/ActorSystem/LOD/actLodState.cpp)2
-rw-r--r--src/KingSystem/ActorSystem/actLodState.h (renamed from src/KingSystem/ActorSystem/LOD/actLodState.h)0
-rw-r--r--src/KingSystem/ActorSystem/aiForkAI.cpp2
-rw-r--r--src/KingSystem/ActorSystem/aiRootAi.cpp (renamed from src/KingSystem/ActorSystem/actAiRoot.cpp)2
-rw-r--r--src/KingSystem/ActorSystem/aiRootAi.h (renamed from src/KingSystem/ActorSystem/actAiRoot.h)0
-rw-r--r--src/KingSystem/Map/CMakeLists.txt2
-rw-r--r--src/KingSystem/Map/mapObject.cpp2
-rw-r--r--src/KingSystem/Map/mapPlacementAreaMgr.h2
-rw-r--r--src/KingSystem/Map/mapPlacementMapMgr.h7
-rw-r--r--src/KingSystem/Map/mapStagePreActorCache.cpp7
-rw-r--r--src/KingSystem/Resource/Actor/resResourceASSetting.cpp (renamed from src/KingSystem/Resource/Actor/resResourceASResourceExtension.cpp)174
-rw-r--r--src/KingSystem/Resource/Actor/resResourceASSetting.h (renamed from src/KingSystem/Resource/resResourceASSetting.h)2
-rw-r--r--src/KingSystem/Resource/Actor/resResourceASSettingMgr.h26
-rw-r--r--src/KingSystem/Resource/CMakeLists.txt6
-rw-r--r--src/KingSystem/Resource/resResourceASSetting.cpp113
-rw-r--r--src/KingSystem/System/CMakeLists.txt4
-rw-r--r--src/KingSystem/System/StagePreActorCache.cpp7
-rw-r--r--src/KingSystem/System/StagePreActorCache.h (renamed from src/KingSystem/Map/mapStagePreActorCache.h)10
34 files changed, 263 insertions, 271 deletions
diff --git a/data/uking_functions.csv b/data/uking_functions.csv
index 69875092..4eb71919 100644
--- a/data/uking_functions.csv
+++ b/data/uking_functions.csv
@@ -80545,15 +80545,15 @@ Address,Quality,Size,Name
0x0000007100ed8ff0,O,000168,_GLOBAL__sub_I_StageInfo.cpp
0x0000007100ed9098,U,000056,
0x0000007100ed90d0,U,000092,
-0x0000007100ed912c,U,000244,StagePreActorCache::createInstance
-0x0000007100ed9220,U,000196,StagePreActorCache::init
-0x0000007100ed92e4,U,000144,StagePreActorCache::reset
-0x0000007100ed9374,U,001032,StagePreActorCache::loadMaps
-0x0000007100ed977c,U,000224,StagePreActorCache::isMapTypeEqual
-0x0000007100ed985c,U,000008,StagePreActorCache::m2
-0x0000007100ed9864,U,000056,StagePreActorCache::m3
-0x0000007100ed989c,U,000316,StagePreActorCache::m4
-0x0000007100ed99d8,U,000240,StagePreActorCache::m1
+0x0000007100ed912c,U,000244,ksys::StagePreActorCache::createInstance
+0x0000007100ed9220,U,000196,ksys::StagePreActorCache::init
+0x0000007100ed92e4,U,000144,ksys::StagePreActorCache::reset
+0x0000007100ed9374,U,001032,ksys::StagePreActorCache::loadMaps
+0x0000007100ed977c,U,000224,ksys::StagePreActorCache::isMapTypeEqual
+0x0000007100ed985c,U,000008,ksys::StagePreActorCache::m2
+0x0000007100ed9864,U,000056,ksys::StagePreActorCache::m3
+0x0000007100ed989c,U,000316,ksys::StagePreActorCache::m4
+0x0000007100ed99d8,U,000240,ksys::StagePreActorCache::m1
0x0000007100ed9ac8,O,000052,_ZN5uking6action15EnvSetLensFlareC1ERKN4ksys3act2ai10ActionBase7InitArgE
0x0000007100ed9afc,O,000008,_ZN5uking6action15EnvSetLensFlare5init_EPN4sead4HeapE
0x0000007100ed9b04,W,000028,_ZN5uking6action15EnvSetLensFlare6enter_EPN4ksys3act2ai15InlineParamPackE
@@ -94614,11 +94614,11 @@ Address,Quality,Size,Name
0x000000710124a37c,U,000140,
0x000000710124a408,U,000048,
0x000000710124a438,U,000092,
-0x000000710124a494,O,000100,_ZN4ksys11DebugFinder18SingletonDisposer_D1Ev
-0x000000710124a4f8,O,000108,_ZN4ksys11DebugFinder18SingletonDisposer_D0Ev
-0x000000710124a564,O,000292,_ZN4ksys11DebugFinder14createInstanceEPN4sead4HeapE
-0x000000710124a688,O,000004,_ZN4ksys11DebugFinderD1Ev
-0x000000710124a68c,O,000004,_ZN4ksys11DebugFinderD0Ev
+0x000000710124a494,O,000100,_ZN4ksys3act11DebugFinder18SingletonDisposer_D1Ev
+0x000000710124a4f8,O,000108,_ZN4ksys3act11DebugFinder18SingletonDisposer_D0Ev
+0x000000710124a564,O,000292,_ZN4ksys3act11DebugFinder14createInstanceEPN4sead4HeapE
+0x000000710124a688,O,000004,_ZN4ksys3act11DebugFinderD1Ev
+0x000000710124a68c,O,000004,_ZN4ksys3act11DebugFinderD0Ev
0x000000710124a690,U,000008,
0x000000710124a698,U,000108,
0x000000710124a704,U,000108,
@@ -94628,13 +94628,13 @@ Address,Quality,Size,Name
0x000000710124a9ac,U,000016,
0x000000710124a9bc,U,000044,
0x000000710124a9e8,U,000140,
-0x000000710124aa74,U,000056,FarActorMerge::ctor
-0x000000710124aaac,U,000036,FarActorMerge::dtor
-0x000000710124aad0,U,000240,FarActorMerge::cleanup
-0x000000710124abc0,U,000004,FarActorMerge::stubbed
-0x000000710124abc4,U,000760,FarActorMerge::loadStuff
-0x000000710124aebc,U,000152,FarActorMerge::requestDraw
-0x000000710124af54,U,000252,FarActorMerge::x
+0x000000710124aa74,U,000056,ksys::act::FarActorMerge::ctor
+0x000000710124aaac,U,000036,ksys::act::FarActorMerge::dtor
+0x000000710124aad0,U,000240,ksys::act::FarActorMerge::cleanup
+0x000000710124abc0,U,000004,ksys::act::FarActorMerge::stubbed
+0x000000710124abc4,U,000760,ksys::act::FarActorMerge::loadStuff
+0x000000710124aebc,U,000152,ksys::act::FarActorMerge::requestDraw
+0x000000710124af54,U,000252,ksys::act::FarActorMerge::x
0x000000710124b050,U,005784,Actor::makeField598
0x000000710124c6e8,m,018196,_ZN4ksys3act8LodStateC1EPN4sead4HeapENS2_7BitFlagIjEEPNS0_5ActorEif
0x0000007101250dfc,m,000112,_ZN4ksys3act8LodState9initFlagsEv
@@ -97209,7 +97209,7 @@ Address,Quality,Size,Name
0x00000071012f23a4,O,000132,_ZN4ksys3res12ASExtensionsD1Ev
0x00000071012f2428,O,000508,_ZN4ksys3res12ASExtensions5parseERKNS1_9ParseArgsE
0x00000071012f2624,O,000636,_ZNK4ksys3res12ASExtensions10makeParserERKNS0_13ASParamParser9ParseArgsE
-0x00000071012f28a0,m,000428,_ZNK4ksys3act9ASSetting13getBoneParamsERKN4sead14SafeStringBaseIcEE
+0x00000071012f28a0,m,000428,_ZNK4ksys3res12ASSettingMgr13getBoneParamsERKN4sead14SafeStringBaseIcEE
0x00000071012f2a4c,O,000080,_ZNK4ksys3res12ASExtensions9getParserENS0_13ASParamParser4TypeE
0x00000071012f2a9c,O,000252,_ZN4ksys3res9ASSettingC1Ev
0x00000071012f2b98,O,000360,_ZN4ksys3res9ASSettingD1Ev
@@ -97223,11 +97223,11 @@ Address,Quality,Size,Name
0x00000071012f2d8c,O,001016,_ZN4ksys3res9ASSetting6parse_EPhmPN4sead4HeapE
0x00000071012f3184,O,000376,_ZN4ksys3res17allocBlenderBonesERN4sead6BufferINS0_9ASSetting11BlenderBoneEEEiPNS1_4HeapEi
0x00000071012f32fc,O,000008,_ZThn464_N4ksys3res9ASSetting6parse_EPhmPN4sead4HeapE
-0x00000071012f3304,O,000100,_ZN4ksys3act9ASSetting18SingletonDisposer_D1Ev
-0x00000071012f3368,O,000108,_ZN4ksys3act9ASSetting18SingletonDisposer_D0Ev
-0x00000071012f33d4,O,000152,_ZN4ksys3act9ASSetting14createInstanceEPN4sead4HeapE
-0x00000071012f346c,O,000088,_ZN4ksys3act9ASSetting14deleteInstanceEv
-0x00000071012f34c4,O,000132,_ZN4ksys3act9ASSetting4initERKN4sead14SafeStringBaseIcEEPNS2_4HeapE
+0x00000071012f3304,O,000100,_ZN4ksys3res12ASSettingMgr18SingletonDisposer_D1Ev
+0x00000071012f3368,O,000108,_ZN4ksys3res12ASSettingMgr18SingletonDisposer_D0Ev
+0x00000071012f33d4,O,000152,_ZN4ksys3res12ASSettingMgr14createInstanceEPN4sead4HeapE
+0x00000071012f346c,O,000088,_ZN4ksys3res12ASSettingMgr14deleteInstanceEv
+0x00000071012f34c4,O,000132,_ZN4ksys3res12ASSettingMgr4initERKN4sead14SafeStringBaseIcEEPNS2_4HeapE
0x00000071012f3548,O,000204,_ZNK4ksys3res17ASFrameCtrlParser27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012f3614,O,000092,_ZNK4ksys3res17ASFrameCtrlParser18getRuntimeTypeInfoEv
0x00000071012f3670,O,000104,_ZN4ksys3res17ASFrameCtrlParserD2Ev
@@ -97262,7 +97262,7 @@ Address,Quality,Size,Name
0x00000071012f47e8,O,000004,_ZN4ksys3res16ASBitIndexParserD0Ev
0x00000071012f47ec,O,000204,_ZNK4ksys3res9ASSetting10BoneParams27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012f48b8,O,000092,_ZNK4ksys3res9ASSetting10BoneParams18getRuntimeTypeInfoEv
-0x00000071012f4914,O,000164,_ZN4ksys3res9ASSetting10BoneParamsD1Ev
+0x00000071012f4914,O,000164,_ZN4ksys3res9ASSetting10BoneParamsD2Ev
0x00000071012f49b8,O,000128,_ZN4ksys3res9ASSetting10BoneParamsD0Ev
0x00000071012f4a38,O,000008,_ZNK4ksys3res9ASSetting27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012f4a40,O,000092,_ZNK4ksys3res9ASSetting18getRuntimeTypeInfoEv
@@ -97270,8 +97270,8 @@ Address,Quality,Size,Name
0x00000071012f4aa4,O,000008,_ZThn464_NK4ksys3res9ASSetting27checkDerivedRuntimeTypeInfoEPKN4sead15RuntimeTypeInfo9InterfaceE
0x00000071012f4aac,O,000092,_ZThn464_NK4ksys3res9ASSetting18getRuntimeTypeInfoEv
0x00000071012f4b08,O,000008,_ZThn464_NK4ksys3res9ASSetting10needsParseEv
-0x00000071012f4b10,O,000020,_ZN4ksys3act9ASSettingD1Ev
-0x00000071012f4b24,O,000052,_ZN4ksys3act9ASSettingD0Ev
+0x00000071012f4b10,O,000020,_ZN4ksys3res12ASSettingMgrD2Ev
+0x00000071012f4b24,O,000052,_ZN4ksys3res12ASSettingMgrD0Ev
0x00000071012f4b58,O,000056,_ZN4ksys3resL12factoryImpl_INS0_17ASFrameCtrlParserEEEPNS0_13ASParamParserEPN4sead4HeapE
0x00000071012f4b90,O,000124,_ZN4ksys3resL12factoryImpl_INS0_21ASTriggerEventsParserEEEPNS0_13ASParamParserEPN4sead4HeapE
0x00000071012f4c0c,O,000124,_ZN4ksys3resL12factoryImpl_INS0_18ASHoldEventsParserEEEPNS0_13ASParamParserEPN4sead4HeapE
diff --git a/src/Game/Actor/Query/queryIsSuccessEndLastDemoAction.cpp b/src/Game/Actor/Query/queryIsSuccessEndLastDemoAction.cpp
index 6c79cdc9..6d9dda5c 100644
--- a/src/Game/Actor/Query/queryIsSuccessEndLastDemoAction.cpp
+++ b/src/Game/Actor/Query/queryIsSuccessEndLastDemoAction.cpp
@@ -1,7 +1,7 @@
#include "Game/Actor/Query/queryIsSuccessEndLastDemoAction.h"
#include <evfl/Query.h>
#include "KingSystem/ActorSystem/actActor.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
namespace uking::query {
diff --git a/src/KingSystem/ActorSystem/CMakeLists.txt b/src/KingSystem/ActorSystem/CMakeLists.txt
index c83f97de..e0b70bfd 100644
--- a/src/KingSystem/ActorSystem/CMakeLists.txt
+++ b/src/KingSystem/ActorSystem/CMakeLists.txt
@@ -13,9 +13,6 @@ target_sources(uking PRIVATE
Awareness/actAwarenessInstance.h
- LOD/actLodState.cpp
- LOD/actLodState.h
-
Profiles/actRopeBase.cpp
Profiles/actRopeBase.h
Profiles/actWeaponBase.cpp
@@ -62,10 +59,6 @@ target_sources(uking PRIVATE
actAiQuery.h
actAiQueries.cpp
actAiQueries.h
- actAiRoot.cpp
- actAiRoot.h
- actASSetting.cpp
- actASSetting.h
actBaseProc.cpp
actBaseProc.h
actBaseProcAccessor.cpp
@@ -99,6 +92,8 @@ target_sources(uking PRIVATE
actClusteredRenderer.h
actDebug.cpp
actDebug.h
+ actDebugFinder.cpp
+ actDebugFinder.h
actGlobalParameter.cpp
actGlobalParameter.h
actIDamageManager.cpp
@@ -110,6 +105,8 @@ target_sources(uking PRIVATE
actInstParamPack.cpp
actInstParamPack.h
actLifeRecoveryInfo.h
+ actLodState.cpp
+ actLodState.h
actPhysicsConstraints.cpp
actPhysicsConstraints.h
actPhysicsUserTag.cpp
@@ -134,6 +131,8 @@ target_sources(uking PRIVATE
aiFork6AI.h
aiForkAI.cpp
aiForkAI.h
+ aiRootAi.cpp
+ aiRootAi.h
behaviorDummyBehavior.cpp
behaviorDummyBehavior.h
diff --git a/src/KingSystem/ActorSystem/actASSetting.cpp b/src/KingSystem/ActorSystem/actASSetting.cpp
deleted file mode 100644
index 2b020cfe..00000000
--- a/src/KingSystem/ActorSystem/actASSetting.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "KingSystem/ActorSystem/actASSetting.h"
-#include "KingSystem/Resource/resLoadRequest.h"
-#include "KingSystem/Resource/resResourceASSetting.h"
-
-namespace ksys::act {
-
-SEAD_SINGLETON_DISPOSER_IMPL(ASSetting)
-
-ASSetting::~ASSetting() = default;
-
-void ASSetting::init(const sead::SafeString& config_path, sead::Heap* heap) {
- res::LoadRequest req;
- req.mRequester = "ASSetting";
- req._22 = true;
- mHandle.load(config_path, &req);
-}
-
-// NON_MATCHING: sead::DirectResource to res::ASSetting cast nullptr check; branching for the return
-res::ASParamParser* ASSetting::getBoneParams(const sead::SafeString& key) const {
- auto* res = sead::DynamicCast<res::ASSetting>(mHandle.getResource());
- if (!res)
- return nullptr;
-
- for (auto& bones : res->getBlenderBones()) {
- if (key == bones.mKeyName.ref())
- return &bones.mBoneParams;
- }
- return nullptr;
-}
-
-} // namespace ksys::act
diff --git a/src/KingSystem/ActorSystem/actASSetting.h b/src/KingSystem/ActorSystem/actASSetting.h
deleted file mode 100644
index 8c97c85a..00000000
--- a/src/KingSystem/ActorSystem/actASSetting.h
+++ /dev/null
@@ -1,26 +0,0 @@
-#pragma once
-
-#include <heap/seadDisposer.h>
-#include <prim/seadSafeString.h>
-#include "KingSystem/Resource/resHandle.h"
-#include "KingSystem/Resource/resResourceASSetting.h"
-#include "KingSystem/Utils/Types.h"
-
-namespace ksys::act {
-
-// FIXME: very incomplete
-class ASSetting {
- SEAD_SINGLETON_DISPOSER(ASSetting)
- ASSetting() = default;
- virtual ~ASSetting();
-
-public:
- void init(const sead::SafeString& config_path, sead::Heap* heap);
- res::ASParamParser* getBoneParams(const sead::SafeString& key) const;
-
-private:
- res::Handle mHandle;
-};
-KSYS_CHECK_SIZE_NX150(ASSetting, 0x78);
-
-} // namespace ksys::act
diff --git a/src/KingSystem/ActorSystem/actActor.cpp b/src/KingSystem/ActorSystem/actActor.cpp
index ec7f3ea1..40432678 100644
--- a/src/KingSystem/ActorSystem/actActor.cpp
+++ b/src/KingSystem/ActorSystem/actActor.cpp
@@ -1,8 +1,8 @@
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
#include "KingSystem/ActorSystem/actBaseProcLink.h"
#include "KingSystem/ActorSystem/actBaseProcMgr.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Physics/System/physInstanceSet.h"
namespace ksys::act {
diff --git a/src/KingSystem/ActorSystem/actActorEditorNode.cpp b/src/KingSystem/ActorSystem/actActorEditorNode.cpp
index 47b6621e..ecb1bf00 100644
--- a/src/KingSystem/ActorSystem/actActorEditorNode.cpp
+++ b/src/KingSystem/ActorSystem/actActorEditorNode.cpp
@@ -1,5 +1,5 @@
#include "KingSystem/ActorSystem/actActorEditorNode.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/System/KingEditor.h"
namespace ksys::act {
diff --git a/src/KingSystem/ActorSystem/actActorLinkConstDataAccess.cpp b/src/KingSystem/ActorSystem/actActorLinkConstDataAccess.cpp
index 591df49e..e7ce2c15 100644
--- a/src/KingSystem/ActorSystem/actActorLinkConstDataAccess.cpp
+++ b/src/KingSystem/ActorSystem/actActorLinkConstDataAccess.cpp
@@ -3,8 +3,8 @@
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/ActorSystem/actActorUtil.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
#include "KingSystem/ActorSystem/actBaseProc.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Map/mapObject.h"
#include "KingSystem/Resource/Actor/resResourceGParamList.h"
#include "KingSystem/Resource/GeneralParamList/resGParamListObjectAttack.h"
diff --git a/src/KingSystem/ActorSystem/actActorParamMgr.cpp b/src/KingSystem/ActorSystem/actActorParamMgr.cpp
index fdf9c870..2ff51d04 100644
--- a/src/KingSystem/ActorSystem/actActorParamMgr.cpp
+++ b/src/KingSystem/ActorSystem/actActorParamMgr.cpp
@@ -1,11 +1,11 @@
#include "KingSystem/ActorSystem/actActorParamMgr.h"
#include <prim/seadScopedLock.h>
-#include "KingSystem/ActorSystem/actASSetting.h"
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
#include "KingSystem/Resource/Actor/resResourceAISchedule.h"
#include "KingSystem/Resource/Actor/resResourceAS.h"
#include "KingSystem/Resource/Actor/resResourceASList.h"
+#include "KingSystem/Resource/Actor/resResourceASSettingMgr.h"
#include "KingSystem/Resource/Actor/resResourceActorLink.h"
#include "KingSystem/Resource/Actor/resResourceAnimInfo.h"
#include "KingSystem/Resource/Actor/resResourceAttClient.h"
@@ -140,13 +140,13 @@ void ActorParamMgr::init(sead::Heap* heap, sead::Heap* debug_heap) {
res::registerEntryFactory(new (mTempHeap) res::EntryFactory<res::ASSetting>(0.0, 0x80000),
"bassetting");
- ASSetting::createInstance(mTempHeap);
- ASSetting::instance()->init("Actor/ASSetting.bassetting", mTempHeap);
+ res::ASSettingMgr::createInstance(mTempHeap);
+ res::ASSettingMgr::instance()->init("Actor/ASSetting.bassetting", mTempHeap);
ActorParam::resetDummyResources();
}
ActorParamMgr::~ActorParamMgr() {
- ASSetting::deleteInstance();
+ res::ASSettingMgr::deleteInstance();
}
bool ActorParamMgr::checkPath(const sead::SafeString& path) const {
diff --git a/src/KingSystem/ActorSystem/actAiAction.cpp b/src/KingSystem/ActorSystem/actAiAction.cpp
index 4c57a5e6..721afb09 100644
--- a/src/KingSystem/ActorSystem/actAiAction.cpp
+++ b/src/KingSystem/ActorSystem/actAiAction.cpp
@@ -2,8 +2,8 @@
#include <codec/seadHashCRC32.h>
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
#include "KingSystem/ActorSystem/actionDummyAction.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
namespace ksys::act::ai {
diff --git a/src/KingSystem/ActorSystem/actAiActionBase.cpp b/src/KingSystem/ActorSystem/actAiActionBase.cpp
index 81320ef1..794ec395 100644
--- a/src/KingSystem/ActorSystem/actAiActionBase.cpp
+++ b/src/KingSystem/ActorSystem/actAiActionBase.cpp
@@ -3,7 +3,7 @@
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/ActorSystem/actAiAction.h"
#include "KingSystem/ActorSystem/actAiInlineParam.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
#include "KingSystem/Utils/InitTimeInfo.h"
#include "KingSystem/Utils/Thread/MessageTransceiverId.h"
diff --git a/src/KingSystem/ActorSystem/actAiAi.cpp b/src/KingSystem/ActorSystem/actAiAi.cpp
index 26949474..7602eb47 100644
--- a/src/KingSystem/ActorSystem/actAiAi.cpp
+++ b/src/KingSystem/ActorSystem/actAiAi.cpp
@@ -5,8 +5,8 @@
#include "KingSystem/ActorSystem/actAiAction.h"
#include "KingSystem/ActorSystem/actAiClassDef.h"
#include "KingSystem/ActorSystem/actAiInlineParam.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
#include "KingSystem/ActorSystem/aiDummyAi.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
namespace ksys::act::ai {
diff --git a/src/KingSystem/ActorSystem/actAiBehavior.cpp b/src/KingSystem/ActorSystem/actAiBehavior.cpp
index 2f868984..d6e31cd4 100644
--- a/src/KingSystem/ActorSystem/actAiBehavior.cpp
+++ b/src/KingSystem/ActorSystem/actAiBehavior.cpp
@@ -1,7 +1,7 @@
#include "KingSystem/ActorSystem/actAiBehavior.h"
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/ActorSystem/behaviorDummyBehavior.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
diff --git a/src/KingSystem/ActorSystem/actAiQuery.cpp b/src/KingSystem/ActorSystem/actAiQuery.cpp
index 97f9ac33..cbfef6c0 100644
--- a/src/KingSystem/ActorSystem/actAiQuery.cpp
+++ b/src/KingSystem/ActorSystem/actAiQuery.cpp
@@ -3,7 +3,7 @@
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/ActorSystem/actAiClassDef.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/Resource/Actor/resResourceAIProgram.h"
namespace ksys::act::ai {
diff --git a/src/KingSystem/System/DebugFinder.cpp b/src/KingSystem/ActorSystem/actDebugFinder.cpp
index 7e5a1d82..54b4e1f8 100644
--- a/src/KingSystem/System/DebugFinder.cpp
+++ b/src/KingSystem/ActorSystem/actDebugFinder.cpp
@@ -1,6 +1,6 @@
-#include "KingSystem/System/DebugFinder.h"
+#include "KingSystem/ActorSystem/actDebugFinder.h"
-namespace ksys {
+namespace ksys::act {
SEAD_SINGLETON_DISPOSER_IMPL(DebugFinder)
@@ -8,4 +8,4 @@ DebugFinder::DebugFinder() = default;
DebugFinder::~DebugFinder() = default;
-} // namespace ksys
+} // namespace ksys::act
diff --git a/src/KingSystem/System/DebugFinder.h b/src/KingSystem/ActorSystem/actDebugFinder.h
index 16eb4e4c..3ca020ca 100644
--- a/src/KingSystem/System/DebugFinder.h
+++ b/src/KingSystem/ActorSystem/actDebugFinder.h
@@ -3,7 +3,7 @@
#include <heap/seadDisposer.h>
#include <prim/seadSafeString.h>
-namespace ksys {
+namespace ksys::act {
class DebugFinder {
SEAD_SINGLETON_DISPOSER(DebugFinder)
@@ -16,4 +16,4 @@ private:
u32 unused_3 = 0;
};
-} // namespace ksys
+} // namespace ksys::act
diff --git a/src/KingSystem/ActorSystem/LOD/actLodState.cpp b/src/KingSystem/ActorSystem/actLodState.cpp
index 3b11296b..8625ab45 100644
--- a/src/KingSystem/ActorSystem/LOD/actLodState.cpp
+++ b/src/KingSystem/ActorSystem/actLodState.cpp
@@ -1,4 +1,4 @@
-#include "KingSystem/ActorSystem/LOD/actLodState.h"
+#include "KingSystem/ActorSystem/actLodState.h"
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actActorParam.h"
#include "KingSystem/ActorSystem/actActorUtil.h"
diff --git a/src/KingSystem/ActorSystem/LOD/actLodState.h b/src/KingSystem/ActorSystem/actLodState.h
index 817e1a82..817e1a82 100644
--- a/src/KingSystem/ActorSystem/LOD/actLodState.h
+++ b/src/KingSystem/ActorSystem/actLodState.h
diff --git a/src/KingSystem/ActorSystem/aiForkAI.cpp b/src/KingSystem/ActorSystem/aiForkAI.cpp
index d8cd4249..5989bdba 100644
--- a/src/KingSystem/ActorSystem/aiForkAI.cpp
+++ b/src/KingSystem/ActorSystem/aiForkAI.cpp
@@ -1,5 +1,5 @@
#include "KingSystem/ActorSystem/aiForkAI.h"
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
namespace ksys::act::ai {
diff --git a/src/KingSystem/ActorSystem/actAiRoot.cpp b/src/KingSystem/ActorSystem/aiRootAi.cpp
index 0aa8f4ac..2706a208 100644
--- a/src/KingSystem/ActorSystem/actAiRoot.cpp
+++ b/src/KingSystem/ActorSystem/aiRootAi.cpp
@@ -1,4 +1,4 @@
-#include "KingSystem/ActorSystem/actAiRoot.h"
+#include "KingSystem/ActorSystem/aiRootAi.h"
#include "KingSystem/ActorSystem/actActor.h"
#include "KingSystem/ActorSystem/actAiClassDef.h"
#include "KingSystem/Utils/InitTimeInfo.h"
diff --git a/src/KingSystem/ActorSystem/actAiRoot.h b/src/KingSystem/ActorSystem/aiRootAi.h
index c9b61df6..c9b61df6 100644
--- a/src/KingSystem/ActorSystem/actAiRoot.h
+++ b/src/KingSystem/ActorSystem/aiRootAi.h
diff --git a/src/KingSystem/Map/CMakeLists.txt b/src/KingSystem/Map/CMakeLists.txt
index b201b701..52a8c659 100644
--- a/src/KingSystem/Map/CMakeLists.txt
+++ b/src/KingSystem/Map/CMakeLists.txt
@@ -26,6 +26,4 @@ target_sources(uking PRIVATE
mapPlacementTree.h
mapRail.cpp
mapRail.h
- mapStagePreActorCache.cpp
- mapStagePreActorCache.h
)
diff --git a/src/KingSystem/Map/mapObject.cpp b/src/KingSystem/Map/mapObject.cpp
index a22274f2..c5e838a7 100644
--- a/src/KingSystem/Map/mapObject.cpp
+++ b/src/KingSystem/Map/mapObject.cpp
@@ -6,7 +6,7 @@
#include "KingSystem/Graphics/gfxForestRenderer.h"
#include "KingSystem/Map/mapObjectLink.h"
#include "KingSystem/Map/mapPlacementMgr.h"
-#include "KingSystem/Map/mapStagePreActorCache.h"
+#include "KingSystem/System/StagePreActorCache.h"
#include "KingSystem/Terrain/teraSystem.h"
#include "KingSystem/Utils/Debug.h"
diff --git a/src/KingSystem/Map/mapPlacementAreaMgr.h b/src/KingSystem/Map/mapPlacementAreaMgr.h
index dee435f5..e040c417 100644
--- a/src/KingSystem/Map/mapPlacementAreaMgr.h
+++ b/src/KingSystem/Map/mapPlacementAreaMgr.h
@@ -6,8 +6,8 @@
#include <prim/seadSafeString.h>
#include <prim/seadTypedBitFlag.h>
-#include "KingSystem/Map/mapStagePreActorCache.h"
#include "KingSystem/Map/mapTypes.h"
+#include "KingSystem/System/StagePreActorCache.h"
#include "KingSystem/Utils/Types.h"
namespace ksys::gdt {
diff --git a/src/KingSystem/Map/mapPlacementMapMgr.h b/src/KingSystem/Map/mapPlacementMapMgr.h
index 913c419a..6fb6d848 100644
--- a/src/KingSystem/Map/mapPlacementMapMgr.h
+++ b/src/KingSystem/Map/mapPlacementMapMgr.h
@@ -8,11 +8,14 @@
#include "KingSystem/Resource/resHandle.h"
#include "KingSystem/Utils/Types.h"
+namespace ksys::act {
+class FarActorMerge;
+} // namespace ksys::act
+
namespace ksys::map {
class MapProperties;
class Placement18;
-class FarActorMerge;
class PlacementActors;
class PlacementMap;
@@ -49,7 +52,7 @@ private:
s32 _18;
s32 _1c;
PlacementMapArray mMapArray;
- FarActorMerge* mFarActorMerge;
+ act::FarActorMerge* mFarActorMerge;
s32 mNeedLoadDynMap;
s32 mNeedLoadDynMapPhysics;
bool mIsShrineOrDivineBeast;
diff --git a/src/KingSystem/Map/mapStagePreActorCache.cpp b/src/KingSystem/Map/mapStagePreActorCache.cpp
deleted file mode 100644
index cc853e2a..00000000
--- a/src/KingSystem/Map/mapStagePreActorCache.cpp
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "KingSystem/Map/mapStagePreActorCache.h"
-
-namespace ksys::map {
-
-SEAD_SINGLETON_DISPOSER_IMPL(StagePreActorCache)
-
-} // namespace ksys::map
diff --git a/src/KingSystem/Resource/Actor/resResourceASResourceExtension.cpp b/src/KingSystem/Resource/Actor/resResourceASSetting.cpp
index c44948f1..915bd1c4 100644
--- a/src/KingSystem/Resource/Actor/resResourceASResourceExtension.cpp
+++ b/src/KingSystem/Resource/Actor/resResourceASSetting.cpp
@@ -1,9 +1,10 @@
-#include "KingSystem/Resource/Actor/resResourceASResourceExtension.h"
+#include "KingSystem/Resource/Actor/resResourceASSetting.h"
#include <container/seadSafeArray.h>
#include <optional>
#include <prim/seadSafeString.h>
-#include "KingSystem/ActorSystem/actASSetting.h"
-#include "KingSystem/Resource/resResourceASSetting.h"
+#include "KingSystem/Resource/Actor/resResourceASResourceExtension.h"
+#include "KingSystem/Resource/Actor/resResourceASSettingMgr.h"
+#include "KingSystem/Resource/resLoadRequest.h"
namespace ksys::res {
@@ -211,13 +212,41 @@ bool ASBitIndexParser::parse(const ASParamParser::ParseArgs& args) {
return true;
}
-template <typename T>
-static ASParamParser* factoryImpl_(sead::Heap* heap) {
- return new (heap) T;
+bool ASSetting::BoneParams::parse(const ASParamParser::ParseArgs& args) {
+ const auto num_objects = args.res_list.getResParameterObjNum();
+ if (num_objects == 0)
+ return true;
+
+ if (!mBuffer.tryAllocBuffer(num_objects, args.heap))
+ return false;
+
+ auto it = mBuffer.begin();
+ const auto end = mBuffer.end();
+
+ sead::FixedSafeString<32> obj_name{"BoneParam"};
+ const auto obj_name_base_len = obj_name.calcLength();
+
+ auto res_it = args.res_list.objBegin();
+ const auto res_end = args.res_list.objEnd();
+
+ for (; it != end && res_it != res_end; ++it, ++res_it) {
+ it->mBone.init("", "Bone", "ボーン名", "", &it->mObj);
+ it->mWeight.init(0.0, "Weight", "ウェイト値", "Min=0.f,Max=1.f", &it->mObj);
+
+ obj_name.trim(obj_name_base_len);
+ obj_name.appendWithFormat("%d", res_it.getIndex());
+ mList.addObj(&it->mObj, obj_name);
+ }
+
+ return true;
}
-static ASParamParser* dummyASParserFactoryImpl_(sead::Heap*) {
- return nullptr;
+f32 ASSetting::BoneParams::getBoneWeight(const sead::SafeString& name) const {
+ for (const auto& param : mBuffer) {
+ if (name == *param.mBone)
+ return *param.mWeight;
+ }
+ return 1.0;
}
namespace {
@@ -226,17 +255,7 @@ struct Factory {
ASParamParser* (*make)(sead::Heap* heap);
};
-sead::SafeArray<Factory, ASParamParser::NumTypes> sASFactories{{
- {"FrameCtrl", factoryImpl_<ASFrameCtrlParser>},
- {"TriggerEvents", factoryImpl_<ASTriggerEventsParser>},
- {"HoldEvents", factoryImpl_<ASHoldEventsParser>},
- {"StringArray", factoryImpl_<ASStringArrayParser>},
- {"Ranges", factoryImpl_<ASRangesParser>},
- {"FloatArray", factoryImpl_<ASFloatArrayParser>},
- {"IntArray", factoryImpl_<ASIntArrayParser>},
- {"BitIndex", factoryImpl_<ASBitIndexParser>},
- {"BlenderBone", dummyASParserFactoryImpl_},
-}};
+extern sead::SafeArray<Factory, ASParamParser::NumTypes> sASFactories;
} // namespace
ASExtensions::~ASExtensions() {
@@ -304,7 +323,7 @@ ASParamParser* ASExtensions::makeParser(const ASParamParser::ParseArgs& args) co
const auto obj = args.res_list.getResParameterObj(0);
if (obj.getNum() > 0) {
const sead::SafeString name = obj.getResParameter(0).getData<const char>();
- return act::ASSetting::instance()->getBoneParams(name);
+ return ASSettingMgr::instance()->getBoneParams(name);
}
}
@@ -326,6 +345,19 @@ ASParamParser* ASExtensions::makeParser(const ASParamParser::ParseArgs& args) co
return parser;
}
+// NON_MATCHING: sead::DirectResource to res::ASSetting cast nullptr check; branching for the return
+ASParamParser* ASSettingMgr::getBoneParams(const sead::SafeString& key) const {
+ auto* res = sead::DynamicCast<ASSetting>(mHandle.getResource());
+ if (!res)
+ return nullptr;
+
+ for (auto& bones : res->getBlenderBones()) {
+ if (key == bones.mKeyName.ref())
+ return &bones.mBoneParams;
+ }
+ return nullptr;
+}
+
ASParamParser* ASExtensions::getParser(ASParamParser::Type type) const {
for (int i = 0, n = mParsers.size(); i < n; ++i) {
auto* parser = mParsers[i];
@@ -335,4 +367,106 @@ ASParamParser* ASExtensions::getParser(ASParamParser::Type type) const {
return nullptr;
}
+ASSetting::ASSetting() {
+ mType = "assetting";
+ mVersion = 0;
+}
+
+ASSetting::~ASSetting() {
+ mBlenderBones.freeBuffer();
+}
+
+void ASSetting::doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) {}
+
+bool allocBlenderBones(sead::Buffer<ASSetting::BlenderBone>& buffer, int size, sead::Heap* heap,
+ int align = sizeof(void*));
+
+bool ASSetting::parse_(u8* data, size_t size, sead::Heap* heap) {
+ if (!data)
+ return true;
+
+ agl::utl::ResParameterArchive archive{data};
+ const auto root = archive.getRootList();
+
+ addList(&mBlenderBoneList, "BlenderBone");
+
+ const auto lists = agl::utl::getResParameterList(root, "BlenderBone");
+ if (!lists.ptr())
+ return true;
+
+ const auto num_blender_bones = lists.getResParameterListNum();
+ if (num_blender_bones == 0)
+ return true;
+
+ if (!allocBlenderBones(mBlenderBones, num_blender_bones, heap))
+ return false;
+
+ auto res_it = lists.listBegin();
+ const auto res_it_end = lists.listEnd();
+ sead::FixedSafeString<32> list_name{"BlenderBone"};
+ const auto list_name_base_len = list_name.calcLength();
+
+ ASParamParser::ParseArgs args;
+ args.res_list = {};
+ args.heap = heap;
+
+ auto it = mBlenderBones.begin();
+ const auto end = mBlenderBones.end();
+ for (; it != end && res_it != res_it_end; ++it, ++res_it) {
+ list_name.trim(list_name_base_len);
+ list_name.appendWithFormat("%d", it.getIndex());
+ mBlenderBoneList.addList(&it->mList, list_name);
+
+ it->mKeyName.init("", "KeyName", "キー名", "", &it->mNameParamObj);
+ it->mList.addObj(&it->mNameParamObj, "NameParam");
+ it->mList.addList(&it->mBoneParams.getList(), "BoneParam");
+
+ const auto list = *res_it;
+ args.list = &it->mList;
+ args.res_list = agl::utl::getResParameterList(list, "BoneParam");
+ if (!it->mBoneParams.parse(args))
+ return false;
+ }
+
+ applyResParameterArchive(archive);
+ return true;
+}
+
+bool allocBlenderBones(sead::Buffer<ASSetting::BlenderBone>& buffer, int size, sead::Heap* heap,
+ int align) {
+ return buffer.tryAllocBuffer(size, heap, align);
+}
+
+SEAD_SINGLETON_DISPOSER_IMPL(ASSettingMgr)
+
+void ASSettingMgr::init(const sead::SafeString& config_path, sead::Heap* heap) {
+ LoadRequest req;
+ req.mRequester = "ASSetting";
+ req._22 = true;
+ mHandle.load(config_path, &req);
+}
+
+template <typename T>
+static ASParamParser* factoryImpl_(sead::Heap* heap) {
+ return new (heap) T;
+}
+
+static ASParamParser* dummyASParserFactoryImpl_(sead::Heap*) {
+ return nullptr;
+}
+
+namespace {
+sead::SafeArray<Factory, ASParamParser::NumTypes> sASFactories{{
+ {"FrameCtrl", factoryImpl_<ASFrameCtrlParser>},
+ {"TriggerEvents", factoryImpl_<ASTriggerEventsParser>},
+ {"HoldEvents", factoryImpl_<ASHoldEventsParser>},
+ {"StringArray", factoryImpl_<ASStringArrayParser>},
+ {"Ranges", factoryImpl_<ASRangesParser>},
+ {"FloatArray", factoryImpl_<ASFloatArrayParser>},
+ {"IntArray", factoryImpl_<ASIntArrayParser>},
+ {"BitIndex", factoryImpl_<ASBitIndexParser>},
+ {"BlenderBone", dummyASParserFactoryImpl_},
+}};
+} // namespace
+
} // namespace ksys::res
diff --git a/src/KingSystem/Resource/resResourceASSetting.h b/src/KingSystem/Resource/Actor/resResourceASSetting.h
index c9462199..84575fc4 100644
--- a/src/KingSystem/Resource/resResourceASSetting.h
+++ b/src/KingSystem/Resource/Actor/resResourceASSetting.h
@@ -29,7 +29,7 @@ public:
SEAD_RTTI_OVERRIDE(BoneParams, ASParamParser)
public:
BoneParams() : ASParamParser(Type::BlenderBone) {}
- ~BoneParams() override;
+ ~BoneParams() override { mBuffer.freeBuffer(); }
bool parse(const ParseArgs& args) override;
f32 getBoneWeight(const sead::SafeString& name) const;
diff --git a/src/KingSystem/Resource/Actor/resResourceASSettingMgr.h b/src/KingSystem/Resource/Actor/resResourceASSettingMgr.h
new file mode 100644
index 00000000..e4d16984
--- /dev/null
+++ b/src/KingSystem/Resource/Actor/resResourceASSettingMgr.h
@@ -0,0 +1,26 @@
+#pragma once
+
+#include <heap/seadDisposer.h>
+#include <prim/seadSafeString.h>
+#include "KingSystem/Resource/Actor/resResourceASSetting.h"
+#include "KingSystem/Resource/resHandle.h"
+#include "KingSystem/Utils/Types.h"
+
+namespace ksys::res {
+
+// FIXME: very incomplete
+class ASSettingMgr {
+ SEAD_SINGLETON_DISPOSER(ASSettingMgr)
+ ASSettingMgr() = default;
+ virtual ~ASSettingMgr() = default;
+
+public:
+ void init(const sead::SafeString& config_path, sead::Heap* heap);
+ ASParamParser* getBoneParams(const sead::SafeString& key) const;
+
+private:
+ Handle mHandle;
+};
+KSYS_CHECK_SIZE_NX150(ASSettingMgr, 0x78);
+
+} // namespace ksys::res
diff --git a/src/KingSystem/Resource/CMakeLists.txt b/src/KingSystem/Resource/CMakeLists.txt
index 1a9e5b28..825fe47a 100644
--- a/src/KingSystem/Resource/CMakeLists.txt
+++ b/src/KingSystem/Resource/CMakeLists.txt
@@ -128,8 +128,6 @@ target_sources(uking PRIVATE
resResource.cpp
resResource.h
- resResourceASSetting.cpp
- resResourceASSetting.h
resResourceArchive.cpp
resResourceArchive.h
resResourceGameData.cpp
@@ -153,8 +151,10 @@ target_sources(uking PRIVATE
Actor/resResourceASList.h
Actor/resResourceASResource.cpp
Actor/resResourceASResource.h
- Actor/resResourceASResourceExtension.cpp
Actor/resResourceASResourceExtension.h
+ Actor/resResourceASSetting.cpp
+ Actor/resResourceASSetting.h
+ Actor/resResourceASSettingMgr.h
Actor/resResourceAttCheck.cpp
Actor/resResourceAttCheck.h
Actor/resResourceAttClient.cpp
diff --git a/src/KingSystem/Resource/resResourceASSetting.cpp b/src/KingSystem/Resource/resResourceASSetting.cpp
deleted file mode 100644
index be0a3865..00000000
--- a/src/KingSystem/Resource/resResourceASSetting.cpp
+++ /dev/null
@@ -1,113 +0,0 @@
-#include "KingSystem/Resource/resResourceASSetting.h"
-
-namespace ksys::res {
-
-ASSetting::ASSetting() {
- mType = "assetting";
- mVersion = 0;
-}
-
-ASSetting::~ASSetting() {
- mBlenderBones.freeBuffer();
-}
-
-void ASSetting::doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) {}
-
-bool allocBlenderBones(sead::Buffer<ASSetting::BlenderBone>& buffer, int size, sead::Heap* heap,
- int align = sizeof(void*)) {
- return buffer.tryAllocBuffer(size, heap, align);
-}
-
-bool ASSetting::parse_(u8* data, size_t size, sead::Heap* heap) {
- if (!data)
- return true;
-
- agl::utl::ResParameterArchive archive{data};
- const auto root = archive.getRootList();
-
- addList(&mBlenderBoneList, "BlenderBone");
-
- const auto lists = agl::utl::getResParameterList(root, "BlenderBone");
- if (!lists.ptr())
- return true;
-
- const auto num_blender_bones = lists.getResParameterListNum();
- if (num_blender_bones == 0)
- return true;
-
- if (!allocBlenderBones(mBlenderBones, num_blender_bones, heap))
- return false;
-
- auto res_it = lists.listBegin();
- const auto res_it_end = lists.listEnd();
- sead::FixedSafeString<32> list_name{"BlenderBone"};
- const auto list_name_base_len = list_name.calcLength();
-
- ASParamParser::ParseArgs args;
- args.res_list = {};
- args.heap = heap;
-
- auto it = mBlenderBones.begin();
- const auto end = mBlenderBones.end();
- for (; it != end && res_it != res_it_end; ++it, ++res_it) {
- list_name.trim(list_name_base_len);
- list_name.appendWithFormat("%d", it.getIndex());
- mBlenderBoneList.addList(&it->mList, list_name);
-
- it->mKeyName.init("", "KeyName", "キー名", "", &it->mNameParamObj);
- it->mList.addObj(&it->mNameParamObj, "NameParam");
- it->mList.addList(&it->mBoneParams.getList(), "BoneParam");
-
- const auto list = *res_it;
- args.list = &it->mList;
- args.res_list = agl::utl::getResParameterList(list, "BoneParam");
- if (!it->mBoneParams.parse(args))
- return false;
- }
-
- applyResParameterArchive(archive);
- return true;
-}
-
-ASSetting::BoneParams::~BoneParams() {
- mBuffer.freeBuffer();
-}
-
-bool ASSetting::BoneParams::parse(const ASParamParser::ParseArgs& args) {
- const auto num_objects = args.res_list.getResParameterObjNum();
- if (num_objects == 0)
- return true;
-
- if (!mBuffer.tryAllocBuffer(num_objects, args.heap))
- return false;
-
- auto it = mBuffer.begin();
- const auto end = mBuffer.end();
-
- sead::FixedSafeString<32> obj_name{"BoneParam"};
- const auto obj_name_base_len = obj_name.calcLength();
-
- auto res_it = args.res_list.objBegin();
- const auto res_end = args.res_list.objEnd();
-
- for (; it != end && res_it != res_end; ++it, ++res_it) {
- it->mBone.init("", "Bone", "ボーン名", "", &it->mObj);
- it->mWeight.init(0.0, "Weight", "ウェイト値", "Min=0.f,Max=1.f", &it->mObj);
-
- obj_name.trim(obj_name_base_len);
- obj_name.appendWithFormat("%d", res_it.getIndex());
- mList.addObj(&it->mObj, obj_name);
- }
-
- return true;
-}
-
-f32 ASSetting::BoneParams::getBoneWeight(const sead::SafeString& name) const {
- for (const auto& param : mBuffer) {
- if (name == *param.mBone)
- return *param.mWeight;
- }
- return 1.0;
-}
-
-} // namespace ksys::res
diff --git a/src/KingSystem/System/CMakeLists.txt b/src/KingSystem/System/CMakeLists.txt
index 333d110d..81b08666 100644
--- a/src/KingSystem/System/CMakeLists.txt
+++ b/src/KingSystem/System/CMakeLists.txt
@@ -15,8 +15,6 @@ target_sources(uking PRIVATE
CoreInfo.h
CurrentResNameMgr.cpp
CurrentResNameMgr.h
- DebugFinder.cpp
- DebugFinder.h
DebugMessage.h
GameConfig.h
HavokWorkerMgr.cpp
@@ -48,6 +46,8 @@ target_sources(uking PRIVATE
Revision.h
StageInfo.cpp
StageInfo.h
+ StagePreActorCache.cpp
+ StagePreActorCache.h
StarterPackMgr.cpp
StarterPackMgr.h
StringBoard.h
diff --git a/src/KingSystem/System/StagePreActorCache.cpp b/src/KingSystem/System/StagePreActorCache.cpp
new file mode 100644
index 00000000..0b4a6484
--- /dev/null
+++ b/src/KingSystem/System/StagePreActorCache.cpp
@@ -0,0 +1,7 @@
+#include "KingSystem/System/StagePreActorCache.h"
+
+namespace ksys {
+
+SEAD_SINGLETON_DISPOSER_IMPL(StagePreActorCache)
+
+} // namespace ksys
diff --git a/src/KingSystem/Map/mapStagePreActorCache.h b/src/KingSystem/System/StagePreActorCache.h
index 666779e8..2b9927ff 100644
--- a/src/KingSystem/Map/mapStagePreActorCache.h
+++ b/src/KingSystem/System/StagePreActorCache.h
@@ -8,8 +8,10 @@ class ForestRenderer;
}
namespace ksys::map {
-
class LazyTraverseList;
+}
+
+namespace ksys {
// TODO
class StagePreActorCache {
@@ -17,13 +19,13 @@ class StagePreActorCache {
StagePreActorCache();
public:
- LazyTraverseList* getObjects() const { return mObjects; }
+ map::LazyTraverseList* getObjects() const { return mObjects; }
auto* getForestRenderer() { return mForestRenderer; }
private:
char _0[0x20];
- LazyTraverseList* mObjects;
+ map::LazyTraverseList* mObjects;
gfx::ForestRenderer* mForestRenderer;
};
-} // namespace ksys::map
+} // namespace ksys