From 001e6c25610039fd11304c3e1d49aa35c8e3b0f4 Mon Sep 17 00:00:00 2001 From: anulax1225 Date: Sun, 21 Jan 2024 22:47:56 +0100 Subject: [PATCH] Handling window events with glfw --- .../bakara/plaforms/window/glfw/win_glfw.cpp | 29 +++++++++++++++++-- .../bakara/plaforms/window/glfw/win_glfw.h | 6 ++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/bakara/src/bakara/plaforms/window/glfw/win_glfw.cpp b/bakara/src/bakara/plaforms/window/glfw/win_glfw.cpp index ef86f36..311d18c 100644 --- a/bakara/src/bakara/plaforms/window/glfw/win_glfw.cpp +++ b/bakara/src/bakara/plaforms/window/glfw/win_glfw.cpp @@ -15,6 +15,16 @@ namespace Bk { } WinGLFW::WinGLFW(const WindowPros& props) + { + init(props); + } + + WinGLFW::~WinGLFW() + { + shutdown(); + } + + void WinGLFW::init(const WindowPros& props) { p_data.title = props.title; p_data.width = props.width; @@ -31,11 +41,26 @@ namespace Bk { glfwMakeContextCurrent(p_window); glfwSetWindowUserPointer(p_window, &p_data); set_vsync(true); + + init_event_callbacks(); } - WinGLFW::~WinGLFW() + void WinGLFW::init_event_callbacks() { - shutdown(); + glfwSetFramebufferSizeCallback(p_window, [](GLFWwindow* window, int width, int height) + { + WindowData& data = *(WindowData*)glfwGetWindowUserPointer(window); + WindowResizeEvent e((uint)width, (uint)height); + data.callback(e); + }); + + glfwSetWindowCloseCallback(p_window, [](GLFWwindow* window) + { + WindowData& data = *(WindowData*)glfwGetWindowUserPointer(window); + WindowCloseEvent e; + data.callback(e); + }); + } void WinGLFW::on_update() diff --git a/bakara/src/bakara/plaforms/window/glfw/win_glfw.h b/bakara/src/bakara/plaforms/window/glfw/win_glfw.h index ac6864b..df414c0 100644 --- a/bakara/src/bakara/plaforms/window/glfw/win_glfw.h +++ b/bakara/src/bakara/plaforms/window/glfw/win_glfw.h @@ -1,6 +1,10 @@ #pragma once #include #include +#include +#include +#include +#include #include @@ -33,6 +37,8 @@ namespace Bk::Plaform { }; WindowData p_data; + void init_event_callbacks(); + void init(const WindowPros& props); void shutdown(); }; } \ No newline at end of file