aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormax-001 <maxsmits21@kpnmail.nl>2024-11-26 09:28:12 +0100
committermax-001 <maxsmits21@kpnmail.nl>2024-11-26 09:28:12 +0100
commit07ac07ce4cafe8ec454a1e53b1541dcaab10cf40 (patch)
treedef28215f182f750bc4ff6d892455f7ce0dd6eb2
parentf52e7e1450d47604983dba5f3cbab364ffd77cdc (diff)
It is now possible to reset the persistent flag
-rw-r--r--src/crepe/ComponentManager.cpp4
-rw-r--r--src/crepe/ComponentManager.h3
-rw-r--r--src/crepe/api/GameObject.cpp4
-rw-r--r--src/crepe/api/GameObject.h4
4 files changed, 10 insertions, 5 deletions
diff --git a/src/crepe/ComponentManager.cpp b/src/crepe/ComponentManager.cpp
index e99419e..af4b9f4 100644
--- a/src/crepe/ComponentManager.cpp
+++ b/src/crepe/ComponentManager.cpp
@@ -47,4 +47,6 @@ GameObject ComponentManager::new_object(const string & name, const string & tag,
return object;
}
-void ComponentManager::set_persistent(game_object_id_t id) { this->persistent[id] = true; }
+void ComponentManager::set_persistent(game_object_id_t id, bool persistent) {
+ this->persistent[id] = persistent;
+}
diff --git a/src/crepe/ComponentManager.h b/src/crepe/ComponentManager.h
index 8462698..480124f 100644
--- a/src/crepe/ComponentManager.h
+++ b/src/crepe/ComponentManager.h
@@ -106,8 +106,9 @@ protected:
* components will not be deleted.
*
* \param id The id of the GameObject to set as persistent
+ * \param persistent The persistent flag
*/
- void set_persistent(game_object_id_t id);
+ void set_persistent(game_object_id_t id, bool persistent);
public:
/**
diff --git a/src/crepe/api/GameObject.cpp b/src/crepe/api/GameObject.cpp
index 6c1de12..9ef4682 100644
--- a/src/crepe/api/GameObject.cpp
+++ b/src/crepe/api/GameObject.cpp
@@ -31,8 +31,8 @@ void GameObject::set_parent(const GameObject & parent) {
parent_metadata.at(0).get().children.push_back(this->id);
}
-void GameObject::set_persistent() {
+void GameObject::set_persistent(bool persistent) {
ComponentManager & mgr = this->component_manager;
- mgr.set_persistent(this->id);
+ mgr.set_persistent(this->id, persistent);
}
diff --git a/src/crepe/api/GameObject.h b/src/crepe/api/GameObject.h
index a30dce3..4cd2bc0 100644
--- a/src/crepe/api/GameObject.h
+++ b/src/crepe/api/GameObject.h
@@ -63,8 +63,10 @@ public:
*
* This method sets the persistent flag of the GameObject to true. If the persistent
* flag is set to true, the GameObject will not be deleted when the scene is changed.
+ *
+ * \param persistent The persistent flag
*/
- void set_persistent();
+ void set_persistent(bool persistent = true);
public:
//! The id of the GameObject