#pragma once #include "../ComponentManager.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: /** * \brief Process all components this system is responsible for. */ virtual void update() = 0; public: System(ComponentManager &); virtual ~System() = default; protected: ComponentManager & component_manager; }; } // namespace crepe