| 86 | } |
| 87 | |
| 88 | void OpenGLWindow::PollEvent() { |
| 89 | const auto pending = SDL_PollEvent(m_event.get()); |
| 90 | if (pending) |
| 91 | { |
| 92 | |
| 93 | switch (m_event->type) |
| 94 | { |
| 95 | case SDL_QUIT: { |
| 96 | WindowClosedEvent e; |
| 97 | m_property.CallbackFn(e); |
| 98 | break; |
| 99 | } |
| 100 | |
| 101 | case SDL_WINDOWEVENT: { |
| 102 | switch (m_event->window.event) |
| 103 | { |
| 104 | case SDL_WINDOWEVENT_RESIZED: |
| 105 | { |
| 106 | Event::WindowResizedEvent e { |
| 107 | static_cast<uint32_t>(m_event->window.data1), |
| 108 | static_cast<std::uint32_t>(m_event->window.data2) |
| 109 | }; |
| 110 | m_property.CallbackFn(e); |
| 111 | break; |
| 112 | } |
| 113 | |
| 114 | case SDL_WINDOWEVENT_MAXIMIZED: { |
| 115 | Event::WindowMaximizedEvent e; |
| 116 | m_property.CallbackFn(e); |
| 117 | break; |
| 118 | } |
| 119 | |
| 120 | case SDL_WINDOWEVENT_MINIMIZED:{ |
| 121 | Event::WindowMinimizedEvent e; |
| 122 | m_property.CallbackFn(e); |
| 123 | break; |
| 124 | } |
| 125 | |
| 126 | case SDL_WINDOWEVENT_RESTORED: { |
| 127 | Event::WindowRestoredEvent e; |
| 128 | m_property.CallbackFn(e); |
| 129 | break; |
| 130 | } |
| 131 | } |
| 132 | break; |
| 133 | } |
| 134 | |
| 135 | case SDL_TEXTINPUT: { |
| 136 | TextInputEvent e{m_event->text.text}; |
| 137 | m_property.CallbackFn(e); |
| 138 | break; |
| 139 | } |
| 140 | |
| 141 | case SDL_KEYDOWN: { |
| 142 | if (m_event->key.keysym.sym == SDLK_ESCAPE) { |
| 143 | Event::WindowClosedEvent e; |
| 144 | m_property.CallbackFn(e); |
| 145 | |