mirror of
https://github.com/zeldaret/botw
synced 2026-10-21 09:10:57 -04:00
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:
+30
-30
@@ -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 {
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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,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 {
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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,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"
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
+3
-3
@@ -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
-1
@@ -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,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"
|
||||
@@ -26,6 +26,4 @@ target_sources(uking PRIVATE
|
||||
mapPlacementTree.h
|
||||
mapRail.cpp
|
||||
mapRail.h
|
||||
mapStagePreActorCache.cpp
|
||||
mapStagePreActorCache.h
|
||||
)
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
+154
-20
@@ -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
|
||||
+1
-1
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
+6
-4
@@ -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
|
||||
Reference in New Issue
Block a user