-
Notifications
You must be signed in to change notification settings - Fork 0
/
MoveButton.pde
96 lines (80 loc) · 2.08 KB
/
MoveButton.pde
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
class MoveButton {
boolean isPressed;
//boolean isPressedEvent, isReleasedEvent;
int value, previousValue; // For analog buttons only (triggers)
PVector analog; // For analog sticks (navigation controller only)
// We store multiple catchers for the event in case we need to make
// several queries; the event catcher is set to false after the query
// so we can only use each event catcher once. To do so, we can use
// isPressedEvent(i) where i is the id of the catcher.
boolean[] pressedEvents;
boolean[] releasedEvents;
MoveButton() {
isPressed = false;
pressedEvents = new boolean[64];
releasedEvents = new boolean[64];
value = 0;
analog = new PVector(0,0);
}
void press() {
isPressed = true;
}
void release() {
isPressed = false;
}
void eventPress() {
for(int i=0; i < pressedEvents.length; i++) {
pressedEvents[i] = true; // update all the event catchers
}
}
void eventRelease() {
for(int i=0; i < releasedEvents.length; i++) {
releasedEvents[i] = true; // update all the event catchers
}
}
boolean isPressedEvent() {
if(pressedEvents[0]) {
pressedEvents[0] = false; // Reset the main event catcher
return true;
}
return false;
}
boolean isReleasedEvent() {
if(releasedEvents[0]) {
releasedEvents[0] = false; // Reset the main event catcher
return true;
}
return false;
}
boolean isPressedEvent(int i) {
if(pressedEvents[i]) {
pressedEvents[i] = false; // Reset the selected event catcher
return true;
}
return false;
}
boolean isReleasedEvent(int i) {
if(releasedEvents[i]) {
releasedEvents[i] = false; // Reset the selected event catcher
return true;
}
return false;
}
boolean isPressed() {
return isPressed;
}
void setValue(int _val) {
previousValue = value;
value = _val;
}
int getValue() {
return value;
}
void setAnalog(float _x, float _y) {
analog.x = _x;
analog.y = _y;
}
PVector getAnalog() {
return analog;
}
}