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)
This commit is contained in:
Léo Lam
2026-09-28 03:39:31 +02:00
parent e400fe7025
commit ea13bac74a
34 changed files with 263 additions and 271 deletions
+30 -30
View File
@@ -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
Can't render this file because it is too large.
@@ -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 {
+6 -7
View File
@@ -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
@@ -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
-26
View File
@@ -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
+1 -1
View File
@@ -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 {
@@ -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 {
@@ -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"
@@ -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 {
+1 -1
View File
@@ -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 {
@@ -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"
+1 -1
View File
@@ -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 {
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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 {
@@ -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
@@ -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
@@ -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"
+1 -1
View File
@@ -1,5 +1,5 @@
#include "KingSystem/ActorSystem/aiForkAI.h"
#include "KingSystem/ActorSystem/actAiRoot.h"
#include "KingSystem/ActorSystem/aiRootAi.h"
namespace ksys::act::ai {
@@ -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"
-2
View File
@@ -26,6 +26,4 @@ target_sources(uking PRIVATE
mapPlacementTree.h
mapRail.cpp
mapRail.h
mapStagePreActorCache.cpp
mapStagePreActorCache.h
)
+1 -1
View File
@@ -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"
+1 -1
View File
@@ -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 {
+5 -2
View File
@@ -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;
@@ -1,7 +0,0 @@
#include "KingSystem/Map/mapStagePreActorCache.h"
namespace ksys::map {
SEAD_SINGLETON_DISPOSER_IMPL(StagePreActorCache)
} // namespace ksys::map
@@ -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
@@ -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;
@@ -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
+3 -3
View File
@@ -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
@@ -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
+2 -2
View File
@@ -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
@@ -0,0 +1,7 @@
#include "KingSystem/System/StagePreActorCache.h"
namespace ksys {
SEAD_SINGLETON_DISPOSER_IMPL(StagePreActorCache)
} // namespace ksys
@@ -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