Handling window events with glfw

dev
anulax1225 ago%!(EXTRA string=2 years)
parent 508b36bd71
commit 001e6c2561
  1. 29
      bakara/src/bakara/plaforms/window/glfw/win_glfw.cpp
  2. 6
      bakara/src/bakara/plaforms/window/glfw/win_glfw.h

@ -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()

@ -1,6 +1,10 @@
#pragma once
#include <bkpch.h>
#include <bakara/core/window.h>
#include <bakara/events/mouse_event.h>
#include <bakara/events/key_event.h>
#include <bakara/events/window_event.h>
#include <bakara/events/event.h>
#include <GLFW/glfw3.h>
@ -33,6 +37,8 @@ namespace Bk::Plaform {
};
WindowData p_data;
void init_event_callbacks();
void init(const WindowPros& props);
void shutdown();
};
}
Loading…
Cancel
Save