@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
@@ -1,6 +1,6 @@
1
1
  import { createSystem } from '../ecs/system.js';
2
2
  import { VisibilityState } from '../ecs/world.js';
3
- import 'elics';
3
+ import { Types } from 'elics';
4
4
  import '../ecs/entity.js';
5
5
  import '../ecs/component-registry.js';
6
6
  import { DistanceGrabbable } from '../grab/distance-grabbable.js';
@@ -51,7 +51,10 @@ class InputSystem extends createSystem({
51
51
  twoHandsGrabbables: { required: [TwoHandsGrabbable, Transform] },
52
52
  /** Distance grabbable entities */
53
53
  distanceGrabbables: { required: [DistanceGrabbable, Transform] },
54
- }, {}) {
54
+ }, {
55
+ /** Keep pointer target lists available outside immersive XR for browser canvas input. */
56
+ maintainScenePointers: { type: Types.Boolean, default: false },
57
+ }) {
55
58
  constructor() {
56
59
  super(...arguments);
57
60
  /** Descendants for ray pointer intersection */
@@ -61,78 +64,54 @@ class InputSystem extends createSystem({
61
64
  /** Descendants for grab pointer intersection */
62
65
  this.grabDescendants = [];
63
66
  this.shouldSetIntersectables = false;
64
- this.dirty = true;
65
67
  this.listeners = new WeakMap();
66
68
  this.lastBVHUpdate = new WeakMap();
67
69
  }
68
70
  init() {
71
+ this.shouldSetIntersectables =
72
+ this.visibilityState.value === VisibilityState.Visible ||
73
+ this.config.maintainScenePointers.value;
69
74
  // React to XR visibility for enabling scoped intersections
70
75
  this.cleanupFuncs.push(this.visibilityState.subscribe((value) => {
71
- const nextVisible = value === VisibilityState.Visible;
72
- if (this.shouldSetIntersectables !== nextVisible) {
73
- this.shouldSetIntersectables = nextVisible;
74
- this.dirty = true;
75
- }
76
+ this.shouldSetIntersectables =
77
+ value === VisibilityState.Visible ||
78
+ this.config.maintainScenePointers.value;
76
79
  }));
77
- // Handle additions/removals for ray interactables
80
+ // Wire pointer event listeners on qualify; tear them down on disqualify.
81
+ // Descendant arrays are rebuilt every frame, so no dirty bookkeeping here.
78
82
  this.queries.rayInteractables.subscribe('qualify', (entity) => {
79
83
  this.setupEventListeners(entity);
80
- this.dirty = true;
81
84
  });
82
85
  this.queries.rayInteractables.subscribe('disqualify', (entity) => {
83
86
  this.cleanupEventListeners(entity);
84
- this.dirty = true;
85
87
  });
86
- // Handle additions/removals for poke interactables
87
88
  this.queries.pokeInteractables.subscribe('qualify', (entity) => {
88
89
  this.setupEventListeners(entity);
89
- this.dirty = true;
90
90
  // Enable touch pointers when first poke interactable appears
91
- this.input.multiPointers.left.toggleSubPointer('touch', true);
92
- this.input.multiPointers.right.toggleSubPointer('touch', true);
91
+ this.input.xr.multiPointers.left.toggleSubPointer('touch', true);
92
+ this.input.xr.multiPointers.right.toggleSubPointer('touch', true);
93
93
  });
94
94
  this.queries.pokeInteractables.subscribe('disqualify', (entity) => {
95
95
  this.cleanupEventListeners(entity);
96
- this.dirty = true;
97
96
  // Disable touch pointers when no poke interactables remain
98
97
  if (this.queries.pokeInteractables.entities.size === 0) {
99
- this.input.multiPointers.left.toggleSubPointer('touch', false);
100
- this.input.multiPointers.right.toggleSubPointer('touch', false);
98
+ this.input.xr.multiPointers.left.toggleSubPointer('touch', false);
99
+ this.input.xr.multiPointers.right.toggleSubPointer('touch', false);
101
100
  }
102
101
  });
103
- // Handle additions/removals for grabbables (all types)
104
- this.queries.oneHandGrabbables.subscribe('qualify', () => {
105
- this.dirty = true;
106
- });
107
- this.queries.oneHandGrabbables.subscribe('disqualify', () => {
108
- this.dirty = true;
109
- });
110
- this.queries.twoHandsGrabbables.subscribe('qualify', () => {
111
- this.dirty = true;
112
- });
113
- this.queries.twoHandsGrabbables.subscribe('disqualify', () => {
114
- this.dirty = true;
115
- });
116
- this.queries.distanceGrabbables.subscribe('qualify', () => {
117
- this.dirty = true;
118
- });
119
- this.queries.distanceGrabbables.subscribe('disqualify', () => {
120
- this.dirty = true;
121
- });
122
102
  // Enable touch pointer if there are already poke interactables
123
103
  if (this.queries.pokeInteractables.entities.size > 0) {
124
- this.input.multiPointers.left.toggleSubPointer('touch', true);
125
- this.input.multiPointers.right.toggleSubPointer('touch', true);
104
+ this.input.xr.multiPointers.left.toggleSubPointer('touch', true);
105
+ this.input.xr.multiPointers.right.toggleSubPointer('touch', true);
126
106
  }
127
107
  }
128
108
  update(delta, time) {
129
109
  // Update input sampling first
130
110
  this.input.update(this.xrManager, delta, time);
131
- // Maintain the filtered lists of interactables for pointer raycasting
132
- if (this.dirty) {
133
- this.dirty = false;
134
- this.updateDescendantArrays();
135
- }
111
+ // Rebuild interactable descendant arrays every frame so newly parented
112
+ // entities (TransformSystem runs at priority 0, after this system at -4)
113
+ // become hit-testable on the same frame they're created.
114
+ this.updateDescendantArrays();
136
115
  }
137
116
  /**
138
117
  * Update per-type descendant arrays for optimized pointer intersection
@@ -153,40 +132,34 @@ class InputSystem extends createSystem({
153
132
  // Collect ray interactables + distance grabbables (both use ray)
154
133
  for (const entity of this.queries.rayInteractables.entities) {
155
134
  const obj = entity.object3D;
156
- if (isDescendantOf(obj, this.scene)) {
135
+ if (obj) {
157
136
  this.rayDescendants.push(obj);
158
137
  }
159
138
  }
160
139
  for (const entity of this.queries.distanceGrabbables.entities) {
161
140
  const obj = entity.object3D;
162
- if (isDescendantOf(obj, this.scene)) {
163
- // Only add if not already in ray descendants
164
- if (!this.rayDescendants.includes(obj)) {
165
- this.rayDescendants.push(obj);
166
- }
141
+ if (obj && !this.rayDescendants.includes(obj)) {
142
+ this.rayDescendants.push(obj);
167
143
  }
168
144
  }
169
145
  // Collect poke/touch interactables
170
146
  for (const entity of this.queries.pokeInteractables.entities) {
171
147
  const obj = entity.object3D;
172
- if (isDescendantOf(obj, this.scene)) {
148
+ if (obj) {
173
149
  this.touchDescendants.push(obj);
174
150
  }
175
151
  }
176
152
  // Collect grab interactables (oneHand + twoHands)
177
153
  for (const entity of this.queries.oneHandGrabbables.entities) {
178
154
  const obj = entity.object3D;
179
- if (isDescendantOf(obj, this.scene)) {
155
+ if (obj) {
180
156
  this.grabDescendants.push(obj);
181
157
  }
182
158
  }
183
159
  for (const entity of this.queries.twoHandsGrabbables.entities) {
184
160
  const obj = entity.object3D;
185
- if (isDescendantOf(obj, this.scene)) {
186
- // Only add if not already in grab descendants
187
- if (!this.grabDescendants.includes(obj)) {
188
- this.grabDescendants.push(obj);
189
- }
161
+ if (obj && !this.grabDescendants.includes(obj)) {
162
+ this.grabDescendants.push(obj);
190
163
  }
191
164
  }
192
165
  // Set type-specific arrays on scene
@@ -285,15 +258,6 @@ class InputSystem extends createSystem({
285
258
  entity.removeComponent(Hovered).removeComponent(Pressed);
286
259
  }
287
260
  }
288
- function isDescendantOf(object, parent) {
289
- while (object) {
290
- if (object === parent) {
291
- return true;
292
- }
293
- object = object.parent;
294
- }
295
- return false;
296
- }
297
261
 
298
262
  export { InputSystem };
299
263
  //# sourceMappingURL=input-system.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-system.js","sources":["../../src/input/input-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-system.js","sources":["../../src/input/input-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
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 { StatefulButtonAxesDevice } from '@iwsdk/xr-input';
8
+ export declare enum BrowserGamepadButton {
9
+ South = "standard-south",
10
+ East = "standard-east",
11
+ West = "standard-west",
12
+ North = "standard-north",
13
+ LeftBumper = "standard-left-bumper",
14
+ RightBumper = "standard-right-bumper",
15
+ LeftTrigger = "standard-left-trigger",
16
+ RightTrigger = "standard-right-trigger",
17
+ Select = "standard-select",
18
+ Start = "standard-start",
19
+ LeftStick = "standard-left-stick",
20
+ RightStick = "standard-right-stick",
21
+ DPadUp = "standard-dpad-up",
22
+ DPadDown = "standard-dpad-down",
23
+ DPadLeft = "standard-dpad-left",
24
+ DPadRight = "standard-dpad-right",
25
+ Home = "standard-home"
26
+ }
27
+ export declare enum BrowserGamepadAxis {
28
+ LeftStick = "standard-left-stick-axes",
29
+ RightStick = "standard-right-stick-axes"
30
+ }
31
+ export declare class StatefulBrowserGamepad extends StatefulButtonAxesDevice {
32
+ gamepad: Gamepad;
33
+ constructor(gamepad: Gamepad);
34
+ get index(): number;
35
+ get id(): string;
36
+ get connected(): boolean;
37
+ get mapping(): GamepadMappingType;
38
+ refresh(gamepad?: Gamepad): void;
39
+ }
40
+ //# sourceMappingURL=stateful-browser-gamepad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateful-browser-gamepad.d.ts","sourceRoot":"","sources":["../../src/input/stateful-browser-gamepad.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAoB,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,oBAAY,oBAAoB;IAC9B,KAAK,mBAAmB;IACxB,IAAI,kBAAkB;IACtB,IAAI,kBAAkB;IACtB,KAAK,mBAAmB;IACxB,UAAU,yBAAyB;IACnC,WAAW,0BAA0B;IACrC,WAAW,0BAA0B;IACrC,YAAY,2BAA2B;IACvC,MAAM,oBAAoB;IAC1B,KAAK,mBAAmB;IACxB,SAAS,wBAAwB;IACjC,UAAU,yBAAyB;IACnC,MAAM,qBAAqB;IAC3B,QAAQ,uBAAuB;IAC/B,QAAQ,uBAAuB;IAC/B,SAAS,wBAAwB;IACjC,IAAI,kBAAkB;CACvB;AAED,oBAAY,kBAAkB;IAC5B,SAAS,6BAA6B;IACtC,UAAU,8BAA8B;CACzC;AAoFD,qBAAa,sBAAuB,SAAQ,wBAAwB;IAC3D,OAAO,EAAE,OAAO,CAAC;gBAEZ,OAAO,EAAE,OAAO;IAK5B,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,OAAO,IAAI,kBAAkB,CAEhC;IAED,OAAO,CAAC,OAAO,GAAE,OAAsB,GAAG,IAAI;CAI/C"}
@@ -0,0 +1,139 @@
1
+ import { StatefulButtonAxesDevice } from '@iwsdk/xr-input';
2
+
3
+ /**
4
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+ var BrowserGamepadButton;
10
+ (function (BrowserGamepadButton) {
11
+ BrowserGamepadButton["South"] = "standard-south";
12
+ BrowserGamepadButton["East"] = "standard-east";
13
+ BrowserGamepadButton["West"] = "standard-west";
14
+ BrowserGamepadButton["North"] = "standard-north";
15
+ BrowserGamepadButton["LeftBumper"] = "standard-left-bumper";
16
+ BrowserGamepadButton["RightBumper"] = "standard-right-bumper";
17
+ BrowserGamepadButton["LeftTrigger"] = "standard-left-trigger";
18
+ BrowserGamepadButton["RightTrigger"] = "standard-right-trigger";
19
+ BrowserGamepadButton["Select"] = "standard-select";
20
+ BrowserGamepadButton["Start"] = "standard-start";
21
+ BrowserGamepadButton["LeftStick"] = "standard-left-stick";
22
+ BrowserGamepadButton["RightStick"] = "standard-right-stick";
23
+ BrowserGamepadButton["DPadUp"] = "standard-dpad-up";
24
+ BrowserGamepadButton["DPadDown"] = "standard-dpad-down";
25
+ BrowserGamepadButton["DPadLeft"] = "standard-dpad-left";
26
+ BrowserGamepadButton["DPadRight"] = "standard-dpad-right";
27
+ BrowserGamepadButton["Home"] = "standard-home";
28
+ })(BrowserGamepadButton || (BrowserGamepadButton = {}));
29
+ var BrowserGamepadAxis;
30
+ (function (BrowserGamepadAxis) {
31
+ BrowserGamepadAxis["LeftStick"] = "standard-left-stick-axes";
32
+ BrowserGamepadAxis["RightStick"] = "standard-right-stick-axes";
33
+ })(BrowserGamepadAxis || (BrowserGamepadAxis = {}));
34
+ const STANDARD_GAMEPAD_LAYOUT = {
35
+ selectComponentId: BrowserGamepadButton.South,
36
+ components: {
37
+ [BrowserGamepadButton.South]: {
38
+ type: 'button',
39
+ gamepadIndices: { button: 0 },
40
+ },
41
+ [BrowserGamepadButton.East]: {
42
+ type: 'button',
43
+ gamepadIndices: { button: 1 },
44
+ },
45
+ [BrowserGamepadButton.West]: {
46
+ type: 'button',
47
+ gamepadIndices: { button: 2 },
48
+ },
49
+ [BrowserGamepadButton.North]: {
50
+ type: 'button',
51
+ gamepadIndices: { button: 3 },
52
+ },
53
+ [BrowserGamepadButton.LeftBumper]: {
54
+ type: 'button',
55
+ gamepadIndices: { button: 4 },
56
+ },
57
+ [BrowserGamepadButton.RightBumper]: {
58
+ type: 'button',
59
+ gamepadIndices: { button: 5 },
60
+ },
61
+ [BrowserGamepadButton.LeftTrigger]: {
62
+ type: 'trigger',
63
+ gamepadIndices: { button: 6 },
64
+ },
65
+ [BrowserGamepadButton.RightTrigger]: {
66
+ type: 'trigger',
67
+ gamepadIndices: { button: 7 },
68
+ },
69
+ [BrowserGamepadButton.Select]: {
70
+ type: 'button',
71
+ gamepadIndices: { button: 8 },
72
+ },
73
+ [BrowserGamepadButton.Start]: {
74
+ type: 'button',
75
+ gamepadIndices: { button: 9 },
76
+ },
77
+ [BrowserGamepadButton.LeftStick]: {
78
+ type: 'button',
79
+ gamepadIndices: { button: 10 },
80
+ },
81
+ [BrowserGamepadButton.RightStick]: {
82
+ type: 'button',
83
+ gamepadIndices: { button: 11 },
84
+ },
85
+ [BrowserGamepadButton.DPadUp]: {
86
+ type: 'button',
87
+ gamepadIndices: { button: 12 },
88
+ },
89
+ [BrowserGamepadButton.DPadDown]: {
90
+ type: 'button',
91
+ gamepadIndices: { button: 13 },
92
+ },
93
+ [BrowserGamepadButton.DPadLeft]: {
94
+ type: 'button',
95
+ gamepadIndices: { button: 14 },
96
+ },
97
+ [BrowserGamepadButton.DPadRight]: {
98
+ type: 'button',
99
+ gamepadIndices: { button: 15 },
100
+ },
101
+ [BrowserGamepadButton.Home]: {
102
+ type: 'button',
103
+ gamepadIndices: { button: 16 },
104
+ },
105
+ [BrowserGamepadAxis.LeftStick]: {
106
+ type: 'thumbstick',
107
+ gamepadIndices: { xAxis: 0, yAxis: 1 },
108
+ },
109
+ [BrowserGamepadAxis.RightStick]: {
110
+ type: 'thumbstick',
111
+ gamepadIndices: { xAxis: 2, yAxis: 3 },
112
+ },
113
+ },
114
+ };
115
+ class StatefulBrowserGamepad extends StatefulButtonAxesDevice {
116
+ constructor(gamepad) {
117
+ super(STANDARD_GAMEPAD_LAYOUT, gamepad.buttons.length);
118
+ this.gamepad = gamepad;
119
+ }
120
+ get index() {
121
+ return this.gamepad.index;
122
+ }
123
+ get id() {
124
+ return this.gamepad.id;
125
+ }
126
+ get connected() {
127
+ return this.gamepad.connected;
128
+ }
129
+ get mapping() {
130
+ return this.gamepad.mapping;
131
+ }
132
+ refresh(gamepad = this.gamepad) {
133
+ this.gamepad = gamepad;
134
+ super.update(gamepad.buttons, gamepad.axes);
135
+ }
136
+ }
137
+
138
+ export { BrowserGamepadAxis, BrowserGamepadButton, StatefulBrowserGamepad };
139
+ //# sourceMappingURL=stateful-browser-gamepad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateful-browser-gamepad.js","sources":["../../src/input/stateful-browser-gamepad.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
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
+ export declare class StatefulKeyboard {
8
+ private readonly pressedKeys;
9
+ private readonly currentDownKeys;
10
+ private readonly currentUpKeys;
11
+ private readonly pendingDownKeys;
12
+ private readonly pendingUpKeys;
13
+ private readonly target;
14
+ private readonly handleKeyDown;
15
+ private readonly handleKeyUp;
16
+ constructor(target?: Window);
17
+ update(): void;
18
+ getKeyPressed(code: string): boolean;
19
+ getKeyDown(code: string): boolean;
20
+ getKeyUp(code: string): boolean;
21
+ destroy(): void;
22
+ }
23
+ //# sourceMappingURL=stateful-keyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateful-keyboard.d.ts","sourceRoot":"","sources":["../../src/input/stateful-keyboard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAK5B;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAK1B;gBAEU,MAAM,GAAE,MAAe;IAMnC,MAAM,IAAI,IAAI;IAad,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,OAAO,IAAI,IAAI;CAShB"}
@@ -0,0 +1,63 @@
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
+ class StatefulKeyboard {
8
+ constructor(target = window) {
9
+ this.pressedKeys = new Set();
10
+ this.currentDownKeys = new Set();
11
+ this.currentUpKeys = new Set();
12
+ this.pendingDownKeys = new Set();
13
+ this.pendingUpKeys = new Set();
14
+ this.handleKeyDown = (event) => {
15
+ if (!this.pressedKeys.has(event.code)) {
16
+ this.pendingDownKeys.add(event.code);
17
+ }
18
+ this.pressedKeys.add(event.code);
19
+ };
20
+ this.handleKeyUp = (event) => {
21
+ if (this.pressedKeys.has(event.code)) {
22
+ this.pendingUpKeys.add(event.code);
23
+ }
24
+ this.pressedKeys.delete(event.code);
25
+ };
26
+ this.target = target;
27
+ this.target.addEventListener('keydown', this.handleKeyDown);
28
+ this.target.addEventListener('keyup', this.handleKeyUp);
29
+ }
30
+ update() {
31
+ this.currentDownKeys.clear();
32
+ this.currentUpKeys.clear();
33
+ for (const code of this.pendingDownKeys) {
34
+ this.currentDownKeys.add(code);
35
+ }
36
+ for (const code of this.pendingUpKeys) {
37
+ this.currentUpKeys.add(code);
38
+ }
39
+ this.pendingDownKeys.clear();
40
+ this.pendingUpKeys.clear();
41
+ }
42
+ getKeyPressed(code) {
43
+ return this.pressedKeys.has(code);
44
+ }
45
+ getKeyDown(code) {
46
+ return this.currentDownKeys.has(code);
47
+ }
48
+ getKeyUp(code) {
49
+ return this.currentUpKeys.has(code);
50
+ }
51
+ destroy() {
52
+ this.target.removeEventListener('keydown', this.handleKeyDown);
53
+ this.target.removeEventListener('keyup', this.handleKeyUp);
54
+ this.pressedKeys.clear();
55
+ this.currentDownKeys.clear();
56
+ this.currentUpKeys.clear();
57
+ this.pendingDownKeys.clear();
58
+ this.pendingUpKeys.clear();
59
+ }
60
+ }
61
+
62
+ export { StatefulKeyboard };
63
+ //# sourceMappingURL=stateful-keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateful-keyboard.js","sources":["../../src/input/stateful-keyboard.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
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
+ export * from './xr-quad-layer.js';
8
+ export * from './xr-cylinder-layer.js';
9
+ export * from './xr-layer-system.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,62 @@
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
+ /**
9
+ * XRCylinderLayer - Component for WebXR cylinder composition layers.
10
+ *
11
+ * A cylinder layer renders content onto a curved rectangular surface. The
12
+ * viewer sees the inside of the cylinder. The entity's transform controls
13
+ * the layer's world position and orientation. In XR, the content is
14
+ * composited by the device's native compositor.
15
+ *
16
+ * Outside XR, the layer content is displayed on a textured cylinder mesh
17
+ * as a fallback.
18
+ *
19
+ * @category Layers
20
+ */
21
+ export declare const XRCylinderLayer: import("elics").Component<{
22
+ /** Radius of the cylinder in meters. */
23
+ radius: {
24
+ type: Types.Float32;
25
+ default: number;
26
+ };
27
+ /** Central angle of the visible arc in radians. */
28
+ centralAngle: {
29
+ type: Types.Float32;
30
+ default: number;
31
+ };
32
+ /** Width-to-height aspect ratio of the visible section. */
33
+ aspectRatio: {
34
+ type: Types.Float32;
35
+ default: number;
36
+ };
37
+ /** Width of the layer's render target in pixels. */
38
+ pixelWidth: {
39
+ type: Types.Int16;
40
+ default: number;
41
+ };
42
+ /** Height of the layer's render target in pixels. */
43
+ pixelHeight: {
44
+ type: Types.Int16;
45
+ default: number;
46
+ };
47
+ /**
48
+ * Callback invoked each frame to render layer content.
49
+ * The renderer's render target is already set; call
50
+ * `renderer.render(scene, camera)` to draw into the layer.
51
+ */
52
+ renderCallback: {
53
+ type: Types.Object;
54
+ default: null;
55
+ };
56
+ /** Enable stencil buffer on the layer's render target. */
57
+ stencil: {
58
+ type: Types.Boolean;
59
+ default: false;
60
+ };
61
+ }>;
62
+ //# sourceMappingURL=xr-cylinder-layer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xr-cylinder-layer.d.ts","sourceRoot":"","sources":["../../src/layers/xr-cylinder-layer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe;IAGxB,wCAAwC;;;;;IAExC,mDAAmD;;;;;IAEnD,2DAA2D;;;;;IAE3D,oDAAoD;;;;;IAEpD,qDAAqD;;;;;IAErD;;;;OAIG;;;;;IAEH,0DAA0D;;;;;EAI7D,CAAC"}
@@ -0,0 +1,48 @@
1
+ import '@preact/signals-core';
2
+ import '../ecs/world.js';
3
+ import { createComponent, Types } from 'elics';
4
+ import '../ecs/entity.js';
5
+ import '../ecs/component-registry.js';
6
+
7
+ /**
8
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
9
+ *
10
+ * This source code is licensed under the MIT license found in the
11
+ * LICENSE file in the root directory of this source tree.
12
+ */
13
+ /**
14
+ * XRCylinderLayer - Component for WebXR cylinder composition layers.
15
+ *
16
+ * A cylinder layer renders content onto a curved rectangular surface. The
17
+ * viewer sees the inside of the cylinder. The entity's transform controls
18
+ * the layer's world position and orientation. In XR, the content is
19
+ * composited by the device's native compositor.
20
+ *
21
+ * Outside XR, the layer content is displayed on a textured cylinder mesh
22
+ * as a fallback.
23
+ *
24
+ * @category Layers
25
+ */
26
+ const XRCylinderLayer = createComponent('XRCylinderLayer', {
27
+ /** Radius of the cylinder in meters. */
28
+ radius: { type: Types.Float32, default: 2.0 },
29
+ /** Central angle of the visible arc in radians. */
30
+ centralAngle: { type: Types.Float32, default: Math.PI / 4 },
31
+ /** Width-to-height aspect ratio of the visible section. */
32
+ aspectRatio: { type: Types.Float32, default: 2.0 },
33
+ /** Width of the layer's render target in pixels. */
34
+ pixelWidth: { type: Types.Int16, default: 1024 },
35
+ /** Height of the layer's render target in pixels. */
36
+ pixelHeight: { type: Types.Int16, default: 1024 },
37
+ /**
38
+ * Callback invoked each frame to render layer content.
39
+ * The renderer's render target is already set; call
40
+ * `renderer.render(scene, camera)` to draw into the layer.
41
+ */
42
+ renderCallback: { type: Types.Object, default: null },
43
+ /** Enable stencil buffer on the layer's render target. */
44
+ stencil: { type: Types.Boolean, default: false },
45
+ }, 'Cylinder composition layer for WebXR');
46
+
47
+ export { XRCylinderLayer };
48
+ //# sourceMappingURL=xr-cylinder-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xr-cylinder-layer.js","sources":["../../src/layers/xr-cylinder-layer.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;;;AAKG;AAIH;;;;;;;;;;;;AAYG;AACI,MAAM,eAAe,GAAG,eAAe,CAC5C,iBAAiB,EACjB;;IAEE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;AAE7C,IAAA,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE;;IAE3D,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;;IAElD,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;;IAEhD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;AACjD;;;;AAIG;IACH,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;;IAErD,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;CACjD,EACD,sCAAsC;;;;"}