VEX Engine
Retro looking game engine made in vulkan mostly because i wanted to understand it better.
Loading...
Searching...
No Matches
InputComponent.hpp
Go to the documentation of this file.
1
6
7#pragma once
8#define SDL_MAIN_HANDLED
9#include <SDL3/SDL.h>
10#include <functional>
11#include <string>
12#include <unordered_map>
13#include <vector>
14
15namespace vex {
16
18enum class InputActionState {
19 Pressed,
20 Released,
21 Held
22};
23
25enum class MouseAxis {
26 X,
27 Y
28};
29
32 SDL_Scancode scancode;
33 InputActionState state;
34 std::function<void(float)> action;
35};
36
39 MouseAxis axis;
40 std::function<void(float)> action;
41};
42
45 SDL_GamepadButton button;
46 InputActionState state;
47 std::function<void(float)> action;
48};
49
52 SDL_GamepadAxis axis;
53 std::function<void(float)> action;
54};
55
56
59 std::vector<InputBinding> bindings;
60 std::vector<MouseAxisBinding> mouseAxisBindings;
61 std::vector<GamepadButtonBinding> gamepadButtonBindings;
62 std::vector<GamepadAxisBinding> gamepadAxisBindings;
63
78 void addBinding(SDL_Scancode scancode, InputActionState state, std::function<void(float)> action) {
79 bindings.push_back({scancode, state, action});
80 }
81
95 void addMouseAxisBinding(MouseAxis axis, std::function<void(float)> action) {
96 mouseAxisBindings.push_back({axis, action});
97 }
98
113 void addGamepadButtonBinding(SDL_GamepadButton button, InputActionState state, std::function<void(float)> action) {
114 gamepadButtonBindings.push_back({button, state, action});
115 }
116
130 void addGamepadAxisBinding(SDL_GamepadAxis axis, std::function<void(float)> action) {
131 gamepadAxisBindings.push_back({axis, action});
132 }
133
134};
135
136}
MouseAxis
Enum representing the axis of a mouse.
InputActionState
Enum representing the state of an input action.
Struct for Gamepad Axis bindings (Joysticks/Triggers).
Struct for Gamepad Button bindings.
Struct representing an input binding. SDL_Scancode, state and std::function containing the action to ...
Component you add to your GameObject to handle input, eg. add input bindings and mouse axis bindings.
void addGamepadButtonBinding(SDL_GamepadButton button, InputActionState state, std::function< void(float)> action)
Adds gamepad button binding.
void addBinding(SDL_Scancode scancode, InputActionState state, std::function< void(float)> action)
Adds input binding.
void addGamepadAxisBinding(SDL_GamepadAxis axis, std::function< void(float)> action)
Adds gamepad axis binding.
void addMouseAxisBinding(MouseAxis axis, std::function< void(float)> action)
Adds axis binding.
Struct representing an axis binding. Axis and std::function containing the action to be performed.