aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/crepe/ScriptSystem.cpp2
-rw-r--r--src/crepe/api/BehaviorScript.cpp7
-rw-r--r--src/crepe/api/BehaviorScript.h6
-rw-r--r--src/crepe/api/BehaviorScript.hpp3
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;
}