aboutsummaryrefslogtreecommitdiff
path: root/src/crepe
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe')
-rw-r--r--src/crepe/api/KeyCodes.h1
-rw-r--r--src/crepe/facade/SDLContext.cpp57
-rw-r--r--src/crepe/facade/SDLContext.h218
-rw-r--r--src/crepe/system/InputSystem.cpp57
-rw-r--r--src/crepe/system/InputSystem.h14
5 files changed, 170 insertions, 177 deletions
diff --git a/src/crepe/api/KeyCodes.h b/src/crepe/api/KeyCodes.h
index a13d1af..dc3219a 100644
--- a/src/crepe/api/KeyCodes.h
+++ b/src/crepe/api/KeyCodes.h
@@ -155,5 +155,4 @@ enum class Keycode {
MENU = 348, //!< Menu key.
};
-
} // namespace crepe
diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp
index 7c7d58e..7e19ede 100644
--- a/src/crepe/facade/SDLContext.cpp
+++ b/src/crepe/facade/SDLContext.cpp
@@ -77,11 +77,11 @@ SDLContext::~SDLContext() {
Keycode SDLContext::sdl_to_keycode(SDL_Scancode sdl_key) {
auto it = LOOKUP_TABLE.find(sdl_key);
- if (it != LOOKUP_TABLE.end()) {
- return it->second;
- }
+ if (it != LOOKUP_TABLE.end()) {
+ return it->second;
+ }
- return Keycode::NONE;
+ return Keycode::NONE;
}
void SDLContext::update_keyboard_state() {
// Array to hold the key states (true if pressed, false if not)
@@ -95,7 +95,6 @@ void SDLContext::update_keyboard_state() {
this->keyboard_state[key] = current_state[i] != 0;
}
}
-
}
MouseButton SDLContext::sdl_to_mousebutton(Uint8 sdl_button) {
@@ -286,8 +285,7 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {
case SDL_QUIT:
event_list.push_back({.event_type = SDLContext::EventType::SHUTDOWN});
break;
- case SDL_KEYDOWN:
- {
+ case SDL_KEYDOWN: {
this->update_keyboard_state();
EventData transfer_event;
transfer_event.event_type = SDLContext::EventType::KEYDOWN;
@@ -296,10 +294,10 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {
.key_repeat = event.key.repeat != 0,
};
event_list.push_back(transfer_event);
- }
break;
- case SDL_KEYUP:
- {
+ }
+
+ case SDL_KEYUP: {
this->update_keyboard_state();
EventData transfer_event;
transfer_event.event_type = SDLContext::EventType::KEYUP;
@@ -308,10 +306,10 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {
.key_repeat = false,
};
event_list.push_back(transfer_event);
- }
break;
- case SDL_MOUSEBUTTONDOWN:
- {
+ }
+
+ case SDL_MOUSEBUTTONDOWN: {
EventData transfer_event;
transfer_event.event_type = SDLContext::EventType::MOUSEDOWN;
transfer_event.data.mouse_data = MouseData{
@@ -319,10 +317,9 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {
.mouse_position = mouse_pos,
};
event_list.push_back(transfer_event);
-
- } break;
- case SDL_MOUSEBUTTONUP:
- {
+ break;
+ }
+ case SDL_MOUSEBUTTONUP: {
EventData transfer_event;
transfer_event.event_type = SDLContext::EventType::MOUSEUP;
transfer_event.data.mouse_data = MouseData{
@@ -330,8 +327,8 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {
.mouse_position = mouse_pos,
};
event_list.push_back(transfer_event);
-
- } break;
+ break;
+ }
case SDL_MOUSEMOTION: {
EventData transfer_event;
@@ -341,7 +338,8 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {
.rel_mouse_move = {event.motion.xrel, event.motion.yrel},
};
event_list.push_back(transfer_event);
- } break;
+ break;
+ }
case SDL_MOUSEWHEEL: {
EventData transfer_event;
@@ -352,10 +350,11 @@ std::vector<SDLContext::EventData> SDLContext::get_events() {
.scroll_delta = event.wheel.preciseY,
};
event_list.push_back(transfer_event);
- } break;
- case SDL_WINDOWEVENT:
- handle_window_event(event.window, event_list);
- break;
+ break;
+ }
+ case SDL_WINDOWEVENT:
+ handle_window_event(event.window, event_list);
+ break;
}
}
@@ -371,18 +370,16 @@ void SDLContext::handle_window_event(const SDL_WindowEvent & window_event,
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}
- };
+ 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}
- };
+ transfer_event.data.window_data
+ = WindowData{.move_delta = {window_event.data1, window_event.data2}};
event_list.push_back(transfer_event);
break;
}
diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h
index e56d531..7ccefeb 100644
--- a/src/crepe/facade/SDLContext.h
+++ b/src/crepe/facade/SDLContext.h
@@ -106,16 +106,16 @@ public:
};
//! EventData struct for passing event data from facade
struct EventData {
- SDLContext::EventType event_type = SDLContext::EventType::NONE;
+ SDLContext::EventType event_type = SDLContext::EventType::NONE;
- union EventDataUnion {
- KeyData key_data;
- MouseData mouse_data;
- WindowData window_data;
+ union EventDataUnion {
+ KeyData key_data;
+ MouseData mouse_data;
+ WindowData window_data;
- EventDataUnion() {}
- ~EventDataUnion() {}
- } data;
+ EventDataUnion() {}
+ ~EventDataUnion() {}
+ } data;
};
/**
* \brief Retrieves the current state of the keyboard.
@@ -286,108 +286,108 @@ private:
* - this is defined in this class because get_events() needs this information aswell
*/
CameraAuxiliaryData cam_aux_data;
-private:
+
+private:
std::unordered_map<Keycode, bool> keyboard_state;
- const std::unordered_map<SDL_Scancode, Keycode> 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}
- };
+ const std::unordered_map<SDL_Scancode, Keycode> 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
diff --git a/src/crepe/system/InputSystem.cpp b/src/crepe/system/InputSystem.cpp
index bb454af..8de700b 100644
--- a/src/crepe/system/InputSystem.cpp
+++ b/src/crepe/system/InputSystem.cpp
@@ -10,7 +10,7 @@ using namespace crepe;
void InputSystem::update() {
ComponentManager & mgr = this->mediator.component_manager;
-
+
SDLContext & context = this->mediator.sdl_context;
std::vector<SDLContext::EventData> event_list = context.get_events();
RefVector<Button> buttons = mgr.get_components_by_type<Button>();
@@ -31,31 +31,31 @@ void InputSystem::update() {
Transform & cam_transform = transform_vec.front().get();
vec2 camera_origin = cam_transform.position + current_cam.data.postion_offset
- - (current_cam.viewport_size / 2);
+ - (current_cam.viewport_size / 2);
for (const SDLContext::EventData & event : event_list) {
// Only calculate mouse coordinates for relevant events
- if(this->is_mouse_event(event.event_type)) {
- this->handle_mouse_event(event,camera_origin,current_cam);
-
+ if (this->is_mouse_event(event.event_type)) {
+ this->handle_mouse_event(event, camera_origin, current_cam);
+
} else {
this->handle_non_mouse_event(event);
-
}
}
}
-void InputSystem::handle_mouse_event(const SDLContext::EventData &event, const vec2 &camera_origin,
- const Camera &current_cam){
+void InputSystem::handle_mouse_event(const SDLContext::EventData & event,
+ const vec2 & camera_origin, const Camera & current_cam) {
EventManager & event_mgr = this->mediator.event_manager;
vec2 adjusted_mouse;
adjusted_mouse.x = event.data.mouse_data.mouse_position.x + camera_origin.x;
adjusted_mouse.x = event.data.mouse_data.mouse_position.y + camera_origin.y;
// Check if the mouse is within the viewport
if ((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)) return;
+ || 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))
+ return;
// Handle mouse-specific events
switch (event.event_type) {
@@ -105,14 +105,14 @@ void InputSystem::handle_mouse_event(const SDLContext::EventData &event, const v
default:
break;
- }
+ }
}
-void InputSystem::handle_non_mouse_event(const SDLContext::EventData &event){
+void InputSystem::handle_non_mouse_event(const SDLContext::EventData & event) {
EventManager & event_mgr = this->mediator.event_manager;
switch (event.event_type) {
case SDLContext::EventType::KEYDOWN:
-
+
event_mgr.queue_event<KeyPressEvent>(
{.repeat = event.data.key_data.key_repeat, .key = event.data.key_data.key});
break;
@@ -150,7 +150,7 @@ void InputSystem::handle_non_mouse_event(const SDLContext::EventData &event){
}
}
-bool InputSystem::is_mouse_event(SDLContext::EventType event_type){
+bool InputSystem::is_mouse_event(SDLContext::EventType event_type) {
return (event_type == SDLContext::EventType::MOUSEDOWN
|| event_type == SDLContext::EventType::MOUSEUP
|| event_type == SDLContext::EventType::MOUSEMOVE
@@ -158,29 +158,28 @@ bool InputSystem::is_mouse_event(SDLContext::EventType event_type){
}
void InputSystem::handle_move(const SDLContext::EventData & event_data,
- const vec2& mouse_pos) {
+ const vec2 & mouse_pos) {
ComponentManager & mgr = this->mediator.component_manager;
RefVector<Button> buttons = mgr.get_components_by_type<Button>();
for (Button & button : buttons) {
- if(!button.active) continue;
+ if (!button.active) continue;
RefVector<Transform> transform_vec
= mgr.get_components_by_id<Transform>(button.game_object_id);
Transform & transform(transform_vec.front().get());
bool was_hovering = button.hover;
- if (this->is_mouse_inside_button(mouse_pos, button,
- transform)) {
+ if (this->is_mouse_inside_button(mouse_pos, button, transform)) {
button.hover = true;
- if(!button.on_mouse_enter) continue;
+ if (!button.on_mouse_enter) continue;
if (!was_hovering) {
button.on_mouse_enter();
}
} else {
button.hover = false;
// Trigger the on_exit callback if the hover state just changed to false
- if(!button.on_mouse_exit) continue;
+ if (!button.on_mouse_exit) continue;
if (was_hovering) {
button.on_mouse_exit();
}
@@ -188,28 +187,27 @@ void InputSystem::handle_move(const SDLContext::EventData & event_data,
}
}
-void InputSystem::handle_click(const MouseButton & mouse_button, const vec2& mouse_pos) {
+void InputSystem::handle_click(const MouseButton & mouse_button, const vec2 & mouse_pos) {
ComponentManager & mgr = this->mediator.component_manager;
RefVector<Button> buttons = mgr.get_components_by_type<Button>();
for (Button & button : buttons) {
- if(!button.active) continue;
+ if (!button.active) continue;
if (!button.on_click) continue;
RefVector<Transform> transform_vec
= mgr.get_components_by_id<Transform>(button.game_object_id);
Transform & transform = transform_vec.front().get();
-
- if (this->is_mouse_inside_button(mouse_pos, button,
- transform)) {
-
+
+ if (this->is_mouse_inside_button(mouse_pos, button, transform)) {
+
button.on_click();
}
}
}
-bool InputSystem::is_mouse_inside_button(const vec2& mouse_pos,
- const Button & button, const Transform & transform) {
+bool InputSystem::is_mouse_inside_button(const vec2 & mouse_pos, const Button & button,
+ const Transform & transform) {
int actual_x = transform.position.x + button.offset.x;
int actual_y = transform.position.y + button.offset.y;
@@ -220,4 +218,3 @@ bool InputSystem::is_mouse_inside_button(const vec2& mouse_pos,
return mouse_pos.x >= actual_x - half_width && mouse_pos.x <= actual_x + half_width
&& mouse_pos.y >= actual_y - half_height && mouse_pos.y <= actual_y + half_height;
}
-
diff --git a/src/crepe/system/InputSystem.h b/src/crepe/system/InputSystem.h
index 7b8f510..63dfae5 100644
--- a/src/crepe/system/InputSystem.h
+++ b/src/crepe/system/InputSystem.h
@@ -52,8 +52,8 @@ private:
* This method processes mouse events, adjusts the mouse position to world coordinates,
* and triggers the appropriate mouse-specific event handling logic.
*/
- void handle_mouse_event(const SDLContext::EventData &event, const vec2 &camera_origin,
- const Camera &current_cam);
+ void handle_mouse_event(const SDLContext::EventData & event, const vec2 & camera_origin,
+ const Camera & current_cam);
/**
* \brief Handles non-mouse-related events.
* \param event The event data for the non-mouse event.
@@ -61,7 +61,7 @@ private:
* This method processes events that do not involve the mouse, such as keyboard events,
* window events, and shutdown events, and triggers the corresponding event actions.
*/
- void handle_non_mouse_event(const SDLContext::EventData &event);
+ void handle_non_mouse_event(const SDLContext::EventData & event);
/**
* \brief Handles the mouse click event.
* \param mouse_button The mouse button involved in the click.
@@ -70,7 +70,7 @@ private:
*
* This method processes the mouse click event and triggers the corresponding button action.
*/
- void handle_click(const MouseButton & mouse_button,const vec2& mouse_pos);
+ void handle_click(const MouseButton & mouse_button, const vec2 & mouse_pos);
/**
* \brief Handles the mouse movement event.
@@ -80,7 +80,7 @@ private:
*
* This method processes the mouse movement event and updates the button hover state.
*/
- void handle_move(const SDLContext::EventData & event_data, const vec2& mouse_pos);
+ void handle_move(const SDLContext::EventData & event_data, const vec2 & mouse_pos);
/**
* \brief Checks if the mouse position is inside the bounds of the button.
@@ -90,8 +90,8 @@ private:
* \param transform The transform component of the button.
* \return True if the mouse is inside the button, false otherwise.
*/
- bool is_mouse_inside_button(const vec2& mouse_pos,
- const Button & button, const Transform & transform);
+ bool is_mouse_inside_button(const vec2 & mouse_pos, const Button & button,
+ const Transform & transform);
/**
* \brief Handles the button press event, calling the on_click callback if necessary.