diff options
author | german77 <juangerman-13@hotmail.com> | 2021-05-29 23:35:46 -0500 |
---|---|---|
committer | german77 <german77@github.com> | 2021-05-30 00:13:51 -0500 |
commit | a323bc5af8b758dfb7baeb90641ad71f0dba9163 (patch) | |
tree | b4a8d5ebf77afe40ad67d200aabc72de0b79b786 /src/core/frontend/input.h | |
parent | e41c8b6780cb8339281d5563c2f5009b64462e06 (diff) |
input_common: Analog button, use time based position instead of frequent updates
Diffstat (limited to 'src/core/frontend/input.h')
-rw-r--r-- | src/core/frontend/input.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/core/frontend/input.h b/src/core/frontend/input.h index 0c5d2b3b0..7a047803e 100644 --- a/src/core/frontend/input.h +++ b/src/core/frontend/input.h @@ -27,6 +27,10 @@ struct AnalogProperties { float range; float threshold; }; +template <typename StatusType> +struct InputCallback { + std::function<void(StatusType)> on_change; +}; /// An abstract class template for an input device (a button, an analog input, etc.). template <typename StatusType> @@ -50,6 +54,17 @@ public: [[maybe_unused]] f32 freq_high) const { return {}; } + void SetCallback(InputCallback<StatusType> callback_) { + callback = std::move(callback_); + } + void TriggerOnChange() { + if (callback.on_change) { + callback.on_change(GetStatus()); + } + } + +private: + InputCallback<StatusType> callback; }; /// An abstract class template for a factory that can create input devices. |