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);
}
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;
}
}

View file

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

View file

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

View file

@ -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;
}