aboutsummaryrefslogtreecommitdiff
path: root/mwe/ecs-homemade/inc/Components.h
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-10-18 14:56:05 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2024-10-18 14:56:05 +0200
commit0fdebc7d7a143ad2b9b5ed6a596bf4bb1f0f7d7f (patch)
tree7400cea54bc40b01f64cf91c26a4ae20980a64cc /mwe/ecs-homemade/inc/Components.h
parenta2c719948ff8af9abe267c4d1c9b16cd1e2fb317 (diff)
parent77555730e3ddb811b9ce8470659663e3f1573de2 (diff)
merge master into loek/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..ad491e7 100644
--- a/mwe/ecs-homemade/inc/Components.h
+++ b/mwe/ecs-homemade/inc/Components.h
@@ -1,5 +1,6 @@
#pragma once
+#include <memory>
#include <string>
class Component {
@@ -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"