From 666292e33d6997a61d9eaff31e8180a602656474 Mon Sep 17 00:00:00 2001 From: WBoerenkamps Date: Sat, 7 Dec 2024 20:39:19 +0100 Subject: save --- src/crepe/api/Event.h | 97 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 64 insertions(+), 33 deletions(-) (limited to 'src/crepe/api/Event.h') diff --git a/src/crepe/api/Event.h b/src/crepe/api/Event.h index f2f3daf..265e925 100644 --- a/src/crepe/api/Event.h +++ b/src/crepe/api/Event.h @@ -4,7 +4,7 @@ #include #include "KeyCodes.h" - +#include "types.h" namespace crepe { /** @@ -38,11 +38,8 @@ public: */ class MousePressEvent : public Event { public: - //! X-coordinate of the mouse position at the time of the event. - int mouse_x = 0; - - //! Y-coordinate of the mouse position at the time of the event. - int mouse_y = 0; + //! mouse position + ivec2 mouse_pos = {0,0}; //! The mouse button that was pressed. MouseButton button = MouseButton::NONE; @@ -53,11 +50,8 @@ public: */ class MouseClickEvent : public Event { public: - //! X-coordinate of the mouse position at the time of the event. - int mouse_x = 0; - - //! Y-coordinate of the mouse position at the time of the event. - int mouse_y = 0; + //! mouse position + ivec2 mouse_pos = {0,0}; //! The mouse button that was clicked. MouseButton button = MouseButton::NONE; @@ -68,11 +62,8 @@ public: */ class MouseReleaseEvent : public Event { public: - //! X-coordinate of the mouse position at the time of the event. - int mouse_x = 0; - - //! Y-coordinate of the mouse position at the time of the event. - int mouse_y = 0; + //! mouse position + ivec2 mouse_pos = {0,0}; //! The mouse button that was released. MouseButton button = MouseButton::NONE; @@ -83,17 +74,10 @@ public: */ class MouseMoveEvent : public Event { public: - //! X-coordinate of the mouse position at the time of the event. - int mouse_x = 0; - - //! Y-coordinate of the mouse position at the time of the event. - int mouse_y = 0; - - // Movement since last event in x - int delta_x = 0; - - // Movement since last event in y - int delta_y = 0; + //! new mouse position + ivec2 mouse_pos = {0,0}; + //! The change in mouse position relative to the last position (in pixels). + ivec2 mouse_delta = {0,0}; }; /** @@ -101,12 +85,8 @@ public: */ class MouseScrollEvent : public Event { public: - //! X-coordinate of the mouse position at the time of the event. - int mouse_x = 0; - - //! Y-coordinate of the mouse position at the time of the event. - int mouse_y = 0; - + //! mouse position when the scroll happened. + ivec2 mouse_pos = {0,0}; //! scroll direction (-1 = down, 1 = up) int scroll_direction = 0; //! scroll amount in y axis (from and away from the person). @@ -127,4 +107,55 @@ public: */ class ShutDownEvent : public Event {}; +/** + * \brief Event triggered to indicate the window is overlapped by another window. + * + * When two windows overlap the bottom window gets distorted and that window has to be redrawn. + */ +class WindowExposeEvent : public Event{}; + +/** + * \brief Event triggered to indicate the window is resized. + */ +class WindowResizeEvent : public Event{ + public: + //! new window dimensions + ivec2 dimensions = {0,0}; +}; + +/** + * \brief Event triggered to indicate the window is moved. + */ +class WindowMoveEvent : public Event{ + public: + //! The change in position relative to the last position (in pixels). + ivec2 delta_move = {0,0}; +}; + +/** + * \brief Event triggered to indicate the window is minimized. + */ +class WindowMinimizeEvent : public Event{}; + +/** + * \brief Event triggered to indicate the window is maximized + */ +class WindowMaximizeEvent : public Event{}; + +/** + * \brief Event triggered to indicate the window gained focus + * + * This event is triggered when the window receives focus, meaning it becomes the active window + * for user interaction. + */ +class WindowFocusGainEvent : public Event{}; + +/** + * \brief Event triggered to indicate the window lost focus + * + * This event is triggered when the window loses focus, meaning it is no longer the active window + * for user interaction. + */ +class WindowFocusLostEvent : public Event{}; + } // namespace crepe -- cgit v1.2.3 From 2ff3369a7aaf98936bf93f1c7c0dbfcaa38c31d7 Mon Sep 17 00:00:00 2001 From: WBoerenkamps Date: Mon, 9 Dec 2024 14:20:39 +0100 Subject: make format --- src/crepe/api/Event.h | 34 ++-- src/crepe/api/Transform.h | 4 +- src/crepe/facade/SDLContext.cpp | 399 ++++++++++++++++++++------------------- src/crepe/facade/SDLContext.h | 14 +- src/crepe/system/InputSystem.cpp | 33 ++-- src/test/EventTest.cpp | 12 +- src/test/InputTest.cpp | 28 ++- 7 files changed, 275 insertions(+), 249 deletions(-) (limited to 'src/crepe/api/Event.h') diff --git a/src/crepe/api/Event.h b/src/crepe/api/Event.h index 265e925..d3e99af 100644 --- a/src/crepe/api/Event.h +++ b/src/crepe/api/Event.h @@ -39,7 +39,7 @@ public: class MousePressEvent : public Event { public: //! mouse position - ivec2 mouse_pos = {0,0}; + ivec2 mouse_pos = {0, 0}; //! The mouse button that was pressed. MouseButton button = MouseButton::NONE; @@ -51,7 +51,7 @@ public: class MouseClickEvent : public Event { public: //! mouse position - ivec2 mouse_pos = {0,0}; + ivec2 mouse_pos = {0, 0}; //! The mouse button that was clicked. MouseButton button = MouseButton::NONE; @@ -63,7 +63,7 @@ public: class MouseReleaseEvent : public Event { public: //! mouse position - ivec2 mouse_pos = {0,0}; + ivec2 mouse_pos = {0, 0}; //! The mouse button that was released. MouseButton button = MouseButton::NONE; @@ -75,9 +75,9 @@ public: class MouseMoveEvent : public Event { public: //! new mouse position - ivec2 mouse_pos = {0,0}; + ivec2 mouse_pos = {0, 0}; //! The change in mouse position relative to the last position (in pixels). - ivec2 mouse_delta = {0,0}; + ivec2 mouse_delta = {0, 0}; }; /** @@ -86,7 +86,7 @@ public: class MouseScrollEvent : public Event { public: //! mouse position when the scroll happened. - ivec2 mouse_pos = {0,0}; + ivec2 mouse_pos = {0, 0}; //! scroll direction (-1 = down, 1 = up) int scroll_direction = 0; //! scroll amount in y axis (from and away from the person). @@ -112,35 +112,35 @@ class ShutDownEvent : public Event {}; * * When two windows overlap the bottom window gets distorted and that window has to be redrawn. */ -class WindowExposeEvent : public Event{}; +class WindowExposeEvent : public Event {}; /** * \brief Event triggered to indicate the window is resized. */ -class WindowResizeEvent : public Event{ - public: +class WindowResizeEvent : public Event { +public: //! new window dimensions - ivec2 dimensions = {0,0}; + ivec2 dimensions = {0, 0}; }; /** * \brief Event triggered to indicate the window is moved. */ -class WindowMoveEvent : public Event{ - public: +class WindowMoveEvent : public Event { +public: //! The change in position relative to the last position (in pixels). - ivec2 delta_move = {0,0}; + ivec2 delta_move = {0, 0}; }; /** * \brief Event triggered to indicate the window is minimized. */ -class WindowMinimizeEvent : public Event{}; +class WindowMinimizeEvent : public Event {}; /** * \brief Event triggered to indicate the window is maximized */ -class WindowMaximizeEvent : public Event{}; +class WindowMaximizeEvent : public Event {}; /** * \brief Event triggered to indicate the window gained focus @@ -148,7 +148,7 @@ class WindowMaximizeEvent : public Event{}; * This event is triggered when the window receives focus, meaning it becomes the active window * for user interaction. */ -class WindowFocusGainEvent : public Event{}; +class WindowFocusGainEvent : public Event {}; /** * \brief Event triggered to indicate the window lost focus @@ -156,6 +156,6 @@ class WindowFocusGainEvent : public Event{}; * This event is triggered when the window loses focus, meaning it is no longer the active window * for user interaction. */ -class WindowFocusLostEvent : public Event{}; +class WindowFocusLostEvent : public Event {}; } // namespace crepe diff --git a/src/crepe/api/Transform.h b/src/crepe/api/Transform.h index 78407ee..b63acaf 100644 --- a/src/crepe/api/Transform.h +++ b/src/crepe/api/Transform.h @@ -14,9 +14,9 @@ namespace crepe { class Transform : public Component { public: //! Specifies the coordinate space for transformations. - enum Space { + enum Space { //! coordinates are relative to the active camera - HUD, + HUD, //! coordinates are relative to the game world WORLD, }; diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index ce8218a..722c165 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -81,128 +81,128 @@ SDLContext::~SDLContext() { // Function that uses the shared table Keycode SDLContext::sdl_to_keycode(SDL_Keycode sdl_key) { static const std::array LOOKUP_TABLE = [] { - std::array table{}; - table.fill(Keycode::NONE); - - // Map all SDL scancodes to Keycodes - table[SDL_SCANCODE_SPACE] = Keycode::SPACE; - table[SDL_SCANCODE_APOSTROPHE] = Keycode::APOSTROPHE; - table[SDL_SCANCODE_COMMA] = Keycode::COMMA; - table[SDL_SCANCODE_MINUS] = Keycode::MINUS; - table[SDL_SCANCODE_PERIOD] = Keycode::PERIOD; - table[SDL_SCANCODE_SLASH] = Keycode::SLASH; - table[SDL_SCANCODE_0] = Keycode::D0; - table[SDL_SCANCODE_1] = Keycode::D1; - table[SDL_SCANCODE_2] = Keycode::D2; - table[SDL_SCANCODE_3] = Keycode::D3; - table[SDL_SCANCODE_4] = Keycode::D4; - table[SDL_SCANCODE_5] = Keycode::D5; - table[SDL_SCANCODE_6] = Keycode::D6; - table[SDL_SCANCODE_7] = Keycode::D7; - table[SDL_SCANCODE_8] = Keycode::D8; - table[SDL_SCANCODE_9] = Keycode::D9; - table[SDL_SCANCODE_SEMICOLON] = Keycode::SEMICOLON; - table[SDL_SCANCODE_EQUALS] = Keycode::EQUAL; - table[SDL_SCANCODE_A] = Keycode::A; - table[SDL_SCANCODE_B] = Keycode::B; - table[SDL_SCANCODE_C] = Keycode::C; - table[SDL_SCANCODE_D] = Keycode::D; - table[SDL_SCANCODE_E] = Keycode::E; - table[SDL_SCANCODE_F] = Keycode::F; - table[SDL_SCANCODE_G] = Keycode::G; - table[SDL_SCANCODE_H] = Keycode::H; - table[SDL_SCANCODE_I] = Keycode::I; - table[SDL_SCANCODE_J] = Keycode::J; - table[SDL_SCANCODE_K] = Keycode::K; - table[SDL_SCANCODE_L] = Keycode::L; - table[SDL_SCANCODE_M] = Keycode::M; - table[SDL_SCANCODE_N] = Keycode::N; - table[SDL_SCANCODE_O] = Keycode::O; - table[SDL_SCANCODE_P] = Keycode::P; - table[SDL_SCANCODE_Q] = Keycode::Q; - table[SDL_SCANCODE_R] = Keycode::R; - table[SDL_SCANCODE_S] = Keycode::S; - table[SDL_SCANCODE_T] = Keycode::T; - table[SDL_SCANCODE_U] = Keycode::U; - table[SDL_SCANCODE_V] = Keycode::V; - table[SDL_SCANCODE_W] = Keycode::W; - table[SDL_SCANCODE_X] = Keycode::X; - table[SDL_SCANCODE_Y] = Keycode::Y; - table[SDL_SCANCODE_Z] = Keycode::Z; - table[SDL_SCANCODE_LEFTBRACKET] = Keycode::LEFT_BRACKET; - table[SDL_SCANCODE_BACKSLASH] = Keycode::BACKSLASH; - table[SDL_SCANCODE_RIGHTBRACKET] = Keycode::RIGHT_BRACKET; - table[SDL_SCANCODE_GRAVE] = Keycode::GRAVE_ACCENT; - table[SDL_SCANCODE_ESCAPE] = Keycode::ESCAPE; - table[SDL_SCANCODE_RETURN] = Keycode::ENTER; - table[SDL_SCANCODE_TAB] = Keycode::TAB; - table[SDL_SCANCODE_BACKSPACE] = Keycode::BACKSPACE; - table[SDL_SCANCODE_INSERT] = Keycode::INSERT; - table[SDL_SCANCODE_DELETE] = Keycode::DELETE; - table[SDL_SCANCODE_RIGHT] = Keycode::RIGHT; - table[SDL_SCANCODE_LEFT] = Keycode::LEFT; - table[SDL_SCANCODE_DOWN] = Keycode::DOWN; - table[SDL_SCANCODE_UP] = Keycode::UP; - table[SDL_SCANCODE_PAGEUP] = Keycode::PAGE_UP; - table[SDL_SCANCODE_PAGEDOWN] = Keycode::PAGE_DOWN; - table[SDL_SCANCODE_HOME] = Keycode::HOME; - table[SDL_SCANCODE_END] = Keycode::END; - table[SDL_SCANCODE_CAPSLOCK] = Keycode::CAPS_LOCK; - table[SDL_SCANCODE_SCROLLLOCK] = Keycode::SCROLL_LOCK; - table[SDL_SCANCODE_NUMLOCKCLEAR] = Keycode::NUM_LOCK; - table[SDL_SCANCODE_PRINTSCREEN] = Keycode::PRINT_SCREEN; - table[SDL_SCANCODE_PAUSE] = Keycode::PAUSE; - table[SDL_SCANCODE_F1] = Keycode::F1; - table[SDL_SCANCODE_F2] = Keycode::F2; - table[SDL_SCANCODE_F3] = Keycode::F3; - table[SDL_SCANCODE_F4] = Keycode::F4; - table[SDL_SCANCODE_F5] = Keycode::F5; - table[SDL_SCANCODE_F6] = Keycode::F6; - table[SDL_SCANCODE_F7] = Keycode::F7; - table[SDL_SCANCODE_F8] = Keycode::F8; - table[SDL_SCANCODE_F9] = Keycode::F9; - table[SDL_SCANCODE_F10] = Keycode::F10; - table[SDL_SCANCODE_F11] = Keycode::F11; - table[SDL_SCANCODE_F12] = Keycode::F12; - table[SDL_SCANCODE_KP_0] = Keycode::KP0; - table[SDL_SCANCODE_KP_1] = Keycode::KP1; - table[SDL_SCANCODE_KP_2] = Keycode::KP2; - table[SDL_SCANCODE_KP_3] = Keycode::KP3; - table[SDL_SCANCODE_KP_4] = Keycode::KP4; - table[SDL_SCANCODE_KP_5] = Keycode::KP5; - table[SDL_SCANCODE_KP_6] = Keycode::KP6; - table[SDL_SCANCODE_KP_7] = Keycode::KP7; - table[SDL_SCANCODE_KP_8] = Keycode::KP8; - table[SDL_SCANCODE_KP_9] = Keycode::KP9; - table[SDL_SCANCODE_LSHIFT] = Keycode::LEFT_SHIFT; - table[SDL_SCANCODE_LCTRL] = Keycode::LEFT_CONTROL; - table[SDL_SCANCODE_LALT] = Keycode::LEFT_ALT; - table[SDL_SCANCODE_LGUI] = Keycode::LEFT_SUPER; - table[SDL_SCANCODE_RSHIFT] = Keycode::RIGHT_SHIFT; - table[SDL_SCANCODE_RCTRL] = Keycode::RIGHT_CONTROL; - table[SDL_SCANCODE_RALT] = Keycode::RIGHT_ALT; - table[SDL_SCANCODE_RGUI] = Keycode::RIGHT_SUPER; - table[SDL_SCANCODE_MENU] = Keycode::MENU; - - return table; - }(); - if (sdl_key < 0 || sdl_key >= SDL_NUM_SCANCODES) { - return Keycode::NONE; - } - return LOOKUP_TABLE[sdl_key]; + std::array table{}; + table.fill(Keycode::NONE); + + // Map all SDL scancodes to Keycodes + table[SDL_SCANCODE_SPACE] = Keycode::SPACE; + table[SDL_SCANCODE_APOSTROPHE] = Keycode::APOSTROPHE; + table[SDL_SCANCODE_COMMA] = Keycode::COMMA; + table[SDL_SCANCODE_MINUS] = Keycode::MINUS; + table[SDL_SCANCODE_PERIOD] = Keycode::PERIOD; + table[SDL_SCANCODE_SLASH] = Keycode::SLASH; + table[SDL_SCANCODE_0] = Keycode::D0; + table[SDL_SCANCODE_1] = Keycode::D1; + table[SDL_SCANCODE_2] = Keycode::D2; + table[SDL_SCANCODE_3] = Keycode::D3; + table[SDL_SCANCODE_4] = Keycode::D4; + table[SDL_SCANCODE_5] = Keycode::D5; + table[SDL_SCANCODE_6] = Keycode::D6; + table[SDL_SCANCODE_7] = Keycode::D7; + table[SDL_SCANCODE_8] = Keycode::D8; + table[SDL_SCANCODE_9] = Keycode::D9; + table[SDL_SCANCODE_SEMICOLON] = Keycode::SEMICOLON; + table[SDL_SCANCODE_EQUALS] = Keycode::EQUAL; + table[SDL_SCANCODE_A] = Keycode::A; + table[SDL_SCANCODE_B] = Keycode::B; + table[SDL_SCANCODE_C] = Keycode::C; + table[SDL_SCANCODE_D] = Keycode::D; + table[SDL_SCANCODE_E] = Keycode::E; + table[SDL_SCANCODE_F] = Keycode::F; + table[SDL_SCANCODE_G] = Keycode::G; + table[SDL_SCANCODE_H] = Keycode::H; + table[SDL_SCANCODE_I] = Keycode::I; + table[SDL_SCANCODE_J] = Keycode::J; + table[SDL_SCANCODE_K] = Keycode::K; + table[SDL_SCANCODE_L] = Keycode::L; + table[SDL_SCANCODE_M] = Keycode::M; + table[SDL_SCANCODE_N] = Keycode::N; + table[SDL_SCANCODE_O] = Keycode::O; + table[SDL_SCANCODE_P] = Keycode::P; + table[SDL_SCANCODE_Q] = Keycode::Q; + table[SDL_SCANCODE_R] = Keycode::R; + table[SDL_SCANCODE_S] = Keycode::S; + table[SDL_SCANCODE_T] = Keycode::T; + table[SDL_SCANCODE_U] = Keycode::U; + table[SDL_SCANCODE_V] = Keycode::V; + table[SDL_SCANCODE_W] = Keycode::W; + table[SDL_SCANCODE_X] = Keycode::X; + table[SDL_SCANCODE_Y] = Keycode::Y; + table[SDL_SCANCODE_Z] = Keycode::Z; + table[SDL_SCANCODE_LEFTBRACKET] = Keycode::LEFT_BRACKET; + table[SDL_SCANCODE_BACKSLASH] = Keycode::BACKSLASH; + table[SDL_SCANCODE_RIGHTBRACKET] = Keycode::RIGHT_BRACKET; + table[SDL_SCANCODE_GRAVE] = Keycode::GRAVE_ACCENT; + table[SDL_SCANCODE_ESCAPE] = Keycode::ESCAPE; + table[SDL_SCANCODE_RETURN] = Keycode::ENTER; + table[SDL_SCANCODE_TAB] = Keycode::TAB; + table[SDL_SCANCODE_BACKSPACE] = Keycode::BACKSPACE; + table[SDL_SCANCODE_INSERT] = Keycode::INSERT; + table[SDL_SCANCODE_DELETE] = Keycode::DELETE; + table[SDL_SCANCODE_RIGHT] = Keycode::RIGHT; + table[SDL_SCANCODE_LEFT] = Keycode::LEFT; + table[SDL_SCANCODE_DOWN] = Keycode::DOWN; + table[SDL_SCANCODE_UP] = Keycode::UP; + table[SDL_SCANCODE_PAGEUP] = Keycode::PAGE_UP; + table[SDL_SCANCODE_PAGEDOWN] = Keycode::PAGE_DOWN; + table[SDL_SCANCODE_HOME] = Keycode::HOME; + table[SDL_SCANCODE_END] = Keycode::END; + table[SDL_SCANCODE_CAPSLOCK] = Keycode::CAPS_LOCK; + table[SDL_SCANCODE_SCROLLLOCK] = Keycode::SCROLL_LOCK; + table[SDL_SCANCODE_NUMLOCKCLEAR] = Keycode::NUM_LOCK; + table[SDL_SCANCODE_PRINTSCREEN] = Keycode::PRINT_SCREEN; + table[SDL_SCANCODE_PAUSE] = Keycode::PAUSE; + table[SDL_SCANCODE_F1] = Keycode::F1; + table[SDL_SCANCODE_F2] = Keycode::F2; + table[SDL_SCANCODE_F3] = Keycode::F3; + table[SDL_SCANCODE_F4] = Keycode::F4; + table[SDL_SCANCODE_F5] = Keycode::F5; + table[SDL_SCANCODE_F6] = Keycode::F6; + table[SDL_SCANCODE_F7] = Keycode::F7; + table[SDL_SCANCODE_F8] = Keycode::F8; + table[SDL_SCANCODE_F9] = Keycode::F9; + table[SDL_SCANCODE_F10] = Keycode::F10; + table[SDL_SCANCODE_F11] = Keycode::F11; + table[SDL_SCANCODE_F12] = Keycode::F12; + table[SDL_SCANCODE_KP_0] = Keycode::KP0; + table[SDL_SCANCODE_KP_1] = Keycode::KP1; + table[SDL_SCANCODE_KP_2] = Keycode::KP2; + table[SDL_SCANCODE_KP_3] = Keycode::KP3; + table[SDL_SCANCODE_KP_4] = Keycode::KP4; + table[SDL_SCANCODE_KP_5] = Keycode::KP5; + table[SDL_SCANCODE_KP_6] = Keycode::KP6; + table[SDL_SCANCODE_KP_7] = Keycode::KP7; + table[SDL_SCANCODE_KP_8] = Keycode::KP8; + table[SDL_SCANCODE_KP_9] = Keycode::KP9; + table[SDL_SCANCODE_LSHIFT] = Keycode::LEFT_SHIFT; + table[SDL_SCANCODE_LCTRL] = Keycode::LEFT_CONTROL; + table[SDL_SCANCODE_LALT] = Keycode::LEFT_ALT; + table[SDL_SCANCODE_LGUI] = Keycode::LEFT_SUPER; + table[SDL_SCANCODE_RSHIFT] = Keycode::RIGHT_SHIFT; + table[SDL_SCANCODE_RCTRL] = Keycode::RIGHT_CONTROL; + table[SDL_SCANCODE_RALT] = Keycode::RIGHT_ALT; + table[SDL_SCANCODE_RGUI] = Keycode::RIGHT_SUPER; + table[SDL_SCANCODE_MENU] = Keycode::MENU; + + return table; + }(); + if (sdl_key < 0 || sdl_key >= SDL_NUM_SCANCODES) { + return Keycode::NONE; + } + return LOOKUP_TABLE[sdl_key]; } std::array SDLContext::get_keyboard_state() { - // Array to hold the key states (true if pressed, false if not) - std::array keyState; + // Array to hold the key states (true if pressed, false if not) + std::array keyState; - const Uint8* current_state = SDL_GetKeyboardState(nullptr); + const Uint8 * current_state = SDL_GetKeyboardState(nullptr); - for (int i = 0; i < SDL_NUM_SCANCODES; ++i) { - // Set true if the key is pressed, false if not - keyState[i] = current_state[i] != 0; - } + for (int i = 0; i < SDL_NUM_SCANCODES; ++i) { + // Set true if the key is pressed, false if not + keyState[i] = current_state[i] != 0; + } - return keyState; + return keyState; } MouseButton SDLContext::sdl_to_mousebutton(Uint8 sdl_button) { @@ -389,83 +389,104 @@ ivec2 SDLContext::get_size(const Texture & ctx) { void SDLContext::delay(int ms) const { SDL_Delay(ms); } std::vector SDLContext::get_events() { - std::vector event_list; - SDL_Event event; - - // Handle general SDL events - while (SDL_PollEvent(&event)) { - switch (event.type) { - case SDL_QUIT: - event_list.push_back({SDLContext::EventType::SHUTDOWN, {}, {}, {}}); - break; - case SDL_KEYDOWN: - event_list.push_back({SDLContext::EventType::KEYDOWN, - {sdl_to_keycode(event.key.keysym.scancode), event.key.repeat != 0}, {}, {}}); - break; - case SDL_KEYUP: - event_list.push_back({SDLContext::EventType::KEYUP, - {sdl_to_keycode(event.key.keysym.scancode), false}, {}, {}}); - break; - case SDL_MOUSEBUTTONDOWN: - event_list.push_back({SDLContext::EventType::MOUSEDOWN, {}, - {sdl_to_mousebutton(event.button.button), {event.button.x, event.button.y}}, {}}); - break; - case SDL_MOUSEBUTTONUP: - event_list.push_back({SDLContext::EventType::MOUSEUP, {}, - {sdl_to_mousebutton(event.button.button), {event.button.x, event.button.y}}, {}}); - break; - case SDL_MOUSEMOTION: - event_list.push_back({SDLContext::EventType::MOUSEMOVE, {}, - {{}, {event.motion.x, event.motion.y}, -1, INFINITY, {event.motion.xrel, event.motion.yrel}}, {}}); - break; - case SDL_MOUSEWHEEL: - event_list.push_back({SDLContext::EventType::MOUSEWHEEL, {}, - {{}, {}, event.wheel.y < 0 ? -1 : 1, event.wheel.preciseY, {}}, {}}); - break; - - // Forward window events for further processing - case SDL_WINDOWEVENT: - this->handle_window_event(event.window, event_list); - break; - } - } - - return event_list; + std::vector event_list; + SDL_Event event; + + // Handle general SDL events + while (SDL_PollEvent(&event)) { + switch (event.type) { + case SDL_QUIT: + event_list.push_back({SDLContext::EventType::SHUTDOWN, {}, {}, {}}); + break; + case SDL_KEYDOWN: + event_list.push_back( + {SDLContext::EventType::KEYDOWN, + {sdl_to_keycode(event.key.keysym.scancode), event.key.repeat != 0}, + {}, + {}}); + break; + case SDL_KEYUP: + event_list.push_back({SDLContext::EventType::KEYUP, + {sdl_to_keycode(event.key.keysym.scancode), false}, + {}, + {}}); + break; + case SDL_MOUSEBUTTONDOWN: + event_list.push_back({SDLContext::EventType::MOUSEDOWN, + {}, + {sdl_to_mousebutton(event.button.button), + {event.button.x, event.button.y}}, + {}}); + break; + case SDL_MOUSEBUTTONUP: + event_list.push_back({SDLContext::EventType::MOUSEUP, + {}, + {sdl_to_mousebutton(event.button.button), + {event.button.x, event.button.y}}, + {}}); + break; + case SDL_MOUSEMOTION: + event_list.push_back({SDLContext::EventType::MOUSEMOVE, + {}, + {{}, + {event.motion.x, event.motion.y}, + -1, + INFINITY, + {event.motion.xrel, event.motion.yrel}}, + {}}); + break; + case SDL_MOUSEWHEEL: + event_list.push_back( + {SDLContext::EventType::MOUSEWHEEL, + {}, + {{}, {}, event.wheel.y < 0 ? -1 : 1, event.wheel.preciseY, {}}, + {}}); + break; + + // Forward window events for further processing + case SDL_WINDOWEVENT: + this->handle_window_event(event.window, event_list); + break; + } + } + + return event_list; } // Separate function for SDL_WINDOWEVENT subtypes -void SDLContext::handle_window_event(const SDL_WindowEvent& window_event, - std::vector& event_list) { - switch (window_event.event) { - case SDL_WINDOWEVENT_EXPOSED: - event_list.push_back({SDLContext::EventType::WINDOW_EXPOSE, {}, {}, {}}); - break; - case SDL_WINDOWEVENT_RESIZED: - event_list.push_back({SDLContext::EventType::WINDOW_RESIZE, {}, {}, - {{}, {window_event.data1, window_event.data2}}}); - break; - case SDL_WINDOWEVENT_MOVED: - event_list.push_back({SDLContext::EventType::WINDOW_MOVE, {}, {}, - {{window_event.data1, window_event.data2}, {}}}); - break; - case SDL_WINDOWEVENT_MINIMIZED: - event_list.push_back({SDLContext::EventType::WINDOW_MINIMIZE, {}, {}, {}}); - break; - case SDL_WINDOWEVENT_MAXIMIZED: - event_list.push_back({SDLContext::EventType::WINDOW_MAXIMIZE, {}, {}, {}}); - break; - case SDL_WINDOWEVENT_FOCUS_GAINED: - event_list.push_back({SDLContext::EventType::WINDOW_FOCUS_GAIN, {}, {}, {}}); - break; - case SDL_WINDOWEVENT_FOCUS_LOST: - event_list.push_back({SDLContext::EventType::WINDOW_FOCUS_LOST, {}, {}, {}}); - break; - } +void SDLContext::handle_window_event(const SDL_WindowEvent & window_event, + std::vector & event_list) { + switch (window_event.event) { + case SDL_WINDOWEVENT_EXPOSED: + event_list.push_back({SDLContext::EventType::WINDOW_EXPOSE, {}, {}, {}}); + break; + case SDL_WINDOWEVENT_RESIZED: + event_list.push_back({SDLContext::EventType::WINDOW_RESIZE, + {}, + {}, + {{}, {window_event.data1, window_event.data2}}}); + break; + case SDL_WINDOWEVENT_MOVED: + event_list.push_back({SDLContext::EventType::WINDOW_MOVE, + {}, + {}, + {{window_event.data1, window_event.data2}, {}}}); + break; + case SDL_WINDOWEVENT_MINIMIZED: + event_list.push_back({SDLContext::EventType::WINDOW_MINIMIZE, {}, {}, {}}); + break; + case SDL_WINDOWEVENT_MAXIMIZED: + event_list.push_back({SDLContext::EventType::WINDOW_MAXIMIZE, {}, {}, {}}); + break; + case SDL_WINDOWEVENT_FOCUS_GAINED: + event_list.push_back({SDLContext::EventType::WINDOW_FOCUS_GAIN, {}, {}, {}}); + break; + case SDL_WINDOWEVENT_FOCUS_LOST: + event_list.push_back({SDLContext::EventType::WINDOW_FOCUS_LOST, {}, {}, {}}); + break; + } } - - - void SDLContext::set_color_texture(const Texture & texture, const Color & color) { SDL_SetTextureColorMod(texture.texture.get(), color.r, color.g, color.b); SDL_SetTextureAlphaMod(texture.texture.get(), color.a); diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h index 21d17c7..b65ba9c 100644 --- a/src/crepe/facade/SDLContext.h +++ b/src/crepe/facade/SDLContext.h @@ -5,11 +5,11 @@ #include #include #include +#include #include #include #include #include -#include #include "api/Camera.h" #include "api/Color.h" @@ -88,18 +88,18 @@ public: WINDOW_RESIZE, WINDOW_EXPOSE, }; - struct KeyData{ + struct KeyData { Keycode key = Keycode::NONE; bool key_repeat = false; }; - struct MouseData{ + struct MouseData { MouseButton mouse_button = MouseButton::NONE; ivec2 mouse_position = {-1, -1}; int scroll_direction = -1; float scroll_delta = INFINITY; ivec2 rel_mouse_move = {-1, -1}; }; - struct WindowData{ + struct WindowData { ivec2 move_delta; ivec2 resize_dimension; }; @@ -110,7 +110,7 @@ public: MouseData mouse_data; WindowData window_data; }; - + /** * \brief Gets the singleton instance of SDLContext. * \return Reference to the SDLContext instance. @@ -141,8 +141,8 @@ private: * This method checks if any window events are triggered and adds them to the event_list. * */ - void handle_window_event(const SDL_WindowEvent& window_event, - std::vector& event_list); + void handle_window_event(const SDL_WindowEvent & window_event, + std::vector & event_list); /** * \brief Converts an SDL key code to the custom Keycode type. * diff --git a/src/crepe/system/InputSystem.cpp b/src/crepe/system/InputSystem.cpp index dd45821..f5d8536 100644 --- a/src/crepe/system/InputSystem.cpp +++ b/src/crepe/system/InputSystem.cpp @@ -30,13 +30,13 @@ void InputSystem::update() { ivec2 camera_origin; camera_origin.y = cam_transform.position.y + current_cam.data.postion_offset.y - - (current_cam.viewport_size.y / 2); + - (current_cam.viewport_size.y / 2); camera_origin.x = cam_transform.position.x + current_cam.data.postion_offset.x - - (current_cam.viewport_size.x / 2); + - (current_cam.viewport_size.x / 2); for (const SDLContext::EventData & event : event_list) { // Only calculate mouse coordinates for relevant events - if (event.event_type == SDLContext::EventType::MOUSEDOWN + if (event.event_type == SDLContext::EventType::MOUSEDOWN || event.event_type == SDLContext::EventType::MOUSEUP || event.event_type == SDLContext::EventType::MOUSEMOVE || event.event_type == SDLContext::EventType::MOUSEWHEEL) { @@ -45,10 +45,11 @@ void InputSystem::update() { int adjusted_mouse_y = event.mouse_data.mouse_position.y + camera_origin.y; // Check if the mouse is within the viewport - bool mouse_in_viewport = !(adjusted_mouse_x < camera_origin.x - || adjusted_mouse_x > camera_origin.x + current_cam.viewport_size.x - || adjusted_mouse_y < camera_origin.y - || adjusted_mouse_y > camera_origin.y + current_cam.viewport_size.y); + bool mouse_in_viewport + = !(adjusted_mouse_x < camera_origin.x + || adjusted_mouse_x > camera_origin.x + current_cam.viewport_size.x + || adjusted_mouse_y < camera_origin.y + || adjusted_mouse_y > camera_origin.y + current_cam.viewport_size.y); if (!mouse_in_viewport) continue; @@ -78,7 +79,8 @@ void InputSystem::update() { .mouse_pos = {adjusted_mouse_x, adjusted_mouse_y}, .button = event.mouse_data.mouse_button, }); - this->handle_click(event.mouse_data.mouse_button, adjusted_mouse_x, adjusted_mouse_y); + this->handle_click(event.mouse_data.mouse_button, adjusted_mouse_x, + adjusted_mouse_y); } break; } @@ -106,7 +108,8 @@ void InputSystem::update() { // Handle non-mouse events switch (event.event_type) { case SDLContext::EventType::KEYDOWN: - event_mgr.queue_event({.repeat = event.key_data.key_repeat, .key = event.key_data.key}); + event_mgr.queue_event( + {.repeat = event.key_data.key_repeat, .key = event.key_data.key}); break; case SDLContext::EventType::KEYUP: event_mgr.queue_event({.key = event.key_data.key}); @@ -118,10 +121,12 @@ void InputSystem::update() { event_mgr.queue_event({}); break; case SDLContext::EventType::WINDOW_RESIZE: - event_mgr.queue_event(WindowResizeEvent{.dimensions = event.window_data.resize_dimension}); + event_mgr.queue_event( + WindowResizeEvent{.dimensions = event.window_data.resize_dimension}); break; case SDLContext::EventType::WINDOW_MOVE: - event_mgr.queue_event({.delta_move = event.window_data.move_delta}); + event_mgr.queue_event( + {.delta_move = event.window_data.move_delta}); break; case SDLContext::EventType::WINDOW_MINIMIZE: event_mgr.queue_event({}); @@ -155,7 +160,8 @@ void InputSystem::handle_move(const SDLContext::EventData & event_data, bool was_hovering = button.hover; if (button.active - && this->is_mouse_inside_button(adjusted_mouse_x, adjusted_mouse_y, button, transform)) { + && this->is_mouse_inside_button(adjusted_mouse_x, adjusted_mouse_y, button, + transform)) { button.hover = true; if (!was_hovering && button.on_mouse_enter) { button.on_mouse_enter(); @@ -182,7 +188,8 @@ void InputSystem::handle_click(const MouseButton & mouse_button, const int adjus Transform & transform = transform_vec.front().get(); if (button.active - && this->is_mouse_inside_button(adjusted_mouse_x, adjusted_mouse_y, button, transform)) { + && this->is_mouse_inside_button(adjusted_mouse_x, adjusted_mouse_y, button, + transform)) { this->handle_button_press(button); } } diff --git a/src/test/EventTest.cpp b/src/test/EventTest.cpp index 53c2469..ef7fc10 100644 --- a/src/test/EventTest.cpp +++ b/src/test/EventTest.cpp @@ -71,7 +71,7 @@ TEST_F(EventManagerTest, EventManagerTest_trigger_all_channels) { EventManager::get_instance().subscribe(mouse_handler, EventManager::CHANNEL_ALL); - MouseClickEvent click_event{.mouse_pos = {100,200}, .button = MouseButton::LEFT_MOUSE}; + MouseClickEvent click_event{.mouse_pos = {100, 200}, .button = MouseButton::LEFT_MOUSE}; EventManager::get_instance().trigger_event(click_event, EventManager::CHANNEL_ALL); @@ -89,7 +89,7 @@ TEST_F(EventManagerTest, EventManagerTest_trigger_one_channel) { }; EventManager::get_instance().subscribe(mouse_handler, test_channel); - MouseClickEvent click_event{.mouse_pos = {100,200}, .button = MouseButton::LEFT_MOUSE}; + MouseClickEvent click_event{.mouse_pos = {100, 200}, .button = MouseButton::LEFT_MOUSE}; EventManager::get_instance().trigger_event(click_event, EventManager::CHANNEL_ALL); @@ -122,7 +122,7 @@ TEST_F(EventManagerTest, EventManagerTest_callback_propagation) { }; // Test event - MouseClickEvent click_event{.mouse_pos = {100,200}, .button = MouseButton::LEFT_MOUSE}; + MouseClickEvent click_event{.mouse_pos = {100, 200}, .button = MouseButton::LEFT_MOUSE}; event_manager.subscribe(mouse_handler_true, EventManager::CHANNEL_ALL); event_manager.subscribe(mouse_handler_false, EventManager::CHANNEL_ALL); @@ -217,7 +217,7 @@ TEST_F(EventManagerTest, EventManagerTest_unsubscribe) { // Queue events event_manager.queue_event( - MouseClickEvent{.mouse_pos = {100,200}, .button = MouseButton::LEFT_MOUSE}); + MouseClickEvent{.mouse_pos = {100, 200}, .button = MouseButton::LEFT_MOUSE}); // Dispatch events - both handlers should be triggered event_manager.dispatch_events(); @@ -233,7 +233,7 @@ TEST_F(EventManagerTest, EventManagerTest_unsubscribe) { // Queue the same event again event_manager.queue_event( - MouseClickEvent{.mouse_pos = {100,200}, .button = MouseButton::LEFT_MOUSE}); + MouseClickEvent{.mouse_pos = {100, 200}, .button = MouseButton::LEFT_MOUSE}); // Dispatch events - only handler 2 should be triggered, handler 1 should NOT event_manager.dispatch_events(); @@ -248,7 +248,7 @@ TEST_F(EventManagerTest, EventManagerTest_unsubscribe) { // Queue the event again event_manager.queue_event( - MouseClickEvent{.mouse_pos = {100,200}, .button = MouseButton::LEFT_MOUSE}); + MouseClickEvent{.mouse_pos = {100, 200}, .button = MouseButton::LEFT_MOUSE}); // Dispatch events - no handler should be triggered event_manager.dispatch_events(); diff --git a/src/test/InputTest.cpp b/src/test/InputTest.cpp index cde774f..94549a0 100644 --- a/src/test/InputTest.cpp +++ b/src/test/InputTest.cpp @@ -31,9 +31,7 @@ public: //GameObject camera; protected: - void SetUp() override { - event_manager.clear(); - } + void SetUp() override { event_manager.clear(); } void simulate_mouse_click(int mouse_x, int mouse_y, Uint8 mouse_button) { SDL_Event event; @@ -299,12 +297,12 @@ TEST_F(InputTest, WindowResizeTest) { }; event_manager.subscribe(on_window_resize); SDL_Event resize_event; - SDL_zero(resize_event); - resize_event.type = SDL_WINDOWEVENT; - resize_event.window.event = SDL_WINDOWEVENT_RESIZED; - resize_event.window.data1 = 800; // new width - resize_event.window.data2 = 600; // new height - SDL_PushEvent(&resize_event); + SDL_zero(resize_event); + resize_event.type = SDL_WINDOWEVENT; + resize_event.window.event = SDL_WINDOWEVENT_RESIZED; + resize_event.window.data1 = 800; // new width + resize_event.window.data2 = 600; // new height + SDL_PushEvent(&resize_event); input_system.update(); event_manager.dispatch_events(); EXPECT_TRUE(callback_triggered); @@ -323,12 +321,12 @@ TEST_F(InputTest, WindowMoveTest) { }; event_manager.subscribe(on_window_move); SDL_Event resize_event; - SDL_zero(resize_event); - resize_event.type = SDL_WINDOWEVENT; - resize_event.window.event = SDL_WINDOWEVENT_MOVED; - resize_event.window.data1 = 800; // new width - resize_event.window.data2 = 600; // new height - SDL_PushEvent(&resize_event); + SDL_zero(resize_event); + resize_event.type = SDL_WINDOWEVENT; + resize_event.window.event = SDL_WINDOWEVENT_MOVED; + resize_event.window.data1 = 800; // new width + resize_event.window.data2 = 600; // new height + SDL_PushEvent(&resize_event); input_system.update(); event_manager.dispatch_events(); EXPECT_TRUE(callback_triggered); -- cgit v1.2.3 From 6e2aa75019a28c298454f50b7bfb0dca100e0936 Mon Sep 17 00:00:00 2001 From: WBoerenkamps Date: Thu, 12 Dec 2024 17:46:21 +0100 Subject: save --- src/crepe/api/Event.h | 5 ++ src/crepe/api/KeyCodes.h | 5 ++ src/crepe/facade/SDLContext.cpp | 122 ++++------------------------------------ src/crepe/facade/SDLContext.h | 107 ++++++++++++++++++++++++++++++++++- 4 files changed, 125 insertions(+), 114 deletions(-) (limited to 'src/crepe/api/Event.h') diff --git a/src/crepe/api/Event.h b/src/crepe/api/Event.h index d3e99af..d222e51 100644 --- a/src/crepe/api/Event.h +++ b/src/crepe/api/Event.h @@ -2,9 +2,12 @@ // TODO discussing the location of these events #include +#include + #include "KeyCodes.h" #include "types.h" + namespace crepe { /** @@ -22,6 +25,7 @@ public: //! The key that was pressed. Keycode key = Keycode::NONE; + keyboard_state_t keyboard_state; }; /** @@ -31,6 +35,7 @@ class KeyReleaseEvent : public Event { public: //! The key that was released. Keycode key = Keycode::NONE; + keyboard_state_t keyboard_state; }; /** diff --git a/src/crepe/api/KeyCodes.h b/src/crepe/api/KeyCodes.h index f704fbb..4a3bf57 100644 --- a/src/crepe/api/KeyCodes.h +++ b/src/crepe/api/KeyCodes.h @@ -1,4 +1,7 @@ #pragma once + +#include + namespace crepe { //! Enumeration for mouse button inputs, including standard and extended buttons. enum class MouseButton { @@ -153,4 +156,6 @@ typedef enum { //! Not actually a key instead its the amount of keycodes there are for array indexing NUM_KEYCODES = 512, } Keycode; + +typedef std::unordered_map keyboard_state_t; } // namespace crepe diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index 75ad0e8..d70a7bb 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -77,118 +77,14 @@ SDLContext::~SDLContext() { } Keycode SDLContext::sdl_to_keycode(SDL_Scancode sdl_key) { - static const std::array LOOKUP_TABLE = [] { - std::array table{}; - table.fill(Keycode::NONE); - - // Map all SDL scancodes to Keycodes - table[SDL_SCANCODE_SPACE] = Keycode::SPACE; - table[SDL_SCANCODE_APOSTROPHE] = Keycode::APOSTROPHE; - table[SDL_SCANCODE_COMMA] = Keycode::COMMA; - table[SDL_SCANCODE_MINUS] = Keycode::MINUS; - table[SDL_SCANCODE_PERIOD] = Keycode::PERIOD; - table[SDL_SCANCODE_SLASH] = Keycode::SLASH; - table[SDL_SCANCODE_0] = Keycode::D0; - table[SDL_SCANCODE_1] = Keycode::D1; - table[SDL_SCANCODE_2] = Keycode::D2; - table[SDL_SCANCODE_3] = Keycode::D3; - table[SDL_SCANCODE_4] = Keycode::D4; - table[SDL_SCANCODE_5] = Keycode::D5; - table[SDL_SCANCODE_6] = Keycode::D6; - table[SDL_SCANCODE_7] = Keycode::D7; - table[SDL_SCANCODE_8] = Keycode::D8; - table[SDL_SCANCODE_9] = Keycode::D9; - table[SDL_SCANCODE_SEMICOLON] = Keycode::SEMICOLON; - table[SDL_SCANCODE_EQUALS] = Keycode::EQUAL; - table[SDL_SCANCODE_A] = Keycode::A; - table[SDL_SCANCODE_B] = Keycode::B; - table[SDL_SCANCODE_C] = Keycode::C; - table[SDL_SCANCODE_D] = Keycode::D; - table[SDL_SCANCODE_E] = Keycode::E; - table[SDL_SCANCODE_F] = Keycode::F; - table[SDL_SCANCODE_G] = Keycode::G; - table[SDL_SCANCODE_H] = Keycode::H; - table[SDL_SCANCODE_I] = Keycode::I; - table[SDL_SCANCODE_J] = Keycode::J; - table[SDL_SCANCODE_K] = Keycode::K; - table[SDL_SCANCODE_L] = Keycode::L; - table[SDL_SCANCODE_M] = Keycode::M; - table[SDL_SCANCODE_N] = Keycode::N; - table[SDL_SCANCODE_O] = Keycode::O; - table[SDL_SCANCODE_P] = Keycode::P; - table[SDL_SCANCODE_Q] = Keycode::Q; - table[SDL_SCANCODE_R] = Keycode::R; - table[SDL_SCANCODE_S] = Keycode::S; - table[SDL_SCANCODE_T] = Keycode::T; - table[SDL_SCANCODE_U] = Keycode::U; - table[SDL_SCANCODE_V] = Keycode::V; - table[SDL_SCANCODE_W] = Keycode::W; - table[SDL_SCANCODE_X] = Keycode::X; - table[SDL_SCANCODE_Y] = Keycode::Y; - table[SDL_SCANCODE_Z] = Keycode::Z; - table[SDL_SCANCODE_LEFTBRACKET] = Keycode::LEFT_BRACKET; - table[SDL_SCANCODE_BACKSLASH] = Keycode::BACKSLASH; - table[SDL_SCANCODE_RIGHTBRACKET] = Keycode::RIGHT_BRACKET; - table[SDL_SCANCODE_GRAVE] = Keycode::GRAVE_ACCENT; - table[SDL_SCANCODE_ESCAPE] = Keycode::ESCAPE; - table[SDL_SCANCODE_RETURN] = Keycode::ENTER; - table[SDL_SCANCODE_TAB] = Keycode::TAB; - table[SDL_SCANCODE_BACKSPACE] = Keycode::BACKSPACE; - table[SDL_SCANCODE_INSERT] = Keycode::INSERT; - table[SDL_SCANCODE_DELETE] = Keycode::DELETE; - table[SDL_SCANCODE_RIGHT] = Keycode::RIGHT; - table[SDL_SCANCODE_LEFT] = Keycode::LEFT; - table[SDL_SCANCODE_DOWN] = Keycode::DOWN; - table[SDL_SCANCODE_UP] = Keycode::UP; - table[SDL_SCANCODE_PAGEUP] = Keycode::PAGE_UP; - table[SDL_SCANCODE_PAGEDOWN] = Keycode::PAGE_DOWN; - table[SDL_SCANCODE_HOME] = Keycode::HOME; - table[SDL_SCANCODE_END] = Keycode::END; - table[SDL_SCANCODE_CAPSLOCK] = Keycode::CAPS_LOCK; - table[SDL_SCANCODE_SCROLLLOCK] = Keycode::SCROLL_LOCK; - table[SDL_SCANCODE_NUMLOCKCLEAR] = Keycode::NUM_LOCK; - table[SDL_SCANCODE_PRINTSCREEN] = Keycode::PRINT_SCREEN; - table[SDL_SCANCODE_PAUSE] = Keycode::PAUSE; - table[SDL_SCANCODE_F1] = Keycode::F1; - table[SDL_SCANCODE_F2] = Keycode::F2; - table[SDL_SCANCODE_F3] = Keycode::F3; - table[SDL_SCANCODE_F4] = Keycode::F4; - table[SDL_SCANCODE_F5] = Keycode::F5; - table[SDL_SCANCODE_F6] = Keycode::F6; - table[SDL_SCANCODE_F7] = Keycode::F7; - table[SDL_SCANCODE_F8] = Keycode::F8; - table[SDL_SCANCODE_F9] = Keycode::F9; - table[SDL_SCANCODE_F10] = Keycode::F10; - table[SDL_SCANCODE_F11] = Keycode::F11; - table[SDL_SCANCODE_F12] = Keycode::F12; - table[SDL_SCANCODE_KP_0] = Keycode::KP0; - table[SDL_SCANCODE_KP_1] = Keycode::KP1; - table[SDL_SCANCODE_KP_2] = Keycode::KP2; - table[SDL_SCANCODE_KP_3] = Keycode::KP3; - table[SDL_SCANCODE_KP_4] = Keycode::KP4; - table[SDL_SCANCODE_KP_5] = Keycode::KP5; - table[SDL_SCANCODE_KP_6] = Keycode::KP6; - table[SDL_SCANCODE_KP_7] = Keycode::KP7; - table[SDL_SCANCODE_KP_8] = Keycode::KP8; - table[SDL_SCANCODE_KP_9] = Keycode::KP9; - table[SDL_SCANCODE_LSHIFT] = Keycode::LEFT_SHIFT; - table[SDL_SCANCODE_LCTRL] = Keycode::LEFT_CONTROL; - table[SDL_SCANCODE_LALT] = Keycode::LEFT_ALT; - table[SDL_SCANCODE_LGUI] = Keycode::LEFT_SUPER; - table[SDL_SCANCODE_RSHIFT] = Keycode::RIGHT_SHIFT; - table[SDL_SCANCODE_RCTRL] = Keycode::RIGHT_CONTROL; - table[SDL_SCANCODE_RALT] = Keycode::RIGHT_ALT; - table[SDL_SCANCODE_RGUI] = Keycode::RIGHT_SUPER; - table[SDL_SCANCODE_MENU] = Keycode::MENU; + auto it = LOOKUP_TABLE.find(sdl_key); + if (it != LOOKUP_TABLE.end()) { + return it->second; + } - return table; - }(); - if (sdl_key < 0 || sdl_key >= SDL_NUM_SCANCODES) { - return Keycode::NONE; - } - return LOOKUP_TABLE[sdl_key]; + return Keycode::NONE; } -std::array SDLContext::get_keyboard_state() { +keyboard_state_t SDLContext::get_keyboard_state() { // Array to hold the key states (true if pressed, false if not) std::array keyState{}; SDL_PumpEvents(); @@ -198,11 +94,11 @@ std::array SDLContext::get_keyboard_state() { Keycode key = sdl_to_keycode(static_cast(i)); if (key != Keycode::NONE) { - keyState[key] = current_state[i] != 0; + keyboard_state[key] = current_state[i] != 0; } } - return keyState; + return keyboard_state; } MouseButton SDLContext::sdl_to_mousebutton(Uint8 sdl_button) { @@ -403,6 +299,7 @@ std::vector SDLContext::get_events() { transfer_event.data.key_data = KeyData{ .key = sdl_to_keycode(event.key.keysym.scancode), .key_repeat = event.key.repeat != 0, + .keyboard_state = this->get_keyboard_state(), }; event_list.push_back(transfer_event); } @@ -414,6 +311,7 @@ std::vector SDLContext::get_events() { transfer_event.data.key_data = KeyData{ .key = sdl_to_keycode(event.key.keysym.scancode), .key_repeat = false, + .keyboard_state = this->get_keyboard_state(), }; event_list.push_back(transfer_event); } diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h index d7af226..feb51f4 100644 --- a/src/crepe/facade/SDLContext.h +++ b/src/crepe/facade/SDLContext.h @@ -10,6 +10,7 @@ #include #include #include +#include #include "api/Camera.h" #include "api/Color.h" @@ -129,11 +130,11 @@ public: * specific key defined in the `Keycode` enum, and the value indicates whether * the key is currently pressed (true) or not pressed (false). * - * \return A `std::array` representing the state of + * \return A `keyboard_state_t` representing the state of * each key on the keyboard, where `true` means the key is pressed, and * `false` means it is not pressed. */ - std::array get_keyboard_state(); + keyboard_state_t get_keyboard_state(); /** * \brief Gets the singleton instance of SDLContext. * \return Reference to the SDLContext instance. @@ -294,6 +295,108 @@ private: * - this is defined in this class because get_events() needs this information aswell */ CameraAuxiliaryData cam_aux_data; +private: + keyboard_state_t keyboard_state; + const std::unordered_map LOOKUP_TABLE = { + {SDL_SCANCODE_SPACE, Keycode::SPACE}, + {SDL_SCANCODE_APOSTROPHE, Keycode::APOSTROPHE}, + {SDL_SCANCODE_COMMA, Keycode::COMMA}, + {SDL_SCANCODE_MINUS, Keycode::MINUS}, + {SDL_SCANCODE_PERIOD, Keycode::PERIOD}, + {SDL_SCANCODE_SLASH, Keycode::SLASH}, + {SDL_SCANCODE_0, Keycode::D0}, + {SDL_SCANCODE_1, Keycode::D1}, + {SDL_SCANCODE_2, Keycode::D2}, + {SDL_SCANCODE_3, Keycode::D3}, + {SDL_SCANCODE_4, Keycode::D4}, + {SDL_SCANCODE_5, Keycode::D5}, + {SDL_SCANCODE_6, Keycode::D6}, + {SDL_SCANCODE_7, Keycode::D7}, + {SDL_SCANCODE_8, Keycode::D8}, + {SDL_SCANCODE_9, Keycode::D9}, + {SDL_SCANCODE_SEMICOLON, Keycode::SEMICOLON}, + {SDL_SCANCODE_EQUALS, Keycode::EQUAL}, + {SDL_SCANCODE_A, Keycode::A}, + {SDL_SCANCODE_B, Keycode::B}, + {SDL_SCANCODE_C, Keycode::C}, + {SDL_SCANCODE_D, Keycode::D}, + {SDL_SCANCODE_E, Keycode::E}, + {SDL_SCANCODE_F, Keycode::F}, + {SDL_SCANCODE_G, Keycode::G}, + {SDL_SCANCODE_H, Keycode::H}, + {SDL_SCANCODE_I, Keycode::I}, + {SDL_SCANCODE_J, Keycode::J}, + {SDL_SCANCODE_K, Keycode::K}, + {SDL_SCANCODE_L, Keycode::L}, + {SDL_SCANCODE_M, Keycode::M}, + {SDL_SCANCODE_N, Keycode::N}, + {SDL_SCANCODE_O, Keycode::O}, + {SDL_SCANCODE_P, Keycode::P}, + {SDL_SCANCODE_Q, Keycode::Q}, + {SDL_SCANCODE_R, Keycode::R}, + {SDL_SCANCODE_S, Keycode::S}, + {SDL_SCANCODE_T, Keycode::T}, + {SDL_SCANCODE_U, Keycode::U}, + {SDL_SCANCODE_V, Keycode::V}, + {SDL_SCANCODE_W, Keycode::W}, + {SDL_SCANCODE_X, Keycode::X}, + {SDL_SCANCODE_Y, Keycode::Y}, + {SDL_SCANCODE_Z, Keycode::Z}, + {SDL_SCANCODE_LEFTBRACKET, Keycode::LEFT_BRACKET}, + {SDL_SCANCODE_BACKSLASH, Keycode::BACKSLASH}, + {SDL_SCANCODE_RIGHTBRACKET, Keycode::RIGHT_BRACKET}, + {SDL_SCANCODE_GRAVE, Keycode::GRAVE_ACCENT}, + {SDL_SCANCODE_ESCAPE, Keycode::ESCAPE}, + {SDL_SCANCODE_RETURN, Keycode::ENTER}, + {SDL_SCANCODE_TAB, Keycode::TAB}, + {SDL_SCANCODE_BACKSPACE, Keycode::BACKSPACE}, + {SDL_SCANCODE_INSERT, Keycode::INSERT}, + {SDL_SCANCODE_DELETE, Keycode::DELETE}, + {SDL_SCANCODE_RIGHT, Keycode::RIGHT}, + {SDL_SCANCODE_LEFT, Keycode::LEFT}, + {SDL_SCANCODE_DOWN, Keycode::DOWN}, + {SDL_SCANCODE_UP, Keycode::UP}, + {SDL_SCANCODE_PAGEUP, Keycode::PAGE_UP}, + {SDL_SCANCODE_PAGEDOWN, Keycode::PAGE_DOWN}, + {SDL_SCANCODE_HOME, Keycode::HOME}, + {SDL_SCANCODE_END, Keycode::END}, + {SDL_SCANCODE_CAPSLOCK, Keycode::CAPS_LOCK}, + {SDL_SCANCODE_SCROLLLOCK, Keycode::SCROLL_LOCK}, + {SDL_SCANCODE_NUMLOCKCLEAR, Keycode::NUM_LOCK}, + {SDL_SCANCODE_PRINTSCREEN, Keycode::PRINT_SCREEN}, + {SDL_SCANCODE_PAUSE, Keycode::PAUSE}, + {SDL_SCANCODE_F1, Keycode::F1}, + {SDL_SCANCODE_F2, Keycode::F2}, + {SDL_SCANCODE_F3, Keycode::F3}, + {SDL_SCANCODE_F4, Keycode::F4}, + {SDL_SCANCODE_F5, Keycode::F5}, + {SDL_SCANCODE_F6, Keycode::F6}, + {SDL_SCANCODE_F7, Keycode::F7}, + {SDL_SCANCODE_F8, Keycode::F8}, + {SDL_SCANCODE_F9, Keycode::F9}, + {SDL_SCANCODE_F10, Keycode::F10}, + {SDL_SCANCODE_F11, Keycode::F11}, + {SDL_SCANCODE_F12, Keycode::F12}, + {SDL_SCANCODE_KP_0, Keycode::KP0}, + {SDL_SCANCODE_KP_1, Keycode::KP1}, + {SDL_SCANCODE_KP_2, Keycode::KP2}, + {SDL_SCANCODE_KP_3, Keycode::KP3}, + {SDL_SCANCODE_KP_4, Keycode::KP4}, + {SDL_SCANCODE_KP_5, Keycode::KP5}, + {SDL_SCANCODE_KP_6, Keycode::KP6}, + {SDL_SCANCODE_KP_7, Keycode::KP7}, + {SDL_SCANCODE_KP_8, Keycode::KP8}, + {SDL_SCANCODE_KP_9, Keycode::KP9}, + {SDL_SCANCODE_LSHIFT, Keycode::LEFT_SHIFT}, + {SDL_SCANCODE_LCTRL, Keycode::LEFT_CONTROL}, + {SDL_SCANCODE_LALT, Keycode::LEFT_ALT}, + {SDL_SCANCODE_LGUI, Keycode::LEFT_SUPER}, + {SDL_SCANCODE_RSHIFT, Keycode::RIGHT_SHIFT}, + {SDL_SCANCODE_RCTRL, Keycode::RIGHT_CONTROL}, + {SDL_SCANCODE_RALT, Keycode::RIGHT_ALT}, + {SDL_SCANCODE_RGUI, Keycode::RIGHT_SUPER}, + {SDL_SCANCODE_MENU, Keycode::MENU} + }; }; } // namespace crepe -- cgit v1.2.3 From 193d5bf4d9577e63202cec45b21ed85a76a89f09 Mon Sep 17 00:00:00 2001 From: WBoerenkamps Date: Fri, 13 Dec 2024 08:16:48 +0100 Subject: keyboard state implemented --- src/crepe/api/Event.h | 4 ---- src/crepe/api/KeyCodes.h | 2 +- src/crepe/facade/SDLContext.cpp | 10 ++++------ src/crepe/facade/SDLContext.h | 12 ++++-------- 4 files changed, 9 insertions(+), 19 deletions(-) (limited to 'src/crepe/api/Event.h') diff --git a/src/crepe/api/Event.h b/src/crepe/api/Event.h index d222e51..66dd0cc 100644 --- a/src/crepe/api/Event.h +++ b/src/crepe/api/Event.h @@ -2,8 +2,6 @@ // TODO discussing the location of these events #include -#include - #include "KeyCodes.h" #include "types.h" @@ -25,7 +23,6 @@ public: //! The key that was pressed. Keycode key = Keycode::NONE; - keyboard_state_t keyboard_state; }; /** @@ -35,7 +32,6 @@ class KeyReleaseEvent : public Event { public: //! The key that was released. Keycode key = Keycode::NONE; - keyboard_state_t keyboard_state; }; /** diff --git a/src/crepe/api/KeyCodes.h b/src/crepe/api/KeyCodes.h index 4a3bf57..fa0d17c 100644 --- a/src/crepe/api/KeyCodes.h +++ b/src/crepe/api/KeyCodes.h @@ -157,5 +157,5 @@ typedef enum { NUM_KEYCODES = 512, } Keycode; -typedef std::unordered_map keyboard_state_t; + } // namespace crepe diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index d70a7bb..6e47561 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -84,7 +84,7 @@ Keycode SDLContext::sdl_to_keycode(SDL_Scancode sdl_key) { return Keycode::NONE; } -keyboard_state_t SDLContext::get_keyboard_state() { +void SDLContext::update_keyboard_state() { // Array to hold the key states (true if pressed, false if not) std::array keyState{}; SDL_PumpEvents(); @@ -94,11 +94,10 @@ keyboard_state_t SDLContext::get_keyboard_state() { Keycode key = sdl_to_keycode(static_cast(i)); if (key != Keycode::NONE) { - keyboard_state[key] = current_state[i] != 0; + this->keyboard_state[key] = current_state[i] != 0; } } - return keyboard_state; } MouseButton SDLContext::sdl_to_mousebutton(Uint8 sdl_button) { @@ -293,25 +292,24 @@ std::vector SDLContext::get_events() { break; case SDL_KEYDOWN: { - + this->update_keyboard_state(); EventData transfer_event; transfer_event.event_type = SDLContext::EventType::KEYDOWN; transfer_event.data.key_data = KeyData{ .key = sdl_to_keycode(event.key.keysym.scancode), .key_repeat = event.key.repeat != 0, - .keyboard_state = this->get_keyboard_state(), }; event_list.push_back(transfer_event); } break; case SDL_KEYUP: { + this->update_keyboard_state(); EventData transfer_event; transfer_event.event_type = SDLContext::EventType::KEYUP; transfer_event.data.key_data = KeyData{ .key = sdl_to_keycode(event.key.keysym.scancode), .key_repeat = false, - .keyboard_state = this->get_keyboard_state(), }; event_list.push_back(transfer_event); } diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h index feb51f4..b10bcfe 100644 --- a/src/crepe/facade/SDLContext.h +++ b/src/crepe/facade/SDLContext.h @@ -125,16 +125,12 @@ public: /** * \brief Retrieves the current state of the keyboard. * - * This method returns the state of all keys on the keyboard, represented as a - * `std::array` of boolean values. Each element of the array corresponds to a + * This method updates the state of all keys on the keyboard. Each element of the unordered map corresponds to a * specific key defined in the `Keycode` enum, and the value indicates whether * the key is currently pressed (true) or not pressed (false). - * - * \return A `keyboard_state_t` representing the state of - * each key on the keyboard, where `true` means the key is pressed, and - * `false` means it is not pressed. + * */ - keyboard_state_t get_keyboard_state(); + void update_keyboard_state(); /** * \brief Gets the singleton instance of SDLContext. * \return Reference to the SDLContext instance. @@ -296,7 +292,7 @@ private: */ CameraAuxiliaryData cam_aux_data; private: - keyboard_state_t keyboard_state; + std::unordered_map keyboard_state; const std::unordered_map LOOKUP_TABLE = { {SDL_SCANCODE_SPACE, Keycode::SPACE}, {SDL_SCANCODE_APOSTROPHE, Keycode::APOSTROPHE}, -- cgit v1.2.3 From 2b3659c8c5dace0ff9ff9cb8b9421f7f3f890218 Mon Sep 17 00:00:00 2001 From: WBoerenkamps Date: Fri, 13 Dec 2024 09:15:56 +0100 Subject: added window events back to code and function cleanup --- src/crepe/api/Event.h | 10 +- src/crepe/api/KeyCodes.h | 2 - src/crepe/facade/SDLContext.cpp | 72 ++++++------ src/crepe/facade/SDLContext.h | 5 - src/crepe/system/InputSystem.cpp | 239 ++++++++++++++++++++------------------- src/crepe/system/InputSystem.h | 37 ++++-- src/test/InputTest.cpp | 52 +-------- 7 files changed, 196 insertions(+), 221 deletions(-) (limited to 'src/crepe/api/Event.h') diff --git a/src/crepe/api/Event.h b/src/crepe/api/Event.h index 66dd0cc..17ae809 100644 --- a/src/crepe/api/Event.h +++ b/src/crepe/api/Event.h @@ -40,7 +40,7 @@ public: class MousePressEvent : public Event { public: //! mouse position - ivec2 mouse_pos = {0, 0}; + vec2 mouse_pos = {0, 0}; //! The mouse button that was pressed. MouseButton button = MouseButton::NONE; @@ -52,7 +52,7 @@ public: class MouseClickEvent : public Event { public: //! mouse position - ivec2 mouse_pos = {0, 0}; + vec2 mouse_pos = {0, 0}; //! The mouse button that was clicked. MouseButton button = MouseButton::NONE; @@ -64,7 +64,7 @@ public: class MouseReleaseEvent : public Event { public: //! mouse position - ivec2 mouse_pos = {0, 0}; + vec2 mouse_pos = {0, 0}; //! The mouse button that was released. MouseButton button = MouseButton::NONE; @@ -76,7 +76,7 @@ public: class MouseMoveEvent : public Event { public: //! new mouse position - ivec2 mouse_pos = {0, 0}; + vec2 mouse_pos = {0, 0}; //! The change in mouse position relative to the last position (in pixels). ivec2 mouse_delta = {0, 0}; }; @@ -87,7 +87,7 @@ public: class MouseScrollEvent : public Event { public: //! mouse position when the scroll happened. - ivec2 mouse_pos = {0, 0}; + vec2 mouse_pos = {0, 0}; //! scroll direction (-1 = down, 1 = up) int scroll_direction = 0; //! scroll amount in y axis (from and away from the person). diff --git a/src/crepe/api/KeyCodes.h b/src/crepe/api/KeyCodes.h index fa0d17c..a9141e2 100644 --- a/src/crepe/api/KeyCodes.h +++ b/src/crepe/api/KeyCodes.h @@ -153,8 +153,6 @@ typedef enum { RIGHT_SUPER = 347, /// \} MENU = 348, //!< Menu key. - //! Not actually a key instead its the amount of keycodes there are for array indexing - NUM_KEYCODES = 512, } Keycode; diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index 6e47561..7c7d58e 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -1,4 +1,3 @@ -#include #include #include #include @@ -86,7 +85,6 @@ Keycode SDLContext::sdl_to_keycode(SDL_Scancode sdl_key) { } void SDLContext::update_keyboard_state() { // Array to hold the key states (true if pressed, false if not) - std::array keyState{}; SDL_PumpEvents(); const Uint8 * current_state = SDL_GetKeyboardState(nullptr); @@ -284,8 +282,6 @@ std::vector SDLContext::get_events() { ivec2 mouse_pos; mouse_pos.x = (event.button.x - cam.bar_size.x) / cam.render_scale.x; mouse_pos.y = (event.button.y - cam.bar_size.y) / cam.render_scale.y; - std::cout << "SDL mousePos X: " << mouse_pos.x << std::endl; - std::cout << "SDL mousePos Y: " << mouse_pos.y << std::endl; switch (event.type) { case SDL_QUIT: event_list.push_back({.event_type = SDLContext::EventType::SHUTDOWN}); @@ -357,44 +353,52 @@ std::vector SDLContext::get_events() { }; event_list.push_back(transfer_event); } break; + case SDL_WINDOWEVENT: + handle_window_event(event.window, event_list); + break; } } return event_list; } -// Separate function for SDL_WINDOWEVENT subtypes void SDLContext::handle_window_event(const SDL_WindowEvent & window_event, std::vector & event_list) { - // switch (window_event.event) { - // case SDL_WINDOWEVENT_EXPOSED: - // event_list.push_back({SDLContext::EventType::WINDOW_EXPOSE, {}, {}, {}}); - // break; - // case SDL_WINDOWEVENT_RESIZED: - // event_list.push_back({SDLContext::EventType::WINDOW_RESIZE, - // {}, - // {}, - // {{}, {window_event.data1, window_event.data2}}}); - // break; - // case SDL_WINDOWEVENT_MOVED: - // event_list.push_back({SDLContext::EventType::WINDOW_MOVE, - // {}, - // {}, - // {{window_event.data1, window_event.data2}, {}}}); - // break; - // case SDL_WINDOWEVENT_MINIMIZED: - // event_list.push_back({SDLContext::EventType::WINDOW_MINIMIZE, {}, {}, {}}); - // break; - // case SDL_WINDOWEVENT_MAXIMIZED: - // event_list.push_back({SDLContext::EventType::WINDOW_MAXIMIZE, {}, {}, {}}); - // break; - // case SDL_WINDOWEVENT_FOCUS_GAINED: - // event_list.push_back({SDLContext::EventType::WINDOW_FOCUS_GAIN, {}, {}, {}}); - // break; - // case SDL_WINDOWEVENT_FOCUS_LOST: - // event_list.push_back({SDLContext::EventType::WINDOW_FOCUS_LOST, {}, {}, {}}); - // break; - // } + switch (window_event.event) { + case SDL_WINDOWEVENT_EXPOSED: + event_list.push_back(EventData{SDLContext::EventType::WINDOW_EXPOSE}); + break; + case SDL_WINDOWEVENT_RESIZED: { + EventData transfer_event; + transfer_event.event_type = SDLContext::EventType::WINDOW_RESIZE; + transfer_event.data.window_data = WindowData{ + .resize_dimension = {window_event.data1, window_event.data2} + }; + event_list.push_back(transfer_event); + break; + } + case SDL_WINDOWEVENT_MOVED: { + EventData transfer_event; + transfer_event.event_type = SDLContext::EventType::WINDOW_MOVE; + transfer_event.data.window_data = WindowData{ + .move_delta = {window_event.data1, window_event.data2} + }; + event_list.push_back(transfer_event); + break; + } + case SDL_WINDOWEVENT_MINIMIZED: + event_list.push_back(EventData{SDLContext::EventType::WINDOW_MINIMIZE}); + break; + case SDL_WINDOWEVENT_MAXIMIZED: + event_list.push_back(EventData{SDLContext::EventType::WINDOW_MAXIMIZE}); + break; + case SDL_WINDOWEVENT_FOCUS_GAINED: + event_list.push_back(EventData{SDLContext::EventType::WINDOW_FOCUS_GAIN}); + break; + case SDL_WINDOWEVENT_FOCUS_LOST: + event_list.push_back(EventData{SDLContext::EventType::WINDOW_FOCUS_LOST}); + break; + } } void SDLContext::set_color_texture(const Texture & texture, const Color & color) { diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h index b10bcfe..e56d531 100644 --- a/src/crepe/facade/SDLContext.h +++ b/src/crepe/facade/SDLContext.h @@ -116,11 +116,6 @@ public: EventDataUnion() {} ~EventDataUnion() {} } data; - - // Helper functions - // bool isKeyEvent() const { return event_type == SDLContext::EventType::KEYDOWN || event_type == SDLContext::EventType::KEYUP; } - // bool isMouseEvent() const { return event_type == SDLContext::EventType::MOUSEDOWN || event_type == SDLContext::EventType::MOUSEUP || event_type == SDLContext::EventType::MOUSEMOVE; } - // bool isWindowEvent() const { return event_type == SDLContext::EventType::WINDOW_MINIMIZE || event_type == SDLContext::EventType::WINDOW_RESIZE; } }; /** * \brief Retrieves the current state of the keyboard. diff --git a/src/crepe/system/InputSystem.cpp b/src/crepe/system/InputSystem.cpp index 32538e8..bb454af 100644 --- a/src/crepe/system/InputSystem.cpp +++ b/src/crepe/system/InputSystem.cpp @@ -1,4 +1,3 @@ -#include #include "../api/Button.h" #include "../manager/ComponentManager.h" #include "../manager/EventManager.h" @@ -11,7 +10,7 @@ using namespace crepe; void InputSystem::update() { ComponentManager & mgr = this->mediator.component_manager; - EventManager & event_mgr = this->mediator.event_manager; + SDLContext & context = this->mediator.sdl_context; std::vector event_list = context.get_events(); RefVector