diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/crepe/ScriptSystem.cpp | 2 | ||||
-rw-r--r-- | src/crepe/api/BehaviorScript.cpp | 7 | ||||
-rw-r--r-- | src/crepe/api/BehaviorScript.h | 6 | ||||
-rw-r--r-- | src/crepe/api/BehaviorScript.hpp | 3 |
4 files changed, 7 insertions, 11 deletions
diff --git a/src/crepe/ScriptSystem.cpp b/src/crepe/ScriptSystem.cpp index 0537c16..1a7bff4 100644 --- a/src/crepe/ScriptSystem.cpp +++ b/src/crepe/ScriptSystem.cpp @@ -40,7 +40,7 @@ forward_list<Script *> ScriptSystem::get_scripts() { for (auto behavior_script_ref : behavior_scripts) { BehaviorScript & behavior_script = behavior_script_ref.get(); - Script * script = behavior_script.script; + Script * script = behavior_script.script.get(); if (script == nullptr) continue; scripts.push_front(script); } diff --git a/src/crepe/api/BehaviorScript.cpp b/src/crepe/api/BehaviorScript.cpp index e8a85dd..7a93f10 100644 --- a/src/crepe/api/BehaviorScript.cpp +++ b/src/crepe/api/BehaviorScript.cpp @@ -9,10 +9,3 @@ BehaviorScript::BehaviorScript() { dbg_trace(); } -BehaviorScript::~BehaviorScript() { - if (this->script != nullptr) { - delete this->script; - this->script = nullptr; - } -} - diff --git a/src/crepe/api/BehaviorScript.h b/src/crepe/api/BehaviorScript.h index e197991..756c2ca 100644 --- a/src/crepe/api/BehaviorScript.h +++ b/src/crepe/api/BehaviorScript.h @@ -1,5 +1,7 @@ #pragma once +#include <memory> + #include "../Component.h" namespace crepe { @@ -16,7 +18,7 @@ protected: friend class crepe::ComponentManager; BehaviorScript(); public: - virtual ~BehaviorScript(); + virtual ~BehaviorScript() = default; public: template<class T> @@ -24,7 +26,7 @@ public: protected: friend class crepe::ScriptSystem; - Script * script = nullptr; + std::unique_ptr<Script> script = nullptr; }; } diff --git a/src/crepe/api/BehaviorScript.hpp b/src/crepe/api/BehaviorScript.hpp index 0401c0d..9a1f427 100644 --- a/src/crepe/api/BehaviorScript.hpp +++ b/src/crepe/api/BehaviorScript.hpp @@ -11,7 +11,8 @@ template<class T> BehaviorScript & BehaviorScript::set_script() { static_assert(std::is_base_of<Script, T>::value); dbg_trace(); - this->script = new T(); + Script * s = new T(); + this->script = std::unique_ptr<Script>(s); return *this; } |