From d893fd5ead7e1061cad38d25d517e1738d383a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Tue, 8 Feb 2022 21:34:53 +0100 Subject: [PATCH] Remove unnecessary usages of sead::StorageFor Turns out they are just value-initialised aggregates. --- data/uking_functions.csv | 6 +- src/Game/DLC/aocManager.cpp | 20 +-- src/Game/DLC/aocManager.h | 3 +- .../ActorSystem/actActorLimiter.cpp | 2 +- src/KingSystem/ActorSystem/actActorLimiter.h | 11 +- .../ActorSystem/actBaseProcJobQue.cpp | 2 +- .../ActorSystem/actBaseProcJobQue.h | 16 +-- src/KingSystem/ActorSystem/actBaseProcMgr.cpp | 15 +-- src/KingSystem/ActorSystem/actBaseProcMgr.h | 4 +- src/KingSystem/GameData/gdtManager.cpp | 2 +- src/KingSystem/GameData/gdtTriggerParam.cpp | 23 ++-- src/KingSystem/GameData/gdtTriggerParam.h | 9 +- .../Resource/Actor/resResourceASList.cpp | 8 +- .../Resource/Actor/resResourceASList.h | 5 +- .../Resource/Actor/resResourceModelList.cpp | 124 +++++++++--------- .../Resource/Actor/resResourceModelList.h | 9 +- 16 files changed, 112 insertions(+), 147 deletions(-) diff --git a/data/uking_functions.csv b/data/uking_functions.csv index df1655b2..04d7d057 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -91561,7 +91561,7 @@ Address,Quality,Size,Name 0x00000071011aed1c,O,000040,_ZThn664_N4ksys3res9ModelListD0Ev 0x00000071011aed44,O,000004,_ZN4ksys3res9ModelList9doCreate_EPhjPN4sead4HeapE 0x00000071011aed48,O,000004,_ZThn632_N4ksys3res9ModelList9doCreate_EPhjPN4sead4HeapE -0x00000071011aed4c,m,002096,_ZN4ksys3res9ModelList6parse_EPhmPN4sead4HeapE +0x00000071011aed4c,O,002096,_ZN4ksys3res9ModelList6parse_EPhmPN4sead4HeapE 0x00000071011af57c,O,002488,_ZN4ksys3res9ModelList14parseModelDataERKN3agl3utl16ResParameterListEPN4sead4HeapE 0x00000071011aff34,O,002636,_ZN4ksys3res9ModelList14parseAnmTargetERKN3agl3utl16ResParameterListEPN4sead4HeapE 0x00000071011b0980,O,000008,_ZThn632_N4ksys3res9ModelList6parse_EPhmPN4sead4HeapE @@ -91862,7 +91862,7 @@ Address,Quality,Size,Name 0x00000071011bf214,O,000020,_ZN4ksys3act11BaseProcMgr13decrementUnk3Ev 0x00000071011bf228,U,000732,BaseProcMgr::writeResidentActorsCsv 0x00000071011bf504,U,000084,appendToResidentActorsList -0x00000071011bf558,m,000068,_ZN4ksys3act11BaseProcMgr17queueExtraJobPushEPNS0_15BaseProcJobLinkE +0x00000071011bf558,O,000068,_ZN4ksys3act11BaseProcMgr17queueExtraJobPushEPNS0_15BaseProcJobLinkE 0x00000071011bf59c,M,000164,_ZN4ksys3act11BaseProcMgr26moveExtraJobsToOtherBufferENS0_7JobTypeE 0x00000071011bf640,O,000080,_ZN4ksys3act11BaseProcMgr15hasExtraJobLinkEPNS0_15BaseProcJobLinkEi 0x00000071011bf690,O,000040,_ZN4ksys3act11BaseProcMgr19clearExtraJobArraysEv @@ -97024,7 +97024,7 @@ Address,Quality,Size,Name 0x00000071013069d4,O,000208,_ZN4ksys3act14BaseProcJobQue12pushJobQueueEPN4sead9WorkerMgrEPNS0_16BaseProcJobListsEiNS0_7JobTypeE 0x0000007101306aa4,O,000516,_ZN4ksys3act14BaseProcJobQue8pushJobsEPN4sead11FixedSizeJQEPNS0_16BaseProcJobListsEibNS0_7JobTypeE 0x0000007101306ca8,m,000288,_ZN4ksys3act14BaseProcJobQue13pushExtraJobsEPN4sead11FixedSizeJQEPNS0_16BaseProcJobListsEiNS0_7JobTypeE -0x0000007101306dc8,O,000180,_ZN4ksys3act14BaseProcJobQue13pushExtraJobsEPN4sead11FixedSizeJQERKN3agl3utl14AtomicPtrArrayINS0_15BaseProcJobLinkEEE +0x0000007101306dc8,W,000180,_ZN4ksys3act14BaseProcJobQue13pushExtraJobsEPN4sead11FixedSizeJQERKN3agl3utl14AtomicPtrArrayINS0_15BaseProcJobLinkEEE 0x0000007101306e7c,O,000028,_ZN4ksys3act11BaseProcJob6invokeEv 0x0000007101306e98,O,000036,_ZN4ksys3act11BaseProcJobD0Ev 0x0000007101306ebc,U,000080, diff --git a/src/Game/DLC/aocManager.cpp b/src/Game/DLC/aocManager.cpp index ff8dce15..a6300b95 100644 --- a/src/Game/DLC/aocManager.cpp +++ b/src/Game/DLC/aocManager.cpp @@ -50,7 +50,7 @@ constexpr int NumDungeons = 16; SEAD_SINGLETON_DISPOSER_IMPL(Manager) -Manager::Manager() : mGdtReinitSlot{this, &Manager::onGdtReinit} { +Manager::Manager() : mVersionFile(), mGdtReinitSlot{this, &Manager::onGdtReinit} { resetFlags(); } @@ -113,7 +113,7 @@ void Manager::loadVersionFile() { req._26 = false; req.mAocFileDevice = mFileDevice; const sead::SafeString path = "System/AocVersion.txt"; - mVersionFile->file_handle.requestLoad(path, &req); + mVersionFile.file_handle.requestLoad(path, &req); } void Manager::loadAocMainFieldPack(ksys::OverlayArena* arena) { @@ -404,19 +404,19 @@ bool Manager::changeMoviePath(sead::BufferedSafeString& path) const { } bool Manager::parseVersion() { - if (!mVersionFile->readVersion()) + if (!mVersionFile.readVersion()) return false; - if (mVersionFile->string.isEmpty()) { + if (mVersionFile.string.isEmpty()) { mVersion = 0; return true; } { - const int dot_index = mVersionFile->string.findIndex("."); + const int dot_index = mVersionFile.string.findIndex("."); const int minor_index = dot_index + 1; - if (dot_index <= 0 || minor_index >= mVersionFile->string.calcLength()) { - mVersionFile->string.clear(); + if (dot_index <= 0 || minor_index >= mVersionFile.string.calcLength()) { + mVersionFile.string.clear(); mVersion = 0; return true; } @@ -424,13 +424,13 @@ bool Manager::parseVersion() { u32 major, minor; const auto parse = [&] { sead::FixedSafeString<16> major_str; - major_str.copy(mVersionFile->string, dot_index); + major_str.copy(mVersionFile.string, dot_index); constexpr auto base = sead::StringUtil::CardinalNumber::Base10; if (!sead::StringUtil::tryParseU32(&major, major_str, base)) return false; - const auto minor_str = mVersionFile->string.getPart(minor_index); + const auto minor_str = mVersionFile.string.getPart(minor_index); if (!sead::StringUtil::tryParseU32(&minor, minor_str, base)) return false; @@ -438,7 +438,7 @@ bool Manager::parseVersion() { }; if (!parse()) { - mVersionFile->string.clear(); + mVersionFile.string.clear(); mVersion = 0; return true; } diff --git a/src/Game/DLC/aocManager.h b/src/Game/DLC/aocManager.h index 0385f461..9dd19636 100644 --- a/src/Game/DLC/aocManager.h +++ b/src/Game/DLC/aocManager.h @@ -6,7 +6,6 @@ #include #include #include -#include #include "KingSystem/GameData/gdtManager.h" #include "KingSystem/Resource/resHandle.h" #include "KingSystem/Resource/resResourceMgrTask.h" @@ -106,7 +105,7 @@ private: sead::FileDevice* mFileDevice{}; ksys::res::FileDevicePrefix mVersionFileDevPrefix; - sead::StorageFor mVersionFile{sead::ZeroInitializeTag{}}; + VersionFile mVersionFile{}; u32 mVersion{}; ksys::res::Handle mAocMainFieldPack; diff --git a/src/KingSystem/ActorSystem/actActorLimiter.cpp b/src/KingSystem/ActorSystem/actActorLimiter.cpp index ad805d7e..94531c96 100644 --- a/src/KingSystem/ActorSystem/actActorLimiter.cpp +++ b/src/KingSystem/ActorSystem/actActorLimiter.cpp @@ -62,7 +62,7 @@ SEAD_SINGLETON_DISPOSER_IMPL(ActorLimiter) bool ActorLimiter::init(sead::Heap* heap, const sead::SafeArray& capacities) { for (s32 i = 0; i < NumCategories; ++i) { - if (!mLists.ref()[i].init(heap, capacities[i])) + if (!mLists[i].init(heap, capacities[i])) return false; } return true; diff --git a/src/KingSystem/ActorSystem/actActorLimiter.h b/src/KingSystem/ActorSystem/actActorLimiter.h index b2d98bfe..6112de26 100644 --- a/src/KingSystem/ActorSystem/actActorLimiter.h +++ b/src/KingSystem/ActorSystem/actActorLimiter.h @@ -4,7 +4,6 @@ #include #include #include -#include #include #include "KingSystem/ActorSystem/actBaseProcLink.h" #include "KingSystem/Utils/Types.h" @@ -13,8 +12,8 @@ namespace ksys::act { class ActorLimiter { SEAD_SINGLETON_DISPOSER(ActorLimiter) - ActorLimiter() = default; - ~ActorLimiter() { mLists.destruct(); } + ActorLimiter() : mLists() {} + ~ActorLimiter() = default; public: enum class Category { @@ -51,11 +50,11 @@ public: bool init(sead::Heap* heap, const sead::SafeArray& capacities); - List& get(Category category) { return mLists.ref()[s32(category)]; } - const List& get(Category category) const { return mLists.ref()[s32(category)]; } + List& get(Category category) { return mLists[s32(category)]; } + const List& get(Category category) const { return mLists[s32(category)]; } private: - sead::StorageFor> mLists{sead::ZeroInitializeTag{}}; + sead::SafeArray mLists{}; }; KSYS_CHECK_SIZE_NX150(ActorLimiter, 0x360); diff --git a/src/KingSystem/ActorSystem/actBaseProcJobQue.cpp b/src/KingSystem/ActorSystem/actBaseProcJobQue.cpp index 6803f6bd..b9cc7c04 100644 --- a/src/KingSystem/ActorSystem/actBaseProcJobQue.cpp +++ b/src/KingSystem/ActorSystem/actBaseProcJobQue.cpp @@ -4,7 +4,7 @@ namespace ksys::act { -BaseProcJobQue::BaseProcJobQue() = default; +BaseProcJobQue::BaseProcJobQue() : mPool() {} BaseProcJobQue::~BaseProcJobQue() { mJobQueue.clear(); diff --git a/src/KingSystem/ActorSystem/actBaseProcJobQue.h b/src/KingSystem/ActorSystem/actBaseProcJobQue.h index 6d2aaf54..a8670333 100644 --- a/src/KingSystem/ActorSystem/actBaseProcJobQue.h +++ b/src/KingSystem/ActorSystem/actBaseProcJobQue.h @@ -5,7 +5,6 @@ #include #include #include -#include #include #include "KingSystem/ActorSystem/actBaseProcJob.h" #include "KingSystem/Utils/Types.h" @@ -37,22 +36,9 @@ private: bool pushJobs(sead::FixedSizeJQ* queue, BaseProcJobLists* lists, int priority, bool should_reset_job_idx, JobType type); - struct Pool { - Pool() { - for (auto& job : mPool) - job.constructDefault(); - } - - u32 size() const { return u32(mPool.size()); } - auto& operator[](int idx) { return mPool[idx].ref(); } - auto& operator[](int idx) const { return mPool[idx].ref(); } - - std::array, 1200> mPool{}; - }; - int mFreeJobIdx = 0; sead::FixedSizeJQ mJobQueue; - Pool mPool; + std::array mPool; sead::Atomic mNumExtraJobs = 0; }; KSYS_CHECK_SIZE_NX150(BaseProcJobQue, 0xbc38); diff --git a/src/KingSystem/ActorSystem/actBaseProcMgr.cpp b/src/KingSystem/ActorSystem/actBaseProcMgr.cpp index d3e84e17..718ce4d3 100644 --- a/src/KingSystem/ActorSystem/actBaseProcMgr.cpp +++ b/src/KingSystem/ActorSystem/actBaseProcMgr.cpp @@ -14,7 +14,7 @@ namespace ksys::act { SEAD_SINGLETON_DISPOSER_IMPL(BaseProcMgr) -BaseProcMgr::BaseProcMgr() { +BaseProcMgr::BaseProcMgr() : mExtraJobLinkArrays() { mProcPreDeleteList.initOffset(offsetof(BaseProc, mPreDeleteListNode)); mProcUpdateStateList.initOffset(offsetof(BaseProc, mUpdateStateListNode)); } @@ -162,7 +162,7 @@ void BaseProcMgr::processPreDeleteList() { } BaseProcMgr::ExtraJobLinkArray& BaseProcMgr::getExtraJobs() { - return mExtraJobLinkArrays.ref()[mCurrentExtraJobArrayIdx]; + return mExtraJobLinkArrays[mCurrentExtraJobArrayIdx]; } void BaseProcMgr::swapExtraJobArray() { @@ -637,19 +637,16 @@ void BaseProcMgr::decrementUnk3() { --mUnk3; } -// reorderings -#ifdef NON_MATCHING void BaseProcMgr::queueExtraJobPush(BaseProcJobLink* job_link) { getExtraJobs().pushBack(job_link); } -#endif // ??? #ifdef NON_MATCHING void BaseProcMgr::moveExtraJobsToOtherBuffer(JobType type) { const auto old_idx = mCurrentExtraJobArrayIdx; swapExtraJobArray(); - auto& array = mExtraJobLinkArrays.ref()[old_idx]; + auto& array = mExtraJobLinkArrays[old_idx]; for (auto& link : array) { link.getProc()->queueExtraJobPush_(type, mCurrentExtraJobArrayIdx); } @@ -657,7 +654,7 @@ void BaseProcMgr::moveExtraJobsToOtherBuffer(JobType type) { #endif bool BaseProcMgr::hasExtraJobLink(BaseProcJobLink* job_link, s32 idx) { - for (auto& ptr : mExtraJobLinkArrays.ref()[idx]) { + for (auto& ptr : mExtraJobLinkArrays[idx]) { if (&ptr == job_link) return true; } @@ -665,8 +662,8 @@ bool BaseProcMgr::hasExtraJobLink(BaseProcJobLink* job_link, s32 idx) { } void BaseProcMgr::clearExtraJobArrays() { - mExtraJobLinkArrays.ref()[0].clear(); - mExtraJobLinkArrays.ref()[1].clear(); + mExtraJobLinkArrays[0].clear(); + mExtraJobLinkArrays[1].clear(); } } // namespace ksys::act diff --git a/src/KingSystem/ActorSystem/actBaseProcMgr.h b/src/KingSystem/ActorSystem/actBaseProcMgr.h index 0a69b005..4e548ad1 100644 --- a/src/KingSystem/ActorSystem/actBaseProcMgr.h +++ b/src/KingSystem/ActorSystem/actBaseProcMgr.h @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include @@ -266,8 +265,7 @@ private: u32 mHavokThreadId1 = 0; u32 mHavokThreadId2 = 0; u32 mUnk4 = 0; - sead::StorageFor> mExtraJobLinkArrays{ - sead::ZeroInitializeTag{}}; + sead::SafeArray mExtraJobLinkArrays{}; }; KSYS_CHECK_SIZE_NX150(BaseProcMgr, 0x21a0); diff --git a/src/KingSystem/GameData/gdtManager.cpp b/src/KingSystem/GameData/gdtManager.cpp index b0b5972c..9e5a0e27 100644 --- a/src/KingSystem/GameData/gdtManager.cpp +++ b/src/KingSystem/GameData/gdtManager.cpp @@ -1039,7 +1039,7 @@ void Manager::syncUpdate(const char* data) { void Manager::recordFlagChange(u32 platform_core_id, TriggerParam* tparam, u8 type, const s32& idx, const s32& sub_idx) { - auto& buffer = tparam->mFlagChangeRecords[platform_core_id].ref(); + auto& buffer = tparam->mFlagChangeRecords[platform_core_id]; buffer[tparam->mFlagChangeRecordIndices[platform_core_id]].type.mValue = type; buffer[tparam->mFlagChangeRecordIndices[platform_core_id]].index = idx; buffer[tparam->mFlagChangeRecordIndices[platform_core_id]].sub_index = sub_idx; diff --git a/src/KingSystem/GameData/gdtTriggerParam.cpp b/src/KingSystem/GameData/gdtTriggerParam.cpp index 82ab81dd..2fdda60e 100644 --- a/src/KingSystem/GameData/gdtTriggerParam.cpp +++ b/src/KingSystem/GameData/gdtTriggerParam.cpp @@ -20,12 +20,7 @@ namespace ksys::gdt { -TriggerParam::TriggerParam() { - for (auto& buffer : mFlagChangeRecords) - buffer.constructDefault(); - for (auto& cs : mCriticalSections) - cs.constructDefault(); - mBitFlags.constructDefault(); +TriggerParam::TriggerParam() : mFlagChangeRecords(), mCriticalSections() { mFlagChangeRecordIndices.fill(0); mNumBoolFlagsPerCategory0.fill(0); mNumBoolFlagsPerCategory.fill(0); @@ -920,7 +915,7 @@ void TriggerParam::copyAllFlags(const TriggerParam& src, sead::Heap* heap, bool if (init_reset_data) { for (auto& array : mFlagChangeRecords) - array.ref().allocBufferAssert(num_flags, heap); + array.allocBufferAssert(num_flags, heap); initResetData(heap); initRevivalRandomBools(heap); } @@ -1331,7 +1326,7 @@ bool TriggerParam::getMaxValueForS32(s32* max, const sead::SafeString& name) con \ if constexpr (std::is_same()) { \ if (FLAGS[idx]->getProperties().isEventAssociated()) \ - mBitFlags.ref().set(BitFlag::EventAssociatedFlagModified); \ + mBitFlags.set(BitFlag::EventAssociatedFlagModified); \ } \ \ return ret; \ @@ -1407,11 +1402,11 @@ void TriggerParam::recordFlagChange(const FlagBase* flag, s32 idx, s32 sub_idx) const auto core = sead::CoreInfo::getCurrentCoreId(); const u32 platform_core_id = sead::CoreInfo::getPlatformCoreId(core); - auto& buffer = mFlagChangeRecords[platform_core_id].ref(); + auto& buffer = mFlagChangeRecords[platform_core_id]; if (buffer.size() < 1) return; - auto lock = sead::makeScopedLock(mCriticalSections[platform_core_id].ref()); + auto lock = sead::makeScopedLock(mCriticalSections[platform_core_id]); buffer[mFlagChangeRecordIndices[platform_core_id]].type.mValue = u8(flag->getType()); buffer[mFlagChangeRecordIndices[platform_core_id]].index = idx; @@ -1419,7 +1414,7 @@ void TriggerParam::recordFlagChange(const FlagBase* flag, s32 idx, s32 sub_idx) ++mFlagChangeRecordIndices[platform_core_id]; if (flag->getType() == FlagType::Bool) - mBitFlags.ref().set(BitFlag::_8); + mBitFlags.set(BitFlag::_8); } SET_FLAG_VALUE_IMPL_(TriggerParam::setS32, s32, mS32Flags, s32, value) @@ -1928,10 +1923,10 @@ void TriggerParam::copyChangedFlags(TriggerParam& other, bool set_all_flags, boo bool ignore_temp_flags) { if (!set_all_flags) { for (s32 i = 0; i < 3; ++i) { - auto lock = sead::makeScopedLock(other.mCriticalSections[i].ref()); + auto lock = sead::makeScopedLock(other.mCriticalSections[i]); for (s32 j = 0; j < mFlagChangeRecordIndices[i]; ++i) { - const FlagChangeRecord& record = mFlagChangeRecords[i].ref()[j]; + const FlagChangeRecord& record = mFlagChangeRecords[i][j]; const auto idx = record.index; const auto sub_idx = record.sub_index; switch (record.type) { @@ -2112,7 +2107,7 @@ void TriggerParam::copyChangedFlags(TriggerParam& other, bool set_all_flags, boo } mFlagChangeRecordIndices[i] = 0; - other.mBitFlags.ref().reset(BitFlag::_8); + other.mBitFlags.reset(BitFlag::_8); } return; } diff --git a/src/KingSystem/GameData/gdtTriggerParam.h b/src/KingSystem/GameData/gdtTriggerParam.h index c7301de5..77414096 100644 --- a/src/KingSystem/GameData/gdtTriggerParam.h +++ b/src/KingSystem/GameData/gdtTriggerParam.h @@ -9,7 +9,6 @@ #include #include #include -#include #include #include "KingSystem/GameData/gdtFlag.h" #include "KingSystem/Utils/Types.h" @@ -476,7 +475,7 @@ private: void recordFlagChange(const FlagBase* flag, s32 idx, s32 sub_idx = -1); - bool shouldFindExistingCopyRecord() const { return mBitFlags.ref().isOn(BitFlag::_7); } + bool shouldFindExistingCopyRecord() const { return mBitFlags.isOn(BitFlag::_7); } bool shouldSkipRevivingShopItem(bool* is_shop_item, u32 flag_hash, bool is_main_field, const sead::Buffer& arrow_counts, s32 col1, s32 row1, @@ -504,7 +503,7 @@ private: sead::PtrArray> mVector3fArrayFlags; sead::PtrArray> mVector4fArrayFlags; - sead::SafeArray>, 3> mFlagChangeRecords{}; + sead::SafeArray, 3> mFlagChangeRecords; sead::ObjArray mCopiedBoolFlags; sead::ObjArray mCopiedS32Flags; @@ -524,8 +523,8 @@ private: std::array mFlagChangeRecordIndices; sead::SafeArray mNumBoolFlagsPerCategory0; sead::SafeArray mNumBoolFlagsPerCategory; - sead::SafeArray, 3> mCriticalSections{}; - sead::StorageFor> mBitFlags; + sead::SafeArray mCriticalSections; + sead::TypedBitFlag mBitFlags; }; KSYS_CHECK_SIZE_NX150(TriggerParam, 0x3f0); diff --git a/src/KingSystem/Resource/Actor/resResourceASList.cpp b/src/KingSystem/Resource/Actor/resResourceASList.cpp index 2a5a1f4c..8ac67f7d 100644 --- a/src/KingSystem/Resource/Actor/resResourceASList.cpp +++ b/src/KingSystem/Resource/Actor/resResourceASList.cpp @@ -7,7 +7,7 @@ namespace { [[maybe_unused]] sead::SafeArray, 3> sStrings; } -ASList::ASList() : ParamIO("aslist", 0) {} +ASList::ASList() : ParamIO("aslist", 0), mCommon() {} ASList::~ASList() { mASDefines.freeBuffer(); @@ -129,10 +129,10 @@ bool ASList::parse_(u8* data, size_t size, sead::Heap* heap) { if (agl::utl::getResParameterObj(root, "Common").ptr()) { const sead::SafeString name = "RateAll"; const sead::SafeString label = ""; - mCommon->rate_all.init(1.0, name, label, &mCommon->obj); - addObj(&mCommon->obj, "Common"); + mCommon.rate_all.init(1.0, name, label, &mCommon.obj); + addObj(&mCommon.obj, "Common"); } else { - mCommon->rate_all = 1.0; + mCommon.rate_all = 1.0; } applyResParameterArchive(agl::utl::ResParameterArchive{data}); diff --git a/src/KingSystem/Resource/Actor/resResourceASList.h b/src/KingSystem/Resource/Actor/resResourceASList.h index d8836523..a7eee75b 100644 --- a/src/KingSystem/Resource/Actor/resResourceASList.h +++ b/src/KingSystem/Resource/Actor/resResourceASList.h @@ -4,7 +4,6 @@ #include #include #include -#include #include "KingSystem/Resource/resResource.h" #include "KingSystem/Utils/ParamIO.h" @@ -77,7 +76,7 @@ public: const sead::Buffer& getASDefines() const { return mASDefines; } const sead::Buffer& getCFDefines() const { return mCFDefines; } const sead::Buffer& getAddReses() const { return mAddReses; } - const Common& getCommon() const { return mCommon.ref(); } + const Common& getCommon() const { return mCommon; } void addAS_(s32 index, AS* as); @@ -102,7 +101,7 @@ private: agl::utl::ParameterList mCFDefinesList; agl::utl::ParameterList mASDefinesList; agl::utl::ParameterList mAddResesList; - sead::StorageFor mCommon{sead::ZeroInitializeTag{}}; + Common mCommon; }; KSYS_CHECK_SIZE_NX150(ASList, 0x410); diff --git a/src/KingSystem/Resource/Actor/resResourceModelList.cpp b/src/KingSystem/Resource/Actor/resResourceModelList.cpp index a76c9931..c58bc178 100644 --- a/src/KingSystem/Resource/Actor/resResourceModelList.cpp +++ b/src/KingSystem/Resource/Actor/resResourceModelList.cpp @@ -22,7 +22,7 @@ sead::SafeArray sLocatorTypes{{ constexpr u32 NumUnitMax = 8; } // namespace -ModelList::ModelList() : ParamIO("modellist", 0) {} +ModelList::ModelList() : ParamIO("modellist", 0), mControllerInfo(), mAttention() {} ModelList::~ModelList() { for (auto& entry : mModelData) @@ -36,8 +36,6 @@ ModelList::~ModelList() { void ModelList::doCreate_(u8* buffer, u32 buffer_size, sead::Heap* heap) {} -// reorderings -#ifdef NON_MATCHING bool ModelList::parse_(u8* data, size_t size, sead::Heap* heap) { agl::utl::ResParameterArchive archive{data}; const auto root = archive.getRootList(); @@ -56,46 +54,43 @@ bool ModelList::parse_(u8* data, size_t size, sead::Heap* heap) { } addList(&mAnmTargetList, str_AnmTarget); - mControllerInfo->mAddColor.init({0.0, 0.0, 0.0, 0.0}, "AddColor", "", &mControllerInfo->mObj); - mControllerInfo->mMulColor.init({1.0, 1.0, 1.0, 1.0}, "MulColor", "", &mControllerInfo->mObj); - mControllerInfo->mBaseScale.init(sead::Vector3f::ones, "BaseScale", "", &mControllerInfo->mObj); - mControllerInfo->mVariationMatAnim.init("", "VariationMatAnim", "", &mControllerInfo->mObj); - mControllerInfo->mVariationMatAnimFrame.init(0, "VariationMatAnimFrame", "", - &mControllerInfo->mObj); - mControllerInfo->mVariationShaderAnim.init("", "VariationShaderAnim", "", - &mControllerInfo->mObj); - mControllerInfo->mVariationShaderAnimFrame.init(0, "VariationShaderAnimFrame", "", - &mControllerInfo->mObj); - mControllerInfo->mCalcAABBASKey.init("Wait", "CalcAABBASKey", "", &mControllerInfo->mObj); - addObj(&mControllerInfo->mObj, sead::FormatFixedSafeString<128>("ControllerInfo")); + mControllerInfo.mAddColor.init({0.0, 0.0, 0.0, 0.0}, "AddColor", "", &mControllerInfo.mObj); + mControllerInfo.mMulColor.init({1.0, 1.0, 1.0, 1.0}, "MulColor", "", &mControllerInfo.mObj); + mControllerInfo.mBaseScale.init(sead::Vector3f::ones, "BaseScale", "", &mControllerInfo.mObj); + mControllerInfo.mVariationMatAnim.init("", "VariationMatAnim", "", &mControllerInfo.mObj); + mControllerInfo.mVariationMatAnimFrame.init(0, "VariationMatAnimFrame", "", + &mControllerInfo.mObj); + mControllerInfo.mVariationShaderAnim.init("", "VariationShaderAnim", "", &mControllerInfo.mObj); + mControllerInfo.mVariationShaderAnimFrame.init(0, "VariationShaderAnimFrame", "", + &mControllerInfo.mObj); + mControllerInfo.mCalcAABBASKey.init("Wait", "CalcAABBASKey", "", &mControllerInfo.mObj); + addObj(&mControllerInfo.mObj, sead::FormatFixedSafeString<128>("ControllerInfo")); - mAttention->mIsEnableAttention.init(false, "IsEnableAttention", "", &mAttention->mObj); - mAttention->mLookAtBone.init("", "LookAtBone", "", &mAttention->mObj); - mAttention->mLookAtOffset.init(sead::Vector3f::zero, "LookAtOffset", "", &mAttention->mObj); - mAttention->mCursorOffsetY.init(0.0, "CursorOffsetY", "", &mAttention->mObj); - mAttention->mAIInfoOffsetY.init(0.0, "AIInfoOffsetY", "", &mAttention->mObj); - mAttention->mCutTargetBone.init("", "CutTargetBone", "", &mAttention->mObj); - mAttention->mCutTargetOffset.init(sead::Vector3f::zero, "CutTargetOffset", "", - &mAttention->mObj); - mAttention->mGameCameraBone.init("", "GameCameraBone", "", &mAttention->mObj); - mAttention->mGameCameraOffset.init(sead::Vector3f::zero, "GameCameraOffset", "", - &mAttention->mObj); - mAttention->mBowCameraBone.init("", "BowCameraBone", "", &mAttention->mObj); - mAttention->mBowCameraOffset.init(sead::Vector3f::zero, "BowCameraOffset", "", - &mAttention->mObj); - mAttention->mAttackTargetBone.init("", "AttackTargetBone", "", &mAttention->mObj); - mAttention->mAttackTargetOffset.init(sead::Vector3f::zero, "AttackTargetOffset", "", - &mAttention->mObj); - mAttention->mAttackTargetOffsetBack.init(0.0, "AttackTargetOffsetBack", "", &mAttention->mObj); - mAttention->mAtObstacleChkUseLookAtPos.init(true, "AtObstacleChkUseLookAtPos", "", - &mAttention->mObj); - mAttention->mAtObstacleChkOffsetBone.init("", "AtObstacleChkOffsetBone", "", &mAttention->mObj); - mAttention->mAtObstacleChkOffset.init(sead::Vector3f::zero, "AtObstacleChkOffset", "", - &mAttention->mObj); - mAttention->mCursorAIInfoBaseBone.init("", "CursorAIInfoBaseBone", "", &mAttention->mObj); - mAttention->mCursorAIInfoBaseOffset.init(sead::Vector3f::zero, "CursorAIInfoBaseOffset", "", - &mAttention->mObj); - addObj(&mAttention->mObj, sead::FormatFixedSafeString<128>("Attention")); + mAttention.mIsEnableAttention.init(false, "IsEnableAttention", "", &mAttention.mObj); + mAttention.mLookAtBone.init("", "LookAtBone", "", &mAttention.mObj); + mAttention.mLookAtOffset.init(sead::Vector3f::zero, "LookAtOffset", "", &mAttention.mObj); + mAttention.mCursorOffsetY.init(0.0, "CursorOffsetY", "", &mAttention.mObj); + mAttention.mAIInfoOffsetY.init(0.0, "AIInfoOffsetY", "", &mAttention.mObj); + mAttention.mCutTargetBone.init("", "CutTargetBone", "", &mAttention.mObj); + mAttention.mCutTargetOffset.init(sead::Vector3f::zero, "CutTargetOffset", "", &mAttention.mObj); + mAttention.mGameCameraBone.init("", "GameCameraBone", "", &mAttention.mObj); + mAttention.mGameCameraOffset.init(sead::Vector3f::zero, "GameCameraOffset", "", + &mAttention.mObj); + mAttention.mBowCameraBone.init("", "BowCameraBone", "", &mAttention.mObj); + mAttention.mBowCameraOffset.init(sead::Vector3f::zero, "BowCameraOffset", "", &mAttention.mObj); + mAttention.mAttackTargetBone.init("", "AttackTargetBone", "", &mAttention.mObj); + mAttention.mAttackTargetOffset.init(sead::Vector3f::zero, "AttackTargetOffset", "", + &mAttention.mObj); + mAttention.mAttackTargetOffsetBack.init(0.0, "AttackTargetOffsetBack", "", &mAttention.mObj); + mAttention.mAtObstacleChkUseLookAtPos.init(true, "AtObstacleChkUseLookAtPos", "", + &mAttention.mObj); + mAttention.mAtObstacleChkOffsetBone.init("", "AtObstacleChkOffsetBone", "", &mAttention.mObj); + mAttention.mAtObstacleChkOffset.init(sead::Vector3f::zero, "AtObstacleChkOffset", "", + &mAttention.mObj); + mAttention.mCursorAIInfoBaseBone.init("", "CursorAIInfoBaseBone", "", &mAttention.mObj); + mAttention.mCursorAIInfoBaseOffset.init(sead::Vector3f::zero, "CursorAIInfoBaseOffset", "", + &mAttention.mObj); + addObj(&mAttention.mObj, sead::FormatFixedSafeString<128>("Attention")); if (data) { applyResParameterArchive(agl::utl::ResParameterArchive{data}); @@ -104,7 +99,6 @@ bool ModelList::parse_(u8* data, size_t size, sead::Heap* heap) { return true; } -#endif bool ModelList::parseModelData(const agl::utl::ResParameterList& res, sead::Heap* heap) { if (!mModelData.tryAllocBuffer(res.getResParameterListNum() != 0, heap)) @@ -228,11 +222,11 @@ void ModelList::getModelDataInfo(ModelList::ModelDataInfo* info) const { } } - info->base_scale = mControllerInfo->mBaseScale.ref(); + info->base_scale = mControllerInfo.mBaseScale.ref(); } bool ModelList::getAttentionInfo(AttentionInfo* info) const { - if (!mAttention->mIsEnableAttention.ref()) { + if (!mAttention.mIsEnableAttention.ref()) { info->look_at_bone = {}; info->look_at_offset = sead::Vector3f::zero; @@ -258,35 +252,35 @@ bool ModelList::getAttentionInfo(AttentionInfo* info) const { return false; } - info->look_at_bone = mAttention->mLookAtBone.ref().cstr(); - info->look_at_offset = mAttention->mLookAtOffset.ref(); + info->look_at_bone = mAttention.mLookAtBone.ref().cstr(); + info->look_at_offset = mAttention.mLookAtOffset.ref(); - info->cursor_offset_y = mAttention->mCursorOffsetY.ref(); - info->ai_info_offset_y = mAttention->mAIInfoOffsetY.ref(); + info->cursor_offset_y = mAttention.mCursorOffsetY.ref(); + info->ai_info_offset_y = mAttention.mAIInfoOffsetY.ref(); - info->cut_target_bone = mAttention->mCutTargetBone.ref().cstr(); - info->cut_target_offset = mAttention->mCutTargetOffset.ref(); + info->cut_target_bone = mAttention.mCutTargetBone.ref().cstr(); + info->cut_target_offset = mAttention.mCutTargetOffset.ref(); - info->game_camera_bone = mAttention->mGameCameraBone.ref().cstr(); - info->game_camera_offset = mAttention->mGameCameraOffset.ref(); + info->game_camera_bone = mAttention.mGameCameraBone.ref().cstr(); + info->game_camera_offset = mAttention.mGameCameraOffset.ref(); - info->bow_camera_bone = mAttention->mBowCameraBone.ref().cstr(); - info->bow_camera_offset = mAttention->mBowCameraOffset.ref(); + info->bow_camera_bone = mAttention.mBowCameraBone.ref().cstr(); + info->bow_camera_offset = mAttention.mBowCameraOffset.ref(); - info->attack_target_bone = mAttention->mAttackTargetBone.ref().cstr(); - info->attack_target_offset = mAttention->mAttackTargetOffset.ref(); - info->attack_target_offset_back = mAttention->mAttackTargetOffsetBack.ref(); + info->attack_target_bone = mAttention.mAttackTargetBone.ref().cstr(); + info->attack_target_offset = mAttention.mAttackTargetOffset.ref(); + info->attack_target_offset_back = mAttention.mAttackTargetOffsetBack.ref(); - if (mAttention->mAtObstacleChkUseLookAtPos.ref()) { - info->at_obstacle_chk_bone = mAttention->mLookAtBone.ref().cstr(); - info->at_obstacle_chk_offset = mAttention->mLookAtOffset.ref(); + if (mAttention.mAtObstacleChkUseLookAtPos.ref()) { + info->at_obstacle_chk_bone = mAttention.mLookAtBone.ref().cstr(); + info->at_obstacle_chk_offset = mAttention.mLookAtOffset.ref(); } else { - info->at_obstacle_chk_bone = mAttention->mAtObstacleChkOffsetBone.ref().cstr(); - info->at_obstacle_chk_offset = mAttention->mAtObstacleChkOffset.ref(); + info->at_obstacle_chk_bone = mAttention.mAtObstacleChkOffsetBone.ref().cstr(); + info->at_obstacle_chk_offset = mAttention.mAtObstacleChkOffset.ref(); } - info->cursor_ai_info_base_bone = mAttention->mCursorAIInfoBaseBone.ref().cstr(); - info->cursor_ai_info_base_offset = mAttention->mCursorAIInfoBaseOffset.ref(); + info->cursor_ai_info_base_bone = mAttention.mCursorAIInfoBaseBone.ref().cstr(); + info->cursor_ai_info_base_offset = mAttention.mCursorAIInfoBaseOffset.ref(); const auto clear_if_empty = [](const char** s) { if (!(*s)[0]) diff --git a/src/KingSystem/Resource/Actor/resResourceModelList.h b/src/KingSystem/Resource/Actor/resResourceModelList.h index 1d399f46..1729452c 100644 --- a/src/KingSystem/Resource/Actor/resResourceModelList.h +++ b/src/KingSystem/Resource/Actor/resResourceModelList.h @@ -4,7 +4,6 @@ #include #include #include -#include #include "KingSystem/ActorSystem/actInfoData.h" #include "KingSystem/Resource/resResource.h" #include "KingSystem/Utils/ParamIO.h" @@ -132,8 +131,8 @@ public: bool needsParse() const override { return true; } bool parse_(u8* data, size_t size, sead::Heap* heap) override; - const ControllerInfo& getControllerInfo() const { return mControllerInfo.ref(); } - const Attention& getAttention() const { return mAttention.ref(); } + const ControllerInfo& getControllerInfo() const { return mControllerInfo; } + const Attention& getAttention() const { return mAttention; } const sead::Buffer& getModelData() const { return mModelData; } const sead::Buffer& getAnmTargets() const { return mAnmTargets; } @@ -155,8 +154,8 @@ private: bool parseModelData(const agl::utl::ResParameterList& res, sead::Heap* heap); bool parseAnmTarget(const agl::utl::ResParameterList& res, sead::Heap* heap); - sead::StorageFor mControllerInfo{sead::ZeroInitializeTag{}}; - sead::StorageFor mAttention{sead::ZeroInitializeTag{}}; + ControllerInfo mControllerInfo; + Attention mAttention; u8* mRawData{}; sead::Buffer mModelData; agl::utl::ParameterList mModelDataList;