@benev/tact 0.1.0-1 → 0.1.0-2
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 +176 -115
- package/package.json +3 -2
- package/s/{station → core/bindings}/types.ts +4 -20
- package/s/core/controllers/controller.ts +7 -0
- package/s/core/controllers/infra/group.ts +17 -0
- package/s/{station/devices → core/controllers}/infra/sampler.ts +3 -3
- package/s/{station/devices → core/controllers/standard}/gamepad.ts +6 -6
- package/s/core/controllers/standard/index.ts +7 -0
- package/s/{station/devices → core/controllers/standard}/keyboard.ts +3 -3
- package/s/{station/devices → core/controllers/standard}/pointer.ts +34 -34
- package/s/{nubs/stick/device.ts → core/controllers/standard/stick.ts} +3 -3
- package/s/{nubs/virtual-gamepad/device.ts → core/controllers/standard/virtual-gamepad.ts} +5 -5
- package/s/core/controllers/types.ts +4 -0
- package/s/core/core.test.ts +90 -0
- package/s/core/hub/auto-gamepads.ts +8 -0
- package/s/{station/parts/switchboard-bindings.ts → core/hub/bindings.ts} +4 -4
- package/s/core/hub/hub.ts +102 -0
- package/s/core/index.ts +19 -0
- package/s/{station/parts → core/port}/action.ts +3 -9
- package/s/core/port/port.ts +34 -0
- package/s/core/port/resolution/defaults.ts +30 -0
- package/s/{station/parts/routines/lensing_algorithm.ts → core/port/resolution/lens-algo.ts} +13 -11
- package/s/core/port/resolution/resolver.ts +77 -0
- package/s/core/port/resolution/types.ts +9 -0
- package/s/core/port/types.ts +10 -0
- package/s/core/port/utils/aggregate_samples_into_map.ts +20 -0
- package/s/core/port/utils/wipe_samples_map.ts +8 -0
- package/s/core/testing/testing.ts +50 -0
- package/s/demo/main.bundle.ts +2 -2
- package/s/index.ts +1 -11
- package/s/nubs/stick/view.ts +2 -2
- package/s/nubs/virtual-gamepad/view.ts +6 -6
- package/s/tests.test.ts +2 -4
- package/s/{station/utils/tmin.ts → utils/quick-math.ts} +6 -0
- package/x/{station → core/bindings}/types.d.ts +4 -16
- package/x/core/bindings/types.js +5 -0
- package/x/core/bindings/types.js.map +1 -0
- package/x/core/controllers/controller.d.ts +4 -0
- package/x/core/controllers/controller.js +3 -0
- package/x/core/controllers/controller.js.map +1 -0
- package/x/core/controllers/infra/group.d.ts +7 -0
- package/x/core/controllers/infra/group.js +13 -0
- package/x/core/controllers/infra/group.js.map +1 -0
- package/x/core/controllers/infra/sampler.d.ts +8 -0
- package/x/{station/devices → core/controllers}/infra/sampler.js +2 -2
- package/x/core/controllers/infra/sampler.js.map +1 -0
- package/x/core/controllers/standard/gamepad.d.ts +10 -0
- package/x/{station/devices → core/controllers/standard}/gamepad.js +5 -5
- package/x/core/controllers/standard/gamepad.js.map +1 -0
- package/x/core/controllers/standard/index.d.ts +5 -0
- package/x/core/controllers/standard/index.js +6 -0
- package/x/core/controllers/standard/index.js.map +1 -0
- package/x/{station/devices → core/controllers/standard}/keyboard.d.ts +3 -3
- package/x/{station/devices → core/controllers/standard}/keyboard.js +3 -3
- package/x/core/controllers/standard/keyboard.js.map +1 -0
- package/x/{station/devices → core/controllers/standard}/pointer.d.ts +3 -3
- package/x/{station/devices → core/controllers/standard}/pointer.js +29 -29
- package/x/core/controllers/standard/pointer.js.map +1 -0
- package/x/{nubs/stick/device.d.ts → core/controllers/standard/stick.d.ts} +2 -2
- package/x/{nubs/stick/device.js → core/controllers/standard/stick.js} +4 -4
- package/x/core/controllers/standard/stick.js.map +1 -0
- package/x/core/controllers/standard/virtual-gamepad.d.ts +7 -0
- package/x/{nubs/virtual-gamepad/device.js → core/controllers/standard/virtual-gamepad.js} +6 -6
- package/x/core/controllers/standard/virtual-gamepad.js.map +1 -0
- package/x/core/controllers/types.d.ts +2 -0
- package/x/core/controllers/types.js +2 -0
- package/x/core/controllers/types.js.map +1 -0
- package/x/core/controllers/utils/modprefix.js.map +1 -0
- package/x/core/core.test.d.ts +11 -0
- package/x/core/core.test.js +84 -0
- package/x/core/core.test.js.map +1 -0
- package/x/core/hub/auto-gamepads.d.ts +2 -0
- package/x/core/hub/auto-gamepads.js +6 -0
- package/x/core/hub/auto-gamepads.js.map +1 -0
- package/x/core/hub/bindings.d.ts +2 -0
- package/x/{station/parts/switchboard-bindings.js → core/hub/bindings.js} +4 -4
- package/x/core/hub/bindings.js.map +1 -0
- package/x/core/hub/hub.d.ts +29 -0
- package/x/core/hub/hub.js +91 -0
- package/x/core/hub/hub.js.map +1 -0
- package/x/core/index.d.ts +14 -0
- package/x/core/index.js +15 -0
- package/x/core/index.js.map +1 -0
- package/x/{station/parts → core/port}/action.d.ts +1 -3
- package/x/{station/parts → core/port}/action.js +3 -10
- package/x/core/port/action.js.map +1 -0
- package/x/core/port/port.d.ts +12 -0
- package/x/core/port/port.js +25 -0
- package/x/core/port/port.js.map +1 -0
- package/x/core/port/resolution/defaults.d.ts +4 -0
- package/x/{station/parts → core/port/resolution}/defaults.js +4 -3
- package/x/core/port/resolution/defaults.js.map +1 -0
- package/x/core/port/resolution/lens-algo.d.ts +2 -0
- package/x/{station/parts/routines/lensing_algorithm.js → core/port/resolution/lens-algo.js} +9 -8
- package/x/core/port/resolution/lens-algo.js.map +1 -0
- package/x/core/port/resolution/resolver.d.ts +9 -0
- package/x/core/port/resolution/resolver.js +64 -0
- package/x/core/port/resolution/resolver.js.map +1 -0
- package/x/core/port/resolution/types.d.ts +6 -0
- package/x/core/port/resolution/types.js +2 -0
- package/x/core/port/resolution/types.js.map +1 -0
- package/x/core/port/types.d.ts +7 -0
- package/x/core/port/types.js +2 -0
- package/x/core/port/types.js.map +1 -0
- package/x/core/port/utils/aggregate_samples_into_map.d.ts +3 -0
- package/x/core/port/utils/aggregate_samples_into_map.js +11 -0
- package/x/core/port/utils/aggregate_samples_into_map.js.map +1 -0
- package/x/core/port/utils/is-pressed.js.map +1 -0
- package/x/core/port/utils/wipe_samples_map.d.ts +2 -0
- package/x/core/port/utils/wipe_samples_map.js +5 -0
- package/x/core/port/utils/wipe_samples_map.js.map +1 -0
- package/x/{station → core}/testing/testing.d.ts +8 -8
- package/x/core/testing/testing.js +42 -0
- package/x/core/testing/testing.js.map +1 -0
- package/x/demo/main.bundle.js +2 -2
- package/x/demo/main.bundle.js.map +1 -1
- package/x/demo/main.bundle.min.js +1 -1
- package/x/demo/main.bundle.min.js.map +4 -4
- package/x/index.d.ts +1 -11
- package/x/index.html +3 -3
- package/x/index.js +1 -11
- package/x/index.js.map +1 -1
- package/x/nubs/stick/view.d.ts +2 -2
- package/x/nubs/stick/view.js.map +1 -1
- package/x/nubs/virtual-gamepad/view.d.ts +2 -2
- package/x/nubs/virtual-gamepad/view.js +5 -5
- package/x/nubs/virtual-gamepad/view.js.map +1 -1
- package/x/tests.test.js +2 -4
- package/x/tests.test.js.map +1 -1
- package/x/{station/utils/tmax.d.ts → utils/quick-math.d.ts} +1 -0
- package/x/utils/quick-math.js +11 -0
- package/x/utils/quick-math.js.map +1 -0
- package/s/station/devices/infra/device.ts +0 -7
- package/s/station/devices/infra/group.ts +0 -17
- package/s/station/parts/defaults.ts +0 -28
- package/s/station/parts/resolver.ts +0 -73
- package/s/station/parts/routines/aggregate_samples_into_map.ts +0 -20
- package/s/station/parts/routines/build_updatable_actions_structure.ts +0 -29
- package/s/station/station.test.ts +0 -86
- package/s/station/station.ts +0 -47
- package/s/station/switchboard.ts +0 -107
- package/s/station/testing/testing.ts +0 -47
- package/s/station/utils/tmax.ts +0 -7
- package/x/nubs/stick/device.js.map +0 -1
- package/x/nubs/virtual-gamepad/device.d.ts +0 -7
- package/x/nubs/virtual-gamepad/device.js.map +0 -1
- package/x/station/devices/gamepad.d.ts +0 -10
- package/x/station/devices/gamepad.js.map +0 -1
- package/x/station/devices/infra/device.d.ts +0 -4
- package/x/station/devices/infra/device.js +0 -3
- package/x/station/devices/infra/device.js.map +0 -1
- package/x/station/devices/infra/group.d.ts +0 -7
- package/x/station/devices/infra/group.js +0 -13
- package/x/station/devices/infra/group.js.map +0 -1
- package/x/station/devices/infra/sampler.d.ts +0 -8
- package/x/station/devices/infra/sampler.js.map +0 -1
- package/x/station/devices/keyboard.js.map +0 -1
- package/x/station/devices/pointer.js.map +0 -1
- package/x/station/parts/action.js.map +0 -1
- package/x/station/parts/defaults.d.ts +0 -5
- package/x/station/parts/defaults.js.map +0 -1
- package/x/station/parts/resolver.d.ts +0 -10
- package/x/station/parts/resolver.js +0 -63
- package/x/station/parts/resolver.js.map +0 -1
- package/x/station/parts/routines/aggregate_samples_into_map.d.ts +0 -3
- package/x/station/parts/routines/aggregate_samples_into_map.js +0 -11
- package/x/station/parts/routines/aggregate_samples_into_map.js.map +0 -1
- package/x/station/parts/routines/build_updatable_actions_structure.d.ts +0 -5
- package/x/station/parts/routines/build_updatable_actions_structure.js +0 -18
- package/x/station/parts/routines/build_updatable_actions_structure.js.map +0 -1
- package/x/station/parts/routines/lensing_algorithm.d.ts +0 -2
- package/x/station/parts/routines/lensing_algorithm.js.map +0 -1
- package/x/station/parts/switchboard-bindings.d.ts +0 -2
- package/x/station/parts/switchboard-bindings.js.map +0 -1
- package/x/station/station.d.ts +0 -15
- package/x/station/station.js +0 -35
- package/x/station/station.js.map +0 -1
- package/x/station/station.test.d.ts +0 -11
- package/x/station/station.test.js +0 -80
- package/x/station/station.test.js.map +0 -1
- package/x/station/switchboard.d.ts +0 -30
- package/x/station/switchboard.js +0 -90
- package/x/station/switchboard.js.map +0 -1
- package/x/station/testing/testing.js +0 -39
- package/x/station/testing/testing.js.map +0 -1
- package/x/station/types.js +0 -5
- package/x/station/types.js.map +0 -1
- package/x/station/utils/is-pressed.js.map +0 -1
- package/x/station/utils/modprefix.js.map +0 -1
- package/x/station/utils/tmax.js +0 -6
- package/x/station/utils/tmax.js.map +0 -1
- package/x/station/utils/tmin.d.ts +0 -1
- package/x/station/utils/tmin.js +0 -6
- package/x/station/utils/tmin.js.map +0 -1
- /package/s/{station → core/controllers}/utils/modprefix.ts +0 -0
- /package/s/{station → core/port}/utils/is-pressed.ts +0 -0
- /package/x/{station → core/controllers}/utils/modprefix.d.ts +0 -0
- /package/x/{station → core/controllers}/utils/modprefix.js +0 -0
- /package/x/{station → core/port}/utils/is-pressed.d.ts +0 -0
- /package/x/{station → core/port}/utils/is-pressed.js +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
|
|
2
|
+
import {Hub} from "../hub/hub.js"
|
|
3
|
+
import {Port} from "../port/port.js"
|
|
4
|
+
import {asBindings} from "../bindings/types.js"
|
|
5
|
+
import {hubBindings} from "../hub/bindings.js"
|
|
6
|
+
import {Controller} from "../controllers/controller.js"
|
|
7
|
+
import {SamplerController} from "../controllers/infra/sampler.js"
|
|
8
|
+
|
|
9
|
+
export class TestTime {
|
|
10
|
+
frame = 0
|
|
11
|
+
|
|
12
|
+
get now() {
|
|
13
|
+
return (this.frame++) * (1000 / 60)
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function testBindings() {
|
|
18
|
+
return asBindings({
|
|
19
|
+
basic: {
|
|
20
|
+
jump: [{lenses: [{code: "Space"}]}],
|
|
21
|
+
shoot: [{lenses: [{code: "pointer.button.left"}]}],
|
|
22
|
+
},
|
|
23
|
+
})
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function testConnect<C extends Controller>(switchboard: Hub<any>, controller: C) {
|
|
27
|
+
switchboard.plug(controller)
|
|
28
|
+
return controller
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function testSetupAlpha() {
|
|
32
|
+
const time = new TestTime()
|
|
33
|
+
const controller = new SamplerController()
|
|
34
|
+
const port = new Port(testBindings())
|
|
35
|
+
port.modes.add("basic")
|
|
36
|
+
port.controllers.add(controller)
|
|
37
|
+
return {controller, port, time}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function testSetupBravo() {
|
|
41
|
+
const time = new TestTime()
|
|
42
|
+
const port = () => {
|
|
43
|
+
const port = new Port(hubBindings(testBindings()))
|
|
44
|
+
port.modes.adds(Hub.mode, "basic")
|
|
45
|
+
return port
|
|
46
|
+
}
|
|
47
|
+
const hub = new Hub([port(), port(), port(), port()])
|
|
48
|
+
return {hub: hub, time}
|
|
49
|
+
}
|
|
50
|
+
|
package/s/demo/main.bundle.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
|
|
2
2
|
import {$, view} from "@e280/sly"
|
|
3
3
|
import {NubStick} from "../nubs/stick/view.js"
|
|
4
|
-
import {
|
|
4
|
+
import {StickController} from "../core/controllers/standard/stick.js"
|
|
5
5
|
|
|
6
6
|
$.register({
|
|
7
7
|
TactDemo: view.component(use => {
|
|
8
|
-
const stick = use.once(() => new
|
|
8
|
+
const stick = use.once(() => new StickController())
|
|
9
9
|
return NubStick(stick)
|
|
10
10
|
}),
|
|
11
11
|
})
|
package/s/index.ts
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./station/devices/infra/group.js"
|
|
4
|
-
export * from "./station/devices/infra/sampler.js"
|
|
5
|
-
export * from "./station/devices/gamepad.js"
|
|
6
|
-
export * from "./station/devices/keyboard.js"
|
|
7
|
-
export * from "./station/devices/pointer.js"
|
|
8
|
-
export * from "./station/parts/action.js"
|
|
9
|
-
export * from "./station/utils/modprefix.js"
|
|
10
|
-
export * from "./station/station.js"
|
|
11
|
-
export * from "./station/switchboard.js"
|
|
12
|
-
export * from "./station/types.js"
|
|
2
|
+
export * from "./core/index.js"
|
|
13
3
|
|
|
14
4
|
export * from "./utils/gamepads.js"
|
|
15
5
|
export * from "./utils/split-axis.js"
|
package/s/nubs/stick/view.ts
CHANGED
|
@@ -3,14 +3,14 @@ import {html} from "lit"
|
|
|
3
3
|
import {view} from "@e280/sly"
|
|
4
4
|
import {Vec2} from "@benev/math"
|
|
5
5
|
|
|
6
|
-
import {StickDevice} from "./device.js"
|
|
7
6
|
import {styles} from "./styles.js"
|
|
8
7
|
import {Basis} from "../stick-graphic/types/basis.js"
|
|
9
8
|
import {NubStickGraphic} from "../stick-graphic/view.js"
|
|
9
|
+
import {StickController} from "../../core/controllers/standard/stick.js"
|
|
10
10
|
import {make_pointer_listeners} from "./utils/make_pointer_listeners.js"
|
|
11
11
|
import {calculate_new_vector_from_pointer_position} from "./utils/calculate_new_vector_from_pointer_position.js"
|
|
12
12
|
|
|
13
|
-
export const NubStick = view(use => (stick:
|
|
13
|
+
export const NubStick = view(use => (stick: StickController) => {
|
|
14
14
|
use.name("nub-stick")
|
|
15
15
|
use.styles(styles)
|
|
16
16
|
|
|
@@ -6,12 +6,12 @@ import {ev, MapG} from "@e280/stz"
|
|
|
6
6
|
import stylesCss from "./styles.css.js"
|
|
7
7
|
|
|
8
8
|
import {NubStick} from "../stick/view.js"
|
|
9
|
-
import {VirtualGamepadDevice} from "./device.js"
|
|
10
9
|
import {GamepadInputs} from "./utils/gamepad-inputs.js"
|
|
11
10
|
import {touchTracking} from "./utils/touch-tracking.js"
|
|
11
|
+
import {VirtualGamepadController} from "../../core/controllers/standard/virtual-gamepad.js"
|
|
12
12
|
import {preventDefaultTouchShenanigans} from "./utils/prevent-default-touch-shenanigans.js"
|
|
13
13
|
|
|
14
|
-
export const VirtualGamepad = view(use => (
|
|
14
|
+
export const VirtualGamepad = view(use => (controller: VirtualGamepadController) => {
|
|
15
15
|
use.name("virtual-gamepad")
|
|
16
16
|
use.css(stylesCss)
|
|
17
17
|
|
|
@@ -38,11 +38,11 @@ export const VirtualGamepad = view(use => (device: VirtualGamepadDevice) => {
|
|
|
38
38
|
buttons,
|
|
39
39
|
touchdown: button => {
|
|
40
40
|
const code = codes.require(button)
|
|
41
|
-
|
|
41
|
+
controller.setSample(code, 1)
|
|
42
42
|
},
|
|
43
43
|
touchup: button => {
|
|
44
44
|
const code = codes.require(button)
|
|
45
|
-
|
|
45
|
+
controller.setSample(code, 0)
|
|
46
46
|
},
|
|
47
47
|
}))
|
|
48
48
|
|
|
@@ -123,7 +123,7 @@ export const VirtualGamepad = view(use => (device: VirtualGamepadDevice) => {
|
|
|
123
123
|
${renderDPad()}
|
|
124
124
|
${NubStick
|
|
125
125
|
.attr("class", "stick")
|
|
126
|
-
.props(
|
|
126
|
+
.props(controller.stickLeft)}
|
|
127
127
|
</div>
|
|
128
128
|
|
|
129
129
|
<div class="right side">
|
|
@@ -131,7 +131,7 @@ export const VirtualGamepad = view(use => (device: VirtualGamepadDevice) => {
|
|
|
131
131
|
${renderButtonPad()}
|
|
132
132
|
${NubStick
|
|
133
133
|
.attr("class", "stick")
|
|
134
|
-
.props(
|
|
134
|
+
.props(controller.stickRight)}
|
|
135
135
|
</div>
|
|
136
136
|
</div>
|
|
137
137
|
`
|
package/s/tests.test.ts
CHANGED
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
import { Action } from "./parts/action.js";
|
|
2
|
-
export type Actions<B extends Bindings> = {
|
|
3
|
-
[Mode in keyof B]: {
|
|
4
|
-
[K in keyof B[Mode]]: Action;
|
|
5
|
-
};
|
|
6
|
-
};
|
|
7
|
-
export type Sample = [code: string, value: number];
|
|
8
|
-
export type SampleMap = Map<string, number>;
|
|
9
1
|
export type Timing = (DirectTiming | TapTiming | HoldTiming);
|
|
10
2
|
export type DirectTiming = {
|
|
11
3
|
style: "direct";
|
|
@@ -28,10 +20,6 @@ export type Lens = {
|
|
|
28
20
|
code: string;
|
|
29
21
|
settings?: Partial<LensSettings>;
|
|
30
22
|
};
|
|
31
|
-
export type LensState = {
|
|
32
|
-
lastValue: number;
|
|
33
|
-
holdStart: number;
|
|
34
|
-
};
|
|
35
23
|
export type Spoon = {
|
|
36
24
|
lenses: Lens[];
|
|
37
25
|
required?: Lens[];
|
|
@@ -46,11 +34,11 @@ export type Bindings = {
|
|
|
46
34
|
};
|
|
47
35
|
export type AsBindings<B extends Bindings> = B;
|
|
48
36
|
export declare function asBindings<B extends Bindings>(bindings: B): B;
|
|
49
|
-
export declare const
|
|
50
|
-
export type
|
|
51
|
-
[
|
|
37
|
+
export declare const hubMode: "hub";
|
|
38
|
+
export type AsHubBindings<B extends Bindings> = {
|
|
39
|
+
[hubMode]: {
|
|
52
40
|
shimmyNext: Spoon[];
|
|
53
41
|
shimmyPrevious: Spoon[];
|
|
54
42
|
};
|
|
55
43
|
} & B;
|
|
56
|
-
export type
|
|
44
|
+
export type HubBindings = AsHubBindings<Bindings>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../s/core/bindings/types.ts"],"names":[],"mappings":"AAyCA,MAAM,UAAU,UAAU,CAAqB,QAAW;IACzD,OAAO,QAAQ,CAAA;AAChB,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,KAAc,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../s/core/controllers/controller.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,UAAU;CAE/B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SetG } from "@e280/stz";
|
|
2
|
+
import { Controller } from "../controller.js";
|
|
3
|
+
export declare class GroupController extends Controller {
|
|
4
|
+
controllers: SetG<Controller>;
|
|
5
|
+
constructor(...controllers: Controller[]);
|
|
6
|
+
takeSamples(): import("../types.js").Sample[];
|
|
7
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SetG } from "@e280/stz";
|
|
2
|
+
import { Controller } from "../controller.js";
|
|
3
|
+
export class GroupController extends Controller {
|
|
4
|
+
controllers = new SetG();
|
|
5
|
+
constructor(...controllers) {
|
|
6
|
+
super();
|
|
7
|
+
this.controllers.adds(...controllers);
|
|
8
|
+
}
|
|
9
|
+
takeSamples() {
|
|
10
|
+
return [...this.controllers].flatMap(controller => controller.takeSamples());
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.js","sourceRoot":"","sources":["../../../../s/core/controllers/infra/group.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAA;AAC9B,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAE3C,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC9C,WAAW,GAAG,IAAI,IAAI,EAAc,CAAA;IAEpC,YAAY,GAAG,WAAyB;QACvC,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAA;IACtC,CAAC;IAED,WAAW;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;IAC7E,CAAC;CACD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Controller } from "../controller.js";
|
|
2
|
+
import { Sample } from "../types.js";
|
|
3
|
+
export declare class SamplerController extends Controller {
|
|
4
|
+
#private;
|
|
5
|
+
on: import("@e280/stz").Sub<Sample>;
|
|
6
|
+
setSample(code: string, value: number): this;
|
|
7
|
+
takeSamples(): Sample[];
|
|
8
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { sub } from "@e280/stz";
|
|
2
|
-
import {
|
|
3
|
-
export class
|
|
2
|
+
import { Controller } from "../controller.js";
|
|
3
|
+
export class SamplerController extends Controller {
|
|
4
4
|
on = sub();
|
|
5
5
|
#map = new Map();
|
|
6
6
|
setSample(code, value) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sampler.js","sourceRoot":"","sources":["../../../../s/core/controllers/infra/sampler.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,GAAG,EAAC,MAAM,WAAW,CAAA;AAC7B,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAG3C,MAAM,OAAO,iBAAkB,SAAQ,UAAU;IAChD,EAAE,GAAG,GAAG,EAAU,CAAA;IAClB,IAAI,GAAc,IAAI,GAAG,EAAE,CAAA;IAE3B,SAAS,CAAC,IAAY,EAAE,KAAa;QACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC1B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,WAAW;QACV,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,OAAO,OAAO,CAAA;IACf,CAAC;CACD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SamplerController } from "../infra/sampler.js";
|
|
2
|
+
import { Pad } from "../../../utils/gamepads.js";
|
|
3
|
+
export declare class GamepadController extends SamplerController {
|
|
4
|
+
#private;
|
|
5
|
+
pad: Pad;
|
|
6
|
+
static on(fn: (controller: GamepadController) => () => void): () => void;
|
|
7
|
+
constructor(pad: Pad);
|
|
8
|
+
get gamepad(): Gamepad;
|
|
9
|
+
takeSamples(): import("../types.js").Sample[];
|
|
10
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { tmax } from "
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { gamepads } from "
|
|
1
|
+
import { tmax } from "../../../utils/quick-math.js";
|
|
2
|
+
import { splitAxis } from "../../../utils/split-axis.js";
|
|
3
|
+
import { SamplerController } from "../infra/sampler.js";
|
|
4
|
+
import { gamepads } from "../../../utils/gamepads.js";
|
|
5
5
|
const gamepadButtonCodes = [
|
|
6
6
|
"gamepad.a",
|
|
7
7
|
"gamepad.b",
|
|
@@ -21,7 +21,7 @@ const gamepadButtonCodes = [
|
|
|
21
21
|
"gamepad.right",
|
|
22
22
|
"gamepad.gamma",
|
|
23
23
|
];
|
|
24
|
-
export class
|
|
24
|
+
export class GamepadController extends SamplerController {
|
|
25
25
|
pad;
|
|
26
26
|
static on(fn) {
|
|
27
27
|
return gamepads(pad => fn(new this(pad)));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gamepad.js","sourceRoot":"","sources":["../../../../s/core/controllers/standard/gamepad.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../s/core/controllers/standard/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,sBAAsB,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Sample } from "../types.js";
|
|
2
|
-
import {
|
|
3
|
-
export declare class
|
|
2
|
+
import { Controller } from "../controller.js";
|
|
3
|
+
export declare class KeyboardController extends Controller {
|
|
4
4
|
#private;
|
|
5
5
|
on: import("@e280/stz").Sub<Sample>;
|
|
6
6
|
dispose: () => void;
|
|
7
|
-
constructor(target
|
|
7
|
+
constructor(target?: EventTarget);
|
|
8
8
|
takeSamples(): Sample[];
|
|
9
9
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { coalesce, ev, sub } from "@e280/stz";
|
|
2
|
-
import {
|
|
2
|
+
import { Controller } from "../controller.js";
|
|
3
3
|
import { modprefix } from "../utils/modprefix.js";
|
|
4
|
-
export class
|
|
4
|
+
export class KeyboardController extends Controller {
|
|
5
5
|
on = sub();
|
|
6
6
|
dispose;
|
|
7
7
|
#held = new Set();
|
|
8
|
-
constructor(target) {
|
|
8
|
+
constructor(target = window) {
|
|
9
9
|
super();
|
|
10
10
|
const down = (code) => {
|
|
11
11
|
this.#held.add(code);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../../../s/core/controllers/standard/keyboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAC,MAAM,WAAW,CAAA;AAE3C,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAA;AAE/C,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IACjD,EAAE,GAAG,GAAG,EAAU,CAAA;IAClB,OAAO,CAAY;IACnB,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAEzB,YAAY,SAAsB,MAAM;QACvC,KAAK,EAAE,CAAA;QAEP,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;YAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACpB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACrB,CAAC,CAAA;QAED,MAAM,EAAE,GAAG,CAAC,IAAY,EAAE,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACvB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QACrB,CAAC,CAAA;QAED,IAAI,CAAC,OAAO,GAAG,QAAQ,CACtB,EAAE,CAAC,MAAM,EAAE;YACV,OAAO,EAAE,CAAC,KAAoB,EAAE,EAAE;gBACjC,IAAI,KAAK,CAAC,MAAM;oBAAE,OAAM;gBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAChB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YACnC,CAAC;YACD,KAAK,EAAE,CAAC,KAAoB,EAAE,EAAE;gBAC/B,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACd,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YACjC,CAAC;SACD,CAAC,EAEF,EAAE,CAAC,MAAM,EAAE;YACV,IAAI,EAAE,GAAG,EAAE;gBACV,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;oBAC5B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBACrB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;YACnB,CAAC;SACD,CAAC,CACF,CAAA;IACF,CAAC;IAED,WAAW;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;aACpB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAW,CAAC,CAAA;IACnC,CAAC;CACD"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Vec2 } from "@benev/math";
|
|
2
|
-
import {
|
|
3
|
-
export declare class
|
|
2
|
+
import { SamplerController } from "../infra/sampler.js";
|
|
3
|
+
export declare class PointerController extends SamplerController {
|
|
4
4
|
client: Vec2;
|
|
5
5
|
movement: Vec2;
|
|
6
6
|
dispose: () => void;
|
|
7
|
+
constructor(target?: EventTarget);
|
|
7
8
|
static buttonCode(event: PointerEvent): string;
|
|
8
9
|
static wheelCodes(event: WheelEvent): [string, number][];
|
|
9
|
-
constructor(target: EventTarget);
|
|
10
10
|
takeSamples(): import("../types.js").Sample[];
|
|
11
11
|
}
|
|
@@ -1,35 +1,13 @@
|
|
|
1
1
|
import { ev } from "@e280/stz";
|
|
2
2
|
import { Vec2 } from "@benev/math";
|
|
3
3
|
import { modprefix } from "../utils/modprefix.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
export class
|
|
4
|
+
import { splitAxis } from "../../../utils/split-axis.js";
|
|
5
|
+
import { SamplerController } from "../infra/sampler.js";
|
|
6
|
+
export class PointerController extends SamplerController {
|
|
7
7
|
client = new Vec2(0, 0);
|
|
8
8
|
movement = new Vec2(0, 0);
|
|
9
9
|
dispose;
|
|
10
|
-
|
|
11
|
-
switch (event.button) {
|
|
12
|
-
case 0: return "pointer.button.left";
|
|
13
|
-
case 1: return "pointer.button.middle";
|
|
14
|
-
case 2: return "pointer.button.right";
|
|
15
|
-
default: return `pointer.button.${event.button + 1}`;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
static wheelCodes(event) {
|
|
19
|
-
const movements = [];
|
|
20
|
-
if (event.deltaX)
|
|
21
|
-
movements.push([
|
|
22
|
-
event.deltaX > 0 ? "pointer.wheel.right" : "pointer.wheel.left",
|
|
23
|
-
event.deltaX,
|
|
24
|
-
]);
|
|
25
|
-
if (event.deltaY)
|
|
26
|
-
movements.push([
|
|
27
|
-
event.deltaY > 0 ? "pointer.wheel.down" : "pointer.wheel.up",
|
|
28
|
-
event.deltaY,
|
|
29
|
-
]);
|
|
30
|
-
return movements;
|
|
31
|
-
}
|
|
32
|
-
constructor(target) {
|
|
10
|
+
constructor(target = window) {
|
|
33
11
|
super();
|
|
34
12
|
const dispatch = (event, code, value) => {
|
|
35
13
|
this.setSample(code, value);
|
|
@@ -37,11 +15,11 @@ export class PointerDevice extends SamplerDevice {
|
|
|
37
15
|
};
|
|
38
16
|
this.dispose = ev(target, {
|
|
39
17
|
pointerdown: (event) => {
|
|
40
|
-
const code =
|
|
18
|
+
const code = PointerController.buttonCode(event);
|
|
41
19
|
dispatch(event, code, 1);
|
|
42
20
|
},
|
|
43
21
|
pointerup: (event) => {
|
|
44
|
-
const code =
|
|
22
|
+
const code = PointerController.buttonCode(event);
|
|
45
23
|
dispatch(event, code, 0);
|
|
46
24
|
},
|
|
47
25
|
pointermove: (event) => {
|
|
@@ -51,11 +29,33 @@ export class PointerDevice extends SamplerDevice {
|
|
|
51
29
|
this.movement.y += event.movementY;
|
|
52
30
|
},
|
|
53
31
|
wheel: (event) => {
|
|
54
|
-
for (const [code, value] of
|
|
32
|
+
for (const [code, value] of PointerController.wheelCodes(event))
|
|
55
33
|
dispatch(event, code, value);
|
|
56
34
|
},
|
|
57
35
|
});
|
|
58
36
|
}
|
|
37
|
+
static buttonCode(event) {
|
|
38
|
+
switch (event.button) {
|
|
39
|
+
case 0: return "pointer.button.left";
|
|
40
|
+
case 1: return "pointer.button.middle";
|
|
41
|
+
case 2: return "pointer.button.right";
|
|
42
|
+
default: return `pointer.button.${event.button + 1}`;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
static wheelCodes(event) {
|
|
46
|
+
const movements = [];
|
|
47
|
+
if (event.deltaX)
|
|
48
|
+
movements.push([
|
|
49
|
+
event.deltaX > 0 ? "pointer.wheel.right" : "pointer.wheel.left",
|
|
50
|
+
event.deltaX,
|
|
51
|
+
]);
|
|
52
|
+
if (event.deltaY)
|
|
53
|
+
movements.push([
|
|
54
|
+
event.deltaY > 0 ? "pointer.wheel.down" : "pointer.wheel.up",
|
|
55
|
+
event.deltaY,
|
|
56
|
+
]);
|
|
57
|
+
return movements;
|
|
58
|
+
}
|
|
59
59
|
takeSamples() {
|
|
60
60
|
const [x, y] = this.movement;
|
|
61
61
|
const [left, right] = splitAxis(x);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pointer.js","sourceRoot":"","sources":["../../../../s/core/controllers/standard/pointer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Vec2 } from "@benev/math";
|
|
2
2
|
import { Disposable } from "@e280/stz";
|
|
3
|
-
import {
|
|
4
|
-
export declare class
|
|
3
|
+
import { SamplerController } from "../infra/sampler.js";
|
|
4
|
+
export declare class StickController extends SamplerController implements Disposable {
|
|
5
5
|
channel: string;
|
|
6
6
|
vector: import("@e280/strata").Signal<Vec2>;
|
|
7
7
|
dispose: () => void;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Vec2 } from "@benev/math";
|
|
2
2
|
import { signal } from "@e280/strata";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
export class
|
|
3
|
+
import { SamplerController } from "../infra/sampler.js";
|
|
4
|
+
import { splitAxis } from "../../../utils/split-axis.js";
|
|
5
|
+
export class StickController extends SamplerController {
|
|
6
6
|
channel;
|
|
7
7
|
vector = signal(Vec2.zero());
|
|
8
8
|
dispose;
|
|
@@ -24,4 +24,4 @@ export class StickDevice extends SamplerDevice {
|
|
|
24
24
|
return { up, down, left, right };
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
//# sourceMappingURL=
|
|
27
|
+
//# sourceMappingURL=stick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stick.js","sourceRoot":"","sources":["../../../../s/core/controllers/standard/stick.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAChC,OAAO,EAAC,MAAM,EAAC,MAAM,cAAc,CAAA;AAEnC,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAC,SAAS,EAAC,MAAM,8BAA8B,CAAA;AAEtD,MAAM,OAAO,eAAgB,SAAQ,iBAAiB;IAIlC;IAHnB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5B,OAAO,CAAY;IAEnB,YAAmB,UAAU,OAAO;QACnC,KAAK,EAAE,CAAA;QADW,YAAO,GAAP,OAAO,CAAU;QAEnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE;YAClC,MAAM,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;YAChD,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,KAAK,EAAE,EAAE,CAAC,CAAA;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,OAAO,EAAE,IAAI,CAAC,CAAA;YACvC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,OAAO,EAAE,IAAI,CAAC,CAAA;YACvC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,QAAQ,EAAE,KAAK,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACH,CAAC;IAED,SAAS;QACR,MAAM,EAAC,CAAC,EAAE,CAAC,EAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAChC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;QAClC,OAAO,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,CAAA;IAC/B,CAAC;CACD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StickController } from "./stick.js";
|
|
2
|
+
import { SamplerController } from "../infra/sampler.js";
|
|
3
|
+
export declare class VirtualGamepadController extends SamplerController {
|
|
4
|
+
stickLeft: StickController;
|
|
5
|
+
stickRight: StickController;
|
|
6
|
+
takeSamples(): import("../types.js").Sample[];
|
|
7
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
export class
|
|
4
|
-
stickLeft = new
|
|
5
|
-
stickRight = new
|
|
1
|
+
import { StickController } from "./stick.js";
|
|
2
|
+
import { SamplerController } from "../infra/sampler.js";
|
|
3
|
+
export class VirtualGamepadController extends SamplerController {
|
|
4
|
+
stickLeft = new StickController();
|
|
5
|
+
stickRight = new StickController();
|
|
6
6
|
takeSamples() {
|
|
7
7
|
const left = this.stickLeft.breakdown();
|
|
8
8
|
this.setSample("gamepad.stick.left.up", left.up);
|
|
@@ -17,4 +17,4 @@ export class VirtualGamepadDevice extends SamplerDevice {
|
|
|
17
17
|
return super.takeSamples();
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
//# sourceMappingURL=
|
|
20
|
+
//# sourceMappingURL=virtual-gamepad.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-gamepad.js","sourceRoot":"","sources":["../../../../s/core/controllers/standard/virtual-gamepad.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAErD,MAAM,OAAO,wBAAyB,SAAQ,iBAAiB;IAC9D,SAAS,GAAG,IAAI,eAAe,EAAE,CAAA;IACjC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IAElC,WAAW;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAA;QACvC,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAChD,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACpD,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QAEtD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAA;QACzC,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,CAAA;QAClD,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACtD,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACtD,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QAExD,OAAO,KAAK,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../s/core/controllers/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modprefix.js","sourceRoot":"","sources":["../../../../s/core/controllers/utils/modprefix.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,SAAS,CAAC,KAAgD,EAAE,IAAY;IACvF,MAAM,SAAS,GAAa,EAAE,CAAA;IAE9B,IAAI,KAAK,CAAC,OAAO;QAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,KAAK,CAAC,MAAM;QAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,IAAI,KAAK,CAAC,OAAO;QAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,KAAK,CAAC,QAAQ;QAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE3C,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;QAClC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1B,CAAC,CAAC,GAAG,CAAA;IAEN,OAAO,GAAG,MAAM,IAAI,IAAI,EAAE,CAAA;AAC3B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Science } from "@e280/science";
|
|
2
|
+
declare const _default: {
|
|
3
|
+
"sample to action value": Science.Test;
|
|
4
|
+
hub: {
|
|
5
|
+
"controller inputs work": Science.Test;
|
|
6
|
+
"two controllers playing on separate ports": Science.Test;
|
|
7
|
+
"controller can shimmy": Science.Test;
|
|
8
|
+
"two controllers can share a port": Science.Test;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|