From d924d14ab040e5f1922fb982e01b13ad716ca108 Mon Sep 17 00:00:00 2001 From: light7734 Date: Mon, 22 Sep 2025 18:51:23 +0330 Subject: [PATCH] refactor(input): adjusted to recent changes --- modules/input/private/system.cpp | 9 +++++++-- modules/input/private/system.test.cpp | 29 ++++++++++++++++++--------- modules/input/public/system.hpp | 9 ++++++++- 3 files changed, 34 insertions(+), 13 deletions(-) diff --git a/modules/input/private/system.cpp b/modules/input/private/system.cpp index 01eec12..829d366 100644 --- a/modules/input/private/system.cpp +++ b/modules/input/private/system.cpp @@ -14,7 +14,7 @@ System::System(Ref registry): m_registry(std::move(registry)) ensure(m_registry, "Failed to initialize input system: null registry"); } -auto System::tick() -> bool +void System::tick(app::TickInfo tick) { for (auto &[entity, surface] : m_registry->view()) { @@ -51,7 +51,12 @@ auto System::tick() -> bool } } - return false; + const auto now = std::chrono::steady_clock::now(); + m_last_tick_result = app::TickResult { + .info = tick, + .duration = now - tick.start_time, + .end_time = now, + }; } void System::on_register() diff --git a/modules/input/private/system.test.cpp b/modules/input/private/system.test.cpp index e16bff1..09d88e1 100644 --- a/modules/input/private/system.test.cpp +++ b/modules/input/private/system.test.cpp @@ -18,6 +18,15 @@ using test::expect_throw; using test::Suite; // NOLINTEND +[[nodiscard]] auto tick_info() -> app::TickInfo +{ + return { + .delta_time = std::chrono::milliseconds { 16 }, + .budget = std::chrono::milliseconds { 10 }, + .start_time = std::chrono::steady_clock::now(), + }; +} + class Fixture { public: @@ -26,7 +35,7 @@ public: return m_registry; } - auto add_input_component() -> ecs::Entity + auto add_input_component() -> ecs::EntityId { auto entity = m_registry->create_entity(); m_registry->add(entity, {}); @@ -34,7 +43,7 @@ public: return entity; } - auto add_surface_component() -> ecs::Entity + auto add_surface_component() -> ecs::EntityId { auto entity = m_registry->create_entity(); m_registry->add( @@ -124,7 +133,7 @@ Suite tick = [] { auto registry = fixture.registry(); auto system = System { fixture.registry() }; - expect_false(system.tick()); + system.tick(tick_info()); }; Case { "Tick triggers input action" } = [] { @@ -146,23 +155,23 @@ Suite tick = [] { ); expect_eq(input.get_action(action_key).state, input::InputAction::State::inactive); - system.tick(); + system.tick(tick_info()); expect_eq(input.get_action(action_key).state, input::InputAction::State::inactive); surface.push_event(surface::KeyPressedEvent(69)); - system.tick(); + system.tick(tick_info()); expect_eq(input.get_action(action_key).state, input::InputAction::State::triggered); - system.tick(); + system.tick(tick_info()); expect_eq(input.get_action(action_key).state, input::InputAction::State::active); - system.tick(); - system.tick(); - system.tick(); + system.tick(tick_info()); + system.tick(tick_info()); + system.tick(tick_info()); expect_eq(input.get_action(action_key).state, input::InputAction::State::active); surface.push_event(surface::KeyReleasedEvent(69)); - system.tick(); + system.tick(tick_info()); expect_eq(input.get_action(action_key).state, input::InputAction::State::inactive); }; diff --git a/modules/input/public/system.hpp b/modules/input/public/system.hpp index 554a4ec..d0eecf6 100644 --- a/modules/input/public/system.hpp +++ b/modules/input/public/system.hpp @@ -13,12 +13,17 @@ class System: public app::ISystem public: System(Ref registry); - auto tick() -> bool override; + void tick(app::TickInfo tick) override; void on_register() override; void on_unregister() override; + [[nodiscard]] auto get_last_tick_result() const -> const app::TickResult & override + { + return m_last_tick_result; + } + private: void handle_event(const surface::SurfaceComponent::Event &event); @@ -41,6 +46,8 @@ private: std::array m_buttons {}; math::vec2 m_pointer_position; + + app::TickResult m_last_tick_result {}; };