aboutsummaryrefslogtreecommitdiff
path: root/mwe/ecs-homemade/inc/Components.h
diff options
context:
space:
mode:
authormax-001 <maxsmits21@kpnmail.nl>2024-10-16 16:50:59 +0200
committermax-001 <maxsmits21@kpnmail.nl>2024-10-16 16:50:59 +0200
commit018f6209378a0c30c1e44fba2f80888553b9f67c (patch)
tree46d79df7053170e13fc28baa1d37bea154ec72b7 /mwe/ecs-homemade/inc/Components.h
parent5b158d9705f9e912f938f22f2389d6f1dc783b2a (diff)
Added functionality for scripts
Diffstat (limited to 'mwe/ecs-homemade/inc/Components.h')
-rw-r--r--mwe/ecs-homemade/inc/Components.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/mwe/ecs-homemade/inc/Components.h b/mwe/ecs-homemade/inc/Components.h
index 98c5fe7..b392fd0 100644
--- a/mwe/ecs-homemade/inc/Components.h
+++ b/mwe/ecs-homemade/inc/Components.h
@@ -1,6 +1,7 @@
#pragma once
#include <string>
+#include <memory>
class Component {
public:
@@ -31,3 +32,35 @@ public:
int mSize;
};
+
+class IBehaviour {
+public:
+ virtual ~IBehaviour() = default;
+ virtual void onStart() = 0;
+ virtual void onUpdate() = 0;
+};
+
+template<typename T>
+class BehaviourWrapper : public IBehaviour {
+public:
+ BehaviourWrapper();
+ void onStart() override;
+ void onUpdate() override;
+
+private:
+ T instance;
+};
+
+class BehaviourScript : public Component {
+public:
+ template<typename T>
+ void addScript();
+
+ void onStart();
+ void onUpdate();
+
+private:
+ std::unique_ptr<IBehaviour> behaviour;
+};
+
+#include "Components.hpp"