aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/system/System.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe/system/System.h')
-rw-r--r--src/crepe/system/System.h28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/crepe/system/System.h b/src/crepe/system/System.h
index ecbb7f5..063dfbf 100644
--- a/src/crepe/system/System.h
+++ b/src/crepe/system/System.h
@@ -1,22 +1,30 @@
#pragma once
+#include "../manager/Mediator.h"
+
namespace crepe {
+class ComponentManager;
+
+/**
+ * \brief Base ECS system class
+ *
+ * This class is used as the base for all system classes. Classes derived from System must
+ * implement the System::update() method and copy Script::Script with the `using`-syntax.
+ */
class System {
public:
- static System & get_instance();
+ /**
+ * \brief Process all components this system is responsible for.
+ */
virtual void update() = 0;
-protected:
- System() {};
- virtual ~System() {};
+public:
+ System(const Mediator & m);
+ virtual ~System() = default;
-private:
- // singleton
- System(const System &) = delete;
- System(System &&) = delete;
- System & operator=(const System &) = delete;
- System & operator=(System &&) = delete;
+protected:
+ const Mediator & mediator;
};
} // namespace crepe