From aa540ca331d6c450acc931660febedcb6524ee27 Mon Sep 17 00:00:00 2001 From: Takayama Fumihiko Date: Tue, 9 Jan 2024 23:48:20 +0900 Subject: [PATCH] Fix continued_movement_magnitude_ calculation in game_pad_stick_converter --- .../game_pad_stick_converter.hpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/grabber/include/grabber/device_grabber_details/game_pad_stick_converter.hpp b/src/core/grabber/include/grabber/device_grabber_details/game_pad_stick_converter.hpp index ea3d756ca..88f2187d6 100644 --- a/src/core/grabber/include/grabber/device_grabber_details/game_pad_stick_converter.hpp +++ b/src/core/grabber/include/grabber/device_grabber_details/game_pad_stick_converter.hpp @@ -192,6 +192,7 @@ class game_pad_stick_converter final : public pqrs::dispatcher::extra::dispatche delta_magnitude_history_.erase(std::remove_if(std::begin(delta_magnitude_history_), std::end(delta_magnitude_history_), [now](auto&& e) { + // TODO: Replace hard-coded threshold return pqrs::osx::chrono::make_milliseconds(now - e.get_time()) > std::chrono::milliseconds(100); }), std::end(delta_magnitude_history_)); @@ -202,12 +203,9 @@ class game_pad_stick_converter final : public pqrs::dispatcher::extra::dispatche if (magnitude >= continued_movement_absolute_magnitude_threshold_) { if (continued_movement_magnitude_ == 0.0) { - auto it = std::max_element(std::begin(delta_magnitude_history_), - std::end(delta_magnitude_history_), - [](auto&& a, auto&& b) { - return a.get_delta_magnitude() < b.get_delta_magnitude(); - }); - continued_movement_magnitude_ = it->get_delta_magnitude(); + for (const auto& e : delta_magnitude_history_) { + continued_movement_magnitude_ += e.get_delta_magnitude(); + } } delta_magnitude_ = continued_movement_magnitude_; @@ -443,6 +441,7 @@ class game_pad_stick_converter final : public pqrs::dispatcher::extra::dispatche post_xy_event(); } }, + // TODO: Replace hard-coded interval std::chrono::milliseconds(300)); } } @@ -476,6 +475,7 @@ class game_pad_stick_converter final : public pqrs::dispatcher::extra::dispatche post_wheels_event(); } }, + // TODO: Replace hard-coded interval std::chrono::milliseconds(300)); } }