#ifndef ENVIRONMENTSYSTEM_H #define ENVIRONMENTSYSTEM_H #include "Game/Environment/Environment.h" #include "Game/Systems/system.h" class EnvironmentSystem : public System { public: EnvironmentSystem(std::map>& rigid_gameobjects, std::map>& dynamic_gameobjects, std::shared_ptr camera); void draw() override; void update(double deltaTime) override; void scrollEvent(double distance) override; void mousePosEvent(double xpos, double ypos) override; void drawNonWater(); template void addEnviron(std::shared_ptr &&environ){ m_environs.put(std::forward>(environ)); } template T* getEnviron(){ auto comp = m_environs.find(); assert(comp != m_environs.end()); return static_cast(comp->second.get()); } template void removeEnviron(){ m_environs.remove(); } private: TypeMap> m_environs; }; #endif // ENVIRONMENTSYSTEM_H