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.
- package/README.md +9 -2
- package/dist/comparators.d.ts +13 -0
- package/dist/comparators.d.ts.map +1 -0
- package/dist/comparators.js +27 -0
- package/dist/comparators.js.map +1 -0
- package/dist/dualsense.d.ts +10 -1
- package/dist/dualsense.d.ts.map +1 -1
- package/dist/dualsense.js +46 -45
- package/dist/dualsense.js.map +1 -1
- package/dist/elements/analog.d.ts +12 -7
- package/dist/elements/analog.d.ts.map +1 -1
- package/dist/elements/analog.js +29 -11
- package/dist/elements/analog.js.map +1 -1
- package/dist/elements/axis.d.ts +22 -1
- package/dist/elements/axis.d.ts.map +1 -1
- package/dist/elements/axis.js +24 -4
- package/dist/elements/axis.js.map +1 -1
- package/dist/elements/dpad.d.ts +1 -1
- package/dist/elements/dpad.d.ts.map +1 -1
- package/dist/elements/dpad.js +6 -5
- package/dist/elements/dpad.js.map +1 -1
- package/dist/elements/touch.d.ts +2 -1
- package/dist/elements/touch.d.ts.map +1 -1
- package/dist/elements/touch.js +1 -0
- package/dist/elements/touch.js.map +1 -1
- package/dist/elements/touchpad.d.ts +1 -1
- package/dist/elements/touchpad.d.ts.map +1 -1
- package/dist/elements/touchpad.js.map +1 -1
- package/dist/elements/trigger.d.ts.map +1 -1
- package/dist/elements/trigger.js +1 -1
- package/dist/elements/trigger.js.map +1 -1
- package/dist/elements/unisense.d.ts +3 -3
- package/dist/elements/unisense.d.ts.map +1 -1
- package/dist/elements/unisense.js +13 -5
- package/dist/elements/unisense.js.map +1 -1
- package/dist/hid/dualsense_hid.d.ts +16 -58
- package/dist/hid/dualsense_hid.d.ts.map +1 -1
- package/dist/hid/dualsense_hid.js +25 -101
- package/dist/hid/dualsense_hid.js.map +1 -1
- package/dist/hid/hid_provider.d.ts +86 -0
- package/dist/hid/hid_provider.d.ts.map +1 -0
- package/dist/hid/hid_provider.js +45 -0
- package/dist/hid/hid_provider.js.map +1 -0
- package/dist/hid/index.d.ts +4 -1
- package/dist/hid/index.d.ts.map +1 -1
- package/dist/hid/index.js +4 -1
- package/dist/hid/index.js.map +1 -1
- package/dist/hid/node_hid_provider.d.ts +11 -0
- package/dist/hid/node_hid_provider.d.ts.map +1 -0
- package/dist/hid/node_hid_provider.js +97 -0
- package/dist/hid/node_hid_provider.js.map +1 -0
- package/dist/hid/platform_hid_provider.d.ts +4 -0
- package/dist/hid/platform_hid_provider.d.ts.map +1 -0
- package/dist/hid/platform_hid_provider.js +7 -0
- package/dist/hid/platform_hid_provider.js.map +1 -0
- package/dist/hid/web_hid_provider.d.ts +10 -0
- package/dist/hid/web_hid_provider.d.ts.map +1 -0
- package/dist/hid/web_hid_provider.js +102 -0
- package/dist/hid/web_hid_provider.js.map +1 -0
- package/dist/{hid/ids.d.ts → id.d.ts} +6 -2
- package/dist/id.d.ts.map +1 -0
- package/dist/{hid/ids.js → id.js} +1 -1
- package/dist/id.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/input.d.ts +63 -45
- package/dist/input.d.ts.map +1 -1
- package/dist/input.js +123 -90
- package/dist/input.js.map +1 -1
- package/package.json +14 -8
- package/src/comparators.ts +26 -0
- package/src/dualsense.ts +61 -58
- package/src/elements/analog.spec.ts +2 -15
- package/src/elements/analog.ts +41 -22
- package/src/elements/axis.ts +35 -3
- package/src/elements/dpad.ts +7 -6
- package/src/elements/touch.ts +2 -1
- package/src/elements/touchpad.ts +1 -1
- package/src/elements/trigger.ts +1 -1
- package/src/elements/unisense.ts +19 -17
- package/src/hid/dualsense_hid.ts +25 -156
- package/src/hid/{dualsense_hid.spec.ts → hid_provider.spec.ts} +1 -1
- package/src/hid/hid_provider.ts +100 -0
- package/src/hid/index.ts +4 -1
- package/src/hid/node_hid_provider.ts +108 -0
- package/src/hid/platform_hid_provider.ts +4 -0
- package/src/hid/web_hid_provider.ts +116 -0
- package/src/{hid/ids.ts → id.ts} +6 -1
- package/src/index.ts +2 -0
- package/src/input.ts +156 -138
- package/src/readme.spec.ts +6 -8
- package/webpack.config.js +42 -0
- package/dist/hid/ids.d.ts.map +0 -1
- 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
|
|
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"}
|
package/dist/dualsense.d.ts
CHANGED
|
@@ -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
|
|
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
|
package/dist/dualsense.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
this.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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
|
|
82
|
+
return Object.values(this).some((input) => input !== this && input instanceof input_1.Input && input.active);
|
|
83
83
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
this.
|
|
89
|
-
this.
|
|
90
|
-
this.
|
|
91
|
-
this.mute
|
|
92
|
-
this.
|
|
93
|
-
this.
|
|
94
|
-
this.
|
|
95
|
-
this.
|
|
96
|
-
this.
|
|
97
|
-
this.dpad.
|
|
98
|
-
this.dpad.
|
|
99
|
-
this.dpad.
|
|
100
|
-
this.
|
|
101
|
-
this.touchpad.
|
|
102
|
-
this.touchpad.left.
|
|
103
|
-
this.touchpad.left.
|
|
104
|
-
this.touchpad.left.
|
|
105
|
-
this.touchpad.
|
|
106
|
-
this.touchpad.right.
|
|
107
|
-
this.touchpad.right.
|
|
108
|
-
this.touchpad.right.
|
|
109
|
-
this.
|
|
110
|
-
this.left.analog.
|
|
111
|
-
this.left.
|
|
112
|
-
this.left.
|
|
113
|
-
this.left.trigger
|
|
114
|
-
this.
|
|
115
|
-
this.right.analog.
|
|
116
|
-
this.right.
|
|
117
|
-
this.right.
|
|
118
|
-
this.right.trigger
|
|
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;
|
package/dist/dualsense.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dualsense.js","sourceRoot":"","sources":["../src/dualsense.ts"],"names":[],"mappings":";;;AAAA,yCAQoB;AACpB,mCAAuD;AACvD,+
|
|
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
|
|
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?:
|
|
11
|
-
y?:
|
|
12
|
-
|
|
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:
|
|
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
|
|
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;
|
|
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"}
|
package/dist/elements/analog.js
CHANGED
|
@@ -16,16 +16,32 @@ class Analog extends input_1.Input {
|
|
|
16
16
|
constructor(params) {
|
|
17
17
|
super(params);
|
|
18
18
|
this.state = this;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.
|
|
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.
|
|
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
|
|
53
|
+
* Returns a force from the stick's position.
|
|
54
|
+
* This ignores the deadzone value.
|
|
38
55
|
*/
|
|
39
56
|
get force() {
|
|
40
|
-
return this.
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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"}
|
package/dist/elements/axis.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/elements/axis.js
CHANGED
|
@@ -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(
|
|
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.
|
|
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
|
-
|
|
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,
|
|
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"}
|
package/dist/elements/dpad.d.ts
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/elements/dpad.js
CHANGED
|
@@ -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
|
-
|
|
11
|
-
this.
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
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,
|
|
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"}
|
package/dist/elements/touch.d.ts
CHANGED
|
@@ -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:
|
|
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,
|
|
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"}
|
package/dist/elements/touch.js
CHANGED
|
@@ -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,
|
|
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:
|
|
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,
|
|
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,
|
|
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"}
|