in src/input/xbox-gamepad.ts [22:61]
constructor(public pad: Gamepad) {
const left = new DirectionalDebouncer(() => {
/* left joystick */
return (
this.pad.axes[0] < -XboxGamepadWrapper.joystickThreshold ||
this.pad.buttons[Button.Left].pressed
);
});
const right = new DirectionalDebouncer(() => {
/* right joystick */
return (
this.pad.axes[0] > XboxGamepadWrapper.joystickThreshold ||
this.pad.buttons[Button.Right].pressed
);
});
const up = new DirectionalDebouncer(() => {
/* up joystick */
return (
this.pad.axes[1] < -XboxGamepadWrapper.joystickThreshold ||
this.pad.buttons[Button.Up].pressed
);
});
const down = new DirectionalDebouncer(() => {
/* down joystick */
return (
this.pad.axes[1] > XboxGamepadWrapper.joystickThreshold ||
this.pad.buttons[Button.Down].pressed
);
});
this.events.set(Button.Left, now => left.attempt(now));
this.events.set(Button.Right, now => right.attempt(now));
this.events.set(Button.Up, now => up.attempt(now));
this.events.set(Button.Down, now => down.attempt(now));
for (const button of nonDirectionalButtons) {
const debouncer = new FiredDebouncer(() => this.pad.buttons[button].pressed);
this.events.set(button, () => debouncer.attempt());
}
}