diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 8f5981b7..3808767b 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -93154,8 +93154,8 @@ 0x000000710120727c,res::ResourceMgrTask::defragAllMemoryMgr,800, 0x000000710120759c,res::ResourceMgrTask::__auto7,20,_ZNK4ksys3res15ResourceMgrTask12isDefragDoneEv 0x00000071012075b0,res::ResourceMgrTask::getDefragProgress,104,_ZNK4ksys3res15ResourceMgrTask17getDefragProgressEv -0x0000007101207618,sub_7101207618,80, -0x0000007101207668,sub_7101207668,64, +0x0000007101207618,sub_7101207618,80,_ZN4ksys3res15ResourceMgrTask15registerFactoryEPN4sead15ResourceFactoryERKNS2_14SafeStringBaseIcEE +0x0000007101207668,sub_7101207668,64,_ZN4ksys3res15ResourceMgrTask17unregisterFactoryEPN4sead15ResourceFactoryE 0x00000071012076a8,res::ResourceMgrTask::getCacheIdx,956, 0x0000007101207a64,stringPathManipulationStuff,1284, 0x0000007101207f68,sub_7101207F68,680,_ZNK4sead8ObjArrayINS_14SafeStringBaseIcEEE12binarySearchEPKS2_? @@ -93317,8 +93317,8 @@ 0x00000071012130c8,sub_71012130C8,8,_ZN4ksys3res19ResourceUnitMapNode6erase_Ev 0x00000071012130d0,sub_71012130D0,116, 0x0000007101213144,isResourceMgrOom,16, -0x0000007101213154,res::registerEntryFactory,32, -0x0000007101213174,res::unregisterEntryFactory,24, +0x0000007101213154,res::registerEntryFactory,32,_ZN4ksys3res20registerEntryFactoryEPNS0_16EntryFactoryBaseERKN4sead14SafeStringBaseIcEE +0x0000007101213174,res::unregisterEntryFactory,24,_ZN4ksys3res22unregisterEntryFactoryEPNS0_16EntryFactoryBaseE 0x000000710121318c,res::setResourceMgrPack,24, 0x00000071012131a4,res::clearAllCaches,16, 0x00000071012131b4,res::clearAllCaches2,16, diff --git a/src/KingSystem/Resource/resResourceMgrTask.cpp b/src/KingSystem/Resource/resResourceMgrTask.cpp index 33bb0a49..e9d0e75e 100644 --- a/src/KingSystem/Resource/resResourceMgrTask.cpp +++ b/src/KingSystem/Resource/resResourceMgrTask.cpp @@ -150,6 +150,17 @@ f32 ResourceMgrTask::getDefragProgress() const { return f32(_4cc) / f32(_4c8); } +void ResourceMgrTask::registerFactory(sead::ResourceFactory* factory, + const sead::SafeString& name) { + auto lock = sead::makeScopedLock(mFactoryCS); + sead::ResourceMgr::instance()->registerFactory(factory, name); +} + +void ResourceMgrTask::unregisterFactory(sead::ResourceFactory* factory) { + auto lock = sead::makeScopedLock(mFactoryCS); + sead::ResourceMgr::instance()->unregisterFactory(factory); +} + void ResourceMgrTask::cancelTasks() { stubbedLogFunction(); stubbedLogFunction(); diff --git a/src/KingSystem/Resource/resResourceMgrTask.h b/src/KingSystem/Resource/resResourceMgrTask.h index 187e4552..81e3e083 100644 --- a/src/KingSystem/Resource/resResourceMgrTask.h +++ b/src/KingSystem/Resource/resResourceMgrTask.h @@ -123,6 +123,9 @@ public: bool isDefragDone() const; f32 getDefragProgress() const; + void registerFactory(sead::ResourceFactory* factory, const sead::SafeString& name); + void unregisterFactory(sead::ResourceFactory* factory); + s32 getCacheIdx(const sead::SafeString& path) const; void cancelTasks(); diff --git a/src/KingSystem/Resource/resSystem.cpp b/src/KingSystem/Resource/resSystem.cpp index f4238ad1..c40b9df9 100644 --- a/src/KingSystem/Resource/resSystem.cpp +++ b/src/KingSystem/Resource/resSystem.cpp @@ -1,4 +1,5 @@ #include "KingSystem/Resource/resSystem.h" +#include "KingSystem/Resource/resEntryFactory.h" #include "KingSystem/Resource/resResourceMgrTask.h" namespace ksys::res { @@ -7,6 +8,14 @@ bool stubbedLogFunction() { return true; } +void registerEntryFactory(EntryFactoryBase* factory, const sead::SafeString& name) { + ResourceMgrTask::instance()->registerFactory(factory, name); +} + +void unregisterEntryFactory(EntryFactoryBase* factory) { + ResourceMgrTask::instance()->unregisterFactory(factory); +} + bool isHostPath(const sead::SafeString& path) { return ResourceMgrTask::instance()->isHostPath(path); }