summary refs log tree commit diff
path: root/src/GFX
diff options
context:
space:
mode:
Diffstat (limited to 'src/GFX')
-rw-r--r--src/GFX/Mouse.cpp24
-rw-r--r--src/GFX/Mouse.hpp20
-rw-r--r--src/GFX/Window.cpp26
-rw-r--r--src/GFX/Window.hpp26
4 files changed, 19 insertions, 77 deletions
diff --git a/src/GFX/Mouse.cpp b/src/GFX/Mouse.cpp
deleted file mode 100644
index 49f6972..0000000
--- a/src/GFX/Mouse.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "Mouse.hpp"
-
-namespace MC::GFX {
-
-Vector<2> Mouse::update(GLFWwindow* window) {
-    Real x, y;
-    glfwGetCursorPos(window, &x, &y);
-
-    if (m_first_event) {
-        m_last_x = x;
-        m_last_y = y;
-
-        m_first_event = false;
-    }
-
-    Vector<2> movement{static_cast<Real>(x) - m_last_x,  static_cast<Real>(y) - m_last_y};
-
-    m_last_x = x;
-    m_last_y = y;
-
-    return movement;
-}
-
-}
\ No newline at end of file
diff --git a/src/GFX/Mouse.hpp b/src/GFX/Mouse.hpp
deleted file mode 100644
index ad940d4..0000000
--- a/src/GFX/Mouse.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-#pragma once
-
-#include <GLFW/glfw3.h>
-#include "../Math/Vector.hpp"
-
-namespace MC::GFX {
-
-class Mouse {
-public:
-    Mouse() = default;
-
-    Vector<2> update(GLFWwindow* window);
-private:
-    Bool m_first_event = true;
-
-    Real m_last_x = 0.0f;
-    Real m_last_y = 0.0f;
-};
-
-}
\ No newline at end of file
diff --git a/src/GFX/Window.cpp b/src/GFX/Window.cpp
index 33e76d5..5c391c8 100644
--- a/src/GFX/Window.cpp
+++ b/src/GFX/Window.cpp
@@ -3,10 +3,12 @@
 #include "../Common/Assert.hpp"
 #include "../ThreadRole.hpp"
 #include "Window.hpp"
+#include "../Common/Casts.hpp"
+#include <string>
 
 namespace MC::GFX {
 
-Window::Window(const Char* title, U32 width, U32 height) {
+Window::Window(std::string const& title, U32 const width, U32 const height) {
     ASSERT_MAIN_THREAD();
     glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
     glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
@@ -14,7 +16,7 @@ Window::Window(const Char* title, U32 width, U32 height) {
     glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
     glfwWindowHint(GLFW_DOUBLEBUFFER, GL_TRUE);
 
-    m_window = glfwCreateWindow(width, height, title, nullptr, nullptr);
+    m_window = glfwCreateWindow(TO(I32, width), TO(I32, height), title.c_str(), nullptr, nullptr);
     if (m_window == nullptr) {
         throw std::runtime_error("Failed to create window.");
     }
@@ -36,32 +38,20 @@ GLFWwindow* Window::get() const {
     return m_window;
 }
 
-void Window::close() {
+void Window::close() const {
     glfwSetWindowShouldClose(m_window, true);
 }
 
-Vector<2> Window::mouse_delta() {
-    return m_mouse.update(m_window);
-}
-
-Bool Window::key(I32 key, I32 type) const {
-    return glfwGetKey(m_window, key) == type;
-}
-
-Bool Window::mouse(I32 key, I32 type) const {
-    return glfwGetMouseButton(m_window, key) == type;
-}
-
-void Window::start_render() {
+void Window::start_render() const {
     glfwSwapBuffers(m_window);
 }
 
-void Window::poll_events() {
+void Window::poll_events() const {
     ASSERT_MAIN_THREAD();
     glfwPollEvents();
 }
 
-void Window::on_size_change(void (callback)(GLFWwindow*, I32, I32)) {
+void Window::on_size_change(void (callback)(GLFWwindow*, I32, I32)) const {
     glfwSetFramebufferSizeCallback(m_window, callback);
 }
 
diff --git a/src/GFX/Window.hpp b/src/GFX/Window.hpp
index c26b0fd..86920b5 100644
--- a/src/GFX/Window.hpp
+++ b/src/GFX/Window.hpp
@@ -1,35 +1,31 @@
 #pragma once
 
-#include "../Common/Sizes.hpp"
-#include "../Math/Vector.hpp"
+#include <string>
 #include <GLFW/glfw3.h>
-#include "Mouse.hpp"
+#include "../Common/Pure.hpp"
+#include "../Common/Sizes.hpp"
 
 namespace MC::GFX {
 
 class Window {
 public:
-    Window(const Char* title, U32 width, U32 height);
+    Window(std::string const& title, U32 width, U32 height);
     ~Window();
 
-    GLFWwindow* get() const;
+    PURE GLFWwindow* get() const;
 
-    void on_size_change(void (* callback)(GLFWwindow*, I32, I32));
+    void on_size_change(void (* callback)(GLFWwindow*, I32, I32)) const;
 
     void attach() const;
     void detach() const;
 
-    void close();
-    void start_render();
-    void poll_events();
-    Vector<2> mouse_delta();
+    void close() const;
+    void start_render() const;
+    void poll_events() const;
 
-    Bool key(I32 key, I32 type) const;
-    Bool mouse(I32 key, I32 type) const;
-    Bool should_close() const;
+    PURE Bool should_close() const;
 private:
     GLFWwindow* m_window;
-    Mouse m_mouse;
 };
 
-}
\ No newline at end of file
+}