-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathInputTracker.h
109 lines (90 loc) · 2.77 KB
/
InputTracker.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#pragma once
#include <vector>
#include <GLFW/glfw3.h>
#include <iostream>
// this class uses GLFW to record input, and then stores it. This happens ever game-logic update via the perFrameUpdate function
// this class acts as an interface to monitor input data
class InputTracker {
public:
const int numberStartIndex = 1;
const int letterStartIndex = 1 + (NINE - ZERO + 1);
const int arrowStartIndex = 1 + (NINE - ZERO + 1) + (Z - A + 1);
enum Key {
// Space key
SPACE = GLFW_KEY_SPACE, //returns 32
// All number keys
ZERO = GLFW_KEY_0, //returns 48
ONE = GLFW_KEY_1,
TWO = GLFW_KEY_2,
THREE = GLFW_KEY_3,
FOUR = GLFW_KEY_4,
FIVE = GLFW_KEY_5,
SIX = GLFW_KEY_6,
SEVEN = GLFW_KEY_7,
EIGHT = GLFW_KEY_8,
NINE = GLFW_KEY_9, //returns 57
// All letter keys
A = GLFW_KEY_A, //returns 65
B = GLFW_KEY_B,
C = GLFW_KEY_C,
D = GLFW_KEY_D,
E = GLFW_KEY_E,
F = GLFW_KEY_F,
G = GLFW_KEY_G,
H = GLFW_KEY_H,
I = GLFW_KEY_I,
J = GLFW_KEY_J,
K = GLFW_KEY_K,
L = GLFW_KEY_L,
M = GLFW_KEY_M,
N = GLFW_KEY_N,
O = GLFW_KEY_O,
P = GLFW_KEY_P,
Q = GLFW_KEY_Q,
R = GLFW_KEY_R,
S = GLFW_KEY_S,
T = GLFW_KEY_T,
U = GLFW_KEY_U,
V = GLFW_KEY_V,
W = GLFW_KEY_W,
X = GLFW_KEY_X,
Y = GLFW_KEY_Y,
Z = GLFW_KEY_Z, //returns 90
// Arrow keys
ARROW_RIGHT = GLFW_KEY_RIGHT, //returns 262
ARROW_LEFT = GLFW_KEY_LEFT,
ARROW_DOWN = GLFW_KEY_DOWN,
ARROW_UP = GLFW_KEY_UP, //returns 265
// Total number of keys
NUM_KEYS = 1 + (NINE - ZERO + 1 ) + (Z - A + 1) + (ARROW_UP - ARROW_RIGHT + 1)
};
enum Mouse {
MouseLeft = GLFW_MOUSE_BUTTON_1,
MouseMiddle = GLFW_MOUSE_BUTTON_2,
MouseRight = GLFW_MOUSE_BUTTON_3,
ScrollUp = GLFW_MOUSE_BUTTON_4,
ScrollDown = GLFW_MOUSE_BUTTON_5,
// Total number of buttons
NUM_MOUSE_BUTTONS = (ScrollDown - MouseLeft + 1)
};
enum ButtonState {
RELEASED,
JUST_RELEASED,
DOWN,
JUST_DOWN
};
bool isKeyDown(Key aKey);
bool isKeyJustDown(Key aKey);
bool isKeyReleased(Key aKey);
bool isKeyJustReleased(Key aKey);
bool isMouseDown(Mouse aMouseButton);
bool isMouseJustDown(Mouse aMouseButton);
bool isMouseReleased(Mouse aMouseButton);
bool isMouseJustReleased(Mouse aMouseButton);
void perFrameUpdate(GLFWwindow* window);
static InputTracker& getInstance();
private:
ButtonState mKeyState[NUM_KEYS] = { };
ButtonState mMouseState[NUM_MOUSE_BUTTONS] = { };
InputTracker();
};