#include #include "Window.hpp" namespace MC::GFX { Window::Window(const char *title, uint32_t width, uint32_t height) { glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); glfwWindowHint(GLFW_DOUBLEBUFFER, GL_TRUE); m_window = glfwCreateWindow(width, height, title, nullptr, nullptr); if (m_window == nullptr) { throw std::runtime_error("Failed to create window."); } glfwMakeContextCurrent(m_window); glfwSetInputMode(m_window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); } Window::~Window() { glfwDestroyWindow(m_window); } bool Window::should_close() { return glfwWindowShouldClose(m_window); } GLFWwindow* Window::get() { return m_window; } void Window::close() { glfwSetWindowShouldClose(m_window, true); } Vector<2> Window::mouse_delta() { return m_mouse.update(m_window); } bool Window::key(int key, int type) { return (glfwGetKey(m_window, key) == type); } void Window::start_frame() { glfwSwapBuffers(m_window); glfwPollEvents(); } void Window::on_size_change(void (callback)(GLFWwindow*, int, int)) { glfwSetFramebufferSizeCallback(m_window, static_cast(callback)); } }