Skip to content

Commit 0dbdbb2

Browse files
committed
Merge branch 'main' into development
2 parents b38540e + ff929d4 commit 0dbdbb2

File tree

7 files changed

+73
-63
lines changed

7 files changed

+73
-63
lines changed

glass/src/lib/native/cpp/Window.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44

55
#include "glass/Window.h"
66

7+
#include <string>
8+
9+
#include <fmt/format.h>
710
#include <imgui.h>
811
#include <imgui_internal.h>
9-
#include <wpi/StringExtras.h>
1012

1113
#include "glass/Context.h"
1214
#include "glass/Storage.h"
@@ -55,15 +57,14 @@ void Window::Display() {
5557
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, m_padding);
5658
}
5759

58-
char label[128];
60+
std::string label;
5961
if (m_name.empty()) {
60-
wpi::format_to_n_c_str(label, sizeof(label), "{}###{}", m_defaultName,
61-
m_id);
62+
label = fmt::format("{}###{}", m_defaultName, m_id);
6263
} else {
63-
wpi::format_to_n_c_str(label, sizeof(label), "{}###{}", m_name, m_id);
64+
label = fmt::format("{}###{}", m_name, m_id);
6465
}
6566

66-
if (Begin(label, &m_visible, m_flags)) {
67+
if (Begin(label.c_str(), &m_visible, m_flags)) {
6768
if (m_renamePopupEnabled || m_view->HasSettings()) {
6869
bool isClicked = (ImGui::IsMouseReleased(ImGuiMouseButton_Right) &&
6970
ImGui::IsItemHovered());

wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandGenericHID.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import edu.wpi.first.wpilibj.GenericHID;
88
import edu.wpi.first.wpilibj.event.EventLoop;
99
import edu.wpi.first.wpilibj2.command.CommandScheduler;
10+
import java.util.HashMap;
11+
import java.util.Map;
1012

1113
/**
1214
* A version of {@link GenericHID} with {@link Trigger} factories for command-based.
@@ -15,6 +17,8 @@
1517
*/
1618
public class CommandGenericHID {
1719
private final GenericHID m_hid;
20+
private final Map<EventLoop, Map<Integer, Trigger>> m_buttonCache = new HashMap<>();
21+
private final Map<EventLoop, Map<Integer, Trigger>> m_povCache = new HashMap<>();
1822

1923
/**
2024
* Construct an instance of a device.
@@ -54,7 +58,9 @@ public Trigger button(int button) {
5458
* @return an event instance representing the button's digital signal attached to the given loop.
5559
*/
5660
public Trigger button(int button, EventLoop loop) {
57-
return new Trigger(loop, () -> m_hid.getRawButton(button));
61+
var cache = m_buttonCache.computeIfAbsent(loop, k -> new HashMap<>());
62+
return cache.computeIfAbsent(button, k ->
63+
new Trigger(loop, () -> m_hid.getRawButton(k)));
5864
}
5965

6066
/**
@@ -85,7 +91,10 @@ public Trigger pov(int angle) {
8591
* @return a Trigger instance based around this angle of a POV on the HID.
8692
*/
8793
public Trigger pov(int pov, int angle, EventLoop loop) {
88-
return new Trigger(loop, () -> m_hid.getPOV(pov) == angle);
94+
var cache = m_povCache.computeIfAbsent(loop, k -> new HashMap<>());
95+
// angle can be -1, so use 3600 instead of 360
96+
return cache.computeIfAbsent(pov * 3600 + angle, k ->
97+
new Trigger(loop, () -> m_hid.getPOV(pov) == angle));
8998
}
9099

91100
/**

wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandJoystick.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public Trigger trigger() {
5555
* given loop.
5656
*/
5757
public Trigger trigger(EventLoop loop) {
58-
return m_hid.trigger(loop).castTo(Trigger::new);
58+
return button(Joystick.ButtonType.kTrigger.value, loop);
5959
}
6060

6161
/**
@@ -77,7 +77,7 @@ public Trigger top() {
7777
* loop.
7878
*/
7979
public Trigger top(EventLoop loop) {
80-
return m_hid.top(loop).castTo(Trigger::new);
80+
return button(Joystick.ButtonType.kTop.value, loop);
8181
}
8282

8383
/**

wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandPS4Controller.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public Trigger L2() {
5555
* loop.
5656
*/
5757
public Trigger L2(EventLoop loop) {
58-
return m_hid.L2(loop).castTo(Trigger::new);
58+
return button(PS4Controller.Button.kL2.value, loop);
5959
}
6060

6161
/**
@@ -76,7 +76,7 @@ public Trigger R2() {
7676
* loop.
7777
*/
7878
public Trigger R2(EventLoop loop) {
79-
return m_hid.R2(loop).castTo(Trigger::new);
79+
return button(PS4Controller.Button.kR2.value, loop);
8080
}
8181

8282
/**
@@ -97,7 +97,7 @@ public Trigger L1() {
9797
* loop.
9898
*/
9999
public Trigger L1(EventLoop loop) {
100-
return m_hid.L1(loop).castTo(Trigger::new);
100+
return button(PS4Controller.Button.kL1.value, loop);
101101
}
102102

103103
/**
@@ -118,7 +118,7 @@ public Trigger R1() {
118118
* loop.
119119
*/
120120
public Trigger R1(EventLoop loop) {
121-
return m_hid.R1(loop).castTo(Trigger::new);
121+
return button(PS4Controller.Button.kR1.value, loop);
122122
}
123123

124124
/**
@@ -139,7 +139,7 @@ public Trigger L3() {
139139
* loop.
140140
*/
141141
public Trigger L3(EventLoop loop) {
142-
return m_hid.L3(loop).castTo(Trigger::new);
142+
return button(PS4Controller.Button.kL3.value, loop);
143143
}
144144

145145
/**
@@ -160,7 +160,7 @@ public Trigger R3() {
160160
* loop.
161161
*/
162162
public Trigger R3(EventLoop loop) {
163-
return m_hid.R3(loop).castTo(Trigger::new);
163+
return button(PS4Controller.Button.kR3.value, loop);
164164
}
165165

166166
/**
@@ -181,7 +181,7 @@ public Trigger square() {
181181
* loop.
182182
*/
183183
public Trigger square(EventLoop loop) {
184-
return m_hid.square(loop).castTo(Trigger::new);
184+
return button(PS4Controller.Button.kSquare.value, loop);
185185
}
186186

187187
/**
@@ -202,7 +202,7 @@ public Trigger cross() {
202202
* loop.
203203
*/
204204
public Trigger cross(EventLoop loop) {
205-
return m_hid.cross(loop).castTo(Trigger::new);
205+
return button(PS4Controller.Button.kCross.value, loop);
206206
}
207207

208208
/**
@@ -223,7 +223,7 @@ public Trigger triangle() {
223223
* given loop.
224224
*/
225225
public Trigger triangle(EventLoop loop) {
226-
return m_hid.triangle(loop).castTo(Trigger::new);
226+
return button(PS4Controller.Button.kTriangle.value, loop);
227227
}
228228

229229
/**
@@ -244,7 +244,7 @@ public Trigger circle() {
244244
* loop.
245245
*/
246246
public Trigger circle(EventLoop loop) {
247-
return m_hid.circle(loop).castTo(Trigger::new);
247+
return button(PS4Controller.Button.kCircle.value, loop);
248248
}
249249

250250
/**
@@ -265,7 +265,7 @@ public Trigger share() {
265265
* loop.
266266
*/
267267
public Trigger share(EventLoop loop) {
268-
return m_hid.share(loop).castTo(Trigger::new);
268+
return button(PS4Controller.Button.kShare.value, loop);
269269
}
270270

271271
/**
@@ -286,7 +286,7 @@ public Trigger PS() {
286286
* loop.
287287
*/
288288
public Trigger PS(EventLoop loop) {
289-
return m_hid.PS(loop).castTo(Trigger::new);
289+
return button(PS4Controller.Button.kPS.value, loop);
290290
}
291291

292292
/**
@@ -307,7 +307,7 @@ public Trigger options() {
307307
* given loop.
308308
*/
309309
public Trigger options(EventLoop loop) {
310-
return m_hid.options(loop).castTo(Trigger::new);
310+
return button(PS4Controller.Button.kOptions.value, loop);
311311
}
312312

313313
/**
@@ -328,7 +328,7 @@ public Trigger touchpad() {
328328
* loop.
329329
*/
330330
public Trigger touchpad(EventLoop loop) {
331-
return m_hid.touchpad(loop).castTo(Trigger::new);
331+
return button(PS4Controller.Button.kTouchpad.value, loop);
332332
}
333333

334334
/**

wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/button/CommandPS5Controller.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public Trigger L2() {
5555
* loop.
5656
*/
5757
public Trigger L2(EventLoop loop) {
58-
return m_hid.L2(loop).castTo(Trigger::new);
58+
return button(PS5Controller.Button.kL2.value, loop);
5959
}
6060

6161
/**
@@ -76,7 +76,7 @@ public Trigger R2() {
7676
* loop.
7777
*/
7878
public Trigger R2(EventLoop loop) {
79-
return m_hid.R2(loop).castTo(Trigger::new);
79+
return button(PS5Controller.Button.kR2.value, loop);
8080
}
8181

8282
/**
@@ -97,7 +97,7 @@ public Trigger L1() {
9797
* loop.
9898
*/
9999
public Trigger L1(EventLoop loop) {
100-
return m_hid.L1(loop).castTo(Trigger::new);
100+
return button(PS5Controller.Button.kL1.value, loop);
101101
}
102102

103103
/**
@@ -118,7 +118,7 @@ public Trigger R1() {
118118
* loop.
119119
*/
120120
public Trigger R1(EventLoop loop) {
121-
return m_hid.R1(loop).castTo(Trigger::new);
121+
return button(PS5Controller.Button.kR1.value, loop);
122122
}
123123

124124
/**
@@ -139,7 +139,7 @@ public Trigger L3() {
139139
* loop.
140140
*/
141141
public Trigger L3(EventLoop loop) {
142-
return m_hid.L3(loop).castTo(Trigger::new);
142+
return button(PS5Controller.Button.kL3.value, loop);
143143
}
144144

145145
/**
@@ -160,7 +160,7 @@ public Trigger R3() {
160160
* loop.
161161
*/
162162
public Trigger R3(EventLoop loop) {
163-
return m_hid.R3(loop).castTo(Trigger::new);
163+
return button(PS5Controller.Button.kR3.value, loop);
164164
}
165165

166166
/**
@@ -181,7 +181,7 @@ public Trigger square() {
181181
* loop.
182182
*/
183183
public Trigger square(EventLoop loop) {
184-
return m_hid.square(loop).castTo(Trigger::new);
184+
return button(PS5Controller.Button.kSquare.value, loop);
185185
}
186186

187187
/**
@@ -202,7 +202,7 @@ public Trigger cross() {
202202
* loop.
203203
*/
204204
public Trigger cross(EventLoop loop) {
205-
return m_hid.cross(loop).castTo(Trigger::new);
205+
return button(PS5Controller.Button.kCross.value, loop);
206206
}
207207

208208
/**
@@ -223,7 +223,7 @@ public Trigger triangle() {
223223
* given loop.
224224
*/
225225
public Trigger triangle(EventLoop loop) {
226-
return m_hid.triangle(loop).castTo(Trigger::new);
226+
return button(PS5Controller.Button.kTriangle.value, loop);
227227
}
228228

229229
/**
@@ -244,7 +244,7 @@ public Trigger circle() {
244244
* loop.
245245
*/
246246
public Trigger circle(EventLoop loop) {
247-
return m_hid.circle(loop).castTo(Trigger::new);
247+
return button(PS5Controller.Button.kCircle.value, loop);
248248
}
249249

250250
/**
@@ -265,7 +265,7 @@ public Trigger create() {
265265
* loop.
266266
*/
267267
public Trigger create(EventLoop loop) {
268-
return m_hid.create(loop).castTo(Trigger::new);
268+
return button(PS5Controller.Button.kCreate.value, loop);
269269
}
270270

271271
/**
@@ -286,7 +286,7 @@ public Trigger PS() {
286286
* loop.
287287
*/
288288
public Trigger PS(EventLoop loop) {
289-
return m_hid.PS(loop).castTo(Trigger::new);
289+
return button(PS5Controller.Button.kPS.value, loop);
290290
}
291291

292292
/**
@@ -307,7 +307,7 @@ public Trigger options() {
307307
* given loop.
308308
*/
309309
public Trigger options(EventLoop loop) {
310-
return m_hid.options(loop).castTo(Trigger::new);
310+
return button(PS5Controller.Button.kOptions.value, loop);
311311
}
312312

313313
/**
@@ -328,7 +328,7 @@ public Trigger touchpad() {
328328
* loop.
329329
*/
330330
public Trigger touchpad(EventLoop loop) {
331-
return m_hid.touchpad(loop).castTo(Trigger::new);
331+
return button(PS5Controller.Button.kTouchpad.value, loop);
332332
}
333333

334334
/**

0 commit comments

Comments
 (0)