12 LEFT = SDL_BUTTON_LEFT,
13 MIDDLE = SDL_BUTTON_MIDDLE,
14 RIGHT = SDL_BUTTON_RIGHT,
21 std::vector<SDL_Scancode>
keys;
79 TouchPoint(SDL_FingerID
id, glm::vec2 pos,
float press = 1.0f)
90 [[nodiscard]]
bool is_active()
const {
return _active; }
91 [[nodiscard]]
const std::string&
get_text()
const {
return _text; }
96 void set_text(
const std::string& text);
102 bool _active =
false;
104 std::string _composition;
106 int _composition_start = 0;
107 int _composition_length = 0;
130 [[nodiscard]]
bool is_key_held(SDL_Scancode key)
const;
135 [[nodiscard]]
bool are_keys_held(
const std::vector<SDL_Scancode>& keys)
const;
136 [[nodiscard]]
bool any_key_pressed(
const std::vector<SDL_Scancode>& keys)
const;
166 [[nodiscard]] glm::vec2
get_gamepad_stick(
int gamepad_index,
int stick_index)
const;
171 [[nodiscard]]
const std::unordered_map<SDL_FingerID, TouchPoint>&
get_touch_points()
const {
return _touch_points; }
185 [[nodiscard]]
bool is_action_held(
const std::string& action_name)
const;
206 void update_key_states();
207 void update_mouse_states();
208 void update_gamepad_states();
209 void handle_gamepad_connection(
const SDL_Event& event);
210 void handle_gamepad_disconnection(
const SDL_Event& event);
211 InputState calculate_input_state(
bool current,
bool previous)
const;
214 SDL_Window* _window =
nullptr;
215 bool _input_blocked =
false;
216 float _mouse_sensitivity = 1.0f;
219 std::unordered_map<SDL_Scancode, InputState> _key_states;
220 std::unordered_map<SDL_Scancode, bool> _prev_key_states;
221 std::unordered_set<SDL_Scancode> _keys_this_frame;
224 glm::vec2 _mouse_position{0.0f};
225 glm::vec2 _prev_mouse_position{0.0f};
226 glm::vec2 _mouse_delta{0.0f};
227 glm::vec2 _mouse_wheel{0.0f};
228 std::unordered_map<MouseButton, InputState> _mouse_button_states;
229 std::unordered_map<MouseButton, bool> _prev_mouse_button_states;
232 std::unordered_map<int, std::unique_ptr<GamepadInfo>> _gamepads;
233 int _next_gamepad_index = 0;
236 std::unordered_map<SDL_FingerID, TouchPoint> _touch_points;
242 std::unordered_map<std::string, InputAction> _input_actions;
Definition: input_manager.h:83
void insert_text(const std::string &text)
Definition: input_manager.cpp:107
int get_cursor_position() const
Definition: input_manager.h:93
void set_text(const std::string &text)
Definition: input_manager.cpp:102
void clear_text()
Definition: input_manager.cpp:96
void move_cursor(int offset)
Definition: input_manager.cpp:119
void process_event(const SDL_Event &event)
Definition: input_manager.cpp:54
bool is_active() const
Definition: input_manager.h:90
void stop_input(SDL_Window *window)
Definition: input_manager.cpp:47
const std::string & get_text() const
Definition: input_manager.h:91
const std::string & get_composition() const
Definition: input_manager.h:92
void delete_char_at_cursor()
Definition: input_manager.cpp:112
void start_input(SDL_Window *window)
Definition: input_manager.cpp:40
Definition: input_manager.h:45
float get_axis_value(int axis) const
Definition: input_manager.cpp:18
float deadzone
Definition: input_manager.h:60
std::unordered_map< int, InputState > button_states
Definition: input_manager.h:53
std::string name
Definition: input_manager.h:49
~GamepadInfo()
Definition: input_manager.cpp:7
SDL_Gamepad * controller
Definition: input_manager.h:47
bool is_controller
Definition: input_manager.h:50
SDL_JoystickID instance_id
Definition: input_manager.h:48
std::vector< float > axis_values
Definition: input_manager.h:57
SDL_Joystick * joystick
Definition: input_manager.h:46
std::unordered_map< int, bool > prev_button_states
Definition: input_manager.h:54
bool is_connected() const
Definition: input_manager.h:65
glm::vec2 get_stick_value(int stick_index) const
Definition: input_manager.cpp:27
Float rectangle struct.
Definition: engine_structs.h:33
Definition: input_manager.h:70
glm::vec2 position
Definition: input_manager.h:73
glm::vec2 pressure
Definition: input_manager.h:74
TouchPoint(SDL_FingerID id, glm::vec2 pos, float press=1.0f)
Definition: input_manager.h:79
float start_time
Definition: input_manager.h:76
bool active
Definition: input_manager.h:72
glm::vec2 start_position
Definition: input_manager.h:75
SDL_FingerID finger_id
Definition: input_manager.h:71