aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api
diff options
context:
space:
mode:
authormax-001 <maxsmits21@kpnmail.nl>2024-11-22 11:14:13 +0100
committermax-001 <maxsmits21@kpnmail.nl>2024-11-22 11:14:13 +0100
commit08fee6eff251337dd4dca2b514a9c06d57ede0af (patch)
treeead93ad5594e1254a66a6429a600f080880f4d90 /src/crepe/api
parent07bca38a27f794ed6a2f74536f7a909530ce7df0 (diff)
Implemented persistent objects
Diffstat (limited to 'src/crepe/api')
-rw-r--r--src/crepe/api/GameObject.cpp6
-rw-r--r--src/crepe/api/GameObject.h7
2 files changed, 13 insertions, 0 deletions
diff --git a/src/crepe/api/GameObject.cpp b/src/crepe/api/GameObject.cpp
index 4874426..7c873ec 100644
--- a/src/crepe/api/GameObject.cpp
+++ b/src/crepe/api/GameObject.cpp
@@ -30,3 +30,9 @@ void GameObject::set_parent(const GameObject & parent) {
RefVector<Metadata> parent_metadata = mgr.get_components_by_id<Metadata>(parent.id);
parent_metadata.at(0).get().children.push_back(this->id);
}
+
+void GameObject::set_persistent() {
+ ComponentManager & mgr = this->component_manager;
+
+ mgr.set_persistent(this->id);
+}
diff --git a/src/crepe/api/GameObject.h b/src/crepe/api/GameObject.h
index 34ef8bb..07d5ad2 100644
--- a/src/crepe/api/GameObject.h
+++ b/src/crepe/api/GameObject.h
@@ -59,6 +59,13 @@ public:
*/
template <typename T, typename... Args>
T & add_component(Args &&... args);
+ /**
+ * \brief Components will not be deleted if this method is called
+ *
+ * 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.
+ */
+ void set_persistent();
public:
//! The id of the GameObject