le2d v0.4.7
2D game engine framework
 
Loading...
Searching...
No Matches
router.hpp
Go to the documentation of this file.
1#pragma once
4#include <optional>
5
6namespace le::input {
8class Router {
9 public:
13 void push_mapping(gsl::not_null<IMapping*> mapping);
14
17
19 void remove_mapping(gsl::not_null<IMapping const*> mapping);
20
22 void clear_stack() { m_mappings.clear(); }
24 [[nodiscard]] auto is_stack_empty() const -> bool { return m_mappings.empty(); }
25
28 void dispatch(std::span<le::Event const> events);
29
31 void disengage();
32
34 [[nodiscard]] auto last_used_device() const -> std::optional<Device> { return m_last_used_device; }
35
36 [[nodiscard]] auto gamepad_manager() const -> Gamepad::Manager const& { return m_gamepad_manager; }
37
40
41 private:
42 template <typename F>
43 void do_dispatch(F func);
44
45 std::vector<gsl::not_null<IMapping*>> m_mappings{};
46
47 Gamepad::Manager m_gamepad_manager{};
48 std::optional<Device> m_last_used_device{};
49};
50} // namespace le::input
Snapshot of gamepad / game controller state.
Definition gamepad.hpp:14
static constexpr float nonzero_dead_zone_v
Definition gamepad.hpp:17
Stack of mappings, routes events to the topmost one.
Definition router.hpp:8
auto gamepad_manager() const -> Gamepad::Manager const &
Definition router.hpp:36
void disengage()
Disengage the topmost mapping, if any.
auto last_used_device() const -> std::optional< Device >
Definition router.hpp:34
void clear_stack()
Clear all mappings.
Definition router.hpp:22
void push_mapping(gsl::not_null< IMapping * > mapping)
Push a mapping to the top.
void pop_mapping()
Pop the topmost mapping, if any.
void remove_mapping(gsl::not_null< IMapping const * > mapping)
Remove a particular mapping, if mapped.
void dispatch(std::span< le::Event const > events)
Dispatch events to the topmost mapping, if any.
float nonzero_dead_zone
Dead zone for setting first/last used Gamepad.
Definition router.hpp:39
auto is_stack_empty() const -> bool
Definition router.hpp:24
Definition action.hpp:4
Device
Input Device enumeration.
Definition device.hpp:6