Fixed OnEvent logic, Updated example

This commit is contained in:
Robert 2020-05-16 20:09:21 +02:00
parent 05c7cddfd3
commit bf6b934b9b
4 changed files with 19 additions and 16 deletions

View file

@ -47,15 +47,15 @@ namespace sdlu
return !IS_NULLPTR(m_pWindow); return !IS_NULLPTR(m_pWindow);
} }
bool RenderWindow::PollEvent(SDL_Event& event) bool RenderWindow::PollEvent(SDL_Event* event)
{ {
// Handle events before the user in case a derived // Handle events before the user in case a derived
// class decides to block the event. // class decides to block the event.
while (SDL_PollEvent(&event)) while (SDL_PollEvent(event))
{ {
switch(event.type) switch(event->window.event)
{ {
case SDL_WINDOWEVENT_RESIZED: OnResize() ? break : return true; case SDL_WINDOWEVENT_RESIZED: if (!OnResize()) return true; break;
default: return true; default: return true;
} }
} }
@ -64,8 +64,9 @@ namespace sdlu
return false; return false;
} }
bool RenderWindow::WaitEvent(SDL_Event& event) bool RenderWindow::WaitEvent(SDL_Event* event)
{ {
while (!PollEvent(event)) continue; while (!PollEvent(event)) continue;
return true;
} }
} }

View file

@ -70,15 +70,15 @@ namespace sdlu
* @param[out] event An object to write the latest event to * @param[out] event An object to write the latest event to
* @return True if there was an event, False if there wasn't * @return True if there was an event, False if there wasn't
*/ */
bool PollEvent(SDL_Event& event); bool PollEvent(SDL_Event* event);
/** /**
* @brief A blocking event polling function * @brief A blocking event polling function
* *
* @param[out] event An object to write the latest event to * @param[out] event An object to write the latest event to
* @return True if there was an event, False if there wasn't * @return True if an event was polled
*/ */
bool WaitEvent(SDL_Event& event); bool WaitEvent(SDL_Event* event);
protected: protected:
SDL_Window* m_pWindow; ///< A pointer to the window object SDL_Window* m_pWindow; ///< A pointer to the window object

View file

@ -7,7 +7,9 @@ class MyWindow :
{ {
public: public:
MyWindow(Uint32 width, Uint32 height, const char* title) : MyWindow(Uint32 width, Uint32 height, const char* title) :
RenderWindow(sdlu::Vector2u(width, height), title, NULL, NULL) RenderWindow(sdlu::Vector2u(width, height), title,
SDL_WINDOW_RESIZABLE,
NULL)
{ {
// Empty // Empty
} }
@ -21,7 +23,7 @@ void sdlu::RenderWindow::OnCreate()
bool sdlu::RenderWindow::OnResize() bool sdlu::RenderWindow::OnResize()
{ {
std::cout << "Window was Resized!" << std::endl; std::cout << "Window was Resized!" << std::endl;
return false; return true;
} }
void sdlu::RenderWindow::OnClose() void sdlu::RenderWindow::OnClose()

View file

@ -11,13 +11,13 @@ int main(int argc, char** argv)
vec *= 1.8f; vec *= 1.8f;
std::cout << "Vector2f: " << vec.x << ", " << vec.y << std::endl; std::cout << "Vector2f: " << vec.x << ", " << vec.y << std::endl;
try { MyWindow window(800, 800, "Test");
MyWindow window(800, 800, "Test");
} SDL_Event event;
catch (sdlu::ObjectCreationException e) while (window.WaitEvent(&event))
{ {
std::cerr << e.what() << std::endl; std::cout << event.type << std::endl;
std::cerr << SDL_GetError() << std::endl;
} }
return 0; return 0;
} }