diff options
| author | Léo Lam <leo@leolam.fr> | 2021-02-07 17:28:59 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2021-02-07 18:16:01 +0100 |
| commit | 1bb0c30e64a8a11ddc61e80692cb77cb5d93e676 (patch) | |
| tree | 250fe07f57894a75c3c5accd271fe36d3c792ca3 /src/KingSystem/ActorSystem | |
| parent | 5b83ad5f822593071e5f7b2a6d520602ddf86de4 (diff) | |
ksys/act: Match BaseProcMgr ctor
Diffstat (limited to 'src/KingSystem/ActorSystem')
| -rw-r--r-- | src/KingSystem/ActorSystem/actBaseProc.cpp | 4 | ||||
| -rw-r--r-- | src/KingSystem/ActorSystem/actBaseProc.h | 4 | ||||
| -rw-r--r-- | src/KingSystem/ActorSystem/actBaseProcMgr.cpp | 11 | ||||
| -rw-r--r-- | src/KingSystem/ActorSystem/actBaseProcMgr.h | 6 |
4 files changed, 16 insertions, 9 deletions
diff --git a/src/KingSystem/ActorSystem/actBaseProc.cpp b/src/KingSystem/ActorSystem/actBaseProc.cpp index d542d67c..6e1bea55 100644 --- a/src/KingSystem/ActorSystem/actBaseProc.cpp +++ b/src/KingSystem/ActorSystem/actBaseProc.cpp @@ -27,7 +27,7 @@ BaseProc::~BaseProc() { unlinkCalcChild_(); unlinkCalcParent_(); - if (mDeleteListNode.isLinked()) + if (mUpdateStateListNode.isLinked()) BaseProcMgr::instance()->eraseFromUpdateStateList(*this); } @@ -157,7 +157,7 @@ BaseProc::PreDeletePrepareResult BaseProc::prepareForPreDelete_() { // NON_MATCHING: branching bool BaseProc::startPreparingForPreDelete_() { - if (mDeleteListNode.isLinked()) + if (mUpdateStateListNode.isLinked()) return false; return !mBaseProcLinkData || mBaseProcLinkData->refCount() <= 0 || diff --git a/src/KingSystem/ActorSystem/actBaseProc.h b/src/KingSystem/ActorSystem/actBaseProc.h index 530ee966..008d31b4 100644 --- a/src/KingSystem/ActorSystem/actBaseProc.h +++ b/src/KingSystem/ActorSystem/actBaseProc.h @@ -286,8 +286,8 @@ protected: BaseProc* mConnectedCalcChildNew = nullptr; sead::SafeArray<BaseProcJobHandler*, 7> mJobHandlers{}; sead::Delegate1R<BaseProc, void*, bool> mInvoker; - sead::ListNode mPostDeleteListNode; - sead::ListNode mDeleteListNode; + sead::ListNode mPreDeleteListNode; + sead::ListNode mUpdateStateListNode; BaseProcMapNode mMapNode{this}; BaseProcUnit* mProcUnit = nullptr; sead::Atomic<s32> mRefCount = 0; diff --git a/src/KingSystem/ActorSystem/actBaseProcMgr.cpp b/src/KingSystem/ActorSystem/actBaseProcMgr.cpp index 2c4a9f74..9f0044f7 100644 --- a/src/KingSystem/ActorSystem/actBaseProcMgr.cpp +++ b/src/KingSystem/ActorSystem/actBaseProcMgr.cpp @@ -6,6 +6,11 @@ namespace ksys::act { SEAD_SINGLETON_DISPOSER_IMPL(BaseProcMgr) +BaseProcMgr::BaseProcMgr() { + mProcPreDeleteList.initOffset(offsetof(BaseProc, mPreDeleteListNode)); + mProcUpdateStateList.initOffset(offsetof(BaseProc, mUpdateStateListNode)); +} + void BaseProcMgr::generateProcId(u32* id) { *id = mCreatedProcCounter.increment(); } @@ -64,7 +69,7 @@ void BaseProcMgr::processPreDeleteList() { } bool BaseProcMgr::hasExtraJobLink(BaseProcJobLink* job_link, s32 idx) { - for (auto& ptr : mExtraJobLinkArrays[idx]) { + for (auto& ptr : mExtraJobLinkArrays.ref()[idx]) { if (&ptr == job_link) return true; } @@ -72,8 +77,8 @@ bool BaseProcMgr::hasExtraJobLink(BaseProcJobLink* job_link, s32 idx) { } void BaseProcMgr::clearExtraJobArrays() { - mExtraJobLinkArrays[0].clear(); - mExtraJobLinkArrays[1].clear(); + mExtraJobLinkArrays.ref()[0].clear(); + mExtraJobLinkArrays.ref()[1].clear(); } void BaseProcMgr::setActorJobTypeAndPrio(JobType type, s32 prio, bool x) { diff --git a/src/KingSystem/ActorSystem/actBaseProcMgr.h b/src/KingSystem/ActorSystem/actBaseProcMgr.h index f9299387..0ebb4f39 100644 --- a/src/KingSystem/ActorSystem/actBaseProcMgr.h +++ b/src/KingSystem/ActorSystem/actBaseProcMgr.h @@ -8,6 +8,7 @@ #include <prim/seadBitFlag.h> #include <prim/seadScopedLock.h> #include <prim/seadSizedEnum.h> +#include <prim/seadStorageFor.h> #include <thread/seadAtomic.h> #include <thread/seadCriticalSection.h> #include "KingSystem/ActorSystem/actBaseProc.h" @@ -202,7 +203,7 @@ private: BaseProcInitializer* mProcInitializer = nullptr; BaseProcDeleter* mProcDeleter = nullptr; bool mIsPushingJobs = false; - bool mPushActorJobType3InsteadOf6 = false; + sead::Atomic<bool> mPushActorJobType3InsteadOf6 = false; bool mEnableExtraJobPush = false; Mode mMode = Mode::_0; bool mUnk2 = false; @@ -214,7 +215,8 @@ private: u32 mHavokThreadId1 = 0; u32 mHavokThreadId2 = 0; u32 mUnk4 = 0; - sead::SafeArray<ExtraJobLinkArray, 2> mExtraJobLinkArrays{}; + sead::StorageFor<sead::SafeArray<ExtraJobLinkArray, 2>> mExtraJobLinkArrays{ + sead::ZeroInitializeTag{}}; }; KSYS_CHECK_SIZE_NX150(BaseProcMgr, 0x21a0); |
