aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/crepe/api/Button.h8
-rw-r--r--src/crepe/system/InputSystem.cpp18
-rw-r--r--src/crepe/system/InputSystem.h18
-rw-r--r--src/test/InputTest.cpp6
4 files changed, 20 insertions, 30 deletions
diff --git a/src/crepe/api/Button.h b/src/crepe/api/Button.h
index 0f446c9..d42527e 100644
--- a/src/crepe/api/Button.h
+++ b/src/crepe/api/Button.h
@@ -13,9 +13,9 @@ namespace crepe {
* This component creates a clickable surface at the transform location with the specified width and height.
*
* The Button can be used in scripts by subscribing a EventHandler to the following events:
- * - **ButtonPressEvent**: Triggered when the surface is clicked with the mouse. Contains GameObject metadata.
- * - **MouseEnterEvent**: Triggered when the mouse enters the button area. Contains GameObject metadata.
- * - **MouseExitEvent**: Triggered when the mouse leaves the button area. Contains GameObject metadata.
+ * - ButtonPressEvent
+ * - ButtonEnterEvent
+ * - ButtonExitEvent
* \see EventManager
*
*/
@@ -34,7 +34,7 @@ public:
*
* Since the button Event transfers the GameObject Metadata it will be the same for each button so only one button is allowed per GameObject
*
- * \return The maximum number of instances for this component
+ * \return 1
*/
virtual int get_instances_max() const { return 1; }
diff --git a/src/crepe/system/InputSystem.cpp b/src/crepe/system/InputSystem.cpp
index e42eaeb..34aad06 100644
--- a/src/crepe/system/InputSystem.cpp
+++ b/src/crepe/system/InputSystem.cpp
@@ -10,10 +10,8 @@ using namespace crepe;
void InputSystem::update() {
ComponentManager & mgr = this->mediator.component_manager;
-
SDLContext & context = this->mediator.sdl_context;
std::vector<EventData> event_list = context.get_events();
- RefVector<Button> buttons = mgr.get_components_by_type<Button>();
RefVector<Camera> cameras = mgr.get_components_by_type<Camera>();
OptionalRef<Camera> curr_cam_ref;
@@ -160,12 +158,8 @@ void InputSystem::handle_move(const EventData & event_data, const vec2 & mouse_p
for (Button & button : buttons) {
if (!button.active) continue;
- RefVector<Transform> transform_vec
- = mgr.get_components_by_id<Transform>(button.game_object_id);
- Transform & transform = transform_vec.front().get();
- RefVector<Metadata> metadata_vec
- = mgr.get_components_by_id<Metadata>(button.game_object_id);
- Metadata & metadata = metadata_vec.front().get();
+ Metadata & metadata = mgr.get_components_by_id<Metadata>(button.game_object_id).front();
+ Transform & transform = mgr.get_components_by_id<Transform>(button.game_object_id).front();
bool was_hovering = button.hover;
if (this->is_mouse_inside_button(mouse_pos, button, transform)) {
button.hover = true;
@@ -188,12 +182,8 @@ void InputSystem::handle_click(const MouseButton & mouse_button, const vec2 & mo
for (Button & button : buttons) {
if (!button.active) continue;
- RefVector<Metadata> metadata_vec
- = mgr.get_components_by_id<Metadata>(button.game_object_id);
- Metadata & metadata = metadata_vec.front().get();
- RefVector<Transform> transform_vec
- = mgr.get_components_by_id<Transform>(button.game_object_id);
- Transform & transform = transform_vec.front().get();
+ Metadata & metadata = mgr.get_components_by_id<Metadata>(button.game_object_id).front();
+ Transform & transform = mgr.get_components_by_id<Transform>(button.game_object_id).front();
if (this->is_mouse_inside_button(mouse_pos, button, transform)) {
event_mgr.trigger_event<ButtonPressEvent>(metadata);
diff --git a/src/crepe/system/InputSystem.h b/src/crepe/system/InputSystem.h
index 45c593a..e580d8e 100644
--- a/src/crepe/system/InputSystem.h
+++ b/src/crepe/system/InputSystem.h
@@ -19,31 +19,31 @@ class Transform;
class ButtonPressEvent : public Event {
public:
//! Metadata of the button.
- const Metadata & meta_data;
+ const Metadata & metadata;
/**
- * \param meta_data Metadata of the button pressed
+ * \param metadata Metadata of the button pressed
*/
- ButtonPressEvent(const Metadata & meta_data) : meta_data(meta_data){};
+ ButtonPressEvent(const Metadata & metadata) : metadata(metadata){};
};
//! Event triggered when the mouse enters a button
class ButtonEnterEvent : public Event {
public:
//! Metadata of the button.
- const Metadata & meta_data;
+ const Metadata & metadata;
/**
- * \param meta_data Metadata of the button pressed
+ * \param metadata Metadata of the button pressed
*/
- ButtonEnterEvent(const Metadata & meta_data) : meta_data(meta_data){};
+ ButtonEnterEvent(const Metadata & metadata) : metadata(metadata){};
};
//! Event triggered when the mouse leaves a button
class ButtonExitEvent : public Event {
public:
//! Metadata of the button.
- const Metadata & meta_data;
+ const Metadata & metadata;
/**
- * \param meta_data Metadata of the button pressed
+ * \param metadata Metadata of the button pressed
*/
- ButtonExitEvent(const Metadata & meta_data) : meta_data(meta_data){};
+ ButtonExitEvent(const Metadata & metadata) : metadata(metadata){};
};
/**
diff --git a/src/test/InputTest.cpp b/src/test/InputTest.cpp
index 097667a..ce8ea44 100644
--- a/src/test/InputTest.cpp
+++ b/src/test/InputTest.cpp
@@ -215,7 +215,7 @@ TEST_F(InputTest, testButtonClick) {
bool button_clicked = false;
event_manager.subscribe<ButtonPressEvent>([&](const ButtonPressEvent & event) {
button_clicked = true;
- EXPECT_EQ(event.meta_data.game_object_id, button_obj.id);
+ EXPECT_EQ(event.metadata.game_object_id, button_obj.id);
return false;
});
auto & button = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0});
@@ -238,12 +238,12 @@ TEST_F(InputTest, testButtonHover) {
bool button_hover = false;
event_manager.subscribe<ButtonEnterEvent>([&](const ButtonEnterEvent & event) {
button_hover = true;
- EXPECT_EQ(event.meta_data.game_object_id, button_obj.id);
+ EXPECT_EQ(event.metadata.game_object_id, button_obj.id);
return false;
});
event_manager.subscribe<ButtonExitEvent>([&](const ButtonExitEvent & event) {
button_hover = false;
- EXPECT_EQ(event.meta_data.game_object_id, button_obj.id);
+ EXPECT_EQ(event.metadata.game_object_id, button_obj.id);
return false;
});
auto & button = button_obj.add_component<Button>(vec2{100, 100}, vec2{0, 0});