From ff99d7763572fc5b463bc8ece39a2c40e90deaf0 Mon Sep 17 00:00:00 2001 From: notyouraveragehooman <65437533+notyouraveragehooman@users.noreply.github.com> Date: Fri, 21 Aug 2020 14:18:47 -0700 Subject: BaseProc::getConnectedCalcParent BaseProc::setConnectedCalcParent --- src/KingSystem/ActorSystem/actBaseProc.cpp | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'src/KingSystem/ActorSystem/actBaseProc.cpp') diff --git a/src/KingSystem/ActorSystem/actBaseProc.cpp b/src/KingSystem/ActorSystem/actBaseProc.cpp index 149386e2..79e2cc47 100644 --- a/src/KingSystem/ActorSystem/actBaseProc.cpp +++ b/src/KingSystem/ActorSystem/actBaseProc.cpp @@ -66,7 +66,7 @@ bool BaseProc::deleteLater(DeleteReason reason) { } } - if (!BaseProcMgr::instance()->addToUpdateStateList(*this)) + if (!BaseProcMgr::instance()->addToUpdateStateList(*this, StateFlags::RequestDelete)) onDeleteRequested_(reason); if (!is_high_prio) @@ -425,4 +425,28 @@ bool BaseProc::x00000071011ba9fc() { return true; } +BaseProc* BaseProc::getConnectedCalcParent() const { + if (mConnectedCalcParent == nullptr || mConnectedCalcParent->mState == State::Delete) + return nullptr; + + return mConnectedCalcParent; +} + +bool BaseProc::setConnectedCalcParent(BaseProc* parent, bool delete_parent_on_delete) { + if (parent == nullptr) + return false; + + if (isDeletedOrDeleting() || parent->isDeletedOrDeleting()) + return false; + + if (BaseProcMgr::instance()->addToUpdateStateList(*this, StateFlags::RequestSetParent)) + return false; + + mConnectedCalcParentNew = parent; + + mFlags.change(Flags::DeleteParentOnDelete, delete_parent_on_delete); + + return true; +} + } // namespace ksys::act -- cgit v1.2.3