dualsense-ts 2.2.48 → 3.1.3

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.
Files changed (96) hide show
  1. package/README.md +9 -2
  2. package/dist/comparators.d.ts +13 -0
  3. package/dist/comparators.d.ts.map +1 -0
  4. package/dist/comparators.js +27 -0
  5. package/dist/comparators.js.map +1 -0
  6. package/dist/dualsense.d.ts +10 -1
  7. package/dist/dualsense.d.ts.map +1 -1
  8. package/dist/dualsense.js +46 -45
  9. package/dist/dualsense.js.map +1 -1
  10. package/dist/elements/analog.d.ts +12 -7
  11. package/dist/elements/analog.d.ts.map +1 -1
  12. package/dist/elements/analog.js +29 -11
  13. package/dist/elements/analog.js.map +1 -1
  14. package/dist/elements/axis.d.ts +22 -1
  15. package/dist/elements/axis.d.ts.map +1 -1
  16. package/dist/elements/axis.js +24 -4
  17. package/dist/elements/axis.js.map +1 -1
  18. package/dist/elements/dpad.d.ts +1 -1
  19. package/dist/elements/dpad.d.ts.map +1 -1
  20. package/dist/elements/dpad.js +6 -5
  21. package/dist/elements/dpad.js.map +1 -1
  22. package/dist/elements/touch.d.ts +2 -1
  23. package/dist/elements/touch.d.ts.map +1 -1
  24. package/dist/elements/touch.js +1 -0
  25. package/dist/elements/touch.js.map +1 -1
  26. package/dist/elements/touchpad.d.ts +1 -1
  27. package/dist/elements/touchpad.d.ts.map +1 -1
  28. package/dist/elements/touchpad.js.map +1 -1
  29. package/dist/elements/trigger.d.ts.map +1 -1
  30. package/dist/elements/trigger.js +1 -1
  31. package/dist/elements/trigger.js.map +1 -1
  32. package/dist/elements/unisense.d.ts +3 -3
  33. package/dist/elements/unisense.d.ts.map +1 -1
  34. package/dist/elements/unisense.js +13 -5
  35. package/dist/elements/unisense.js.map +1 -1
  36. package/dist/hid/dualsense_hid.d.ts +16 -58
  37. package/dist/hid/dualsense_hid.d.ts.map +1 -1
  38. package/dist/hid/dualsense_hid.js +25 -101
  39. package/dist/hid/dualsense_hid.js.map +1 -1
  40. package/dist/hid/hid_provider.d.ts +86 -0
  41. package/dist/hid/hid_provider.d.ts.map +1 -0
  42. package/dist/hid/hid_provider.js +45 -0
  43. package/dist/hid/hid_provider.js.map +1 -0
  44. package/dist/hid/index.d.ts +4 -1
  45. package/dist/hid/index.d.ts.map +1 -1
  46. package/dist/hid/index.js +4 -1
  47. package/dist/hid/index.js.map +1 -1
  48. package/dist/hid/node_hid_provider.d.ts +11 -0
  49. package/dist/hid/node_hid_provider.d.ts.map +1 -0
  50. package/dist/hid/node_hid_provider.js +97 -0
  51. package/dist/hid/node_hid_provider.js.map +1 -0
  52. package/dist/hid/platform_hid_provider.d.ts +4 -0
  53. package/dist/hid/platform_hid_provider.d.ts.map +1 -0
  54. package/dist/hid/platform_hid_provider.js +7 -0
  55. package/dist/hid/platform_hid_provider.js.map +1 -0
  56. package/dist/hid/web_hid_provider.d.ts +10 -0
  57. package/dist/hid/web_hid_provider.d.ts.map +1 -0
  58. package/dist/hid/web_hid_provider.js +102 -0
  59. package/dist/hid/web_hid_provider.js.map +1 -0
  60. package/dist/{hid/ids.d.ts → id.d.ts} +6 -2
  61. package/dist/id.d.ts.map +1 -0
  62. package/dist/{hid/ids.js → id.js} +1 -1
  63. package/dist/id.js.map +1 -0
  64. package/dist/index.d.ts +2 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +2 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/input.d.ts +63 -45
  69. package/dist/input.d.ts.map +1 -1
  70. package/dist/input.js +123 -90
  71. package/dist/input.js.map +1 -1
  72. package/package.json +14 -8
  73. package/src/comparators.ts +26 -0
  74. package/src/dualsense.ts +61 -58
  75. package/src/elements/analog.spec.ts +2 -15
  76. package/src/elements/analog.ts +41 -22
  77. package/src/elements/axis.ts +35 -3
  78. package/src/elements/dpad.ts +7 -6
  79. package/src/elements/touch.ts +2 -1
  80. package/src/elements/touchpad.ts +1 -1
  81. package/src/elements/trigger.ts +1 -1
  82. package/src/elements/unisense.ts +19 -17
  83. package/src/hid/dualsense_hid.ts +25 -156
  84. package/src/hid/{dualsense_hid.spec.ts → hid_provider.spec.ts} +1 -1
  85. package/src/hid/hid_provider.ts +100 -0
  86. package/src/hid/index.ts +4 -1
  87. package/src/hid/node_hid_provider.ts +108 -0
  88. package/src/hid/platform_hid_provider.ts +4 -0
  89. package/src/hid/web_hid_provider.ts +116 -0
  90. package/src/{hid/ids.ts → id.ts} +6 -1
  91. package/src/index.ts +2 -0
  92. package/src/input.ts +156 -138
  93. package/src/readme.spec.ts +6 -8
  94. package/webpack.config.js +42 -0
  95. package/dist/hid/ids.d.ts.map +0 -1
  96. package/dist/hid/ids.js.map +0 -1
package/README.md CHANGED
@@ -13,6 +13,13 @@ Install it using your preferred package manager:
13
13
  - `yarn add dualsense-ts`
14
14
  - `npm add dualsense-ts`
15
15
 
16
+ ### Platforms
17
+
18
+ `dualsense-ts` is a cross-platform, low dependency library that works in Node.js or natively in your browser.
19
+
20
+ - In Node.js, the only dependency is `node-hid`
21
+ - In the browser, tree-shaking reduces this to a zero-dependency package relying on WebHID
22
+
16
23
  ### Connecting
17
24
 
18
25
  `dualsense-ts` will try to connect to the first Dualsense controller it finds.
@@ -50,7 +57,7 @@ controller.touchpad.right.contact.state; // false
50
57
  +controller.touchpad.right.x; // -0.44, -1 to 1
51
58
  ```
52
59
 
53
- - _Callbacks_: Each input is an EventEmitter that provides `input`, `press`, `release`, and `change` events
60
+ - _Callbacks_: Each input is an EventEmitter, or EventTarget that provides `input`, `press`, `release`, and `change` events
54
61
 
55
62
  ```typescript
56
63
  // Change events are triggered only when an input's value changes
@@ -61,7 +68,7 @@ controller.triangle.on("change", (input) =>
61
68
  // ▲ changed: false
62
69
 
63
70
  // The callback provides two arguments, so you can monitor nested inputs
64
- // You'll get a reference to your original input, and whichever one changed
71
+ // You'll get a reference to your original input, and the one that changed
65
72
  controller.dpad.on("press", (dpad, input) =>
66
73
  assert(dpad === controller.dpad)
67
74
  console.log(`${input} pressed`)
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Input state change checker that always returns true.
3
+ */
4
+ export declare function VirtualComparator(): boolean;
5
+ /**
6
+ * Input state change checker that considers a numeric threshold.
7
+ */
8
+ export declare function ThresholdComparator(threshold: number, state: unknown, newState: unknown): boolean;
9
+ /**
10
+ * Input state change checker for most values.
11
+ */
12
+ export declare function BasicComparator(state: unknown, newState: unknown): boolean;
13
+ //# sourceMappingURL=comparators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparators.d.ts","sourceRoot":"","sources":["../src/comparators.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,OAAO,GAChB,OAAO,CAIT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAE1E"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BasicComparator = exports.ThresholdComparator = exports.VirtualComparator = void 0;
4
+ /**
5
+ * Input state change checker that always returns true.
6
+ */
7
+ function VirtualComparator() {
8
+ return true;
9
+ }
10
+ exports.VirtualComparator = VirtualComparator;
11
+ /**
12
+ * Input state change checker that considers a numeric threshold.
13
+ */
14
+ function ThresholdComparator(threshold, state, newState) {
15
+ if (typeof state !== "number" || typeof newState !== "number")
16
+ throw new Error("Bad threshold comparison");
17
+ return Math.abs(state - newState) > threshold;
18
+ }
19
+ exports.ThresholdComparator = ThresholdComparator;
20
+ /**
21
+ * Input state change checker for most values.
22
+ */
23
+ function BasicComparator(state, newState) {
24
+ return state !== newState;
25
+ }
26
+ exports.BasicComparator = BasicComparator;
27
+ //# sourceMappingURL=comparators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comparators.js","sourceRoot":"","sources":["../src/comparators.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC;AAFD,8CAEC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,SAAiB,EACjB,KAAc,EACd,QAAiB;IAEjB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAC3D,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,SAAS,CAAC;AAChD,CAAC;AARD,kDAQC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAc,EAAE,QAAiB;IAC/D,OAAO,KAAK,KAAK,QAAQ,CAAC;AAC5B,CAAC;AAFD,0CAEC"}
@@ -2,6 +2,9 @@ import { Momentary, Dpad, DpadParams, Mute, Unisense, UnisenseParams, Touchpad }
2
2
  import { Input, InputParams } from "./input";
3
3
  import { DualsenseHID } from "./hid";
4
4
  export interface DualsenseParams extends InputParams {
5
+ /**
6
+ * Sets the source of HID events for the controller interface.
7
+ */
5
8
  hid?: DualsenseHID | null;
6
9
  ps?: InputParams;
7
10
  mute?: InputParams;
@@ -16,6 +19,9 @@ export interface DualsenseParams extends InputParams {
16
19
  right?: UnisenseParams;
17
20
  touchpad?: InputParams;
18
21
  }
22
+ /**
23
+ * Represents a Dualsense controller.
24
+ */
19
25
  export declare class Dualsense extends Input<Dualsense> {
20
26
  readonly state: Dualsense;
21
27
  readonly ps: Momentary;
@@ -30,9 +36,12 @@ export declare class Dualsense extends Input<Dualsense> {
30
36
  readonly left: Unisense;
31
37
  readonly right: Unisense;
32
38
  readonly touchpad: Touchpad;
33
- readonly hid: DualsenseHID | null;
39
+ readonly hid: DualsenseHID;
34
40
  get active(): boolean;
35
41
  constructor(params?: DualsenseParams);
42
+ /**
43
+ * Distributes input values to various elements.
44
+ */
36
45
  private processHID;
37
46
  }
38
47
  //# sourceMappingURL=dualsense.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dualsense.d.ts","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,QAAQ,EACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAY,WAAW,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAAE,YAAY,EAAW,MAAM,OAAO,CAAC;AAE9C,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAG1B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC7C,SAAgB,KAAK,EAAE,SAAS,CAAQ;IAExC,SAAgB,EAAE,EAAE,SAAS,CAAC;IAC9B,SAAgB,IAAI,EAAE,IAAI,CAAC;IAE3B,SAAgB,OAAO,EAAE,SAAS,CAAC;IACnC,SAAgB,MAAM,EAAE,SAAS,CAAC;IAElC,SAAgB,QAAQ,EAAE,SAAS,CAAC;IACpC,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,SAAgB,KAAK,EAAE,SAAS,CAAC;IACjC,SAAgB,MAAM,EAAE,SAAS,CAAC;IAElC,SAAgB,IAAI,EAAE,IAAI,CAAC;IAE3B,SAAgB,IAAI,EAAE,QAAQ,CAAC;IAC/B,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAEhC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC,SAAgB,GAAG,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEhD,IAAW,MAAM,IAAI,OAAO,CAK3B;gBAEW,MAAM,GAAE,eAAoB;IA0ExC,OAAO,CAAC,UAAU;CA+CnB"}
1
+ {"version":3,"file":"dualsense.d.ts","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,cAAc,EACd,QAAQ,EACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAY,WAAW,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EAEL,YAAY,EAGb,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD;;OAEG;IACH,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAE1B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC;IAC7C,SAAgB,KAAK,EAAE,SAAS,CAAQ;IAExC,SAAgB,EAAE,EAAE,SAAS,CAAC;IAC9B,SAAgB,IAAI,EAAE,IAAI,CAAC;IAE3B,SAAgB,OAAO,EAAE,SAAS,CAAC;IACnC,SAAgB,MAAM,EAAE,SAAS,CAAC;IAElC,SAAgB,QAAQ,EAAE,SAAS,CAAC;IACpC,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC,SAAgB,KAAK,EAAE,SAAS,CAAC;IACjC,SAAgB,MAAM,EAAE,SAAS,CAAC;IAElC,SAAgB,IAAI,EAAE,IAAI,CAAC;IAE3B,SAAgB,IAAI,EAAE,QAAQ,CAAC;IAC/B,SAAgB,KAAK,EAAE,QAAQ,CAAC;IAEhC,SAAgB,QAAQ,EAAE,QAAQ,CAAC;IAEnC,SAAgB,GAAG,EAAE,YAAY,CAAC;IAElC,IAAW,MAAM,IAAI,OAAO,CAI3B;gBAEW,MAAM,GAAE,eAAoB;IAwExC;;OAEG;IACH,OAAO,CAAC,UAAU;CAwCnB"}
package/dist/dualsense.js CHANGED
@@ -4,11 +4,13 @@ exports.Dualsense = void 0;
4
4
  const elements_1 = require("./elements");
5
5
  const input_1 = require("./input");
6
6
  const hid_1 = require("./hid");
7
+ /**
8
+ * Represents a Dualsense controller.
9
+ */
7
10
  class Dualsense extends input_1.Input {
8
11
  constructor(params = {}) {
9
12
  super(params);
10
13
  this.state = this;
11
- this.hid = null;
12
14
  this.ps = new elements_1.Momentary({
13
15
  icon: "㎰",
14
16
  name: "Home",
@@ -69,53 +71,52 @@ class Dualsense extends input_1.Input {
69
71
  name: "Touchpad",
70
72
  ...(params.touchpad || {}),
71
73
  });
72
- const { hid } = params;
73
- if (hid !== null)
74
- this.hid = hid ? hid : new hid_1.DualsenseHID();
75
- if (this.hid) {
76
- this.hid.on("input", () => {
77
- this.processHID();
78
- });
79
- }
74
+ this.hid = params.hid || new hid_1.DualsenseHID(new hid_1.PlatformHIDProvider());
75
+ this.hid.register((state) => {
76
+ this.processHID(state);
77
+ });
78
+ if (params.hid !== null)
79
+ this.hid.provider.connect();
80
80
  }
81
81
  get active() {
82
- return Object.values(this).some((input) => input instanceof input_1.Input && input !== this && input.active);
82
+ return Object.values(this).some((input) => input !== this && input instanceof input_1.Input && input.active);
83
83
  }
84
- processHID() {
85
- if (!this.hid)
86
- return;
87
- this.ps[input_1.InputSet](this.hid.state["Playstation" /* InputId.Playstation */]);
88
- this.options[input_1.InputSet](this.hid.state["Options" /* InputId.Options */]);
89
- this.create[input_1.InputSet](this.hid.state["Create" /* InputId.Create */]);
90
- this.mute[input_1.InputSet](this.hid.state["Mute" /* InputId.Mute */]);
91
- this.mute.status[input_1.InputSet](this.hid.state["Status" /* InputId.Status */]);
92
- this.triangle[input_1.InputSet](this.hid.state["Triangle" /* InputId.Triangle */]);
93
- this.circle[input_1.InputSet](this.hid.state["Circle" /* InputId.Circle */]);
94
- this.cross[input_1.InputSet](this.hid.state["Cross" /* InputId.Cross */]);
95
- this.square[input_1.InputSet](this.hid.state["Square" /* InputId.Square */]);
96
- this.dpad.up[input_1.InputSet](this.hid.state["Up" /* InputId.Up */]);
97
- this.dpad.down[input_1.InputSet](this.hid.state["Down" /* InputId.Down */]);
98
- this.dpad.right[input_1.InputSet](this.hid.state["Right" /* InputId.Right */]);
99
- this.dpad.left[input_1.InputSet](this.hid.state["Left" /* InputId.Left */]);
100
- this.touchpad.button[input_1.InputSet](this.hid.state["TouchButton" /* InputId.TouchButton */]);
101
- this.touchpad.left.x[input_1.InputSet](this.hid.state["TouchX0" /* InputId.TouchX0 */]);
102
- this.touchpad.left.y[input_1.InputSet](this.hid.state["TouchY0" /* InputId.TouchY0 */]);
103
- this.touchpad.left.contact[input_1.InputSet](this.hid.state["TouchContact0" /* InputId.TouchContact0 */]);
104
- this.touchpad.left.tracker[input_1.InputSet](this.hid.state["TouchId0" /* InputId.TouchId0 */]);
105
- this.touchpad.right.x[input_1.InputSet](this.hid.state["TouchX1" /* InputId.TouchX1 */]);
106
- this.touchpad.right.y[input_1.InputSet](this.hid.state["TouchY1" /* InputId.TouchY1 */]);
107
- this.touchpad.right.contact[input_1.InputSet](this.hid.state["TouchContact1" /* InputId.TouchContact1 */]);
108
- this.touchpad.right.tracker[input_1.InputSet](this.hid.state["TouchId1" /* InputId.TouchId1 */]);
109
- this.left.analog.x[input_1.InputSet](this.hid.state["LX" /* InputId.LeftAnalogX */]);
110
- this.left.analog.y[input_1.InputSet](this.hid.state["LY" /* InputId.LeftAnalogY */]);
111
- this.left.bumper[input_1.InputSet](this.hid.state["L1" /* InputId.LeftBumper */]);
112
- this.left.trigger[input_1.InputSet](this.hid.state["L2" /* InputId.LeftTrigger */]);
113
- this.left.trigger.button[input_1.InputSet](this.hid.state["L2Button" /* InputId.LeftTriggerButton */]);
114
- this.right.analog.x[input_1.InputSet](this.hid.state["RX" /* InputId.RightAnalogX */]);
115
- this.right.analog.y[input_1.InputSet](this.hid.state["RY" /* InputId.RightAnalogY */]);
116
- this.right.bumper[input_1.InputSet](this.hid.state["R1" /* InputId.RightBumper */]);
117
- this.right.trigger[input_1.InputSet](this.hid.state["R2" /* InputId.RightTrigger */]);
118
- this.right.trigger.button[input_1.InputSet](this.hid.state["R2Button" /* InputId.RightTriggerButton */]);
84
+ /**
85
+ * Distributes input values to various elements.
86
+ */
87
+ processHID(state) {
88
+ this.ps[input_1.InputSet](state["Playstation" /* InputId.Playstation */]);
89
+ this.options[input_1.InputSet](state["Options" /* InputId.Options */]);
90
+ this.create[input_1.InputSet](state["Create" /* InputId.Create */]);
91
+ this.mute[input_1.InputSet](state["Mute" /* InputId.Mute */]);
92
+ this.mute.status[input_1.InputSet](state["Status" /* InputId.Status */]);
93
+ this.triangle[input_1.InputSet](state["Triangle" /* InputId.Triangle */]);
94
+ this.circle[input_1.InputSet](state["Circle" /* InputId.Circle */]);
95
+ this.cross[input_1.InputSet](state["Cross" /* InputId.Cross */]);
96
+ this.square[input_1.InputSet](state["Square" /* InputId.Square */]);
97
+ this.dpad.up[input_1.InputSet](state["Up" /* InputId.Up */]);
98
+ this.dpad.down[input_1.InputSet](state["Down" /* InputId.Down */]);
99
+ this.dpad.right[input_1.InputSet](state["Right" /* InputId.Right */]);
100
+ this.dpad.left[input_1.InputSet](state["Left" /* InputId.Left */]);
101
+ this.touchpad.button[input_1.InputSet](state["TouchButton" /* InputId.TouchButton */]);
102
+ this.touchpad.left.x[input_1.InputSet](state["TouchX0" /* InputId.TouchX0 */]);
103
+ this.touchpad.left.y[input_1.InputSet](state["TouchY0" /* InputId.TouchY0 */]);
104
+ this.touchpad.left.contact[input_1.InputSet](state["TouchContact0" /* InputId.TouchContact0 */]);
105
+ this.touchpad.left.tracker[input_1.InputSet](state["TouchId0" /* InputId.TouchId0 */]);
106
+ this.touchpad.right.x[input_1.InputSet](state["TouchX1" /* InputId.TouchX1 */]);
107
+ this.touchpad.right.y[input_1.InputSet](state["TouchY1" /* InputId.TouchY1 */]);
108
+ this.touchpad.right.contact[input_1.InputSet](state["TouchContact1" /* InputId.TouchContact1 */]);
109
+ this.touchpad.right.tracker[input_1.InputSet](state["TouchId1" /* InputId.TouchId1 */]);
110
+ this.left.analog.x[input_1.InputSet](state["LX" /* InputId.LeftAnalogX */]);
111
+ this.left.analog.y[input_1.InputSet](state["LY" /* InputId.LeftAnalogY */]);
112
+ this.left.bumper[input_1.InputSet](state["L1" /* InputId.LeftBumper */]);
113
+ this.left.trigger[input_1.InputSet](state["L2" /* InputId.LeftTrigger */]);
114
+ this.left.trigger.button[input_1.InputSet](state["L2Button" /* InputId.LeftTriggerButton */]);
115
+ this.right.analog.x[input_1.InputSet](state["RX" /* InputId.RightAnalogX */]);
116
+ this.right.analog.y[input_1.InputSet](state["RY" /* InputId.RightAnalogY */]);
117
+ this.right.bumper[input_1.InputSet](state["R1" /* InputId.RightBumper */]);
118
+ this.right.trigger[input_1.InputSet](state["R2" /* InputId.RightTrigger */]);
119
+ this.right.trigger.button[input_1.InputSet](state["R2Button" /* InputId.RightTriggerButton */]);
119
120
  }
120
121
  }
121
122
  exports.Dualsense = Dualsense;
@@ -1 +1 @@
1
- {"version":3,"file":"dualsense.js","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dualsense.js","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,15 @@
1
- import { Axis } from "./axis";
1
+ import { Axis, AxisParams } from "./axis";
2
2
  import { Momentary } from "./momentary";
3
3
  import { Input, InputParams } from "../input";
4
4
  import { Radians, Degrees, Magnitude, Force } from "../math";
5
5
  /**
6
- * Configuration for an analog joystick and its basic inputs.
6
+ * Configuration for an analog joystick and its component inputs.
7
7
  */
8
8
  export interface AnalogParams extends InputParams {
9
9
  button?: InputParams;
10
- x?: InputParams;
11
- y?: InputParams;
12
- threshold?: Magnitude;
10
+ x?: AxisParams;
11
+ y?: AxisParams;
12
+ deadzone?: Magnitude;
13
13
  }
14
14
  /**
15
15
  * Represents an analog joystick.
@@ -20,7 +20,7 @@ export interface AnalogParams extends InputParams {
20
20
  * - Pushed all the way down and to the left, the stick's coordinates are [-1, -1]
21
21
  */
22
22
  export declare class Analog extends Input<Analog> {
23
- readonly state: Analog;
23
+ readonly state: this;
24
24
  /**
25
25
  * The left/right position of the input.
26
26
  */
@@ -33,6 +33,10 @@ export declare class Analog extends Input<Analog> {
33
33
  * Button triggered by pressing the stick.
34
34
  */
35
35
  readonly button: Momentary;
36
+ /**
37
+ * Ignores stick movement below this value (0 to 1).
38
+ */
39
+ deadzone: Magnitude;
36
40
  constructor(params?: AnalogParams);
37
41
  /**
38
42
  * Returns true if the stick is away from the idle position, or the button is pressed.
@@ -46,7 +50,8 @@ export declare class Analog extends Input<Analog> {
46
50
  magnitude: Magnitude;
47
51
  };
48
52
  /**
49
- * Returns an force from the stick's position.
53
+ * Returns a force from the stick's position.
54
+ * This ignores the deadzone value.
50
55
  */
51
56
  get force(): Force;
52
57
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"analog.d.ts","sourceRoot":"","sources":["../../src/elements/analog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAC/C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,CAAC,CAAC,EAAE,WAAW,CAAC;IAChB,CAAC,CAAC,EAAE,WAAW,CAAC;IAChB,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,qBAAa,MAAO,SAAQ,KAAK,CAAC,MAAM,CAAC;IACvC,SAAgB,KAAK,EAAE,MAAM,CAAQ;IAErC;;OAEG;IACH,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB;;OAEG;IACH,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB;;OAEG;IACH,SAAgB,MAAM,EAAE,SAAS,CAAC;gBAEtB,MAAM,CAAC,EAAE,YAAY;IAajC;;OAEG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;OAEG;IACH,IAAW,MAAM,IAAI;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAEhE;IAED;;OAEG;IACH,IAAW,KAAK,IAAI,KAAK,CAIxB;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,KAAK,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAW,gBAAgB,IAAI,OAAO,CAErC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,OAAO,CAEjC;CACF"}
1
+ {"version":3,"file":"analog.d.ts","sourceRoot":"","sources":["../../src/elements/analog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,WAAW;IAE/C,MAAM,CAAC,EAAE,WAAW,CAAC;IAGrB,CAAC,CAAC,EAAE,UAAU,CAAC;IAGf,CAAC,CAAC,EAAE,UAAU,CAAC;IAGf,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,qBAAa,MAAO,SAAQ,KAAK,CAAC,MAAM,CAAC;IACvC,SAAgB,KAAK,EAAE,IAAI,CAAQ;IAEnC;;OAEG;IACH,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB;;OAEG;IACH,SAAgB,CAAC,EAAE,IAAI,CAAC;IACxB;;OAEG;IACH,SAAgB,MAAM,EAAE,SAAS,CAAC;IAClC;;OAEG;IACI,QAAQ,EAAE,SAAS,CAAQ;gBAEtB,MAAM,CAAC,EAAE,YAAY;IAoBjC;;OAEG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;OAEG;IACH,IAAW,MAAM,IAAI;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAEhE;IAED;;;OAGG;IACH,IAAW,KAAK,IAAI,KAAK,CAExB;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAIhC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,KAAK,IAAI,OAAO,CAE1B;IAED;;OAEG;IACH,IAAW,gBAAgB,IAAI,OAAO,CAErC;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,OAAO,CAEjC;CACF"}
@@ -16,16 +16,32 @@ class Analog extends input_1.Input {
16
16
  constructor(params) {
17
17
  super(params);
18
18
  this.state = this;
19
- const { button, x, y, threshold } = params || {};
20
- this.button = new momentary_1.Momentary(button || { icon: "3", name: "Button" });
21
- this.x = new axis_1.Axis(x || { icon: "↔", name: "X", threshold: threshold || 0.07 });
22
- this.y = new axis_1.Axis(y || { icon: "↕", name: "Y", threshold: threshold || 0.07 });
19
+ /**
20
+ * Ignores stick movement below this value (0 to 1).
21
+ */
22
+ this.deadzone = 0.05;
23
+ const { button, x, y, deadzone } = params || {};
24
+ if (deadzone)
25
+ this.deadzone = deadzone;
26
+ this.button = new momentary_1.Momentary({ icon: "3", name: "Button", ...button });
27
+ this.x = new axis_1.Axis({
28
+ icon: "↔",
29
+ name: "X",
30
+ ...params,
31
+ ...x,
32
+ });
33
+ this.y = new axis_1.Axis({
34
+ icon: "↕",
35
+ name: "Y",
36
+ ...params,
37
+ ...y,
38
+ });
23
39
  }
24
40
  /**
25
41
  * Returns true if the stick is away from the idle position, or the button is pressed.
26
42
  */
27
43
  get active() {
28
- return this.x.active || this.y.active || this.button.active;
44
+ return this.magnitude > 0 || this.button.active;
29
45
  }
30
46
  /**
31
47
  * Returns a direction and magnitude representing the stick's position.
@@ -34,24 +50,26 @@ class Analog extends input_1.Input {
34
50
  return { direction: this.direction, magnitude: this.magnitude };
35
51
  }
36
52
  /**
37
- * Returns an force from the stick's position.
53
+ * Returns a force from the stick's position.
54
+ * This ignores the deadzone value.
38
55
  */
39
56
  get force() {
40
- return this.active
41
- ? Math.max(Math.min(Math.hypot(this.x.state, this.y.state), 1), -1)
42
- : 0;
57
+ return Math.max(Math.min(Math.hypot(this.x.force, this.y.force), 1), -1);
43
58
  }
44
59
  /**
45
60
  * Returns a magnitude from the stick's position.
46
61
  */
47
62
  get magnitude() {
48
- return Math.abs(this.force);
63
+ const magnitude = Math.abs(this.force);
64
+ if (magnitude < this.deadzone)
65
+ return 0;
66
+ return (magnitude - this.deadzone) / (1 - this.deadzone);
49
67
  }
50
68
  /**
51
69
  * Returns the stick's angle in radians.
52
70
  */
53
71
  get direction() {
54
- return Math.atan2(this.y.state, this.x.state);
72
+ return Math.atan2(this.y.force, this.x.force);
55
73
  }
56
74
  /**
57
75
  * Alias for `.direction`
@@ -1 +1 @@
1
- {"version":3,"file":"analog.js","sourceRoot":"","sources":["../../src/elements/analog.ts"],"names":[],"mappings":";;;AAAA,iCAA8B;AAC9B,2CAAwC;AACxC,oCAA8C;AAa9C;;;;;;;GAOG;AACH,MAAa,MAAO,SAAQ,aAAa;IAgBvC,YAAY,MAAqB;QAC/B,KAAK,CAAC,MAAM,CAAC,CAAC;QAhBA,UAAK,GAAW,IAAI,CAAC;QAiBnC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QAEjD,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,EAAE,CAC5D,CAAC;QACF,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CACf,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,EAAE,CAC5D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM;YAChB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,gBAAgB;QACzB,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AApGD,wBAoGC"}
1
+ {"version":3,"file":"analog.js","sourceRoot":"","sources":["../../src/elements/analog.ts"],"names":[],"mappings":";;;AAAA,iCAA0C;AAC1C,2CAAwC;AACxC,oCAA8C;AAoB9C;;;;;;;GAOG;AACH,MAAa,MAAO,SAAQ,aAAa;IAoBvC,YAAY,MAAqB;QAC/B,KAAK,CAAC,MAAM,CAAC,CAAC;QApBA,UAAK,GAAS,IAAI,CAAC;QAcnC;;WAEG;QACI,aAAQ,GAAc,IAAI,CAAC;QAIhC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QAEhD,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CAAC;YAChB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;YACT,GAAG,MAAM;YACT,GAAG,CAAC;SACL,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,GAAG,IAAI,WAAI,CAAC;YAChB,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;YACT,GAAG,MAAM;YACT,GAAG,CAAC;SACL,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACf,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC;QACxC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,gBAAgB;QACzB,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAhHD,wBAgHC"}
@@ -1,9 +1,30 @@
1
- import { Input } from "../input";
1
+ import { Input, InputParams } from "../input";
2
2
  import { Force, Magnitude } from "../math";
3
+ /**
4
+ * Configuration for an Axis input.
5
+ */
6
+ export interface AxisParams extends InputParams {
7
+ deadzone?: Magnitude;
8
+ }
9
+ /**
10
+ * Represents a simple ranged input. For example, one axis of an analog
11
+ * joystick or touchpad, the pull of a trigger, or the movement of a gyroscope.
12
+ */
3
13
  export declare class Axis extends Input<Force> {
4
14
  state: Force;
15
+ /**
16
+ * Ignores inputs of magnitude less than this value (0 to 1).
17
+ */
18
+ deadzone: Magnitude;
19
+ constructor(params?: AxisParams);
5
20
  get active(): boolean;
21
+ /**
22
+ * Returns the axis position, ignoring the deadzone value.
23
+ */
6
24
  get force(): Force;
25
+ /**
26
+ * Returns an absolute axis position.
27
+ */
7
28
  get magnitude(): Magnitude;
8
29
  }
9
30
  //# sourceMappingURL=axis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axis.d.ts","sourceRoot":"","sources":["../../src/elements/axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3C,qBAAa,IAAK,SAAQ,KAAK,CAAC,KAAK,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAK;IAExB,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,KAAK,IAAI,KAAK,CAExB;IAED,IAAW,SAAS,IAAI,SAAS,CAEhC;CACF"}
1
+ {"version":3,"file":"axis.d.ts","sourceRoot":"","sources":["../../src/elements/axis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,WAAW;IAE7C,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,IAAK,SAAQ,KAAK,CAAC,KAAK,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAK;IAExB;;OAEG;IACI,QAAQ,EAAE,SAAS,CAAQ;gBAEtB,MAAM,CAAC,EAAE,UAAU;IAO/B,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;OAEG;IACH,IAAW,KAAK,IAAI,KAAK,CAExB;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,SAAS,CAIhC;CACF"}
@@ -2,19 +2,39 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Axis = void 0;
4
4
  const input_1 = require("../input");
5
+ /**
6
+ * Represents a simple ranged input. For example, one axis of an analog
7
+ * joystick or touchpad, the pull of a trigger, or the movement of a gyroscope.
8
+ */
5
9
  class Axis extends input_1.Input {
6
- constructor() {
7
- super(...arguments);
10
+ constructor(params) {
11
+ super(params);
8
12
  this.state = 0;
13
+ /**
14
+ * Ignores inputs of magnitude less than this value (0 to 1).
15
+ */
16
+ this.deadzone = 0.05;
17
+ const { deadzone } = params || {};
18
+ if (deadzone)
19
+ this.deadzone = deadzone;
9
20
  }
10
21
  get active() {
11
- return Math.abs(this.state) > this.threshold;
22
+ return Math.abs(this.state) > this.deadzone;
12
23
  }
24
+ /**
25
+ * Returns the axis position, ignoring the deadzone value.
26
+ */
13
27
  get force() {
14
28
  return this.active ? this.state : 0;
15
29
  }
30
+ /**
31
+ * Returns an absolute axis position.
32
+ */
16
33
  get magnitude() {
17
- return Math.abs(this.force);
34
+ const magnitude = Math.abs(this.force);
35
+ if (magnitude < this.deadzone)
36
+ return 0;
37
+ return (magnitude - this.deadzone) / (1 - this.deadzone);
18
38
  }
19
39
  }
20
40
  exports.Axis = Axis;
@@ -1 +1 @@
1
- {"version":3,"file":"axis.js","sourceRoot":"","sources":["../../src/elements/axis.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAGjC,MAAa,IAAK,SAAQ,aAAY;IAAtC;;QACS,UAAK,GAAU,CAAC,CAAC;IAa1B,CAAC;IAXC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACF;AAdD,oBAcC"}
1
+ {"version":3,"file":"axis.js","sourceRoot":"","sources":["../../src/elements/axis.ts"],"names":[],"mappings":";;;AAAA,oCAA8C;AAW9C;;;GAGG;AACH,MAAa,IAAK,SAAQ,aAAY;IAQpC,YAAY,MAAmB;QAC7B,KAAK,CAAC,MAAM,CAAC,CAAC;QART,UAAK,GAAU,CAAC,CAAC;QAExB;;WAEG;QACI,aAAQ,GAAc,IAAI,CAAC;QAIhC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QAElC,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzC,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAC;QACxC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;CACF;AAlCD,oBAkCC"}
@@ -7,7 +7,7 @@ export interface DpadParams extends InputParams {
7
7
  right?: InputParams;
8
8
  }
9
9
  export declare class Dpad extends Input<Dpad> {
10
- readonly state: Dpad;
10
+ readonly state: this;
11
11
  readonly up: Momentary;
12
12
  readonly down: Momentary;
13
13
  readonly left: Momentary;
@@ -1 +1 @@
1
- {"version":3,"file":"dpad.d.ts","sourceRoot":"","sources":["../../src/elements/dpad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,qBAAa,IAAK,SAAQ,KAAK,CAAC,IAAI,CAAC;IACnC,SAAgB,KAAK,EAAE,IAAI,CAAQ;IAEnC,SAAgB,EAAE,EAAE,SAAS,CAAC;IAC9B,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,KAAK,EAAE,SAAS,CAAC;gBAErB,MAAM,CAAC,EAAE,UAAU;IAS/B,IAAW,MAAM,IAAI,OAAO,CAO3B;CACF"}
1
+ {"version":3,"file":"dpad.d.ts","sourceRoot":"","sources":["../../src/elements/dpad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,qBAAa,IAAK,SAAQ,KAAK,CAAC,IAAI,CAAC;IACnC,SAAgB,KAAK,EAAE,IAAI,CAAQ;IAEnC,SAAgB,EAAE,EAAE,SAAS,CAAC;IAC9B,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,KAAK,EAAE,SAAS,CAAC;gBAErB,MAAM,GAAE,UAAe;IAUnC,IAAW,MAAM,IAAI,OAAO,CAO3B;CACF"}
@@ -4,13 +4,14 @@ exports.Dpad = void 0;
4
4
  const momentary_1 = require("./momentary");
5
5
  const input_1 = require("../input");
6
6
  class Dpad extends input_1.Input {
7
- constructor(params) {
7
+ constructor(params = {}) {
8
8
  super(params);
9
9
  this.state = this;
10
- this.up = new momentary_1.Momentary(params?.up || { icon: "⮉", name: "Up" });
11
- this.down = new momentary_1.Momentary(params?.down || { icon: "", name: "Down" });
12
- this.left = new momentary_1.Momentary(params?.left || { icon: "", name: "Left" });
13
- this.right = new momentary_1.Momentary(params?.right || { icon: "", name: "Right" });
10
+ const { up, down, left, right } = params;
11
+ this.up = new momentary_1.Momentary(params?.up || { icon: "", name: "Up", ...up });
12
+ this.down = new momentary_1.Momentary(params?.down || { icon: "", name: "Down", ...down });
13
+ this.left = new momentary_1.Momentary(params?.left || { icon: "", name: "Left", ...left });
14
+ this.right = new momentary_1.Momentary(params?.right || { icon: "⮊", name: "Right", ...right });
14
15
  }
15
16
  get active() {
16
17
  return (this.up.active ||
@@ -1 +1 @@
1
- {"version":3,"file":"dpad.js","sourceRoot":"","sources":["../../src/elements/dpad.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,oCAA8C;AAS9C,MAAa,IAAK,SAAQ,aAAW;IAQnC,YAAY,MAAmB;QAC7B,KAAK,CAAC,MAAM,CAAC,CAAC;QARA,UAAK,GAAS,IAAI,CAAC;QAUjC,IAAI,CAAC,EAAE,GAAG,IAAI,qBAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAS,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAS,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAS,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,IAAW,MAAM;QACf,OAAO,CACL,IAAI,CAAC,EAAE,CAAC,MAAM;YACd,IAAI,CAAC,IAAI,CAAC,MAAM;YAChB,IAAI,CAAC,IAAI,CAAC,MAAM;YAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAClB,CAAC;IACJ,CAAC;CACF;AAzBD,oBAyBC"}
1
+ {"version":3,"file":"dpad.js","sourceRoot":"","sources":["../../src/elements/dpad.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,oCAA8C;AAS9C,MAAa,IAAK,SAAQ,aAAW;IAQnC,YAAY,SAAqB,EAAE;QACjC,KAAK,CAAC,MAAM,CAAC,CAAC;QARA,UAAK,GAAS,IAAI,CAAC;QASjC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,CAAA;QAExC,IAAI,CAAC,EAAE,GAAG,IAAI,qBAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,EAAC,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAS,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAS,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAS,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,IAAW,MAAM;QACf,OAAO,CACL,IAAI,CAAC,EAAE,CAAC,MAAM;YACd,IAAI,CAAC,IAAI,CAAC,MAAM;YAChB,IAAI,CAAC,IAAI,CAAC,MAAM;YAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAClB,CAAC;IACJ,CAAC;CACF;AA1BD,oBA0BC"}
@@ -5,9 +5,10 @@ import { Increment } from "./increment";
5
5
  * with [0,0] representing the center of the touchpad.
6
6
  */
7
7
  export declare class Touch extends Analog {
8
- readonly state: Touch;
8
+ readonly state: this;
9
9
  readonly contact: import("./momentary").Momentary;
10
10
  readonly tracker: Increment;
11
+ deadzone: number;
11
12
  get active(): boolean;
12
13
  }
13
14
  //# sourceMappingURL=touch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"touch.d.ts","sourceRoot":"","sources":["../../src/elements/touch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,qBAAa,KAAM,SAAQ,MAAM;IAC/B,SAAgB,KAAK,EAAE,KAAK,CAAQ;IACpC,SAAgB,OAAO,kCAAe;IACtC,SAAgB,OAAO,EAAE,SAAS,CAAmB;IAErD,IAAW,MAAM,IAAI,OAAO,CAE3B;CACF"}
1
+ {"version":3,"file":"touch.d.ts","sourceRoot":"","sources":["../../src/elements/touch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;GAGG;AACH,qBAAa,KAAM,SAAQ,MAAM;IAC/B,SAAgB,KAAK,EAAE,IAAI,CAAQ;IACnC,SAAgB,OAAO,kCAAe;IACtC,SAAgB,OAAO,EAAE,SAAS,CAAmB;IAC9C,QAAQ,SAAK;IAEpB,IAAW,MAAM,IAAI,OAAO,CAE3B;CACF"}
@@ -13,6 +13,7 @@ class Touch extends analog_1.Analog {
13
13
  this.state = this;
14
14
  this.contact = this.button;
15
15
  this.tracker = new increment_1.Increment();
16
+ this.deadzone = 0;
16
17
  }
17
18
  get active() {
18
19
  return this.contact.active;
@@ -1 +1 @@
1
- {"version":3,"file":"touch.js","sourceRoot":"","sources":["../../src/elements/touch.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAClC,2CAAwC;AAExC;;;GAGG;AACH,MAAa,KAAM,SAAQ,eAAM;IAAjC;;QACkB,UAAK,GAAU,IAAI,CAAC;QACpB,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,YAAO,GAAc,IAAI,qBAAS,EAAE,CAAC;IAKvD,CAAC;IAHC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;CACF;AARD,sBAQC"}
1
+ {"version":3,"file":"touch.js","sourceRoot":"","sources":["../../src/elements/touch.ts"],"names":[],"mappings":";;;AAAA,qCAAkC;AAClC,2CAAwC;AAExC;;;GAGG;AACH,MAAa,KAAM,SAAQ,eAAM;IAAjC;;QACkB,UAAK,GAAS,IAAI,CAAC;QACnB,YAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,YAAO,GAAc,IAAI,qBAAS,EAAE,CAAC;QAC9C,aAAQ,GAAG,CAAC,CAAC;IAKtB,CAAC;IAHC,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;CACF;AATD,sBASC"}
@@ -2,7 +2,7 @@ import { Momentary } from "./momentary";
2
2
  import { Touch } from "./touch";
3
3
  import { Input, InputParams } from "../input";
4
4
  export declare class Touchpad extends Input<Touchpad> {
5
- readonly state: Touchpad;
5
+ readonly state: this;
6
6
  get active(): boolean;
7
7
  readonly button: Momentary;
8
8
  readonly left: Touch;
@@ -1 +1 @@
1
- {"version":3,"file":"touchpad.d.ts","sourceRoot":"","sources":["../../src/elements/touchpad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9C,qBAAa,QAAS,SAAQ,KAAK,CAAC,QAAQ,CAAC;IAC3C,SAAgB,KAAK,EAAE,QAAQ,CAAQ;IAEvC,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,SAAgB,MAAM,EAAE,SAAS,CAAC;IAGlC,SAAgB,IAAI,EAAE,KAAK,CAAC;IAC5B,SAAgB,KAAK,EAAE,KAAK,CAAC;gBAEjB,MAAM,EAAE,WAAW;CAOhC"}
1
+ {"version":3,"file":"touchpad.d.ts","sourceRoot":"","sources":["../../src/elements/touchpad.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE9C,qBAAa,QAAS,SAAQ,KAAK,CAAC,QAAQ,CAAC;IAC3C,SAAgB,KAAK,EAAE,IAAI,CAAQ;IAEnC,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,SAAgB,MAAM,EAAE,SAAS,CAAC;IAGlC,SAAgB,IAAI,EAAE,KAAK,CAAC;IAC5B,SAAgB,KAAK,EAAE,KAAK,CAAC;gBAEjB,MAAM,EAAE,WAAW;CAOhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"touchpad.js","sourceRoot":"","sources":["../../src/elements/touchpad.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,mCAAgC;AAChC,oCAA8C;AAE9C,MAAa,QAAS,SAAQ,aAAe;IAa3C,YAAY,MAAmB;QAC7B,KAAK,CAAC,MAAM,CAAC,CAAC;QAbA,UAAK,GAAa,IAAI,CAAC;QAerC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,aAAK,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;IAC3B,CAAC;IAhBD,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC,CAAC;CAeF;AApBD,4BAoBC"}
1
+ {"version":3,"file":"touchpad.js","sourceRoot":"","sources":["../../src/elements/touchpad.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AACxC,mCAAgC;AAChC,oCAA8C;AAE9C,MAAa,QAAS,SAAQ,aAAe;IAa3C,YAAY,MAAmB;QAC7B,KAAK,CAAC,MAAM,CAAC,CAAC;QAbA,UAAK,GAAS,IAAI,CAAC;QAejC,IAAI,CAAC,MAAM,GAAG,IAAI,qBAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,aAAK,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,EAAE,CAAC;IAC3B,CAAC;IAhBD,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAClC,CAAC;CAeF;AApBD,4BAoBC"}