#ifndef HYDRAWINDOWMANAGER #define HYDRAWINDOWMANAGER #include "../engine/HydraObject.h" #include "HydraRenderSettings.h" #include "../GlewIncludes.h" #include #include #include #include class HydraWindowManager : public HydraObject { private: static std::mutex m_mouse_pos_mutex; static std::vector m_key_presses; static std::queue m_mouse_moves; static glm::vec2 m_mouse_position; GLFWwindow* m_window = nullptr; static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods); static void cursor_position_callback(GLFWwindow* window, double x, double y); static void mouse_button_callback(GLFWwindow* window, int button, int action, int mods); static void SetMousePosition(glm::vec2 mouse_pos); public: bool CreateRenderWindow(std::string title, HydraRenderSettings renderSettings); // void ExitFullScreen() {}; // void SetFullScreen() {}; // void* GetManagedDC() { return nullptr; } bool HandleMessages(); void Shutdown(); static bool GetKeyPress(HydraKeyPressStuct& key_press); static bool GetMouseMove(HydraMouseMoveStruct& mouse_move); static glm::vec2 GetMousePosition(); GLFWwindow* const GetWindow() {return m_window;} void Swap(); }; #endif /* HYDRAWINDOWMANAGER */