Unravel Engine C++ Reference
Loading...
Searching...
No Matches
os_input_manager.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "../action_map.hpp"
5#include "os_gamepad.hpp"
6#include "os_keyboard.hpp"
7#include "os_mouse.hpp"
8
9#include <ospp/event.h>
10#include <hpp/optional.hpp>
11
12struct GLFWwindow;
13
14namespace input
15{
16struct zone
17{
18 int x{};
19 int y{};
20
21 int w{};
22 int h{};
23};
24
26{
27 float w{};
28 float h{};
29};
30
32{
33 os_keyboard* keyboard_{};
34 os_mouse* mouse_{};
35 std::map<uint32_t, os_gamepad*> gamepads_{};
36
37 std::vector<std::shared_ptr<input_device>> devices_;
38
39 hpp::optional<zone> window_input_zone_;
40 hpp::optional<zone> work_input_zone_;
41 hpp::optional<input_reference_size> input_reference_size_;
42
43 bool is_input_allowed_{true};
44
45
46public:
47
49 void init();
50
51 auto get_all_devices() const -> const std::vector<std::shared_ptr<input_device>>&;
52 auto get_gamepad(uint32_t index) const -> const gamepad& override;
53 auto get_max_gamepads() const -> uint32_t override;
54
55 auto get_mouse() const -> const mouse& override;
56
57 auto get_keyboard() const -> const keyboard& override;
58
59 void before_events_update() override;
60 void after_events_update() override;
61
62 void on_os_event(const os::event& e);
63
64 void set_window_zone(const zone& window_zone);
65 void set_work_zone(const zone& work_zone);
66 void set_reference_size(const input_reference_size& reference_size);
67
68 auto remap_to_work_zone(coord global_pos) -> coord;
69 auto is_inside_work_zone(coord global_pos) -> bool;
70
71 void set_is_input_allowed(bool allowed);
72 auto is_input_allowed() const -> bool;
73
74};
75
76} // namespace input
auto is_inside_work_zone(coord global_pos) -> bool
void before_events_update() override
auto get_max_gamepads() const -> uint32_t override
auto get_mouse() const -> const mouse &override
void set_work_zone(const zone &work_zone)
void set_is_input_allowed(bool allowed)
auto get_keyboard() const -> const keyboard &override
void set_reference_size(const input_reference_size &reference_size)
void set_window_zone(const zone &window_zone)
auto get_gamepad(uint32_t index) const -> const gamepad &override
void after_events_update() override
auto get_all_devices() const -> const std::vector< std::shared_ptr< input_device > > &
auto is_input_allowed() const -> bool
auto remap_to_work_zone(coord global_pos) -> coord
void on_os_event(const os::event &e)