iwer 0.0.1

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 (161) hide show
  1. package/build/iwer.js +4628 -0
  2. package/build/iwer.min.js +1 -0
  3. package/build/iwer.module.js +4591 -0
  4. package/build/iwer.module.min.js +1 -0
  5. package/lib/action/ActionPlayer.d.ts +75 -0
  6. package/lib/action/ActionPlayer.d.ts.map +1 -0
  7. package/lib/action/ActionPlayer.js +206 -0
  8. package/lib/action/ActionPlayer.js.map +1 -0
  9. package/lib/action/ActionRecorder.d.ts +59 -0
  10. package/lib/action/ActionRecorder.d.ts.map +1 -0
  11. package/lib/action/ActionRecorder.js +162 -0
  12. package/lib/action/ActionRecorder.js.map +1 -0
  13. package/lib/action/Capture.d.ts +3 -0
  14. package/lib/action/Capture.d.ts.map +1 -0
  15. package/lib/action/Capture.js +26907 -0
  16. package/lib/action/Capture.js.map +1 -0
  17. package/lib/device/XRController.d.ts +24 -0
  18. package/lib/device/XRController.d.ts.map +1 -0
  19. package/lib/device/XRController.js +82 -0
  20. package/lib/device/XRController.js.map +1 -0
  21. package/lib/device/XRDevice.d.ts +142 -0
  22. package/lib/device/XRDevice.d.ts.map +1 -0
  23. package/lib/device/XRDevice.js +370 -0
  24. package/lib/device/XRDevice.js.map +1 -0
  25. package/lib/device/XRHandInput.d.ts +44 -0
  26. package/lib/device/XRHandInput.d.ts.map +1 -0
  27. package/lib/device/XRHandInput.js +133 -0
  28. package/lib/device/XRHandInput.js.map +1 -0
  29. package/lib/device/XRTrackedInput.d.ts +22 -0
  30. package/lib/device/XRTrackedInput.d.ts.map +1 -0
  31. package/lib/device/XRTrackedInput.js +89 -0
  32. package/lib/device/XRTrackedInput.js.map +1 -0
  33. package/lib/device/configs/controller/meta.d.ts +6 -0
  34. package/lib/device/configs/controller/meta.d.ts.map +1 -0
  35. package/lib/device/configs/controller/meta.js +152 -0
  36. package/lib/device/configs/controller/meta.js.map +1 -0
  37. package/lib/device/configs/hand/pinch.d.ts +3 -0
  38. package/lib/device/configs/hand/pinch.d.ts.map +1 -0
  39. package/lib/device/configs/hand/pinch.js +237 -0
  40. package/lib/device/configs/hand/pinch.js.map +1 -0
  41. package/lib/device/configs/hand/point.d.ts +3 -0
  42. package/lib/device/configs/hand/point.d.ts.map +1 -0
  43. package/lib/device/configs/hand/point.js +236 -0
  44. package/lib/device/configs/hand/point.js.map +1 -0
  45. package/lib/device/configs/hand/relaxed.d.ts +3 -0
  46. package/lib/device/configs/hand/relaxed.d.ts.map +1 -0
  47. package/lib/device/configs/hand/relaxed.js +236 -0
  48. package/lib/device/configs/hand/relaxed.js.map +1 -0
  49. package/lib/device/configs/headset/meta.d.ts +6 -0
  50. package/lib/device/configs/headset/meta.d.ts.map +1 -0
  51. package/lib/device/configs/headset/meta.js +99 -0
  52. package/lib/device/configs/headset/meta.js.map +1 -0
  53. package/lib/device/controllers.d.ts +31 -0
  54. package/lib/device/controllers.d.ts.map +1 -0
  55. package/lib/device/controllers.js +8 -0
  56. package/lib/device/controllers.js.map +1 -0
  57. package/lib/events/XRInputSourceEvent.d.ts +16 -0
  58. package/lib/events/XRInputSourceEvent.d.ts.map +1 -0
  59. package/lib/events/XRInputSourceEvent.js +14 -0
  60. package/lib/events/XRInputSourceEvent.js.map +1 -0
  61. package/lib/events/XRInputSourcesChangeEvent.d.ts +18 -0
  62. package/lib/events/XRInputSourcesChangeEvent.d.ts.map +1 -0
  63. package/lib/events/XRInputSourcesChangeEvent.js +18 -0
  64. package/lib/events/XRInputSourcesChangeEvent.js.map +1 -0
  65. package/lib/events/XRReferenceSpaceEvent.d.ts +16 -0
  66. package/lib/events/XRReferenceSpaceEvent.d.ts.map +1 -0
  67. package/lib/events/XRReferenceSpaceEvent.js +11 -0
  68. package/lib/events/XRReferenceSpaceEvent.js.map +1 -0
  69. package/lib/events/XRSessionEvent.d.ts +13 -0
  70. package/lib/events/XRSessionEvent.d.ts.map +1 -0
  71. package/lib/events/XRSessionEvent.js +10 -0
  72. package/lib/events/XRSessionEvent.js.map +1 -0
  73. package/lib/frameloop/XRFrame.d.ts +28 -0
  74. package/lib/frameloop/XRFrame.d.ts.map +1 -0
  75. package/lib/frameloop/XRFrame.js +117 -0
  76. package/lib/frameloop/XRFrame.js.map +1 -0
  77. package/lib/gamepad/Gamepad.d.ts +72 -0
  78. package/lib/gamepad/Gamepad.d.ts.map +1 -0
  79. package/lib/gamepad/Gamepad.js +126 -0
  80. package/lib/gamepad/Gamepad.js.map +1 -0
  81. package/lib/index.d.ts +24 -0
  82. package/lib/index.d.ts.map +1 -0
  83. package/lib/index.js +36 -0
  84. package/lib/index.js.map +1 -0
  85. package/lib/initialization/XRSystem.d.ts +13 -0
  86. package/lib/initialization/XRSystem.d.ts.map +1 -0
  87. package/lib/initialization/XRSystem.js +65 -0
  88. package/lib/initialization/XRSystem.js.map +1 -0
  89. package/lib/input/XRHand.d.ts +31 -0
  90. package/lib/input/XRHand.d.ts.map +1 -0
  91. package/lib/input/XRHand.js +31 -0
  92. package/lib/input/XRHand.js.map +1 -0
  93. package/lib/input/XRInputSource.d.ts +37 -0
  94. package/lib/input/XRInputSource.d.ts.map +1 -0
  95. package/lib/input/XRInputSource.js +51 -0
  96. package/lib/input/XRInputSource.js.map +1 -0
  97. package/lib/input/XRInputSourceArray.d.ts +11 -0
  98. package/lib/input/XRInputSourceArray.d.ts.map +1 -0
  99. package/lib/input/XRInputSourceArray.js +17 -0
  100. package/lib/input/XRInputSourceArray.js.map +1 -0
  101. package/lib/layers/XRWebGLLayer.d.ts +31 -0
  102. package/lib/layers/XRWebGLLayer.d.ts.map +1 -0
  103. package/lib/layers/XRWebGLLayer.js +67 -0
  104. package/lib/layers/XRWebGLLayer.js.map +1 -0
  105. package/lib/pose/XRJointPose.d.ts +11 -0
  106. package/lib/pose/XRJointPose.d.ts.map +1 -0
  107. package/lib/pose/XRJointPose.js +12 -0
  108. package/lib/pose/XRJointPose.js.map +1 -0
  109. package/lib/pose/XRPose.d.ts +16 -0
  110. package/lib/pose/XRPose.d.ts.map +1 -0
  111. package/lib/pose/XRPose.js +24 -0
  112. package/lib/pose/XRPose.js.map +1 -0
  113. package/lib/pose/XRViewerPose.d.ts +12 -0
  114. package/lib/pose/XRViewerPose.d.ts.map +1 -0
  115. package/lib/pose/XRViewerPose.js +14 -0
  116. package/lib/pose/XRViewerPose.js.map +1 -0
  117. package/lib/primitives/XRRigidTransform.d.ts +17 -0
  118. package/lib/primitives/XRRigidTransform.d.ts.map +1 -0
  119. package/lib/primitives/XRRigidTransform.js +54 -0
  120. package/lib/primitives/XRRigidTransform.js.map +1 -0
  121. package/lib/session/XRRenderState.d.ts +22 -0
  122. package/lib/session/XRRenderState.d.ts.map +1 -0
  123. package/lib/session/XRRenderState.js +26 -0
  124. package/lib/session/XRRenderState.js.map +1 -0
  125. package/lib/session/XRSession.d.ts +103 -0
  126. package/lib/session/XRSession.d.ts.map +1 -0
  127. package/lib/session/XRSession.js +459 -0
  128. package/lib/session/XRSession.js.map +1 -0
  129. package/lib/spaces/XRJointSpace.d.ts +13 -0
  130. package/lib/spaces/XRJointSpace.d.ts.map +1 -0
  131. package/lib/spaces/XRJointSpace.js +12 -0
  132. package/lib/spaces/XRJointSpace.js.map +1 -0
  133. package/lib/spaces/XRReferenceSpace.d.ts +22 -0
  134. package/lib/spaces/XRReferenceSpace.d.ts.map +1 -0
  135. package/lib/spaces/XRReferenceSpace.js +42 -0
  136. package/lib/spaces/XRReferenceSpace.js.map +1 -0
  137. package/lib/spaces/XRSpace.d.ts +20 -0
  138. package/lib/spaces/XRSpace.d.ts.map +1 -0
  139. package/lib/spaces/XRSpace.js +45 -0
  140. package/lib/spaces/XRSpace.js.map +1 -0
  141. package/lib/utils/DOMPointReadOnly.d.ts +17 -0
  142. package/lib/utils/DOMPointReadOnly.d.ts.map +1 -0
  143. package/lib/utils/DOMPointReadOnly.js +26 -0
  144. package/lib/utils/DOMPointReadOnly.js.map +1 -0
  145. package/lib/utils/Math.d.ts +49 -0
  146. package/lib/utils/Math.d.ts.map +1 -0
  147. package/lib/utils/Math.js +129 -0
  148. package/lib/utils/Math.js.map +1 -0
  149. package/lib/version.d.ts +2 -0
  150. package/lib/version.d.ts.map +1 -0
  151. package/lib/version.js +2 -0
  152. package/lib/version.js.map +1 -0
  153. package/lib/views/XRView.d.ts +25 -0
  154. package/lib/views/XRView.d.ts.map +1 -0
  155. package/lib/views/XRView.js +39 -0
  156. package/lib/views/XRView.js.map +1 -0
  157. package/lib/views/XRViewport.d.ts +15 -0
  158. package/lib/views/XRViewport.d.ts.map +1 -0
  159. package/lib/views/XRViewport.js +19 -0
  160. package/lib/views/XRViewport.js.map +1 -0
  161. package/package.json +63 -0
@@ -0,0 +1,459 @@
1
+ import { WebXRFeatures, PRIVATE as XRDEVICE_PRIVATE, } from '../device/XRDevice';
2
+ import { PRIVATE as XRFRAME_PRIVATE, XRFrame } from '../frameloop/XRFrame';
3
+ import { XRInputSourcesChangeEvent, } from '../events/XRInputSourcesChangeEvent';
4
+ import { XRReferenceSpace, XRReferenceSpaceType, } from '../spaces/XRReferenceSpace';
5
+ import { XRRenderState } from './XRRenderState';
6
+ import { XRSessionEvent, } from '../events/XRSessionEvent';
7
+ import { XREye } from '../views/XRView';
8
+ import { PRIVATE as XRSPACE_PRIVATE } from '../spaces/XRSpace';
9
+ import { PRIVATE as XRWEBGLLAYER_PRIVATE } from '../layers/XRWebGLLayer';
10
+ import { mat4 } from 'gl-matrix';
11
+ export var XRVisibilityState;
12
+ (function (XRVisibilityState) {
13
+ XRVisibilityState["Visible"] = "visible";
14
+ XRVisibilityState["VisibleBlurred"] = "visible-blurred";
15
+ XRVisibilityState["Hidden"] = "hidden";
16
+ })(XRVisibilityState || (XRVisibilityState = {}));
17
+ export var XRSessionMode;
18
+ (function (XRSessionMode) {
19
+ XRSessionMode["Inline"] = "inline";
20
+ XRSessionMode["ImmersiveVR"] = "immersive-vr";
21
+ XRSessionMode["ImmersiveAR"] = "immersive-ar";
22
+ })(XRSessionMode || (XRSessionMode = {}));
23
+ export const PRIVATE = Symbol('@immersive-web-emulation-runtime/xr-session');
24
+ export class XRSession extends EventTarget {
25
+ constructor(device, mode, enabledFeatures) {
26
+ super();
27
+ this[PRIVATE] = {
28
+ device,
29
+ mode,
30
+ renderState: new XRRenderState(),
31
+ pendingRenderState: null,
32
+ enabledFeatures: enabledFeatures,
33
+ isSystemKeyboardSupported: false,
34
+ ended: false,
35
+ projectionMatrices: {
36
+ [XREye.Left]: mat4.create(),
37
+ [XREye.Right]: mat4.create(),
38
+ [XREye.None]: mat4.create(),
39
+ },
40
+ getProjectionMatrix: (eye) => {
41
+ return this[PRIVATE].projectionMatrices[eye];
42
+ },
43
+ referenceSpaceIsSupported: (referenceSpaceType) => {
44
+ if (!this[PRIVATE].enabledFeatures.includes(referenceSpaceType)) {
45
+ return false;
46
+ }
47
+ switch (referenceSpaceType) {
48
+ case XRReferenceSpaceType.Viewer:
49
+ return true;
50
+ case XRReferenceSpaceType.Local:
51
+ case XRReferenceSpaceType.LocalFloor:
52
+ case XRReferenceSpaceType.BoundedFloor:
53
+ case XRReferenceSpaceType.Unbounded:
54
+ return this[PRIVATE].mode != XRSessionMode.Inline;
55
+ }
56
+ },
57
+ frameHandle: 0,
58
+ frameCallbacks: [],
59
+ currentFrameCallbacks: null,
60
+ onDeviceFrame: () => {
61
+ if (this[PRIVATE].ended) {
62
+ return;
63
+ }
64
+ this[PRIVATE].deviceFrameHandle = globalThis.requestAnimationFrame(this[PRIVATE].onDeviceFrame);
65
+ if (this[PRIVATE].pendingRenderState != null) {
66
+ this[PRIVATE].renderState = this[PRIVATE].pendingRenderState;
67
+ this[PRIVATE].pendingRenderState = null;
68
+ this[PRIVATE].device[XRDEVICE_PRIVATE].onBaseLayerSet(this[PRIVATE].renderState.baseLayer);
69
+ }
70
+ const baseLayer = this[PRIVATE].renderState.baseLayer;
71
+ if (baseLayer === null) {
72
+ return;
73
+ }
74
+ const context = baseLayer.context;
75
+ const canvas = context.canvas;
76
+ /**
77
+ * This code snippet is designed to clear the buffers attached to an opaque framebuffer
78
+ * at the beginning of each XR animation frame, but it only applies to immersive XR sessions.
79
+ * The process is as follows:
80
+ *
81
+ * 1. Check if the session is immersive: It verifies if `session.immersive` is true.
82
+ * This ensures that the buffer clearing operations are only performed for immersive
83
+ * sessions, which have exclusive access to the XR device's display.
84
+ *
85
+ * 2. Save current clear values: The current clear values for the color, depth, and
86
+ * stencil buffers are stored. These values need to be restored after clearing the
87
+ * buffers to maintain the application's rendering state as expected.
88
+ *
89
+ * 3. Set clear values to defaults: The clear color is set to transparent black, the
90
+ * clear depth to the maximum depth value (1.0), and the clear stencil to 0. This
91
+ * ensures that the buffers are reset to a known state, free from any residual data.
92
+ *
93
+ * 4. Clear the buffers: The depth, color, and stencil buffers are cleared, removing
94
+ * any content from previous frames and preparing them for new rendering operations.
95
+ *
96
+ * 5. Restore previous clear values: The original clear values are reinstated to return
97
+ * the WebGL context to its state prior to this operation, allowing subsequent rendering
98
+ * to proceed without interference.
99
+ *
100
+ * This clearing process is crucial for some XR devices to function correctly and to
101
+ * prevent rendering artifacts from past frames. It ensures that each new frame starts
102
+ * with a clean slate.
103
+ */
104
+ if (this[PRIVATE].mode != XRSessionMode.Inline) {
105
+ const currentClearColor = context.getParameter(context.COLOR_CLEAR_VALUE);
106
+ const currentClearDepth = context.getParameter(context.DEPTH_CLEAR_VALUE);
107
+ const currentClearStencil = context.getParameter(context.STENCIL_CLEAR_VALUE);
108
+ context.clearColor(0.0, 0.0, 0.0, 0.0);
109
+ context.clearDepth(1);
110
+ context.clearStencil(0.0);
111
+ context.clear(context.DEPTH_BUFFER_BIT |
112
+ context.COLOR_BUFFER_BIT |
113
+ context.STENCIL_BUFFER_BIT);
114
+ context.clearColor(currentClearColor[0], currentClearColor[1], currentClearColor[2], currentClearColor[3]);
115
+ context.clearDepth(currentClearDepth);
116
+ context.clearStencil(currentClearStencil);
117
+ }
118
+ // Calculate projection matrices
119
+ const { depthNear, depthFar } = this[PRIVATE].renderState;
120
+ const { width, height } = canvas;
121
+ if (this[PRIVATE].mode !== XRSessionMode.Inline) {
122
+ const aspect = (width * (this[PRIVATE].device.stereoEnabled ? 0.5 : 1.0)) / height;
123
+ mat4.perspective(this[PRIVATE].projectionMatrices[XREye.Left], this[PRIVATE].device.fovy, aspect, depthNear, depthFar);
124
+ mat4.copy(this[PRIVATE].projectionMatrices[XREye.Right], this[PRIVATE].projectionMatrices[XREye.Left]);
125
+ }
126
+ else {
127
+ const aspect = width / height;
128
+ mat4.perspective(this[PRIVATE].projectionMatrices[XREye.None], this[PRIVATE].renderState.inlineVerticalFieldOfView, aspect, depthNear, depthFar);
129
+ }
130
+ const frame = new XRFrame(this, this[PRIVATE].frameHandle, true, true, performance.now());
131
+ this[PRIVATE].device[XRDEVICE_PRIVATE].onFrameStart(frame);
132
+ this[PRIVATE].updateActiveInputSources();
133
+ /*
134
+ * For each entry in callbacks, in order:
135
+ * - If the entry’s cancelled boolean is true, continue to the next entry.
136
+ * - Invoke the Web IDL callback function, passing now and frame as the arguments.
137
+ * - If an exception is thrown, report the exception.
138
+ */
139
+ // - Let callbacks be a list of the entries in session’s list of animation frame
140
+ // callback, in the order in which they were added to the list.
141
+ const callbacks = (this[PRIVATE].currentFrameCallbacks =
142
+ this[PRIVATE].frameCallbacks);
143
+ // - Set session’s list of animation frame callbacks to the empty list.
144
+ this[PRIVATE].frameCallbacks = [];
145
+ const rightNow = performance.now();
146
+ for (let i = 0; i < callbacks.length; i++) {
147
+ try {
148
+ if (!callbacks[i].cancelled) {
149
+ callbacks[i].callback(rightNow, frame);
150
+ }
151
+ }
152
+ catch (err) {
153
+ console.error(err);
154
+ }
155
+ }
156
+ this[PRIVATE].currentFrameCallbacks = null;
157
+ // - Set frame’s active boolean to false.
158
+ frame[XRFRAME_PRIVATE].active = false;
159
+ },
160
+ nominalFrameRate: device.internalNominalFrameRate,
161
+ referenceSpaces: [],
162
+ inputSourceArray: [],
163
+ activeInputSources: [],
164
+ updateActiveInputSources: () => {
165
+ const handTrackingOn = this[PRIVATE].enabledFeatures.includes(WebXRFeatures.HandTracking);
166
+ const prevInputs = this[PRIVATE].activeInputSources;
167
+ const currInputs = this[PRIVATE].device.inputSources.filter((inputSource) => !inputSource.hand || handTrackingOn);
168
+ const added = currInputs.filter((item) => !prevInputs.includes(item));
169
+ const removed = prevInputs.filter((item) => !currInputs.includes(item));
170
+ if (added.length > 0 || removed.length > 0) {
171
+ this.dispatchEvent(new XRInputSourcesChangeEvent('inputsourceschange', {
172
+ session: this,
173
+ added,
174
+ removed,
175
+ }));
176
+ }
177
+ this[PRIVATE].activeInputSources = currInputs;
178
+ },
179
+ onend: null,
180
+ oninputsourceschange: null,
181
+ onselect: null,
182
+ onselectstart: null,
183
+ onselectend: null,
184
+ onsqueeze: null,
185
+ onsqueezestart: null,
186
+ onsqueezeend: null,
187
+ onvisibilitychange: null,
188
+ onframeratechange: null,
189
+ };
190
+ // start the frameloop
191
+ this[PRIVATE].onDeviceFrame();
192
+ }
193
+ get visibilityState() {
194
+ return this[PRIVATE].device.visibilityState;
195
+ }
196
+ get frameRate() {
197
+ return this[PRIVATE].nominalFrameRate;
198
+ }
199
+ get supportedFrameRates() {
200
+ return new Float32Array(this[PRIVATE].device.supportedFrameRates);
201
+ }
202
+ get renderState() {
203
+ return this[PRIVATE].renderState;
204
+ }
205
+ get inputSources() {
206
+ // use the same array object
207
+ this[PRIVATE].inputSourceArray.length = 0;
208
+ if (!this[PRIVATE].ended && this[PRIVATE].mode !== XRSessionMode.Inline) {
209
+ this[PRIVATE].inputSourceArray.push(...this[PRIVATE].activeInputSources);
210
+ }
211
+ return this[PRIVATE].inputSourceArray;
212
+ }
213
+ get enabledFeatures() {
214
+ return this[PRIVATE].enabledFeatures;
215
+ }
216
+ get isSystemKeyboardSupported() {
217
+ return this[PRIVATE].isSystemKeyboardSupported;
218
+ }
219
+ updateRenderState(state = {}) {
220
+ if (this[PRIVATE].ended) {
221
+ throw new DOMException('XRSession has already ended.', 'InvalidStateError');
222
+ }
223
+ if (state.baseLayer &&
224
+ state.baseLayer[XRWEBGLLAYER_PRIVATE].session !== this) {
225
+ throw new DOMException('Base layer was created by a different XRSession', 'InvalidStateError');
226
+ }
227
+ if (state.inlineVerticalFieldOfView != null &&
228
+ this[PRIVATE].mode !== XRSessionMode.Inline) {
229
+ throw new DOMException('InlineVerticalFieldOfView must not be set for an immersive session', 'InvalidStateError');
230
+ }
231
+ this[PRIVATE].pendingRenderState = new XRRenderState(state, this[PRIVATE].renderState);
232
+ }
233
+ // the nominal frame rate updates are emulated, no actual update to the
234
+ // display frame rate of the device will be executed
235
+ async updateTargetFrameRate(rate) {
236
+ return new Promise((resolve, reject) => {
237
+ if (this[PRIVATE].ended) {
238
+ reject(new DOMException('XRSession has already ended.', 'InvalidStateError'));
239
+ }
240
+ else if (!this[PRIVATE].device.supportedFrameRates.includes(rate)) {
241
+ reject(new DOMException('Requested frame rate not supported.', 'InvalidStateError'));
242
+ }
243
+ else {
244
+ if (this[PRIVATE].nominalFrameRate === rate) {
245
+ console.log(`Requested frame rate is the same as the current nominal frame rate, no update made`);
246
+ }
247
+ else {
248
+ this[PRIVATE].nominalFrameRate = rate;
249
+ this.dispatchEvent(new XRSessionEvent('frameratechange', { session: this }));
250
+ console.log(`Nominal frame rate updated to ${rate}`);
251
+ }
252
+ resolve();
253
+ }
254
+ });
255
+ }
256
+ async requestReferenceSpace(type) {
257
+ return new Promise((resolve, reject) => {
258
+ if (this[PRIVATE].ended ||
259
+ !this[PRIVATE].referenceSpaceIsSupported(type)) {
260
+ reject(new DOMException('The requested reference space type is not supported.', 'NotSupportedError'));
261
+ return;
262
+ }
263
+ let referenceSpace;
264
+ switch (type) {
265
+ case XRReferenceSpaceType.Viewer:
266
+ referenceSpace = this[PRIVATE].device.viewerSpace;
267
+ break;
268
+ case XRReferenceSpaceType.Local:
269
+ // creating an XRReferenceSpace with the current headset transform in global space
270
+ referenceSpace = new XRReferenceSpace(type, this[PRIVATE].device[XRDEVICE_PRIVATE].globalSpace, this[PRIVATE].device.viewerSpace[XRSPACE_PRIVATE].offsetMatrix);
271
+ break;
272
+ case XRReferenceSpaceType.LocalFloor:
273
+ case XRReferenceSpaceType.BoundedFloor:
274
+ case XRReferenceSpaceType.Unbounded:
275
+ // TO-DO: add boundary geometry for bounded-floor
276
+ referenceSpace = new XRReferenceSpace(type, this[PRIVATE].device[XRDEVICE_PRIVATE].globalSpace);
277
+ break;
278
+ }
279
+ this[PRIVATE].referenceSpaces.push(referenceSpace);
280
+ resolve(referenceSpace);
281
+ });
282
+ }
283
+ requestAnimationFrame(callback) {
284
+ if (this[PRIVATE].ended) {
285
+ return 0;
286
+ }
287
+ const frameHandle = ++this[PRIVATE].frameHandle;
288
+ this[PRIVATE].frameCallbacks.push({
289
+ handle: frameHandle,
290
+ callback,
291
+ cancelled: false,
292
+ });
293
+ return frameHandle;
294
+ }
295
+ cancelAnimationFrame(handle) {
296
+ // Remove the callback with that handle from the queue
297
+ let callbacks = this[PRIVATE].frameCallbacks;
298
+ let index = callbacks.findIndex((d) => d && d.handle === handle);
299
+ if (index > -1) {
300
+ callbacks[index].cancelled = true;
301
+ callbacks.splice(index, 1);
302
+ }
303
+ // If cancelAnimationFrame is called from within a frame callback, also check
304
+ // the remaining callbacks for the current frame:
305
+ callbacks = this[PRIVATE].currentFrameCallbacks;
306
+ if (callbacks) {
307
+ index = callbacks.findIndex((d) => d && d.handle === handle);
308
+ if (index > -1) {
309
+ callbacks[index].cancelled = true;
310
+ // Rely on cancelled flag only; don't mutate this array while it's being iterated
311
+ }
312
+ }
313
+ }
314
+ async end() {
315
+ return new Promise((resolve, reject) => {
316
+ if (this[PRIVATE].ended || this[PRIVATE].deviceFrameHandle === null) {
317
+ reject(new DOMException('XRSession has already ended.', 'InvalidStateError'));
318
+ }
319
+ else {
320
+ globalThis.cancelAnimationFrame(this[PRIVATE].deviceFrameHandle);
321
+ this[PRIVATE].device[XRDEVICE_PRIVATE].onSessionEnd();
322
+ this.dispatchEvent(new XRSessionEvent('end', { session: this }));
323
+ resolve();
324
+ }
325
+ });
326
+ }
327
+ // events
328
+ get onend() {
329
+ var _a;
330
+ return (_a = this[PRIVATE].onend) !== null && _a !== void 0 ? _a : (() => { });
331
+ }
332
+ set onend(callback) {
333
+ if (this[PRIVATE].onend) {
334
+ this.removeEventListener('end', this[PRIVATE].onend);
335
+ }
336
+ this[PRIVATE].onend = callback;
337
+ if (callback) {
338
+ this.addEventListener('end', callback);
339
+ }
340
+ }
341
+ get oninputsourceschange() {
342
+ var _a;
343
+ return (_a = this[PRIVATE].oninputsourceschange) !== null && _a !== void 0 ? _a : (() => { });
344
+ }
345
+ set oninputsourceschange(callback) {
346
+ if (this[PRIVATE].oninputsourceschange) {
347
+ this.removeEventListener('inputsourceschange', this[PRIVATE].oninputsourceschange);
348
+ }
349
+ this[PRIVATE].oninputsourceschange = callback;
350
+ if (callback) {
351
+ this.addEventListener('inputsourceschange', callback);
352
+ }
353
+ }
354
+ get onselect() {
355
+ var _a;
356
+ return (_a = this[PRIVATE].onselect) !== null && _a !== void 0 ? _a : (() => { });
357
+ }
358
+ set onselect(callback) {
359
+ if (this[PRIVATE].onselect) {
360
+ this.removeEventListener('select', this[PRIVATE].onselect);
361
+ }
362
+ this[PRIVATE].onselect = callback;
363
+ if (callback) {
364
+ this.addEventListener('select', callback);
365
+ }
366
+ }
367
+ get onselectstart() {
368
+ var _a;
369
+ return (_a = this[PRIVATE].onselectstart) !== null && _a !== void 0 ? _a : (() => { });
370
+ }
371
+ set onselectstart(callback) {
372
+ if (this[PRIVATE].onselectstart) {
373
+ this.removeEventListener('selectstart', this[PRIVATE].onselectstart);
374
+ }
375
+ this[PRIVATE].onselectstart = callback;
376
+ if (callback) {
377
+ this.addEventListener('selectstart', callback);
378
+ }
379
+ }
380
+ get onselectend() {
381
+ var _a;
382
+ return (_a = this[PRIVATE].onselectend) !== null && _a !== void 0 ? _a : (() => { });
383
+ }
384
+ set onselectend(callback) {
385
+ if (this[PRIVATE].onselectend) {
386
+ this.removeEventListener('selectend', this[PRIVATE].onselectend);
387
+ }
388
+ this[PRIVATE].onselectend = callback;
389
+ if (callback) {
390
+ this.addEventListener('selectend', callback);
391
+ }
392
+ }
393
+ get onsqueeze() {
394
+ var _a;
395
+ return (_a = this[PRIVATE].onsqueeze) !== null && _a !== void 0 ? _a : (() => { });
396
+ }
397
+ set onsqueeze(callback) {
398
+ if (this[PRIVATE].onsqueeze) {
399
+ this.removeEventListener('squeeze', this[PRIVATE].onsqueeze);
400
+ }
401
+ this[PRIVATE].onsqueeze = callback;
402
+ if (callback) {
403
+ this.addEventListener('squeeze', callback);
404
+ }
405
+ }
406
+ get onsqueezestart() {
407
+ var _a;
408
+ return (_a = this[PRIVATE].onsqueezestart) !== null && _a !== void 0 ? _a : (() => { });
409
+ }
410
+ set onsqueezestart(callback) {
411
+ if (this[PRIVATE].onsqueezestart) {
412
+ this.removeEventListener('squeezestart', this[PRIVATE].onsqueezestart);
413
+ }
414
+ this[PRIVATE].onsqueezestart = callback;
415
+ if (callback) {
416
+ this.addEventListener('squeezestart', callback);
417
+ }
418
+ }
419
+ get onsqueezeend() {
420
+ var _a;
421
+ return (_a = this[PRIVATE].onsqueezeend) !== null && _a !== void 0 ? _a : (() => { });
422
+ }
423
+ set onsqueezeend(callback) {
424
+ if (this[PRIVATE].onsqueezeend) {
425
+ this.removeEventListener('squeezeend', this[PRIVATE].onsqueezeend);
426
+ }
427
+ this[PRIVATE].onsqueezeend = callback;
428
+ if (callback) {
429
+ this.addEventListener('squeezeend', callback);
430
+ }
431
+ }
432
+ get onvisibilitychange() {
433
+ var _a;
434
+ return (_a = this[PRIVATE].onvisibilitychange) !== null && _a !== void 0 ? _a : (() => { });
435
+ }
436
+ set onvisibilitychange(callback) {
437
+ if (this[PRIVATE].onvisibilitychange) {
438
+ this.removeEventListener('visibilitychange', this[PRIVATE].onvisibilitychange);
439
+ }
440
+ this[PRIVATE].onvisibilitychange = callback;
441
+ if (callback) {
442
+ this.addEventListener('visibilitychange', callback);
443
+ }
444
+ }
445
+ get onframeratechange() {
446
+ var _a;
447
+ return (_a = this[PRIVATE].onframeratechange) !== null && _a !== void 0 ? _a : (() => { });
448
+ }
449
+ set onframeratechange(callback) {
450
+ if (this[PRIVATE].onframeratechange) {
451
+ this.removeEventListener('frameratechange', this[PRIVATE].onframeratechange);
452
+ }
453
+ this[PRIVATE].onframeratechange = callback;
454
+ if (callback) {
455
+ this.addEventListener('frameratechange', callback);
456
+ }
457
+ }
458
+ }
459
+ //# sourceMappingURL=XRSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRSession.js","sourceRoot":"","sources":["../../src/session/XRSession.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { XRHandJoint } from '../input/XRHand';
2
+ import { XRSpace } from './XRSpace';
3
+ import { mat4 } from 'gl-matrix';
4
+ export declare const PRIVATE: unique symbol;
5
+ export declare class XRJointSpace extends XRSpace {
6
+ [PRIVATE]: {
7
+ jointName: XRHandJoint;
8
+ radius: number;
9
+ };
10
+ constructor(jointName: XRHandJoint, parentSpace?: XRSpace, offsetMatrix?: mat4);
11
+ get jointName(): XRHandJoint;
12
+ }
13
+ //# sourceMappingURL=XRJointSpace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRJointSpace.d.ts","sourceRoot":"","sources":["../../src/spaces/XRJointSpace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,eAAO,MAAM,OAAO,eAEnB,CAAC;AAEF,qBAAa,YAAa,SAAQ,OAAO;IACxC,CAAC,OAAO,CAAC,EAAE;QACV,SAAS,EAAE,WAAW,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;gBAGD,SAAS,EAAE,WAAW,EACtB,WAAW,CAAC,EAAE,OAAO,EACrB,YAAY,CAAC,EAAE,IAAI;IAMpB,IAAI,SAAS,gBAEZ;CACD"}
@@ -0,0 +1,12 @@
1
+ import { XRSpace } from './XRSpace';
2
+ export const PRIVATE = Symbol('@immersive-web-emulation-runtime/xr-joint-space');
3
+ export class XRJointSpace extends XRSpace {
4
+ constructor(jointName, parentSpace, offsetMatrix) {
5
+ super(parentSpace, offsetMatrix);
6
+ this[PRIVATE] = { jointName, radius: 0 };
7
+ }
8
+ get jointName() {
9
+ return this[PRIVATE].jointName;
10
+ }
11
+ }
12
+ //# sourceMappingURL=XRJointSpace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRJointSpace.js","sourceRoot":"","sources":["../../src/spaces/XRJointSpace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAC5B,iDAAiD,CACjD,CAAC;AAEF,MAAM,OAAO,YAAa,SAAQ,OAAO;IAMxC,YACC,SAAsB,EACtB,WAAqB,EACrB,YAAmB;QAEnB,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;IAChC,CAAC;CACD"}
@@ -0,0 +1,22 @@
1
+ import { XRReferenceSpaceEventHandler } from '../events/XRReferenceSpaceEvent';
2
+ import { XRSpace } from './XRSpace';
3
+ import { mat4 } from 'gl-matrix';
4
+ export declare const PRIVATE: unique symbol;
5
+ export declare enum XRReferenceSpaceType {
6
+ Viewer = "viewer",
7
+ Local = "local",
8
+ LocalFloor = "local-floor",
9
+ BoundedFloor = "bounded-floor",
10
+ Unbounded = "unbounded"
11
+ }
12
+ export declare class XRReferenceSpace extends XRSpace {
13
+ [PRIVATE]: {
14
+ type: XRReferenceSpaceType;
15
+ onreset: XRReferenceSpaceEventHandler | null;
16
+ };
17
+ constructor(type: XRReferenceSpaceType, parentSpace: XRSpace, offsetMatrix?: mat4);
18
+ get onreset(): XRReferenceSpaceEventHandler;
19
+ set onreset(callback: XRReferenceSpaceEventHandler);
20
+ getOffsetReferenceSpace(originOffset: mat4): XRReferenceSpace;
21
+ }
22
+ //# sourceMappingURL=XRReferenceSpace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRReferenceSpace.d.ts","sourceRoot":"","sources":["../../src/spaces/XRReferenceSpace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,eAAO,MAAM,OAAO,eAEnB,CAAC;AAEF,oBAAY,oBAAoB;IAC/B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,UAAU,gBAAgB;IAC1B,YAAY,kBAAkB;IAC9B,SAAS,cAAc;CACvB;AAED,qBAAa,gBAAiB,SAAQ,OAAO;IAC5C,CAAC,OAAO,CAAC,EAAE;QACV,IAAI,EAAE,oBAAoB,CAAC;QAC3B,OAAO,EAAE,4BAA4B,GAAG,IAAI,CAAC;KAC7C,CAGC;gBAGD,IAAI,EAAE,oBAAoB,EAC1B,WAAW,EAAE,OAAO,EACpB,YAAY,CAAC,EAAE,IAAI;IAMpB,IAAI,OAAO,IAAI,4BAA4B,CAE1C;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,4BAA4B,EAQjD;IAGD,uBAAuB,CAAC,YAAY,EAAE,IAAI,GAAG,gBAAgB;CAK7D"}
@@ -0,0 +1,42 @@
1
+ var _a;
2
+ import { XRSpace } from './XRSpace';
3
+ export const PRIVATE = Symbol('@immersive-web-emulation-runtime/xr-reference-space');
4
+ export var XRReferenceSpaceType;
5
+ (function (XRReferenceSpaceType) {
6
+ XRReferenceSpaceType["Viewer"] = "viewer";
7
+ XRReferenceSpaceType["Local"] = "local";
8
+ XRReferenceSpaceType["LocalFloor"] = "local-floor";
9
+ XRReferenceSpaceType["BoundedFloor"] = "bounded-floor";
10
+ XRReferenceSpaceType["Unbounded"] = "unbounded";
11
+ })(XRReferenceSpaceType || (XRReferenceSpaceType = {}));
12
+ export class XRReferenceSpace extends XRSpace {
13
+ constructor(type, parentSpace, offsetMatrix) {
14
+ super(parentSpace, offsetMatrix);
15
+ this[_a] = {
16
+ type: null,
17
+ onreset: () => { },
18
+ };
19
+ this[PRIVATE].type = type;
20
+ }
21
+ get onreset() {
22
+ var _b;
23
+ return (_b = this[PRIVATE].onreset) !== null && _b !== void 0 ? _b : (() => { });
24
+ }
25
+ set onreset(callback) {
26
+ if (this[PRIVATE].onreset) {
27
+ this.removeEventListener('reset', this[PRIVATE].onreset);
28
+ }
29
+ this[PRIVATE].onreset = callback;
30
+ if (callback) {
31
+ this.addEventListener('reset', callback);
32
+ }
33
+ }
34
+ // Create a new XRReferenceSpace with an offset from the current space
35
+ getOffsetReferenceSpace(originOffset) {
36
+ // Create a new XRReferenceSpace with the originOffset as its offsetMatrix
37
+ // The new space's parent is set to 'this' (the current XRReferenceSpace)
38
+ return new XRReferenceSpace(this[PRIVATE].type, this, originOffset);
39
+ }
40
+ }
41
+ _a = PRIVATE;
42
+ //# sourceMappingURL=XRReferenceSpace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRReferenceSpace.js","sourceRoot":"","sources":["../../src/spaces/XRReferenceSpace.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAC5B,qDAAqD,CACrD,CAAC;AAEF,MAAM,CAAN,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC/B,yCAAiB,CAAA;IACjB,uCAAe,CAAA;IACf,kDAA0B,CAAA;IAC1B,sDAA8B,CAAA;IAC9B,+CAAuB,CAAA;AACxB,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B;AAED,MAAM,OAAO,gBAAiB,SAAQ,OAAO;IAS5C,YACC,IAA0B,EAC1B,WAAoB,EACpB,YAAmB;QAEnB,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAblC,QAAS,GAGL;YACH,IAAI,EAAE,IAAW;YACjB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SACjB,CAAC;QAQD,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,OAAO;;QACV,OAAO,MAAA,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,mCAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,QAAsC;QACjD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;YAC1B,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAwB,CAAC,CAAC;SAC1E;QACD,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC;QACjC,IAAI,QAAQ,EAAE;YACb,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAyB,CAAC,CAAC;SAC1D;IACF,CAAC;IAED,sEAAsE;IACtE,uBAAuB,CAAC,YAAkB;QACzC,0EAA0E;QAC1E,yEAAyE;QACzE,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACrE,CAAC;CACD;KArCC,OAAO"}
@@ -0,0 +1,20 @@
1
+ import { mat4, quat, vec3 } from 'gl-matrix';
2
+ export declare const PRIVATE: unique symbol;
3
+ export declare class XRSpace extends EventTarget {
4
+ [PRIVATE]: {
5
+ parentSpace: XRSpace | undefined;
6
+ offsetMatrix: mat4;
7
+ emulated: boolean;
8
+ };
9
+ constructor(parentSpace?: XRSpace, offsetMatrix?: mat4);
10
+ }
11
+ export declare class GlobalSpace extends XRSpace {
12
+ constructor();
13
+ }
14
+ export declare class XRSpaceUtils {
15
+ static updateOffsetPosition(space: XRSpace, position: vec3): void;
16
+ static updateOffsetQuaternion(space: XRSpace, quaternion: quat): void;
17
+ static updateOffsetMatrix(space: XRSpace, matrix: mat4): void;
18
+ static calculateGlobalOffsetMatrix(space: XRSpace, globalOffset?: mat4): mat4;
19
+ }
20
+ //# sourceMappingURL=XRSpace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRSpace.d.ts","sourceRoot":"","sources":["../../src/spaces/XRSpace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE7C,eAAO,MAAM,OAAO,eAAsD,CAAC;AAE3E,qBAAa,OAAQ,SAAQ,WAAW;IACvC,CAAC,OAAO,CAAC,EAAE;QACV,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;QACjC,YAAY,EAAE,IAAI,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;KAClB,CAAC;gBAEU,WAAW,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,IAAI;CAQtD;AAED,qBAAa,WAAY,SAAQ,OAAO;;CAIvC;AAED,qBAAa,YAAY;IAExB,MAAM,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,GAAG,IAAI;IAMjE,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI;IAQrE,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI;IAM7D,MAAM,CAAC,2BAA2B,CACjC,KAAK,EAAE,OAAO,EACd,YAAY,GAAE,IAAoB,GAChC,IAAI;CAQP"}