summaryrefslogtreecommitdiff
path: root/src/KingSystem/ActorSystem/actBaseProc.cpp
diff options
context:
space:
mode:
authornotyouraveragehooman <65437533+notyouraveragehooman@users.noreply.github.com>2020-08-21 14:18:47 -0700
committerLéo Lam <leo@leolam.fr>2020-08-22 10:17:05 +0200
commitff99d7763572fc5b463bc8ece39a2c40e90deaf0 (patch)
tree5f452a9692c0b4d81fa1d53c39ed05f66fe13b8f /src/KingSystem/ActorSystem/actBaseProc.cpp
parentfc306aa5f06ef1d28f6d178dff28d39b9056199a (diff)
BaseProc::getConnectedCalcParent
BaseProc::setConnectedCalcParent
Diffstat (limited to 'src/KingSystem/ActorSystem/actBaseProc.cpp')
-rw-r--r--src/KingSystem/ActorSystem/actBaseProc.cpp26
1 files changed, 25 insertions, 1 deletions
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