summaryrefslogtreecommitdiff
path: root/engine-ocean/Game/Environment/environmentsystem.h
diff options
context:
space:
mode:
Diffstat (limited to 'engine-ocean/Game/Environment/environmentsystem.h')
-rw-r--r--engine-ocean/Game/Environment/environmentsystem.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/engine-ocean/Game/Environment/environmentsystem.h b/engine-ocean/Game/Environment/environmentsystem.h
new file mode 100644
index 0000000..240ecb7
--- /dev/null
+++ b/engine-ocean/Game/Environment/environmentsystem.h
@@ -0,0 +1,41 @@
+#ifndef ENVIRONMENTSYSTEM_H
+#define ENVIRONMENTSYSTEM_H
+#include "Game/Environment/Environment.h"
+#include "Game/Systems/system.h"
+
+class EnvironmentSystem : public System
+{
+public:
+ EnvironmentSystem(std::map<std::string, std::shared_ptr<GameObject>>& rigid_gameobjects,
+ std::map<std::string, std::shared_ptr<GameObject>>& dynamic_gameobjects,
+ std::shared_ptr<Camera> camera);
+ void draw() override;
+ void update(double deltaTime) override;
+ void scrollEvent(double distance) override;
+ void mousePosEvent(double xpos, double ypos) override;
+ void drawNonWater();
+
+
+ template <typename T>
+ void addEnviron(std::shared_ptr<T> &&environ){
+ m_environs.put<T>(std::forward<std::shared_ptr<T>>(environ));
+ }
+
+
+ template <class T>
+ T* getEnviron(){
+ auto comp = m_environs.find<T>();
+ assert(comp != m_environs.end());
+ return static_cast<T*>(comp->second.get());
+ }
+
+ template <class T>
+ void removeEnviron(){
+ m_environs.remove<T>();
+ }
+private:
+ TypeMap<std::shared_ptr<Environment>> m_environs;
+
+};
+
+#endif // ENVIRONMENTSYSTEM_H