GlistEngine
Loading...
Searching...
No Matches
gInputPlayer.h
Go to the documentation of this file.
1/*
2 * gInputPlayer.h
3 *
4 * Created on: Feb 9, 2026
5 * Author: Metehan Gezer
6 */
7
8#ifndef ENGINE_CORE_GINPUTPLAYER_H_
9#define ENGINE_CORE_GINPUTPLAYER_H_
10
11#include <map>
12#include <vector>
13#include <string>
14
15class gInputManager;
16
43public:
44 struct AxisBinding {
47 };
48
50 int axisid;
52 };
53
58
59 gInputPlayer(gInputManager* manager, int playerindex);
61
62 int getPlayerIndex() const;
63
64 // Device assignment
65
70 void setKeyboardMouseAssigned(bool assigned);
72
76 void setGamepadId(int id);
77 int getGamepadId() const;
78 bool hasGamepad() const;
79
80 // Deadzone
81
86 void setDeadzone(float dz);
87 float getDeadzone() const;
88
89 // Keyboard action bindings
90
91 void addActionBinding(const std::string& action, int keyCode);
92 void removeActionBinding(const std::string& action, int keyCode);
93 void clearActionBindings(const std::string& action);
94 void rebindAction(const std::string& action, int keyCode);
95
96 // Gamepad button action bindings
97
98 void addGamepadActionBinding(const std::string& action, int buttonId);
99 void removeGamepadActionBinding(const std::string& action, int buttonId);
100 void clearGamepadActionBindings(const std::string& action);
101
102 // Keyboard axis bindings (neg/pos key pairs)
103
104 void addAxisBinding(const std::string& axis, int negativeKey, int positiveKey);
105 void removeAxisBinding(const std::string& axis, int negativeKey, int positiveKey);
106 void clearAxisBindings(const std::string& axis);
107 void rebindAxis(const std::string& axis, int negativeKey, int positiveKey);
108
109 // Gamepad analog axis bindings
110
115 void addGamepadAxisBinding(const std::string& axis, int gamepadAxisId, bool inverted = false);
116 void removeGamepadAxisBinding(const std::string& axis, int gamepadAxisId);
117 void clearGamepadAxisBindings(const std::string& axis);
118
119 // Gamepad button axis bindings (d-pad as axis)
120
121 void addGamepadButtonAxisBinding(const std::string& axis, int negativeButtonId, int positiveButtonId);
122 void removeGamepadButtonAxisBinding(const std::string& axis, int negativeButtonId, int positiveButtonId);
123 void clearGamepadButtonAxisBindings(const std::string& axis);
124
125 // Unified queries
126
131 bool isActionPressed(const std::string& action) const;
132
136 bool isActionJustPressed(const std::string& action) const;
137
143 float getAxisValue(const std::string& axis) const;
144
148 void getMouseDelta(float& dx, float& dy) const;
149
150 // Binding getters
151
152 const std::vector<int>& getActionBindings(const std::string& action) const;
153 const std::vector<AxisBinding>& getAxisBindings(const std::string& axis) const;
154
155private:
156 gInputManager* inputmanager;
157 int playerindex;
158 bool keyboardmouseassigned;
159 int gamepadid;
160 float deadzone;
161
162 std::map<std::string, std::vector<int>> actionbindings;
163 std::map<std::string, std::vector<int>> gamepadactionbindings;
164 std::map<std::string, std::vector<AxisBinding>> axisbindings;
165 std::map<std::string, std::vector<GamepadAxisBinding>> gamepadaxisbindings;
166 std::map<std::string, std::vector<GamepadButtonAxisBinding>> gamepadbuttonaxisbindings;
167
168 static const std::vector<int> emptybindings;
169 static const std::vector<AxisBinding> emptyaxisbindings;
170
171 float applyDeadzone(float value) const;
172};
173
174#endif /* ENGINE_CORE_GINPUTPLAYER_H_ */
Definition gInputManager.h:42
Definition gInputPlayer.h:42
void addActionBinding(const std::string &action, int keyCode)
void addAxisBinding(const std::string &axis, int negativeKey, int positiveKey)
void clearGamepadActionBindings(const std::string &action)
void addGamepadButtonAxisBinding(const std::string &axis, int negativeButtonId, int positiveButtonId)
bool isActionJustPressed(const std::string &action) const
bool isActionPressed(const std::string &action) const
void removeAxisBinding(const std::string &axis, int negativeKey, int positiveKey)
const std::vector< int > & getActionBindings(const std::string &action) const
void addGamepadActionBinding(const std::string &action, int buttonId)
int getGamepadId() const
void clearAxisBindings(const std::string &axis)
float getDeadzone() const
void setKeyboardMouseAssigned(bool assigned)
bool hasGamepad() const
const std::vector< AxisBinding > & getAxisBindings(const std::string &axis) const
bool isKeyboardMouseAssigned() const
void rebindAction(const std::string &action, int keyCode)
int getPlayerIndex() const
void removeGamepadButtonAxisBinding(const std::string &axis, int negativeButtonId, int positiveButtonId)
void rebindAxis(const std::string &axis, int negativeKey, int positiveKey)
void clearGamepadButtonAxisBindings(const std::string &axis)
float getAxisValue(const std::string &axis) const
void addGamepadAxisBinding(const std::string &axis, int gamepadAxisId, bool inverted=false)
void setDeadzone(float dz)
void clearGamepadAxisBindings(const std::string &axis)
void removeActionBinding(const std::string &action, int keyCode)
void getMouseDelta(float &dx, float &dy) const
void clearActionBindings(const std::string &action)
gInputPlayer(gInputManager *manager, int playerindex)
void removeGamepadActionBinding(const std::string &action, int buttonId)
void setGamepadId(int id)
void removeGamepadAxisBinding(const std::string &axis, int gamepadAxisId)
Definition gInputPlayer.h:44
int negativekey
Definition gInputPlayer.h:45
int positivekey
Definition gInputPlayer.h:46
Definition gInputPlayer.h:49
int axisid
Definition gInputPlayer.h:50
bool inverted
Definition gInputPlayer.h:51
Definition gInputPlayer.h:54
int positivebuttonid
Definition gInputPlayer.h:56
int negativebuttonid
Definition gInputPlayer.h:55