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 // Keyboard -> gamepad emulation (button + axis key mappings) on/off
34 void SetKeyboardEmulationEnabled(bool enabled);
35 bool IsKeyboardEmulationEnabled() const;
36
37 // Mouse/Pointer enable/disable for debugging
38 void SetMouseEnabled(bool enabled);
39 bool IsMouseEnabled() const;
40 void SetPointerEnabled(bool enabled);
41 bool IsPointerEnabled() const;
42
43 // Query: is this gamepad button triggered via a mapped keyboard key?
47
48 // Query: get axis value from mapped keyboard keys and/or mouse
50
51 // Presets (saved globally to user's AppData)
52 bool SavePreset(const std::string& name) const;
53 bool LoadPreset(const std::string& name);
54 bool DeletePreset(const std::string& name);
55 std::vector<std::string> GetPresetNames() const;
56 static std::string GetPresetsDirectory();
57
58 // Display string helpers
59 static const char* GetKeyCodeName(int32_t keyCode);
60 static const char* GetGamepadButtonName(GamepadButtonCode button);
61 static const char* GetGamepadAxisName(GamepadAxisCode axis);
62
63private:
64
65 static InputMap* sInstance;
66
67 InputMap();
68
69 int32_t mButtonMappings[GAMEPAD_BUTTON_COUNT];
70 int32_t mAxisPositiveKeys[GAMEPAD_AXIS_COUNT];
71 int32_t mAxisNegativeKeys[GAMEPAD_AXIS_COUNT];
72 bool mAxisUseMouseX[GAMEPAD_AXIS_COUNT];
73 bool mAxisUseMouseY[GAMEPAD_AXIS_COUNT];
74 float mAxisMouseSensitivity[GAMEPAD_AXIS_COUNT];
75 bool mKeyboardEmulationEnabled = true;
76 bool mMouseEnabled = true;
77 bool mPointerEnabled = true;
78};
GamepadButtonCode
Definition InputTypes.h:50
@ GAMEPAD_BUTTON_COUNT
Definition InputTypes.h:79
GamepadAxisCode
Definition InputTypes.h:83
@ GAMEPAD_AXIS_COUNT
Definition InputTypes.h:91
Definition InputMap.h:10
bool GetAxisUsesMouseY(GamepadAxisCode axis) const
Definition InputMap.cpp:183
bool IsButtonDownViaKeyboard(GamepadButtonCode button) const
Definition InputMap.cpp:208
bool LoadPreset(const std::string &name)
Definition InputMap.cpp:566
void GetAxisMapping(GamepadAxisCode axis, int32_t &positiveKey, int32_t &negativeKey) const
Definition InputMap.cpp:150
bool IsButtonJustUpViaKeyboard(GamepadButtonCode button) const
Definition InputMap.cpp:234
bool IsButtonJustDownViaKeyboard(GamepadButtonCode button) const
Definition InputMap.cpp:221
bool GetAxisUsesMouseX(GamepadAxisCode axis) const
Definition InputMap.cpp:176
static const char * GetKeyCodeName(int32_t keyCode)
Definition InputMap.cpp:293
static void Destroy()
Definition InputMap.cpp:40
float GetAxisValueFromMapping(GamepadAxisCode axis) const
Definition InputMap.cpp:247
static InputMap * Get()
Definition InputMap.cpp:49
static std::string GetPresetsDirectory()
Definition InputMap.cpp:437
void SetPointerEnabled(bool enabled)
Definition InputMap.cpp:203
bool DeletePreset(const std::string &name)
Definition InputMap.cpp:636
void SetButtonMapping(GamepadButtonCode button, int32_t keyCode)
Definition InputMap.cpp:122
static const char * GetGamepadButtonName(GamepadButtonCode button)
Definition InputMap.cpp:386
bool IsMouseEnabled() const
Definition InputMap.cpp:202
bool IsPointerEnabled() const
Definition InputMap.cpp:204
std::vector< std::string > GetPresetNames() const
Definition InputMap.cpp:642
void ResetToDefaults()
Definition InputMap.cpp:59
int32_t GetButtonMapping(GamepadButtonCode button) const
Definition InputMap.cpp:130
void SetAxisMouseMapping(GamepadAxisCode axis, bool useMouseX, bool useMouseY, float sensitivity)
Definition InputMap.cpp:166
void SetKeyboardEmulationEnabled(bool enabled)
Definition InputMap.cpp:199
void SetAxisMapping(GamepadAxisCode axis, int32_t positiveKey, int32_t negativeKey)
Definition InputMap.cpp:141
bool IsKeyboardEmulationEnabled() const
Definition InputMap.cpp:200
void SetMouseEnabled(bool enabled)
Definition InputMap.cpp:201
float GetAxisMouseSensitivity(GamepadAxisCode axis) const
Definition InputMap.cpp:190
bool SavePreset(const std::string &name) const
Definition InputMap.cpp:510
static const char * GetGamepadAxisName(GamepadAxisCode axis)
Definition InputMap.cpp:421
static void Create()
Definition InputMap.cpp:34