-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInput.cpp
More file actions
107 lines (72 loc) · 2.29 KB
/
Copy pathInput.cpp
File metadata and controls
107 lines (72 loc) · 2.29 KB
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
#include "Input.h"
Input::Input(){
}
void Input::Map() {
}
void Input::Update() {
b = { 0 };
XINPUT_STATE state;
ZeroMemory(&state, sizeof(XINPUT_STATE));
DWORD dwResult = XInputGetState(0, &state);
if (dwResult != ERROR_SUCCESS) {
isConnected = 0;
Reset();
return;
} // Return if not connected
isConnected = true;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_LEFT) b.left = 1;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_RIGHT)b.right = 1;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_UP) b.up = 1;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_DPAD_DOWN)b.down = 1;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_A) {
b.a = 1;
}
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_B)b.b = 1;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_X)b.x = 1;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_Y)b.y = 1;
if (state.Gamepad.wButtons & XINPUT_GAMEPAD_START)b.start = 1; else b.start = 0;
if (state.Gamepad.bLeftTrigger > XINPUT_GAMEPAD_TRIGGER_THRESHOLD) {
b.leftTriggerFloat = state.Gamepad.bLeftTrigger / 255.0f;
b.leftTrigger = 1;
}
if (state.Gamepad.bRightTrigger > XINPUT_GAMEPAD_TRIGGER_THRESHOLD) {
b.rightTriggerFloat = state.Gamepad.bRightTrigger / 255.0f;
b.rightTrigger = 1;
}
short leftDead = 5000;
// Left Stick
// Left X
if (abs(state.Gamepad.sThumbLX) >= leftDead) {
b.leftStickFloatX = (float)state.Gamepad.sThumbLX / (float)32767;
if (b.leftStickFloatX > 0)b.leftStickIntX = 1;
else b.leftStickIntX = -1;
}
// Left Y
if (abs(state.Gamepad.sThumbLY) >= leftDead) {
b.leftStickFloatY = (float)state.Gamepad.sThumbLY / (float)32767;
if (b.leftStickFloatY > 0)b.leftStickIntY = 1;
else b.leftStickIntY = -1;
}
// Right Stick
// Right X
if (abs(state.Gamepad.sThumbRX) >= leftDead) {
b.rightStickFloatX = (float)state.Gamepad.sThumbRX / (float)32767;
if (b.rightStickFloatX > 0)b.rightStickIntX = 1;
else b.rightStickIntX = -1;
}
// Right Y
if (abs(state.Gamepad.sThumbRY) >= leftDead) {
b.rightStickFloatY = (float)state.Gamepad.sThumbRY / (float)32767;
if (b.rightStickFloatY > 0)b.rightStickIntY = 1;
else b.rightStickIntY = -1;
}
/*
if (b.a && prev_b.a) bs_A = held_;
else if (b.a && !prev_b.a) bs_A = down_;
else if (!b.a && prev_b.a) bs_A = released_;
else bs_A = up_;
prev_b = b;
*/
}
void Input::Reset() {
}