three-gamepad-controls 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/gamepad-input.d.ts +16 -2
- package/dist/gamepad-input.js +8 -3
- package/dist/index.d.ts +2 -2
- package/package.json +1 -1
package/dist/gamepad-input.d.ts
CHANGED
|
@@ -23,6 +23,10 @@ type GamepadInputEventMap = {
|
|
|
23
23
|
gamepad: Gamepad;
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* Dead zone processing mode for two-dimensional stick reads.
|
|
28
|
+
*/
|
|
29
|
+
type GamepadDeadzoneMode = "axial" | "radial";
|
|
26
30
|
/**
|
|
27
31
|
* Configuration for {@link GamepadInput}.
|
|
28
32
|
*/
|
|
@@ -32,6 +36,16 @@ type GamepadInputOptions = {
|
|
|
32
36
|
* @default 0.1
|
|
33
37
|
*/
|
|
34
38
|
deadzone: number;
|
|
39
|
+
/**
|
|
40
|
+
* Default dead zone mode for stick reads.
|
|
41
|
+
* @default "axial"
|
|
42
|
+
*/
|
|
43
|
+
deadzoneMode: GamepadDeadzoneMode;
|
|
44
|
+
/**
|
|
45
|
+
* Whether stick reads rescale values outside the dead zone by default.
|
|
46
|
+
* @default false
|
|
47
|
+
*/
|
|
48
|
+
rescale: boolean;
|
|
35
49
|
/**
|
|
36
50
|
* Browser-assigned gamepad slot to use.
|
|
37
51
|
*
|
|
@@ -63,7 +77,7 @@ type GamepadStickOptions = GamepadAxisOptions & {
|
|
|
63
77
|
* the stick magnitude.
|
|
64
78
|
* @default "axial"
|
|
65
79
|
*/
|
|
66
|
-
deadzoneMode?:
|
|
80
|
+
deadzoneMode?: GamepadDeadzoneMode;
|
|
67
81
|
/**
|
|
68
82
|
* Whether to remap values outside the dead zone to the full output range.
|
|
69
83
|
* @default false
|
|
@@ -211,4 +225,4 @@ declare class GamepadInput extends EventDispatcher<GamepadInputEventMap> {
|
|
|
211
225
|
resetVibration(): Promise<GamepadHapticsResult | null>;
|
|
212
226
|
}
|
|
213
227
|
//#endregion
|
|
214
|
-
export { GamepadAxisOptions, GamepadInput, GamepadInputEventMap, GamepadInputOptions, GamepadStick, GamepadStickOptions };
|
|
228
|
+
export { GamepadAxisOptions, GamepadDeadzoneMode, GamepadInput, GamepadInputEventMap, GamepadInputOptions, GamepadStick, GamepadStickOptions };
|
package/dist/gamepad-input.js
CHANGED
|
@@ -2,7 +2,11 @@ import { isGamepadVibrationSupported, playGamepadVibrationEffect, resetGamepadVi
|
|
|
2
2
|
import { GamepadManager } from "./gamepad-manager.js";
|
|
3
3
|
import { EventDispatcher } from "three";
|
|
4
4
|
//#region src/gamepad-input.ts
|
|
5
|
-
const DEFAULT_GAMEPAD_INPUT_OPTIONS = {
|
|
5
|
+
const DEFAULT_GAMEPAD_INPUT_OPTIONS = {
|
|
6
|
+
deadzone: .1,
|
|
7
|
+
deadzoneMode: "axial",
|
|
8
|
+
rescale: false
|
|
9
|
+
};
|
|
6
10
|
/**
|
|
7
11
|
* Applies a dead zone and remaps the remaining magnitude to `[0, 1]`.
|
|
8
12
|
*
|
|
@@ -281,11 +285,12 @@ var GamepadInput = class extends EventDispatcher {
|
|
|
281
285
|
* @returns Object containing processed `x` and `y` values.
|
|
282
286
|
*/
|
|
283
287
|
stick(xAxis, yAxis, options) {
|
|
284
|
-
const
|
|
288
|
+
const deadzoneMode = options?.deadzoneMode ?? this.#options.deadzoneMode;
|
|
289
|
+
const rescale = options?.rescale ?? this.#options.rescale;
|
|
285
290
|
const threshold = this.#getDeadzone(options);
|
|
286
291
|
const x = this.#gamepad?.axes[xAxis] ?? 0;
|
|
287
292
|
const y = this.#gamepad?.axes[yAxis] ?? 0;
|
|
288
|
-
if (
|
|
293
|
+
if (deadzoneMode === "radial") return applyGamepadRadialDeadzone(x, y, threshold, rescale);
|
|
289
294
|
return {
|
|
290
295
|
x: applyGamepadAxialDeadzone(x, threshold, rescale),
|
|
291
296
|
y: applyGamepadAxialDeadzone(y, threshold, rescale)
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { GAMEPAD_AXIS, GAMEPAD_BUTTON, GamepadAxisKey, GamepadAxisValue, GamepadButtonKey, GamepadButtonValue, MAX_GAMEPAD_INDEX, MIN_GAMEPAD_INDEX } from "./core.js";
|
|
2
|
-
import { GamepadAxisOptions, GamepadInput, GamepadInputEventMap, GamepadInputOptions, GamepadStick, GamepadStickOptions } from "./gamepad-input.js";
|
|
2
|
+
import { GamepadAxisOptions, GamepadDeadzoneMode, GamepadInput, GamepadInputEventMap, GamepadInputOptions, GamepadStick, GamepadStickOptions } from "./gamepad-input.js";
|
|
3
3
|
import { GamepadControls, GamepadControlsEventMap, GamepadControlsOptions } from "./gamepad-controls.js";
|
|
4
4
|
import { GamepadArcballControls, GamepadArcballControlsOptions } from "./gamepad-arcball-controls.js";
|
|
5
5
|
import { GamepadDragControls, GamepadDragControlsOptions } from "./gamepad-drag-controls.js";
|
|
@@ -10,4 +10,4 @@ import { GamepadMapControls } from "./gamepad-map-controls.js";
|
|
|
10
10
|
import { GamepadPointerLockControls, GamepadPointerLockControlsOptions } from "./gamepad-pointer-lock-controls.js";
|
|
11
11
|
import { GamepadTrackballControls, GamepadTrackballControlsOptions } from "./gamepad-trackball-controls.js";
|
|
12
12
|
import { GamepadTransformControls, GamepadTransformControlsOptions } from "./gamepad-transform-controls.js";
|
|
13
|
-
export { GAMEPAD_AXIS, GAMEPAD_BUTTON, GamepadArcballControls, GamepadArcballControlsOptions, GamepadAxisKey, GamepadAxisOptions, GamepadAxisValue, GamepadButtonKey, GamepadButtonValue, GamepadControls, GamepadControlsEventMap, GamepadControlsOptions, GamepadDragControls, GamepadDragControlsOptions, GamepadFirstPersonControls, GamepadFirstPersonControlsOptions, GamepadFlyControls, GamepadFlyControlsOptions, GamepadInput, GamepadInputEventMap, GamepadInputOptions, GamepadMapControls, GamepadOrbitControls, GamepadOrbitControlsOptions, GamepadPointerLockControls, GamepadPointerLockControlsOptions, GamepadStick, GamepadStickOptions, GamepadTrackballControls, GamepadTrackballControlsOptions, GamepadTransformControls, GamepadTransformControlsOptions, MAX_GAMEPAD_INDEX, MIN_GAMEPAD_INDEX };
|
|
13
|
+
export { GAMEPAD_AXIS, GAMEPAD_BUTTON, GamepadArcballControls, GamepadArcballControlsOptions, GamepadAxisKey, GamepadAxisOptions, GamepadAxisValue, GamepadButtonKey, GamepadButtonValue, GamepadControls, GamepadControlsEventMap, GamepadControlsOptions, GamepadDeadzoneMode, GamepadDragControls, GamepadDragControlsOptions, GamepadFirstPersonControls, GamepadFirstPersonControlsOptions, GamepadFlyControls, GamepadFlyControlsOptions, GamepadInput, GamepadInputEventMap, GamepadInputOptions, GamepadMapControls, GamepadOrbitControls, GamepadOrbitControlsOptions, GamepadPointerLockControls, GamepadPointerLockControlsOptions, GamepadStick, GamepadStickOptions, GamepadTrackballControls, GamepadTrackballControlsOptions, GamepadTransformControls, GamepadTransformControlsOptions, MAX_GAMEPAD_INDEX, MIN_GAMEPAD_INDEX };
|
package/package.json
CHANGED