aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/api
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-11-27 13:11:56 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-11-27 13:11:56 +0100
commitd1eed940b8119e95a14f1d08bf26184c7f0a0d8f (patch)
treeb642104f7a0f86b647a85960f2ee48c1fd6382ba /src/crepe/api
parentbe5ccbe24086d5d4fb407f268c649dcbc36eda6b (diff)
parentee632145ee5b2c1f49e0f88dbccd3a888cf9ad3c (diff)
Merge branch 'max/ecs' of github.com:lonkaars/crepe
Diffstat (limited to 'src/crepe/api')
-rw-r--r--src/crepe/api/GameObject.cpp6
-rw-r--r--src/crepe/api/GameObject.h9
2 files changed, 15 insertions, 0 deletions
diff --git a/src/crepe/api/GameObject.cpp b/src/crepe/api/GameObject.cpp
index 3c36a21..9ef4682 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(bool persistent) {
+ ComponentManager & mgr = this->component_manager;
+
+ mgr.set_persistent(this->id, persistent);
+}
diff --git a/src/crepe/api/GameObject.h b/src/crepe/api/GameObject.h
index fcb8d9a..4cd2bc0 100644
--- a/src/crepe/api/GameObject.h
+++ b/src/crepe/api/GameObject.h
@@ -58,6 +58,15 @@ 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.
+ *
+ * \param persistent The persistent flag
+ */
+ void set_persistent(bool persistent = true);
public:
//! The id of the GameObject