diff --git a/library/phx/display_system.cpp b/library/phx/display_system.cpp index 675f964211c9f8d7d852aa198436487b267a04ae..cd49d6bed47ea3610b8d56d258decf8efad9607a 100644 --- a/library/phx/display_system.cpp +++ b/library/phx/display_system.cpp @@ -22,8 +22,17 @@ #include "display_system.hpp" +#include <vector> + namespace phx { -DisplaySystem::DisplaySystem(Engine* engine) : System(engine) {} -DisplaySystem::~DisplaySystem() {} +void DisplaySystem::Update(const FrameTimer::TimeInfo&) { tick(); } +std::vector<di::opengl_window*> DisplaySystem::OpenGLWindows() const { + std::vector<di::opengl_window*> opengl_windows; + for (auto window : windows()) { + auto opengl_window = dynamic_cast<di::opengl_window*>(window); + if (opengl_window) opengl_windows.push_back(opengl_window); + } + return opengl_windows; +} } // namespace phx diff --git a/library/phx/display_system.hpp b/library/phx/display_system.hpp index 08e2d36364fc6747c9cb8d2605b45e990ebeaa9d..9a22be33ccb0f8194a3c2c3d318d2894c873909e 100644 --- a/library/phx/display_system.hpp +++ b/library/phx/display_system.hpp @@ -23,32 +23,22 @@ #ifndef LIBRARY_PHX_DISPLAY_SYSTEM_HPP_ #define LIBRARY_PHX_DISPLAY_SYSTEM_HPP_ -#include <memory> +#include <di/systems/display/display_system.hpp> +#include <di/systems/display/opengl_window.hpp> + #include <vector> #include "phx/engine.hpp" #include "phx/export.hpp" -#include "phx/render_target.hpp" #include "phx/system.hpp" namespace phx { - -class PHOENIX_EXPORT DisplaySystem : public System { +class PHOENIX_EXPORT DisplaySystem : public System, public di::display_system { public: - DisplaySystem(const DisplaySystem&) = delete; - DisplaySystem(DisplaySystem&&) = default; - ~DisplaySystem(); - - DisplaySystem& operator=(const DisplaySystem&) = delete; - DisplaySystem& operator=(DisplaySystem&&) = default; + void Update(const FrameTimer::TimeInfo&) override; - void Update(const FrameTimer::TimeInfo&) override = 0; - - protected: - explicit DisplaySystem(Engine* engine); - friend DisplaySystem* Engine::CreateSystem<DisplaySystem>(); + std::vector<di::opengl_window*> OpenGLWindows() const; }; - } // namespace phx #endif // LIBRARY_PHX_DISPLAY_SYSTEM_HPP_