2021-05-21 20:33:37 +04:30
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "Base.h"
|
|
|
|
#include "Core/Window.h"
|
|
|
|
|
2021-05-27 18:55:30 +04:30
|
|
|
struct GLFWwindow;
|
2021-05-25 21:22:01 +04:30
|
|
|
|
2021-05-21 20:33:37 +04:30
|
|
|
namespace Light {
|
|
|
|
|
2021-05-27 18:55:30 +04:30
|
|
|
class Event;
|
|
|
|
|
2021-05-21 20:33:37 +04:30
|
|
|
class wWindow : public Window
|
|
|
|
{
|
|
|
|
private:
|
2021-06-21 18:08:25 +04:30
|
|
|
// #todo: don't handle Windows's window with glfw, create it yourself
|
2021-05-21 20:33:37 +04:30
|
|
|
GLFWwindow* m_Handle = nullptr;
|
2021-05-23 18:10:11 +04:30
|
|
|
|
|
|
|
std::function<void(Event&)> m_EventCallback;
|
2021-05-27 18:55:30 +04:30
|
|
|
|
2021-05-21 20:33:37 +04:30
|
|
|
public:
|
2021-06-14 10:01:28 +04:30
|
|
|
wWindow(std::function<void(Event&)> callback);
|
2021-05-21 20:33:37 +04:30
|
|
|
|
|
|
|
~wWindow();
|
|
|
|
|
2021-06-15 22:17:28 +04:30
|
|
|
void PollEvents() override;
|
|
|
|
void OnEvent(const Event& event) override;
|
2021-06-14 10:01:28 +04:30
|
|
|
|
2021-06-15 22:17:28 +04:30
|
|
|
// Setters //
|
|
|
|
void SetProperties(const WindowProperties& properties) override;
|
2021-06-14 10:01:28 +04:30
|
|
|
|
2021-06-15 22:17:28 +04:30
|
|
|
void SetTitle(const std::string& title) override;
|
2021-05-21 20:33:37 +04:30
|
|
|
|
2021-06-19 15:12:42 +04:30
|
|
|
void SetSize(const glm::uvec2& size, bool add = false) override;
|
2021-05-21 20:33:37 +04:30
|
|
|
|
2021-06-15 22:17:28 +04:30
|
|
|
void SetVSync(bool vsync, bool toggle = false) override;
|
|
|
|
void SetVisibility(bool visible, bool toggle = false) override;
|
2021-05-27 18:55:30 +04:30
|
|
|
|
2021-05-23 18:10:11 +04:30
|
|
|
private:
|
|
|
|
void BindGlfwEvents();
|
2021-05-21 20:33:37 +04:30
|
|
|
};
|
|
|
|
|
|
|
|
}
|