summaryrefslogtreecommitdiff
path: root/src/KingSystem/ActorSystem/actBaseProc.cpp
diff options
context:
space:
mode:
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