@iwsdk/core 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/dist/camera/camera-system.d.ts +2 -1
  2. package/dist/camera/camera-system.d.ts.map +1 -1
  3. package/dist/camera/camera-system.js +6 -6
  4. package/dist/camera/camera-system.js.map +1 -1
  5. package/dist/depth/depth-sensing-system.d.ts +2 -0
  6. package/dist/depth/depth-sensing-system.d.ts.map +1 -1
  7. package/dist/depth/depth-sensing-system.js +18 -16
  8. package/dist/depth/depth-sensing-system.js.map +1 -1
  9. package/dist/ecs/system.d.ts +5 -2
  10. package/dist/ecs/system.d.ts.map +1 -1
  11. package/dist/ecs/system.js +2 -0
  12. package/dist/ecs/system.js.map +1 -1
  13. package/dist/ecs/world.d.ts +26 -4
  14. package/dist/ecs/world.d.ts.map +1 -1
  15. package/dist/ecs/world.js +2 -2
  16. package/dist/ecs/world.js.map +1 -1
  17. package/dist/environment-raycast/environment-raycast.js +2 -2
  18. package/dist/environment-raycast/environment-raycast.js.map +1 -1
  19. package/dist/grab/grab-system.d.ts.map +1 -1
  20. package/dist/grab/grab-system.js +20 -7
  21. package/dist/grab/grab-system.js.map +1 -1
  22. package/dist/grab/grabbed.d.ts +21 -0
  23. package/dist/grab/grabbed.d.ts.map +1 -0
  24. package/dist/grab/grabbed.js +29 -0
  25. package/dist/grab/grabbed.js.map +1 -0
  26. package/dist/grab/index.d.ts +1 -0
  27. package/dist/grab/index.d.ts.map +1 -1
  28. package/dist/grab/index.js +1 -0
  29. package/dist/grab/index.js.map +1 -1
  30. package/dist/index.d.ts +1 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +10 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/init/player-camera.d.ts +9 -0
  35. package/dist/init/player-camera.d.ts.map +1 -0
  36. package/dist/init/player-camera.js +14 -0
  37. package/dist/init/player-camera.js.map +1 -0
  38. package/dist/init/world-initializer.d.ts +30 -4
  39. package/dist/init/world-initializer.d.ts.map +1 -1
  40. package/dist/init/world-initializer.js +114 -24
  41. package/dist/init/world-initializer.js.map +1 -1
  42. package/dist/init/xr.d.ts.map +1 -1
  43. package/dist/init/xr.js +1 -0
  44. package/dist/init/xr.js.map +1 -1
  45. package/dist/input/canvas-pointer-system.d.ts +38 -0
  46. package/dist/input/canvas-pointer-system.d.ts.map +1 -0
  47. package/dist/input/canvas-pointer-system.js +47 -0
  48. package/dist/input/canvas-pointer-system.js.map +1 -0
  49. package/dist/input/index.d.ts +5 -0
  50. package/dist/input/index.d.ts.map +1 -1
  51. package/dist/input/input-actions.d.ts +139 -0
  52. package/dist/input/input-actions.d.ts.map +1 -0
  53. package/dist/input/input-actions.js +357 -0
  54. package/dist/input/input-actions.js.map +1 -0
  55. package/dist/input/input-manager.d.ts +56 -0
  56. package/dist/input/input-manager.d.ts.map +1 -0
  57. package/dist/input/input-manager.js +89 -0
  58. package/dist/input/input-manager.js.map +1 -0
  59. package/dist/input/input-system.d.ts +149 -137
  60. package/dist/input/input-system.d.ts.map +1 -1
  61. package/dist/input/input-system.js +30 -66
  62. package/dist/input/input-system.js.map +1 -1
  63. package/dist/input/stateful-browser-gamepad.d.ts +40 -0
  64. package/dist/input/stateful-browser-gamepad.d.ts.map +1 -0
  65. package/dist/input/stateful-browser-gamepad.js +139 -0
  66. package/dist/input/stateful-browser-gamepad.js.map +1 -0
  67. package/dist/input/stateful-keyboard.d.ts +23 -0
  68. package/dist/input/stateful-keyboard.d.ts.map +1 -0
  69. package/dist/input/stateful-keyboard.js +63 -0
  70. package/dist/input/stateful-keyboard.js.map +1 -0
  71. package/dist/layers/index.d.ts +10 -0
  72. package/dist/layers/index.d.ts.map +1 -0
  73. package/dist/layers/xr-cylinder-layer.d.ts +62 -0
  74. package/dist/layers/xr-cylinder-layer.d.ts.map +1 -0
  75. package/dist/layers/xr-cylinder-layer.js +48 -0
  76. package/dist/layers/xr-cylinder-layer.js.map +1 -0
  77. package/dist/layers/xr-layer-system.d.ts +296 -0
  78. package/dist/layers/xr-layer-system.d.ts.map +1 -0
  79. package/dist/layers/xr-layer-system.js +378 -0
  80. package/dist/layers/xr-layer-system.js.map +1 -0
  81. package/dist/layers/xr-quad-layer.d.ts +57 -0
  82. package/dist/layers/xr-quad-layer.d.ts.map +1 -0
  83. package/dist/layers/xr-quad-layer.js +46 -0
  84. package/dist/layers/xr-quad-layer.js.map +1 -0
  85. package/dist/locomotion/index.d.ts +1 -0
  86. package/dist/locomotion/index.d.ts.map +1 -1
  87. package/dist/locomotion/locomotion-input-provider.d.ts +39 -0
  88. package/dist/locomotion/locomotion-input-provider.d.ts.map +1 -0
  89. package/dist/locomotion/locomotion-input-provider.js +109 -0
  90. package/dist/locomotion/locomotion-input-provider.js.map +1 -0
  91. package/dist/locomotion/locomotion.d.ts +11 -11
  92. package/dist/locomotion/locomotion.d.ts.map +1 -1
  93. package/dist/locomotion/locomotion.js +10 -10
  94. package/dist/locomotion/locomotion.js.map +1 -1
  95. package/dist/locomotion/slide.d.ts +12 -12
  96. package/dist/locomotion/slide.d.ts.map +1 -1
  97. package/dist/locomotion/slide.js +11 -15
  98. package/dist/locomotion/slide.js.map +1 -1
  99. package/dist/locomotion/teleport.d.ts +11 -1
  100. package/dist/locomotion/teleport.d.ts.map +1 -1
  101. package/dist/locomotion/teleport.js +10 -30
  102. package/dist/locomotion/teleport.js.map +1 -1
  103. package/dist/locomotion/turn.d.ts +11 -0
  104. package/dist/locomotion/turn.d.ts.map +1 -1
  105. package/dist/locomotion/turn.js +14 -25
  106. package/dist/locomotion/turn.js.map +1 -1
  107. package/dist/mcp/ecs-debug-tools.d.ts.map +1 -1
  108. package/dist/mcp/ecs-debug-tools.js +20 -13
  109. package/dist/mcp/ecs-debug-tools.js.map +1 -1
  110. package/dist/physics/physics-system.d.ts.map +1 -1
  111. package/dist/physics/physics-system.js +2 -2
  112. package/dist/ui/ui.d.ts +5 -18
  113. package/dist/ui/ui.d.ts.map +1 -1
  114. package/dist/ui/ui.js +6 -25
  115. package/dist/ui/ui.js.map +1 -1
  116. package/dist/version.d.ts +1 -1
  117. package/dist/version.js +1 -1
  118. package/package.json +5 -5
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { Types } from '../ecs/index.js';
8
+ declare const CanvasPointerSystem_base: import("elics").SystemConstructor<{
9
+ /** Forward DOM pointer events from the renderer canvas into the Three scene. */
10
+ enabled: {
11
+ type: Types.Boolean;
12
+ default: true;
13
+ };
14
+ /** Continue forwarding pointer events while an immersive XR session is active. */
15
+ activeDuringXR: {
16
+ type: Types.Boolean;
17
+ default: false;
18
+ };
19
+ }, {}, import("../ecs/world.js").World, import("../ecs/system.js").System<{
20
+ /** Forward DOM pointer events from the renderer canvas into the Three scene. */
21
+ enabled: {
22
+ type: Types.Boolean;
23
+ default: true;
24
+ };
25
+ /** Continue forwarding pointer events while an immersive XR session is active. */
26
+ activeDuringXR: {
27
+ type: Types.Boolean;
28
+ default: false;
29
+ };
30
+ }, {}>>;
31
+ export declare class CanvasPointerSystem extends CanvasPointerSystem_base {
32
+ private htmlHandler?;
33
+ init(): void;
34
+ update(): void;
35
+ destroy(): void;
36
+ }
37
+ export {};
38
+ //# sourceMappingURL=canvas-pointer-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-pointer-system.d.ts","sourceRoot":"","sources":["../../src/input/canvas-pointer-system.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,EAAgB,MAAM,iBAAiB,CAAC;;IAKlD,gFAAgF;;;;;IAEhF,kFAAkF;;;;;;IAFlF,gFAAgF;;;;;IAEhF,kFAAkF;;;;;;AALtF,qBAAa,mBAAoB,SAAQ,wBAQxC;IACC,OAAO,CAAC,WAAW,CAAC,CAGlB;IAEF,IAAI,IAAI,IAAI;IAeZ,MAAM,IAAI,IAAI;IAUd,OAAO,IAAI,IAAI;CAKhB"}
@@ -0,0 +1,47 @@
1
+ import { forwardHtmlEvents } from '@pmndrs/pointer-events';
2
+ import { createSystem } from '../ecs/system.js';
3
+ import '../ecs/world.js';
4
+ import { Types } from 'elics';
5
+ import '../ecs/entity.js';
6
+ import '../ecs/component-registry.js';
7
+
8
+ /**
9
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
10
+ *
11
+ * This source code is licensed under the MIT license found in the
12
+ * LICENSE file in the root directory of this source tree.
13
+ */
14
+ class CanvasPointerSystem extends createSystem({}, {
15
+ /** Forward DOM pointer events from the renderer canvas into the Three scene. */
16
+ enabled: { type: Types.Boolean, default: true },
17
+ /** Continue forwarding pointer events while an immersive XR session is active. */
18
+ activeDuringXR: { type: Types.Boolean, default: false },
19
+ }) {
20
+ init() {
21
+ this.cleanupFuncs.push(this.config.enabled.subscribe((enabled) => {
22
+ var _a;
23
+ (_a = this.htmlHandler) === null || _a === void 0 ? void 0 : _a.destroy();
24
+ this.htmlHandler = enabled
25
+ ? forwardHtmlEvents(this.renderer.domElement, () => this.camera, this.scene)
26
+ : undefined;
27
+ }));
28
+ }
29
+ update() {
30
+ if (!this.htmlHandler) {
31
+ return;
32
+ }
33
+ if (this.world.session && !this.config.activeDuringXR.value) {
34
+ return;
35
+ }
36
+ this.htmlHandler.update();
37
+ }
38
+ destroy() {
39
+ var _a;
40
+ super.destroy();
41
+ (_a = this.htmlHandler) === null || _a === void 0 ? void 0 : _a.destroy();
42
+ this.htmlHandler = undefined;
43
+ }
44
+ }
45
+
46
+ export { CanvasPointerSystem };
47
+ //# sourceMappingURL=canvas-pointer-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas-pointer-system.js","sources":["../../src/input/canvas-pointer-system.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;AAAA;;;;;AAKG;MAKU,mBAAoB,SAAQ,YAAY,CACnD,EAAE,EACF;;IAEE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;IAE/C,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CACxD,CACF,CAAA;IAMC,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;;AACxC,YAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,OAAO,EAAE;YAC3B,IAAI,CAAC,WAAW,GAAG;AACjB,kBAAE,iBAAiB,CACf,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,MAAM,IAAI,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK;kBAEZ,SAAS;QACf,CAAC,CAAC,CACH;IACH;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB;QACF;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE;YAC3D;QACF;AACA,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;IAC3B;IAEA,OAAO,GAAA;;QACL,KAAK,CAAC,OAAO,EAAE;AACf,QAAA,CAAA,EAAA,GAAA,IAAI,CAAC,WAAW,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,OAAO,EAAE;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;IAC9B;AACD;;;;"}
@@ -5,5 +5,10 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
7
  export * from './input-system.js';
8
+ export * from './input-manager.js';
9
+ export * from './input-actions.js';
10
+ export * from './canvas-pointer-system.js';
11
+ export * from './stateful-keyboard.js';
12
+ export * from './stateful-browser-gamepad.js';
8
13
  export * from './state-tags.js';
9
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/input/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { AxesState, InputComponent, type XRInputManager } from '@iwsdk/xr-input';
8
+ import { BrowserGamepadAxis, BrowserGamepadButton, StatefulBrowserGamepad } from './stateful-browser-gamepad.js';
9
+ import { StatefulKeyboard } from './stateful-keyboard.js';
10
+ export declare const InputActions: {
11
+ readonly LocomotionMove: "locomotion.move";
12
+ readonly LocomotionTurn: "locomotion.turn";
13
+ readonly LocomotionJump: "locomotion.jump";
14
+ readonly LocomotionTeleportAim: "locomotion.teleportAim";
15
+ readonly LocomotionTeleportCommit: "locomotion.teleportCommit";
16
+ readonly InteractionSelect: "interaction.select";
17
+ };
18
+ export type InputActionName = (typeof InputActions)[keyof typeof InputActions] | (string & {});
19
+ export type InputActionProfile = 'xr' | 'browser-first-person';
20
+ export type InputActionDefaultBindingOptions = {
21
+ keyboard?: boolean;
22
+ gamepad?: boolean;
23
+ };
24
+ type AxisKeyBinding = {
25
+ source: 'keyboard';
26
+ action: InputActionName;
27
+ kind: 'axis2d';
28
+ negativeX?: string[];
29
+ positiveX?: string[];
30
+ negativeY?: string[];
31
+ positiveY?: string[];
32
+ };
33
+ type KeyboardButtonBinding = {
34
+ source: 'keyboard';
35
+ action: InputActionName;
36
+ kind: 'button';
37
+ code: string;
38
+ };
39
+ type BrowserGamepadAxis2DBinding = {
40
+ source: 'browserGamepad';
41
+ action: InputActionName;
42
+ kind: 'axis2d';
43
+ gamepadIndex?: number;
44
+ axis: BrowserGamepadAxis;
45
+ };
46
+ type BrowserGamepadAxis1DBinding = {
47
+ source: 'browserGamepad';
48
+ action: InputActionName;
49
+ kind: 'axis1d';
50
+ gamepadIndex?: number;
51
+ axis: BrowserGamepadAxis;
52
+ component?: 'x' | 'y';
53
+ };
54
+ type BrowserGamepadButtonBinding = {
55
+ source: 'browserGamepad';
56
+ action: InputActionName;
57
+ kind: 'button';
58
+ gamepadIndex?: number;
59
+ button: BrowserGamepadButton;
60
+ };
61
+ type XRGamepadAxis2DBinding = {
62
+ source: 'xrGamepad';
63
+ action: InputActionName;
64
+ kind: 'axis2d';
65
+ handedness: 'left' | 'right';
66
+ componentId: InputComponent;
67
+ };
68
+ type XRGamepadAxis1DBinding = {
69
+ source: 'xrGamepad';
70
+ action: InputActionName;
71
+ kind: 'axis1d';
72
+ handedness: 'left' | 'right';
73
+ componentId: InputComponent;
74
+ component?: 'x' | 'y';
75
+ };
76
+ type XRGamepadButtonBinding = {
77
+ source: 'xrGamepad';
78
+ action: InputActionName;
79
+ kind: 'button';
80
+ handedness: 'left' | 'right';
81
+ button: InputComponent;
82
+ };
83
+ type XRGamepadAxesDirectionBinding = {
84
+ source: 'xrGamepadAxesDirection';
85
+ action: InputActionName;
86
+ kind: 'button';
87
+ handedness: 'left' | 'right';
88
+ componentId: InputComponent;
89
+ state: AxesState;
90
+ };
91
+ export type InputActionBinding = AxisKeyBinding | KeyboardButtonBinding | BrowserGamepadAxis2DBinding | BrowserGamepadAxis1DBinding | BrowserGamepadButtonBinding | XRGamepadAxis2DBinding | XRGamepadAxis1DBinding | XRGamepadButtonBinding | XRGamepadAxesDirectionBinding;
92
+ export type InputActionContext = {
93
+ keyboard: StatefulKeyboard;
94
+ browserGamepads: Array<StatefulBrowserGamepad | undefined>;
95
+ xr: XRInputManager;
96
+ };
97
+ export declare class InputActionManager {
98
+ private readonly bindings;
99
+ private readonly buttonStates;
100
+ private readonly axis1DStates;
101
+ private readonly axis2DStates;
102
+ constructor();
103
+ enableDefaultBindings(profile: InputActionProfile, options?: InputActionDefaultBindingOptions): void;
104
+ clearBindings(action?: InputActionName): void;
105
+ addBinding(binding: InputActionBinding): void;
106
+ addBindings(bindings: InputActionBinding[]): void;
107
+ removeBinding(binding: InputActionBinding): boolean;
108
+ getBindings(action?: InputActionName): InputActionBinding[];
109
+ update(context: InputActionContext): void;
110
+ getButtonPressed(action: InputActionName): boolean;
111
+ getButtonDown(action: InputActionName): boolean;
112
+ getButtonUp(action: InputActionName): boolean;
113
+ getAxis1D(action: InputActionName): number;
114
+ getAxis1DEnteringPositive(action: InputActionName, threshold?: number): boolean;
115
+ getAxis1DEnteringNegative(action: InputActionName, threshold?: number): boolean;
116
+ getAxis2D(action: InputActionName, out?: {
117
+ x: number;
118
+ y: number;
119
+ }): {
120
+ x: number;
121
+ y: number;
122
+ };
123
+ private prepareFrame;
124
+ private applyAxis2DBinding;
125
+ private applyAxis1DBinding;
126
+ private applyButtonBinding;
127
+ private getAxesValues;
128
+ private getBindingButtonPressed;
129
+ private getBindingButtonDown;
130
+ private getBindingButtonUp;
131
+ private getBrowserGamepad;
132
+ private getButtonState;
133
+ private getAxis1DState;
134
+ private getAxis2DState;
135
+ private createDefaultBindings;
136
+ private createBrowserFirstPersonBindings;
137
+ }
138
+ export {};
139
+ //# sourceMappingURL=input-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-actions.d.ts","sourceRoot":"","sources":["../../src/input/input-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,357 @@
1
+ import { InputComponent, AxesState } from '@iwsdk/xr-input';
2
+ import { BrowserGamepadAxis, BrowserGamepadButton } from './stateful-browser-gamepad.js';
3
+
4
+ /**
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+ const InputActions = {
11
+ LocomotionMove: 'locomotion.move',
12
+ LocomotionTurn: 'locomotion.turn',
13
+ LocomotionJump: 'locomotion.jump',
14
+ LocomotionTeleportAim: 'locomotion.teleportAim',
15
+ LocomotionTeleportCommit: 'locomotion.teleportCommit',
16
+ InteractionSelect: 'interaction.select',
17
+ };
18
+ const DEFAULT_THRESHOLD = 0.8;
19
+ function clamp(value, min = -1, max = 1) {
20
+ return Math.min(max, Math.max(min, value));
21
+ }
22
+ function anyKeyPressed(keyboard, codes) {
23
+ return !!(codes === null || codes === void 0 ? void 0 : codes.some((code) => keyboard.getKeyPressed(code)));
24
+ }
25
+ class InputActionManager {
26
+ constructor() {
27
+ this.bindings = [];
28
+ this.buttonStates = new Map();
29
+ this.axis1DStates = new Map();
30
+ this.axis2DStates = new Map();
31
+ this.enableDefaultBindings('xr');
32
+ }
33
+ enableDefaultBindings(profile, options = {}) {
34
+ const bindings = this.createDefaultBindings(profile, options);
35
+ for (const binding of bindings) {
36
+ if (!this.bindings.some((existing) => bindingsEqual(existing, binding))) {
37
+ this.bindings.push(binding);
38
+ }
39
+ }
40
+ }
41
+ clearBindings(action) {
42
+ if (!action) {
43
+ this.bindings.length = 0;
44
+ return;
45
+ }
46
+ for (let index = this.bindings.length - 1; index >= 0; index--) {
47
+ if (this.bindings[index].action === action) {
48
+ this.bindings.splice(index, 1);
49
+ }
50
+ }
51
+ }
52
+ addBinding(binding) {
53
+ this.bindings.push(binding);
54
+ }
55
+ addBindings(bindings) {
56
+ this.bindings.push(...bindings);
57
+ }
58
+ removeBinding(binding) {
59
+ const index = this.bindings.findIndex((existing) => bindingsEqual(existing, binding));
60
+ if (index === -1) {
61
+ return false;
62
+ }
63
+ this.bindings.splice(index, 1);
64
+ return true;
65
+ }
66
+ getBindings(action) {
67
+ return this.bindings
68
+ .filter((binding) => !action || binding.action === action)
69
+ .map(cloneBinding);
70
+ }
71
+ update(context) {
72
+ this.prepareFrame();
73
+ for (const binding of this.bindings) {
74
+ if (binding.kind === 'axis2d') {
75
+ this.applyAxis2DBinding(context, binding);
76
+ }
77
+ else if (binding.kind === 'axis1d') {
78
+ this.applyAxis1DBinding(context, binding);
79
+ }
80
+ else {
81
+ this.applyButtonBinding(context, binding);
82
+ }
83
+ }
84
+ for (const state of this.axis1DStates.values()) {
85
+ state.current = clamp(state.current);
86
+ }
87
+ for (const state of this.axis2DStates.values()) {
88
+ state.x = clamp(state.x);
89
+ state.y = clamp(state.y);
90
+ }
91
+ }
92
+ getButtonPressed(action) {
93
+ var _a, _b;
94
+ return (_b = (_a = this.buttonStates.get(action)) === null || _a === void 0 ? void 0 : _a.pressed) !== null && _b !== void 0 ? _b : false;
95
+ }
96
+ getButtonDown(action) {
97
+ var _a, _b;
98
+ return (_b = (_a = this.buttonStates.get(action)) === null || _a === void 0 ? void 0 : _a.down) !== null && _b !== void 0 ? _b : false;
99
+ }
100
+ getButtonUp(action) {
101
+ var _a, _b;
102
+ return (_b = (_a = this.buttonStates.get(action)) === null || _a === void 0 ? void 0 : _a.up) !== null && _b !== void 0 ? _b : false;
103
+ }
104
+ getAxis1D(action) {
105
+ var _a, _b;
106
+ return (_b = (_a = this.axis1DStates.get(action)) === null || _a === void 0 ? void 0 : _a.current) !== null && _b !== void 0 ? _b : 0;
107
+ }
108
+ getAxis1DEnteringPositive(action, threshold = DEFAULT_THRESHOLD) {
109
+ const state = this.axis1DStates.get(action);
110
+ return !!state && state.current >= threshold && state.previous < threshold;
111
+ }
112
+ getAxis1DEnteringNegative(action, threshold = DEFAULT_THRESHOLD) {
113
+ const state = this.axis1DStates.get(action);
114
+ return (!!state && state.current <= -threshold && state.previous > -threshold);
115
+ }
116
+ getAxis2D(action, out = { x: 0, y: 0 }) {
117
+ var _a, _b;
118
+ const state = this.axis2DStates.get(action);
119
+ out.x = (_a = state === null || state === void 0 ? void 0 : state.x) !== null && _a !== void 0 ? _a : 0;
120
+ out.y = (_b = state === null || state === void 0 ? void 0 : state.y) !== null && _b !== void 0 ? _b : 0;
121
+ return out;
122
+ }
123
+ prepareFrame() {
124
+ for (const state of this.buttonStates.values()) {
125
+ state.down = false;
126
+ state.up = false;
127
+ state.pressed = false;
128
+ }
129
+ for (const state of this.axis1DStates.values()) {
130
+ state.previous = state.current;
131
+ state.current = 0;
132
+ }
133
+ for (const state of this.axis2DStates.values()) {
134
+ state.previousX = state.x;
135
+ state.previousY = state.y;
136
+ state.x = 0;
137
+ state.y = 0;
138
+ }
139
+ }
140
+ applyAxis2DBinding(context, binding) {
141
+ const state = this.getAxis2DState(binding.action);
142
+ if (binding.source === 'keyboard') {
143
+ state.x += anyKeyPressed(context.keyboard, binding.positiveX) ? 1 : 0;
144
+ state.x -= anyKeyPressed(context.keyboard, binding.negativeX) ? 1 : 0;
145
+ state.y += anyKeyPressed(context.keyboard, binding.positiveY) ? 1 : 0;
146
+ state.y -= anyKeyPressed(context.keyboard, binding.negativeY) ? 1 : 0;
147
+ return;
148
+ }
149
+ const axisValues = this.getAxesValues(context, binding);
150
+ if (axisValues) {
151
+ state.x += axisValues.x;
152
+ state.y += axisValues.y;
153
+ }
154
+ }
155
+ applyAxis1DBinding(context, binding) {
156
+ const state = this.getAxis1DState(binding.action);
157
+ const axisValues = this.getAxesValues(context, binding);
158
+ if (!axisValues) {
159
+ return;
160
+ }
161
+ state.current += binding.component === 'y' ? axisValues.y : axisValues.x;
162
+ }
163
+ applyButtonBinding(context, binding) {
164
+ const state = this.getButtonState(binding.action);
165
+ const pressed = this.getBindingButtonPressed(context, binding);
166
+ const down = this.getBindingButtonDown(context, binding);
167
+ const up = this.getBindingButtonUp(context, binding);
168
+ state.pressed || (state.pressed = pressed);
169
+ state.down || (state.down = down);
170
+ state.up || (state.up = up);
171
+ }
172
+ getAxesValues(context, binding) {
173
+ var _a;
174
+ if (binding.source === 'browserGamepad') {
175
+ const gamepad = this.getBrowserGamepad(context, binding.gamepadIndex);
176
+ return gamepad === null || gamepad === void 0 ? void 0 : gamepad.getAxesValues(binding.axis);
177
+ }
178
+ if (binding.source === 'xrGamepad') {
179
+ return (_a = context.xr.gamepads[binding.handedness]) === null || _a === void 0 ? void 0 : _a.getAxesValues(binding.componentId);
180
+ }
181
+ return undefined;
182
+ }
183
+ getBindingButtonPressed(context, binding) {
184
+ var _a, _b, _c, _d, _e;
185
+ if (binding.source === 'keyboard') {
186
+ return context.keyboard.getKeyPressed(binding.code);
187
+ }
188
+ if (binding.source === 'browserGamepad') {
189
+ return ((_b = (_a = this.getBrowserGamepad(context, binding.gamepadIndex)) === null || _a === void 0 ? void 0 : _a.getButtonPressed(binding.button)) !== null && _b !== void 0 ? _b : false);
190
+ }
191
+ if (binding.source === 'xrGamepad') {
192
+ return ((_d = (_c = context.xr.gamepads[binding.handedness]) === null || _c === void 0 ? void 0 : _c.getButtonPressed(binding.button)) !== null && _d !== void 0 ? _d : false);
193
+ }
194
+ return (((_e = context.xr.gamepads[binding.handedness]) === null || _e === void 0 ? void 0 : _e.getAxesState(binding.componentId)) === binding.state);
195
+ }
196
+ getBindingButtonDown(context, binding) {
197
+ var _a, _b, _c, _d, _e, _f;
198
+ if (binding.source === 'keyboard') {
199
+ return context.keyboard.getKeyDown(binding.code);
200
+ }
201
+ if (binding.source === 'browserGamepad') {
202
+ return ((_b = (_a = this.getBrowserGamepad(context, binding.gamepadIndex)) === null || _a === void 0 ? void 0 : _a.getButtonDown(binding.button)) !== null && _b !== void 0 ? _b : false);
203
+ }
204
+ if (binding.source === 'xrGamepad') {
205
+ return ((_d = (_c = context.xr.gamepads[binding.handedness]) === null || _c === void 0 ? void 0 : _c.getButtonDown(binding.button)) !== null && _d !== void 0 ? _d : false);
206
+ }
207
+ return ((_f = (_e = context.xr.gamepads[binding.handedness]) === null || _e === void 0 ? void 0 : _e.getAxesEnteringState(binding.componentId, binding.state)) !== null && _f !== void 0 ? _f : false);
208
+ }
209
+ getBindingButtonUp(context, binding) {
210
+ var _a, _b, _c, _d, _e, _f;
211
+ if (binding.source === 'keyboard') {
212
+ return context.keyboard.getKeyUp(binding.code);
213
+ }
214
+ if (binding.source === 'browserGamepad') {
215
+ return ((_b = (_a = this.getBrowserGamepad(context, binding.gamepadIndex)) === null || _a === void 0 ? void 0 : _a.getButtonUp(binding.button)) !== null && _b !== void 0 ? _b : false);
216
+ }
217
+ if (binding.source === 'xrGamepad') {
218
+ return ((_d = (_c = context.xr.gamepads[binding.handedness]) === null || _c === void 0 ? void 0 : _c.getButtonUp(binding.button)) !== null && _d !== void 0 ? _d : false);
219
+ }
220
+ return ((_f = (_e = context.xr.gamepads[binding.handedness]) === null || _e === void 0 ? void 0 : _e.getAxesLeavingState(binding.componentId, binding.state)) !== null && _f !== void 0 ? _f : false);
221
+ }
222
+ getBrowserGamepad(context, gamepadIndex) {
223
+ if (gamepadIndex !== undefined) {
224
+ return context.browserGamepads[gamepadIndex];
225
+ }
226
+ return context.browserGamepads.find((gamepad) => gamepad === null || gamepad === void 0 ? void 0 : gamepad.connected);
227
+ }
228
+ getButtonState(action) {
229
+ let state = this.buttonStates.get(action);
230
+ if (!state) {
231
+ state = { pressed: false, down: false, up: false };
232
+ this.buttonStates.set(action, state);
233
+ }
234
+ return state;
235
+ }
236
+ getAxis1DState(action) {
237
+ let state = this.axis1DStates.get(action);
238
+ if (!state) {
239
+ state = { previous: 0, current: 0 };
240
+ this.axis1DStates.set(action, state);
241
+ }
242
+ return state;
243
+ }
244
+ getAxis2DState(action) {
245
+ let state = this.axis2DStates.get(action);
246
+ if (!state) {
247
+ state = { previousX: 0, previousY: 0, x: 0, y: 0 };
248
+ this.axis2DStates.set(action, state);
249
+ }
250
+ return state;
251
+ }
252
+ createDefaultBindings(profile, options) {
253
+ if (profile === 'browser-first-person') {
254
+ return this.createBrowserFirstPersonBindings(options);
255
+ }
256
+ return [
257
+ {
258
+ source: 'xrGamepad',
259
+ kind: 'axis2d',
260
+ action: InputActions.LocomotionMove,
261
+ handedness: 'left',
262
+ componentId: InputComponent.Thumbstick,
263
+ },
264
+ {
265
+ source: 'xrGamepad',
266
+ kind: 'axis1d',
267
+ action: InputActions.LocomotionTurn,
268
+ handedness: 'right',
269
+ componentId: InputComponent.Thumbstick,
270
+ component: 'x',
271
+ },
272
+ {
273
+ source: 'xrGamepad',
274
+ kind: 'button',
275
+ action: InputActions.LocomotionJump,
276
+ handedness: 'right',
277
+ button: InputComponent.A_Button,
278
+ },
279
+ {
280
+ source: 'xrGamepadAxesDirection',
281
+ kind: 'button',
282
+ action: InputActions.LocomotionTeleportAim,
283
+ handedness: 'right',
284
+ componentId: InputComponent.Thumbstick,
285
+ state: AxesState.Down,
286
+ },
287
+ ];
288
+ }
289
+ createBrowserFirstPersonBindings(options) {
290
+ var _a, _b;
291
+ const keyboardEnabled = (_a = options.keyboard) !== null && _a !== void 0 ? _a : true;
292
+ const gamepadEnabled = (_b = options.gamepad) !== null && _b !== void 0 ? _b : true;
293
+ const bindings = [];
294
+ if (keyboardEnabled) {
295
+ bindings.push({
296
+ source: 'keyboard',
297
+ kind: 'axis2d',
298
+ action: InputActions.LocomotionMove,
299
+ negativeX: ['KeyA', 'ArrowLeft'],
300
+ positiveX: ['KeyD', 'ArrowRight'],
301
+ negativeY: ['KeyW', 'ArrowUp'],
302
+ positiveY: ['KeyS', 'ArrowDown'],
303
+ }, {
304
+ source: 'keyboard',
305
+ kind: 'button',
306
+ action: InputActions.LocomotionJump,
307
+ code: 'Space',
308
+ });
309
+ }
310
+ if (gamepadEnabled) {
311
+ bindings.push({
312
+ source: 'browserGamepad',
313
+ kind: 'axis2d',
314
+ action: InputActions.LocomotionMove,
315
+ axis: BrowserGamepadAxis.LeftStick,
316
+ }, {
317
+ source: 'browserGamepad',
318
+ kind: 'axis1d',
319
+ action: InputActions.LocomotionTurn,
320
+ axis: BrowserGamepadAxis.RightStick,
321
+ component: 'x',
322
+ }, {
323
+ source: 'browserGamepad',
324
+ kind: 'button',
325
+ action: InputActions.LocomotionJump,
326
+ button: BrowserGamepadButton.South,
327
+ });
328
+ }
329
+ return bindings;
330
+ }
331
+ }
332
+ function cloneBinding(binding) {
333
+ if (binding.source === 'keyboard' && binding.kind === 'axis2d') {
334
+ return {
335
+ ...binding,
336
+ negativeX: binding.negativeX ? [...binding.negativeX] : undefined,
337
+ positiveX: binding.positiveX ? [...binding.positiveX] : undefined,
338
+ negativeY: binding.negativeY ? [...binding.negativeY] : undefined,
339
+ positiveY: binding.positiveY ? [...binding.positiveY] : undefined,
340
+ };
341
+ }
342
+ return { ...binding };
343
+ }
344
+ function bindingsEqual(first, second) {
345
+ return bindingKey(first) === bindingKey(second);
346
+ }
347
+ function bindingKey(binding) {
348
+ const entries = Object.entries(binding).map(([key, value]) => [
349
+ key,
350
+ Array.isArray(value) ? [...value].sort() : value,
351
+ ]);
352
+ entries.sort(([firstKey], [secondKey]) => firstKey.localeCompare(secondKey));
353
+ return JSON.stringify(entries);
354
+ }
355
+
356
+ export { InputActionManager, InputActions };
357
+ //# sourceMappingURL=input-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-actions.js","sources":["../../src/input/input-actions.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}