Merge pull request #227 from leoetlino/stack/03d4-link-order-moves

ksys: move some source files to better match link order
This commit is contained in:
Léo Lam
2026-10-14 08:50:25 +01:00
committed by GitHub
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