Elevate Engine 1
Loading...
Searching...
No Matches
Elevate::GlfwWindow Class Reference

#include <GlfwWindow.h>

Inheritance diagram for Elevate::GlfwWindow:
Elevate::Window

Public Member Functions

 GlfwWindow ()=default
 
 GlfwWindow (const WindowProps &)
 
virtual ~GlfwWindow ()
 
void OnUpdate () override
 
unsigned int GetWidth () const override
 
unsigned int GetHeight () const override
 
bool GetFocus () const override
 
void SetEventCallback (const EventCallbackFn &callback) override
 
void SetVSync (bool enabled) override
 
bool IsVSync () const override
 
virtual void * GetNativeWindow () const override
 
virtual void Init (const WindowProps &props) override
 
virtual double GetTime () const override
 
- Public Member Functions inherited from Elevate::Window
 Window ()=default
 
virtual ~Window ()
 
const WindowDataGetWindowData () const
 
void SetWindowSize (unsigned int width, unsigned int height)
 
void EventCallback (Event &event)
 

Additional Inherited Members

- Static Public Member Functions inherited from Elevate::Window
static WindowCreate (const WindowProps &props=WindowProps("app.config"))
 
- Protected Attributes inherited from Elevate::Window
WindowData m_Data
 

Detailed Description

Definition at line 12 of file GlfwWindow.h.

Constructor & Destructor Documentation

◆ GlfwWindow() [1/2]

Elevate::GlfwWindow::GlfwWindow ( )
default

◆ GlfwWindow() [2/2]

Elevate::GlfwWindow::GlfwWindow ( const WindowProps props)

Definition at line 38 of file GlfwWindow.cpp.

39 {
40 Init(props);
41 }
virtual void Init(const WindowProps &props) override

◆ ~GlfwWindow()

Elevate::GlfwWindow::~GlfwWindow ( )
virtual

Definition at line 43 of file GlfwWindow.cpp.

44 {
45 Shutdown();
46 }

Member Function Documentation

◆ GetFocus()

bool Elevate::GlfwWindow::GetFocus ( ) const
inlineoverridevirtual

Implements Elevate::Window.

Definition at line 23 of file GlfwWindow.h.

23{ return m_Data.Focused; }
WindowData m_Data
Definition Window.h:68

◆ GetHeight()

unsigned int Elevate::GlfwWindow::GetHeight ( ) const
inlineoverridevirtual

Implements Elevate::Window.

Definition at line 22 of file GlfwWindow.h.

22{ return m_Data.Height; }
unsigned int Height
Definition Window.h:14

◆ GetNativeWindow()

virtual void * Elevate::GlfwWindow::GetNativeWindow ( ) const
inlineoverridevirtual

Implements Elevate::Window.

Definition at line 30 of file GlfwWindow.h.

30{ return m_Window; };

◆ GetTime()

double Elevate::GlfwWindow::GetTime ( ) const
overridevirtual

Implements Elevate::Window.

Definition at line 48 of file GlfwWindow.cpp.

49 {
50 return glfwGetTime();
51 }

◆ GetWidth()

unsigned int Elevate::GlfwWindow::GetWidth ( ) const
inlineoverridevirtual

Implements Elevate::Window.

Definition at line 21 of file GlfwWindow.h.

21{ return m_Data.Width; }
unsigned int Width
Definition Window.h:14

◆ Init()

void Elevate::GlfwWindow::Init ( const WindowProps props)
overridevirtual

Reimplemented from Elevate::Window.

Definition at line 53 of file GlfwWindow.cpp.

54 {
55 Window::Init(props);
56
57 if (!s_GLFWInitialized)
58 {
59 int success = glfwInit();
60 EE_CORE_ASSERT(success, "Could not initialize GLFW.");
61 glfwSetErrorCallback(GLFWErrorCallback);
62 s_GLFWInitialized = true;
63 }
64
65 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
66 glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5);
67 glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
68 glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, true);
69
70 m_Window = glfwCreateWindow((int)props.Width, (int)props.Height, m_Data.Title.c_str(), nullptr, nullptr);
71
72 m_Context = new OpenGLContext(m_Window);
73 m_Context->Init();
74
75
76 SetVSync(props.VSync);
77
78 // Set GLFW callbacks
79 glfwSetWindowUserPointer(m_Window, &m_Data);
80
81 glfwSetWindowSizeCallback(m_Window, [](GLFWwindow* window, int width, int height)
82 {
83 void* userPtr = glfwGetWindowUserPointer(window);
84 WindowData* dataPtr = static_cast<WindowData*>(userPtr);
85 dataPtr->Width = width;
86 dataPtr->Height = height;
87 WindowResizeEvent event(width, height);
88 dataPtr->EventCallback(event);
89 });
90
91 glfwSetWindowCloseCallback(m_Window, [](GLFWwindow* window)
92 {
93 void* userPtr = glfwGetWindowUserPointer(window);
94 WindowData* dataPtr = static_cast<WindowData*>(userPtr);
95 WindowCloseEvent event;
96 dataPtr->EventCallback(event);
97 });
98
99 glfwSetWindowFocusCallback(m_Window, [](GLFWwindow* window, int focused)
100 {
101 void* userPtr = glfwGetWindowUserPointer(window);
102 WindowData* dataPtr = static_cast<WindowData*>(userPtr);
103 WindowFocusEvent event(focused);
104 dataPtr->EventCallback(event);
105 });
106
107 glfwSetKeyCallback(m_Window, [](GLFWwindow* window, int key, int scancode, int action, int mods)
108 {
109 void* userPtr = glfwGetWindowUserPointer(window);
110 WindowData* dataPtr = static_cast<WindowData*>(userPtr);
111
112 switch(action)
113 {
114 case GLFW_PRESS:
115 {
116 KeyPressedEvent event(key, 0);
117 dataPtr->EventCallback(event);
118 break;
119 }
120 case GLFW_RELEASE:
121 {
122 KeyReleasedEvent event(key);
123 dataPtr->EventCallback(event);
124 break;
125 }
126 case GLFW_REPEAT:
127 {
128 KeyPressedEvent event(key, 1);
129 dataPtr->EventCallback(event);
130 break;
131 }
132 }
133 });
134
135 glfwSetCharCallback(m_Window, [](GLFWwindow* window, unsigned int keycode)
136 {
137 void* userPtr = glfwGetWindowUserPointer(window);
138 WindowData* dataPtr = static_cast<WindowData*>(userPtr);
139 KeyTypedEvent event(keycode);
140 dataPtr->EventCallback(event);
141 });
142
143 glfwSetMouseButtonCallback(m_Window, Elevate_MouseButtonCallback);
144
145 glfwSetScrollCallback(m_Window, [](GLFWwindow* window, double xOffset, double yOffset)
146 {
147 void* userPtr = glfwGetWindowUserPointer(window);
148 WindowData* dataPtr = static_cast<WindowData*>(userPtr);
149 MouseScrolledEvent event((float)xOffset, (float)yOffset);
150 dataPtr->EventCallback(event);
151 });
152
153 glfwSetCursorPosCallback(m_Window, [](GLFWwindow* window, double xPos, double yPos)
154 {
155 void* userPtr = glfwGetWindowUserPointer(window);
156 WindowData* dataPtr = static_cast<WindowData*>(userPtr);
157 MouseMovedEvent event((float)xPos, (float)yPos);
158 dataPtr->EventCallback(event);
159 });
160 }
void SetVSync(bool enabled) override
virtual void Init(const WindowProps &props)
Definition Window.cpp:82
std::string Title
Definition Window.h:13

◆ IsVSync()

bool Elevate::GlfwWindow::IsVSync ( ) const
overridevirtual

Implements Elevate::Window.

Definition at line 183 of file GlfwWindow.cpp.

184 {
185 return m_Data.VSync;
186 }

◆ OnUpdate()

void Elevate::GlfwWindow::OnUpdate ( )
overridevirtual

Implements Elevate::Window.

Definition at line 167 of file GlfwWindow.cpp.

168 {
169 glfwPollEvents();
170 m_Context->SwapBuffers();
171 }
virtual void SwapBuffers()=0

◆ SetEventCallback()

void Elevate::GlfwWindow::SetEventCallback ( const EventCallbackFn callback)
inlineoverridevirtual

Implements Elevate::Window.

Definition at line 26 of file GlfwWindow.h.

26{ m_Data.EventCallback = callback; }
EventCallbackFn EventCallback
Definition Window.h:18

◆ SetVSync()

void Elevate::GlfwWindow::SetVSync ( bool  enabled)
overridevirtual

Implements Elevate::Window.

Definition at line 173 of file GlfwWindow.cpp.

174 {
175 if (enabled)
176 glfwSwapInterval(1);
177 else
178 glfwSwapInterval(0);
179
180 m_Data.VSync = enabled;
181 }

The documentation for this class was generated from the following files: