From 08fee6eff251337dd4dca2b514a9c06d57ede0af Mon Sep 17 00:00:00 2001 From: max-001 Date: Fri, 22 Nov 2024 11:14:13 +0100 Subject: Implemented persistent objects --- src/crepe/api/GameObject.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/crepe/api/GameObject.cpp') 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 parent_metadata = mgr.get_components_by_id(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); +} -- cgit v1.2.3 From 07ac07ce4cafe8ec454a1e53b1541dcaab10cf40 Mon Sep 17 00:00:00 2001 From: max-001 Date: Tue, 26 Nov 2024 09:28:12 +0100 Subject: It is now possible to reset the persistent flag --- src/crepe/ComponentManager.cpp | 4 +++- src/crepe/ComponentManager.h | 3 ++- src/crepe/api/GameObject.cpp | 4 ++-- src/crepe/api/GameObject.h | 4 +++- 4 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/crepe/api/GameObject.cpp') 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 -- cgit v1.2.3