From bf6b934b9b9934b2876ae14466ce6bb67519fcc5 Mon Sep 17 00:00:00 2001 From: Robert Date: Sat, 16 May 2020 20:09:21 +0200 Subject: [PATCH] Fixed OnEvent logic, Updated example --- SDLU/graphics/RenderWindow.cpp | 11 ++++++----- SDLU/graphics/RenderWindow.hpp | 6 +++--- SDLU_Example/header.hpp | 6 ++++-- SDLU_Example/main.cpp | 12 ++++++------ 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/SDLU/graphics/RenderWindow.cpp b/SDLU/graphics/RenderWindow.cpp index 929b16a..3616706 100644 --- a/SDLU/graphics/RenderWindow.cpp +++ b/SDLU/graphics/RenderWindow.cpp @@ -47,15 +47,15 @@ namespace sdlu 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 // 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; } } @@ -64,8 +64,9 @@ namespace sdlu return false; } - bool RenderWindow::WaitEvent(SDL_Event& event) + bool RenderWindow::WaitEvent(SDL_Event* event) { while (!PollEvent(event)) continue; + return true; } } \ No newline at end of file diff --git a/SDLU/graphics/RenderWindow.hpp b/SDLU/graphics/RenderWindow.hpp index 5673241..8c02f17 100644 --- a/SDLU/graphics/RenderWindow.hpp +++ b/SDLU/graphics/RenderWindow.hpp @@ -70,15 +70,15 @@ namespace sdlu * @param[out] event An object to write the latest event to * @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 * * @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: SDL_Window* m_pWindow; ///< A pointer to the window object diff --git a/SDLU_Example/header.hpp b/SDLU_Example/header.hpp index 3a31173..3afd380 100644 --- a/SDLU_Example/header.hpp +++ b/SDLU_Example/header.hpp @@ -7,7 +7,9 @@ class MyWindow : { public: 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 } @@ -21,7 +23,7 @@ void sdlu::RenderWindow::OnCreate() bool sdlu::RenderWindow::OnResize() { std::cout << "Window was Resized!" << std::endl; - return false; + return true; } void sdlu::RenderWindow::OnClose() diff --git a/SDLU_Example/main.cpp b/SDLU_Example/main.cpp index 95a0e48..c46baca 100644 --- a/SDLU_Example/main.cpp +++ b/SDLU_Example/main.cpp @@ -11,13 +11,13 @@ int main(int argc, char** argv) vec *= 1.8f; std::cout << "Vector2f: " << vec.x << ", " << vec.y << std::endl; - try { - MyWindow window(800, 800, "Test"); - } - catch (sdlu::ObjectCreationException e) + MyWindow window(800, 800, "Test"); + + SDL_Event event; + while (window.WaitEvent(&event)) { - std::cerr << e.what() << std::endl; - std::cerr << SDL_GetError() << std::endl; + std::cout << event.type << std::endl; } + return 0; } \ No newline at end of file