Remove unnecessary usages of sead::StorageFor

Turns out they are just value-initialised aggregates.
This commit is contained in:
Léo Lam 2022-02-08 21:34:53 +01:00
parent d3902a9ad4
commit d893fd5ead
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
16 changed files with 112 additions and 147 deletions

View File

@ -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,

Can't render this file because it is too large.

View File

@ -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;
}

View File

@ -6,7 +6,6 @@
#include <prim/seadBitFlag.h>
#include <prim/seadEnum.h>
#include <prim/seadSafeString.h>
#include <prim/seadStorageFor.h>
#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<VersionFile, true> mVersionFile{sead::ZeroInitializeTag{}};
VersionFile mVersionFile{};
u32 mVersion{};
ksys::res::Handle mAocMainFieldPack;

View File

@ -62,7 +62,7 @@ SEAD_SINGLETON_DISPOSER_IMPL(ActorLimiter)
bool ActorLimiter::init(sead::Heap* heap, const sead::SafeArray<int, NumCategories>& 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;

View File

@ -4,7 +4,6 @@
#include <container/seadOffsetList.h>
#include <container/seadSafeArray.h>
#include <heap/seadDisposer.h>
#include <prim/seadStorageFor.h>
#include <thread/seadCriticalSection.h>
#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<int, NumCategories>& 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<sead::SafeArray<List, NumCategories>> mLists{sead::ZeroInitializeTag{}};
sead::SafeArray<List, NumCategories> mLists{};
};
KSYS_CHECK_SIZE_NX150(ActorLimiter, 0x360);

View File

@ -4,7 +4,7 @@
namespace ksys::act {
BaseProcJobQue::BaseProcJobQue() = default;
BaseProcJobQue::BaseProcJobQue() : mPool() {}
BaseProcJobQue::~BaseProcJobQue() {
mJobQueue.clear();

View File

@ -5,7 +5,6 @@
#include <basis/seadTypes.h>
#include <mc/seadJob.h>
#include <mc/seadJobQueue.h>
#include <prim/seadStorageFor.h>
#include <thread/seadAtomic.h>
#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<sead::StorageFor<BaseProcJob, true>, 1200> mPool{};
};
int mFreeJobIdx = 0;
sead::FixedSizeJQ mJobQueue;
Pool mPool;
std::array<BaseProcJob, 1200> mPool;
sead::Atomic<u32> mNumExtraJobs = 0;
};
KSYS_CHECK_SIZE_NX150(BaseProcJobQue, 0xbc38);

View File

@ -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

View File

@ -9,7 +9,6 @@
#include <prim/seadBitFlag.h>
#include <prim/seadScopedLock.h>
#include <prim/seadSizedEnum.h>
#include <prim/seadStorageFor.h>
#include <prim/seadTypedBitFlag.h>
#include <thread/seadAtomic.h>
#include <thread/seadCriticalSection.h>
@ -266,8 +265,7 @@ private:
u32 mHavokThreadId1 = 0;
u32 mHavokThreadId2 = 0;
u32 mUnk4 = 0;
sead::StorageFor<sead::SafeArray<ExtraJobLinkArray, 2>> mExtraJobLinkArrays{
sead::ZeroInitializeTag{}};
sead::SafeArray<ExtraJobLinkArray, 2> mExtraJobLinkArrays{};
};
KSYS_CHECK_SIZE_NX150(BaseProcMgr, 0x21a0);

View File

@ -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;

View File

@ -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<T, bool>()) { \
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;
}

View File

@ -9,7 +9,6 @@
#include <container/seadSafeArray.h>
#include <gfx/seadColor.h>
#include <prim/seadBitFlag.h>
#include <prim/seadStorageFor.h>
#include <prim/seadTypedBitFlag.h>
#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<s32>& arrow_counts, s32 col1, s32 row1,
@ -504,7 +503,7 @@ private:
sead::PtrArray<sead::PtrArray<FlagBase>> mVector3fArrayFlags;
sead::PtrArray<sead::PtrArray<FlagBase>> mVector4fArrayFlags;
sead::SafeArray<sead::StorageFor<sead::Buffer<FlagChangeRecord>>, 3> mFlagChangeRecords{};
sead::SafeArray<sead::Buffer<FlagChangeRecord>, 3> mFlagChangeRecords;
sead::ObjArray<FlagCopyRecord> mCopiedBoolFlags;
sead::ObjArray<FlagCopyRecord> mCopiedS32Flags;
@ -524,8 +523,8 @@ private:
std::array<s32, 3> mFlagChangeRecordIndices;
sead::SafeArray<s32, 15> mNumBoolFlagsPerCategory0;
sead::SafeArray<s32, 15> mNumBoolFlagsPerCategory;
sead::SafeArray<sead::StorageFor<sead::CriticalSection>, 3> mCriticalSections{};
sead::StorageFor<sead::TypedBitFlag<BitFlag>> mBitFlags;
sead::SafeArray<sead::CriticalSection, 3> mCriticalSections;
sead::TypedBitFlag<BitFlag> mBitFlags;
};
KSYS_CHECK_SIZE_NX150(TriggerParam, 0x3f0);

View File

@ -7,7 +7,7 @@ namespace {
[[maybe_unused]] sead::SafeArray<sead::FixedSafeString<128>, 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});

View File

@ -4,7 +4,6 @@
#include <agl/Utils/aglParameterList.h>
#include <agl/Utils/aglParameterObj.h>
#include <container/seadBuffer.h>
#include <prim/seadStorageFor.h>
#include "KingSystem/Resource/resResource.h"
#include "KingSystem/Utils/ParamIO.h"
@ -77,7 +76,7 @@ public:
const sead::Buffer<ASDefine>& getASDefines() const { return mASDefines; }
const sead::Buffer<CFDefine>& getCFDefines() const { return mCFDefines; }
const sead::Buffer<AddRes>& 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<Common, true> mCommon{sead::ZeroInitializeTag{}};
Common mCommon;
};
KSYS_CHECK_SIZE_NX150(ASList, 0x410);

View File

@ -22,7 +22,7 @@ sead::SafeArray<const char*, 6> 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])

View File

@ -4,7 +4,6 @@
#include <agl/Utils/aglParameterObj.h>
#include <container/seadBuffer.h>
#include <prim/seadSafeString.h>
#include <prim/seadStorageFor.h>
#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<ModelData>& getModelData() const { return mModelData; }
const sead::Buffer<AnmTarget>& 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<ControllerInfo, true> mControllerInfo{sead::ZeroInitializeTag{}};
sead::StorageFor<Attention, true> mAttention{sead::ZeroInitializeTag{}};
ControllerInfo mControllerInfo;
Attention mAttention;
u8* mRawData{};
sead::Buffer<ModelData> mModelData;
agl::utl::ParameterList mModelDataList;