Polyphase Game Engine
Loading...
Searching...
No Matches
InputMap.h
Go to the documentation of this file.
1#pragma once
2
3#include "InputTypes.h"
4
5#include <stdint.h>
6#include <string>
7#include <vector>
8
10{
11public:
12
13 static void Create();
14 static void Destroy();
15 static InputMap* Get();
16
17 void ResetToDefaults();
18
19 // Button mappings (keyboard key -> gamepad button)
20 void SetButtonMapping(GamepadButtonCode button, int32_t keyCode);
21 int32_t GetButtonMapping(GamepadButtonCode button) const;
22
23 // Axis mappings (keyboard keys -> gamepad axis)
24 void SetAxisMapping(GamepadAxisCode axis, int32_t positiveKey, int32_t negativeKey);
25 void GetAxisMapping(GamepadAxisCode axis, int32_t& positiveKey, int32_t& negativeKey) const;
26
27 // Mouse-to-axis mapping
28 void SetAxisMouseMapping(GamepadAxisCode axis, bool useMouseX, bool useMouseY, float sensitivity);
29 bool GetAxisUsesMouseX(GamepadAxisCode axis) const;
30 bool GetAxisUsesMouseY(GamepadAxisCode axis) const;
32
33 // Mouse/Pointer enable/disable for debugging
34 void SetMouseEnabled(bool enabled);
35 bool IsMouseEnabled() const;
36 void SetPointerEnabled(bool enabled);
37 bool IsPointerEnabled() const;
38
39 // Query: is this gamepad button triggered via a mapped keyboard key?
43
44 // Query: get axis value from mapped keyboard keys and/or mouse
46
47 // Presets (saved globally to user's AppData)
48 bool SavePreset(const std::string& name) const;
49 bool LoadPreset(const std::string& name);
50 bool DeletePreset(const std::string& name);
51 std::vector<std::string> GetPresetNames() const;
52 static std::string GetPresetsDirectory();
53
54 // Display string helpers
55 static const char* GetKeyCodeName(int32_t keyCode);
56 static const char* GetGamepadButtonName(GamepadButtonCode button);
57 static const char* GetGamepadAxisName(GamepadAxisCode axis);
58
59private:
60
61 static InputMap* sInstance;
62
63 InputMap();
64
65 int32_t mButtonMappings[GAMEPAD_BUTTON_COUNT];
66 int32_t mAxisPositiveKeys[GAMEPAD_AXIS_COUNT];
67 int32_t mAxisNegativeKeys[GAMEPAD_AXIS_COUNT];
68 bool mAxisUseMouseX[GAMEPAD_AXIS_COUNT];
69 bool mAxisUseMouseY[GAMEPAD_AXIS_COUNT];
70 float mAxisMouseSensitivity[GAMEPAD_AXIS_COUNT];
71 bool mMouseEnabled = true;
72 bool mPointerEnabled = true;
73};
GamepadButtonCode
Definition InputTypes.h:45
@ GAMEPAD_BUTTON_COUNT
Definition InputTypes.h:74
GamepadAxisCode
Definition InputTypes.h:78
@ GAMEPAD_AXIS_COUNT
Definition InputTypes.h:86
Definition InputMap.h:10
bool GetAxisUsesMouseY(GamepadAxisCode axis) const
Definition InputMap.cpp:180
bool IsButtonDownViaKeyboard(GamepadButtonCode button) const
Definition InputMap.cpp:203
bool LoadPreset(const std::string &name)
Definition InputMap.cpp:543
void GetAxisMapping(GamepadAxisCode axis, int32_t &positiveKey, int32_t &negativeKey) const
Definition InputMap.cpp:147
bool IsButtonJustUpViaKeyboard(GamepadButtonCode button) const
Definition InputMap.cpp:229
bool IsButtonJustDownViaKeyboard(GamepadButtonCode button) const
Definition InputMap.cpp:216
bool GetAxisUsesMouseX(GamepadAxisCode axis) const
Definition InputMap.cpp:173
static const char * GetKeyCodeName(int32_t keyCode)
Definition InputMap.cpp:285
static void Destroy()
Definition InputMap.cpp:40
float GetAxisValueFromMapping(GamepadAxisCode axis) const
Definition InputMap.cpp:242
static InputMap * Get()
Definition InputMap.cpp:49
static std::string GetPresetsDirectory()
Definition InputMap.cpp:429
void SetPointerEnabled(bool enabled)
Definition InputMap.cpp:198
bool DeletePreset(const std::string &name)
Definition InputMap.cpp:611
void SetButtonMapping(GamepadButtonCode button, int32_t keyCode)
Definition InputMap.cpp:119
static const char * GetGamepadButtonName(GamepadButtonCode button)
Definition InputMap.cpp:378
bool IsMouseEnabled() const
Definition InputMap.cpp:197
bool IsPointerEnabled() const
Definition InputMap.cpp:199
std::vector< std::string > GetPresetNames() const
Definition InputMap.cpp:617
void ResetToDefaults()
Definition InputMap.cpp:59
int32_t GetButtonMapping(GamepadButtonCode button) const
Definition InputMap.cpp:127
void SetAxisMouseMapping(GamepadAxisCode axis, bool useMouseX, bool useMouseY, float sensitivity)
Definition InputMap.cpp:163
void SetAxisMapping(GamepadAxisCode axis, int32_t positiveKey, int32_t negativeKey)
Definition InputMap.cpp:138
void SetMouseEnabled(bool enabled)
Definition InputMap.cpp:196
float GetAxisMouseSensitivity(GamepadAxisCode axis) const
Definition InputMap.cpp:187
bool SavePreset(const std::string &name) const
Definition InputMap.cpp:488
static const char * GetGamepadAxisName(GamepadAxisCode axis)
Definition InputMap.cpp:413
static void Create()
Definition InputMap.cpp:34