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,117 @@
1
+ import { XREye, XRView } from '../views/XRView';
2
+ import { PRIVATE as XRJOINTSPACE_PRIVATE, } from '../spaces/XRJointSpace';
3
+ import { PRIVATE as XRSESSION_PRIVATE, XRSessionMode, } from '../session/XRSession';
4
+ import { PRIVATE as XRSPACE_PRIVATE, XRSpaceUtils, } from '../spaces/XRSpace';
5
+ import { mat4, quat, vec3 } from 'gl-matrix';
6
+ import { XRJointPose } from '../pose/XRJointPose';
7
+ import { XRPose } from '../pose/XRPose';
8
+ import { XRRigidTransform } from '../primitives/XRRigidTransform';
9
+ import { XRViewerPose } from '../pose/XRViewerPose';
10
+ export const PRIVATE = Symbol('@immersive-web-emulation-runtime/xr-frame');
11
+ const spaceGlobalMatrix = mat4.create();
12
+ const baseSpaceGlobalMatrix = mat4.create();
13
+ const baseSpaceGlobalMatrixInverse = mat4.create();
14
+ const getOffsetMatrix = (offsetMatrix, space, baseSpace) => {
15
+ XRSpaceUtils.calculateGlobalOffsetMatrix(space, spaceGlobalMatrix);
16
+ XRSpaceUtils.calculateGlobalOffsetMatrix(baseSpace, baseSpaceGlobalMatrix);
17
+ mat4.invert(baseSpaceGlobalMatrixInverse, baseSpaceGlobalMatrix);
18
+ mat4.multiply(offsetMatrix, baseSpaceGlobalMatrixInverse, spaceGlobalMatrix);
19
+ };
20
+ export class XRFrame {
21
+ constructor(session, id, active, animationFrame, predictedDisplayTime) {
22
+ this[PRIVATE] = {
23
+ session,
24
+ id,
25
+ active,
26
+ animationFrame,
27
+ predictedDisplayTime,
28
+ tempMat4: mat4.create(),
29
+ };
30
+ }
31
+ get session() {
32
+ return this[PRIVATE].session;
33
+ }
34
+ get predictedDisplayTime() {
35
+ return this[PRIVATE].predictedDisplayTime;
36
+ }
37
+ getPose(space, baseSpace) {
38
+ if (!this[PRIVATE].active) {
39
+ throw new DOMException('XRFrame access outside the callback that produced it is invalid.', 'InvalidStateError');
40
+ }
41
+ getOffsetMatrix(this[PRIVATE].tempMat4, space, baseSpace);
42
+ const position = vec3.create();
43
+ mat4.getTranslation(position, this[PRIVATE].tempMat4);
44
+ const orientation = quat.create();
45
+ mat4.getRotation(orientation, this[PRIVATE].tempMat4);
46
+ return new XRPose(new XRRigidTransform({ x: position[0], y: position[1], z: position[2], w: 1.0 }, {
47
+ x: orientation[0],
48
+ y: orientation[1],
49
+ z: orientation[2],
50
+ w: orientation[3],
51
+ }), space[XRSPACE_PRIVATE].emulated);
52
+ }
53
+ getViewerPose(referenceSpace) {
54
+ if (!this[PRIVATE].animationFrame) {
55
+ throw new DOMException('getViewerPose can only be called on XRFrame objects passed to XRSession.requestAnimationFrame callbacks.', 'InvalidStateError');
56
+ }
57
+ const session = this[PRIVATE].session;
58
+ const device = session[XRSESSION_PRIVATE].device;
59
+ const pose = this.getPose(device.viewerSpace, referenceSpace);
60
+ const eyes = session[XRSESSION_PRIVATE].mode === XRSessionMode.Inline
61
+ ? [XREye.None]
62
+ : [XREye.Left, XREye.Right];
63
+ const views = [];
64
+ eyes.forEach((eye) => {
65
+ const viewSpace = device.viewSpaces[eye];
66
+ const viewPose = this.getPose(viewSpace, referenceSpace);
67
+ const projectionMatrix = session[XRSESSION_PRIVATE].getProjectionMatrix(eye);
68
+ const view = new XRView(eye, new Float32Array(projectionMatrix), viewPose.transform, session);
69
+ views.push(view);
70
+ });
71
+ return new XRViewerPose(pose.transform, views, false);
72
+ }
73
+ getJointPose(joint, baseSpace) {
74
+ const xrPose = this.getPose(joint, baseSpace);
75
+ const radius = joint[XRJOINTSPACE_PRIVATE].radius;
76
+ return new XRJointPose(xrPose.transform, radius, false);
77
+ }
78
+ fillJointRadii(jointSpaces, radii) {
79
+ // converting from sequence type to array
80
+ jointSpaces = Array.from(jointSpaces);
81
+ if (!this[PRIVATE].active) {
82
+ throw new DOMException('XRFrame access outside the callback that produced it is invalid.', 'InvalidStateError');
83
+ }
84
+ if (jointSpaces.length > radii.length) {
85
+ throw new DOMException('The length of jointSpaces is larger than the number of elements in radii', 'TypeError');
86
+ }
87
+ let allValid = true;
88
+ for (let offset = 0; offset < jointSpaces.length; offset++) {
89
+ if (!jointSpaces[offset][XRJOINTSPACE_PRIVATE].radius) {
90
+ radii[offset] = NaN;
91
+ allValid = false;
92
+ }
93
+ else {
94
+ radii[offset] = jointSpaces[offset][XRJOINTSPACE_PRIVATE].radius;
95
+ }
96
+ }
97
+ return allValid;
98
+ }
99
+ fillPoses(spaces, baseSpace, transforms) {
100
+ // converting from sequence type to array
101
+ spaces = Array.from(spaces);
102
+ if (!this[PRIVATE].active) {
103
+ throw new DOMException('XRFrame access outside the callback that produced it is invalid.', 'InvalidStateError');
104
+ }
105
+ if (spaces.length * 16 > transforms.length) {
106
+ throw new DOMException('The length of spaces multiplied by 16 is larger than the number of elements in transforms', 'TypeError');
107
+ }
108
+ spaces.forEach((space, i) => {
109
+ getOffsetMatrix(this[PRIVATE].tempMat4, space, baseSpace);
110
+ for (let j = 0; j < 16; j++) {
111
+ transforms[i * 16 + j] = this[PRIVATE].tempMat4[j];
112
+ }
113
+ });
114
+ return true;
115
+ }
116
+ }
117
+ //# sourceMappingURL=XRFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRFrame.js","sourceRoot":"","sources":["../../src/frameloop/XRFrame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ export declare const PRIVATE: unique symbol;
2
+ export declare enum GamepadMappingType {
3
+ None = "",
4
+ Standard = "standard",
5
+ XRStandard = "xr-standard"
6
+ }
7
+ export interface Button {
8
+ id: string;
9
+ type: 'binary' | 'analog' | 'manual';
10
+ eventTrigger?: 'select' | 'squeeze';
11
+ }
12
+ export interface Axis {
13
+ id: string;
14
+ type: 'x-axis' | 'y-axis' | 'manual';
15
+ }
16
+ export interface GamepadConfig {
17
+ mapping: GamepadMappingType;
18
+ buttons: (Button | null)[];
19
+ axes: (Axis | null)[];
20
+ }
21
+ export declare class GamepadButton {
22
+ [PRIVATE]: {
23
+ type: 'analog' | 'binary' | 'manual';
24
+ eventTrigger: 'select' | 'squeeze' | null;
25
+ pressed: boolean;
26
+ touched: boolean;
27
+ value: number;
28
+ lastFrameValue: number;
29
+ pendingValue: number | null;
30
+ };
31
+ constructor(type: 'analog' | 'binary' | 'manual', eventTrigger: 'select' | 'squeeze' | null);
32
+ get pressed(): boolean;
33
+ get touched(): boolean;
34
+ get value(): number;
35
+ }
36
+ export declare class EmptyGamepadButton {
37
+ pressed: boolean;
38
+ touched: boolean;
39
+ value: number;
40
+ }
41
+ export declare class Gamepad {
42
+ [PRIVATE]: {
43
+ id: string;
44
+ index: number;
45
+ connected: boolean;
46
+ timestamp: DOMHighResTimeStamp;
47
+ mapping: GamepadMappingType;
48
+ buttonsMap: {
49
+ [id: string]: GamepadButton | null;
50
+ };
51
+ buttonsSequence: (string | null)[];
52
+ axesMap: {
53
+ [id: string]: {
54
+ x: number;
55
+ y: number;
56
+ };
57
+ };
58
+ axesSequence: (string | null)[];
59
+ hapticActuators: GamepadHapticActuator[];
60
+ };
61
+ constructor(gamepadConfig: GamepadConfig, id?: string, index?: number);
62
+ get id(): string;
63
+ get index(): number;
64
+ get connected(): boolean;
65
+ get timestamp(): number;
66
+ get mapping(): GamepadMappingType;
67
+ get axes(): (number | null)[];
68
+ get buttons(): (GamepadButton | EmptyGamepadButton | null)[];
69
+ get hapticActuators(): GamepadHapticActuator[];
70
+ get vibrationActuator(): null;
71
+ }
72
+ //# sourceMappingURL=Gamepad.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gamepad.d.ts","sourceRoot":"","sources":["../../src/gamepad/Gamepad.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,eAAqD,CAAC;AAE1E,oBAAY,kBAAkB;IAC7B,IAAI,KAAK;IACT,QAAQ,aAAa;IACrB,UAAU,gBAAgB;CAC1B;AAED,MAAM,WAAW,MAAM;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrC,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACpC;AAED,MAAM,WAAW,IAAI;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,kBAAkB,CAAC;IAC5B,OAAO,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAC3B,IAAI,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;CACtB;AAED,qBAAa,aAAa;IACzB,CAAC,OAAO,CAAC,EAAE;QACV,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;QACrC,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAAC;QAC1C,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;gBAGD,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACpC,YAAY,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI;IAa1C,IAAI,OAAO,YAMV;IAED,IAAI,OAAO,YAMV;IAED,IAAI,KAAK,WAER;CACD;AAED,qBAAa,kBAAkB;IAC9B,OAAO,UAAS;IAChB,OAAO,UAAS;IAChB,KAAK,SAAK;CACV;AAED,qBAAa,OAAO;IACnB,CAAC,OAAO,CAAC,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,mBAAmB,CAAC;QAC/B,OAAO,EAAE,kBAAkB,CAAC;QAC5B,UAAU,EAAE;YACX,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC;SACnC,CAAC;QACF,eAAe,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE;YACR,CAAC,EAAE,EAAE,MAAM,GAAG;gBAAE,CAAC,EAAE,MAAM,CAAC;gBAAC,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;SACvC,CAAC;QACF,YAAY,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QAChC,eAAe,EAAE,qBAAqB,EAAE,CAAC;KACzC,CAAC;gBAGD,aAAa,EAAE,aAAa,EAC5B,EAAE,GAAE,MAAW,EACf,KAAK,GAAE,MAAW;IAqCnB,IAAI,EAAE,WAEL;IAED,IAAI,KAAK,WAER;IAED,IAAI,SAAS,YAEZ;IAED,IAAI,SAAS,WAEZ;IAED,IAAI,OAAO,uBAEV;IAED,IAAI,IAAI,sBAiBP;IAED,IAAI,OAAO,kDAIV;IAED,IAAI,eAAe,4BAElB;IAED,IAAI,iBAAiB,SAEpB;CACD"}
@@ -0,0 +1,126 @@
1
+ export const PRIVATE = Symbol('@immersive-web-emulation-runtime/gamepad');
2
+ export var GamepadMappingType;
3
+ (function (GamepadMappingType) {
4
+ GamepadMappingType["None"] = "";
5
+ GamepadMappingType["Standard"] = "standard";
6
+ GamepadMappingType["XRStandard"] = "xr-standard";
7
+ })(GamepadMappingType || (GamepadMappingType = {}));
8
+ export class GamepadButton {
9
+ constructor(type, eventTrigger) {
10
+ this[PRIVATE] = {
11
+ type,
12
+ eventTrigger,
13
+ pressed: false,
14
+ touched: false,
15
+ value: 0,
16
+ lastFrameValue: 0,
17
+ pendingValue: null,
18
+ };
19
+ }
20
+ get pressed() {
21
+ if (this[PRIVATE].type === 'manual') {
22
+ return this[PRIVATE].pressed;
23
+ }
24
+ else {
25
+ return this[PRIVATE].value > 0;
26
+ }
27
+ }
28
+ get touched() {
29
+ if (this[PRIVATE].type === 'manual') {
30
+ return this[PRIVATE].touched;
31
+ }
32
+ else {
33
+ return this[PRIVATE].touched || this.pressed;
34
+ }
35
+ }
36
+ get value() {
37
+ return this[PRIVATE].value;
38
+ }
39
+ }
40
+ export class EmptyGamepadButton {
41
+ constructor() {
42
+ this.pressed = false;
43
+ this.touched = false;
44
+ this.value = 0;
45
+ }
46
+ }
47
+ export class Gamepad {
48
+ constructor(gamepadConfig, id = '', index = -1) {
49
+ this[PRIVATE] = {
50
+ id,
51
+ index,
52
+ connected: false,
53
+ timestamp: performance.now(),
54
+ mapping: gamepadConfig.mapping,
55
+ buttonsMap: {},
56
+ buttonsSequence: [],
57
+ axesMap: {},
58
+ axesSequence: [],
59
+ hapticActuators: [],
60
+ };
61
+ gamepadConfig.buttons.forEach((buttonConfig) => {
62
+ var _a;
63
+ if (buttonConfig === null) {
64
+ this[PRIVATE].buttonsSequence.push(null);
65
+ }
66
+ else {
67
+ this[PRIVATE].buttonsSequence.push(buttonConfig.id);
68
+ this[PRIVATE].buttonsMap[buttonConfig.id] = new GamepadButton(buttonConfig.type, (_a = buttonConfig.eventTrigger) !== null && _a !== void 0 ? _a : null);
69
+ }
70
+ });
71
+ gamepadConfig.axes.forEach((axisConfig) => {
72
+ if (axisConfig === null) {
73
+ this[PRIVATE].axesSequence.push(null);
74
+ }
75
+ else {
76
+ this[PRIVATE].axesSequence.push(axisConfig.id + axisConfig.type);
77
+ if (!this[PRIVATE].axesMap[axisConfig.id]) {
78
+ this[PRIVATE].axesMap[axisConfig.id] = { x: 0, y: 0 };
79
+ }
80
+ }
81
+ });
82
+ }
83
+ get id() {
84
+ return this[PRIVATE].id;
85
+ }
86
+ get index() {
87
+ return this[PRIVATE].index;
88
+ }
89
+ get connected() {
90
+ return this[PRIVATE].connected;
91
+ }
92
+ get timestamp() {
93
+ return this[PRIVATE].timestamp;
94
+ }
95
+ get mapping() {
96
+ return this[PRIVATE].mapping;
97
+ }
98
+ get axes() {
99
+ const axes = [];
100
+ this[PRIVATE].axesSequence.forEach((id) => {
101
+ if (id === null) {
102
+ axes.push(null);
103
+ }
104
+ else {
105
+ const axisId = id.substring(0, id.length - 6);
106
+ const axisType = id.substring(id.length - 6);
107
+ axes.push(
108
+ // if axis type is manual, then return the x value
109
+ axisType === 'y-axis'
110
+ ? this[PRIVATE].axesMap[axisId].y
111
+ : this[PRIVATE].axesMap[axisId].x);
112
+ }
113
+ });
114
+ return axes;
115
+ }
116
+ get buttons() {
117
+ return this[PRIVATE].buttonsSequence.map((id) => id === null ? new EmptyGamepadButton() : this[PRIVATE].buttonsMap[id]);
118
+ }
119
+ get hapticActuators() {
120
+ return this[PRIVATE].hapticActuators;
121
+ }
122
+ get vibrationActuator() {
123
+ return null;
124
+ }
125
+ }
126
+ //# sourceMappingURL=Gamepad.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Gamepad.js","sourceRoot":"","sources":["../../src/gamepad/Gamepad.ts"],"names":[],"mappings":"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"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ export { XRDevice, XRDeviceConfig } from './device/XRDevice';
2
+ export { metaQuest2, metaQuest3, metaQuestPro, oculusQuest1, } from './device/configs/headset/meta';
3
+ export { XRSystem } from './initialization/XRSystem';
4
+ export { XRRenderState } from './session/XRRenderState';
5
+ export { XRSession } from './session/XRSession';
6
+ export { XRFrame } from './frameloop/XRFrame';
7
+ export { XRSpace } from './spaces/XRSpace';
8
+ export { XRReferenceSpace } from './spaces/XRReferenceSpace';
9
+ export { XRJointSpace } from './spaces/XRJointSpace';
10
+ export { XRView } from './views/XRView';
11
+ export { XRViewport } from './views/XRViewport';
12
+ export { XRRigidTransform } from './primitives/XRRigidTransform';
13
+ export { XRPose } from './pose/XRPose';
14
+ export { XRViewerPose } from './pose/XRViewerPose';
15
+ export { XRJointPose } from './pose/XRJointPose';
16
+ export { XRInputSource, XRInputSourceArray } from './input/XRInputSource';
17
+ export { XRHand } from './input/XRHand';
18
+ export { XRWebGLLayer, XRLayer } from './layers/XRWebGLLayer';
19
+ export { XRSessionEvent } from './events/XRSessionEvent';
20
+ export { XRInputSourceEvent } from './events/XRInputSourceEvent';
21
+ export { XRInputSourcesChangeEvent } from './events/XRInputSourcesChangeEvent';
22
+ export { XRReferenceSpaceEvent } from './events/XRReferenceSpaceEvent';
23
+ export { ActionRecorder } from './action/ActionRecorder';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACN,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,GACZ,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,36 @@
1
+ // model
2
+ export { XRDevice } from './device/XRDevice';
3
+ export { metaQuest2, metaQuest3, metaQuestPro, oculusQuest1, } from './device/configs/headset/meta';
4
+ // Initialization
5
+ export { XRSystem } from './initialization/XRSystem';
6
+ // Session
7
+ export { XRRenderState } from './session/XRRenderState';
8
+ export { XRSession } from './session/XRSession';
9
+ // Frame Loop
10
+ export { XRFrame } from './frameloop/XRFrame';
11
+ // Spaces
12
+ export { XRSpace } from './spaces/XRSpace';
13
+ export { XRReferenceSpace } from './spaces/XRReferenceSpace';
14
+ export { XRJointSpace } from './spaces/XRJointSpace';
15
+ // Views
16
+ export { XRView } from './views/XRView';
17
+ export { XRViewport } from './views/XRViewport';
18
+ // Primitives
19
+ export { XRRigidTransform } from './primitives/XRRigidTransform';
20
+ // Pose
21
+ export { XRPose } from './pose/XRPose';
22
+ export { XRViewerPose } from './pose/XRViewerPose';
23
+ export { XRJointPose } from './pose/XRJointPose';
24
+ // Input
25
+ export { XRInputSource, XRInputSourceArray } from './input/XRInputSource';
26
+ export { XRHand } from './input/XRHand';
27
+ // Layers
28
+ export { XRWebGLLayer, XRLayer } from './layers/XRWebGLLayer';
29
+ // Events
30
+ export { XRSessionEvent } from './events/XRSessionEvent';
31
+ export { XRInputSourceEvent } from './events/XRInputSourceEvent';
32
+ export { XRInputSourcesChangeEvent } from './events/XRInputSourcesChangeEvent';
33
+ export { XRReferenceSpaceEvent } from './events/XRReferenceSpaceEvent';
34
+ // Action Recording/Playback
35
+ export { ActionRecorder } from './action/ActionRecorder';
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,OAAO,EAAE,QAAQ,EAAkB,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EACN,UAAU,EACV,UAAU,EACV,YAAY,EACZ,YAAY,GACZ,MAAM,+BAA+B,CAAC;AAEvC,iBAAiB;AACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,aAAa;AACb,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,SAAS;AACT,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,QAAQ;AACR,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO;AACP,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,QAAQ;AACR,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE9D,SAAS;AACT,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { XRDevice } from '../device/XRDevice';
2
+ import { XRSession, XRSessionInit, XRSessionMode } from '../session/XRSession';
3
+ export declare const PRIVATE: unique symbol;
4
+ export declare class XRSystem extends EventTarget {
5
+ [PRIVATE]: {
6
+ device: XRDevice;
7
+ activeSession?: XRSession;
8
+ };
9
+ constructor(device: XRDevice);
10
+ isSessionSupported(mode: XRSessionMode): Promise<boolean>;
11
+ requestSession(mode: XRSessionMode, options?: XRSessionInit): Promise<XRSession>;
12
+ }
13
+ //# sourceMappingURL=XRSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRSystem.d.ts","sourceRoot":"","sources":["../../src/initialization/XRSystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE/E,eAAO,MAAM,OAAO,eAAuD,CAAC;AAE5E,qBAAa,QAAS,SAAQ,WAAW;IACxC,CAAC,OAAO,CAAC,EAAE;QACV,MAAM,EAAE,QAAQ,CAAC;QACjB,aAAa,CAAC,EAAE,SAAS,CAAC;KAC1B,CAAC;gBAEU,MAAM,EAAE,QAAQ;IAM5B,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAWzD,cAAc,CACb,IAAI,EAAE,aAAa,EACnB,OAAO,GAAE,aAAkB,GACzB,OAAO,CAAC,SAAS,CAAC;CA2ErB"}
@@ -0,0 +1,65 @@
1
+ import { WebXRFeatures } from '../device/XRDevice';
2
+ import { XRSession, XRSessionMode } from '../session/XRSession';
3
+ export const PRIVATE = Symbol('@immersive-web-emulation-runtime/xr-system');
4
+ export class XRSystem extends EventTarget {
5
+ constructor(device) {
6
+ super();
7
+ this[PRIVATE] = { device };
8
+ // Initialize device change monitoring here if applicable
9
+ }
10
+ isSessionSupported(mode) {
11
+ return new Promise((resolve, _reject) => {
12
+ if (mode === XRSessionMode.Inline) {
13
+ resolve(true);
14
+ }
15
+ else {
16
+ // Check for spatial tracking permission if necessary
17
+ resolve(this[PRIVATE].device.supportedSessionModes.includes(mode));
18
+ }
19
+ });
20
+ }
21
+ requestSession(mode, options = {}) {
22
+ return new Promise((resolve, reject) => {
23
+ this.isSessionSupported(mode)
24
+ .then((isSupported) => {
25
+ if (!isSupported) {
26
+ reject(new DOMException('The requested XRSession mode is not supported.', 'NotSupportedError'));
27
+ return;
28
+ }
29
+ // Check for active sessions and other constraints here
30
+ if (this[PRIVATE].activeSession) {
31
+ reject(new DOMException('An active XRSession already exists.', 'InvalidStateError'));
32
+ return;
33
+ }
34
+ // Handle required and optional features
35
+ const { requiredFeatures = [], optionalFeatures = [] } = options;
36
+ const { supportedFeatures } = this[PRIVATE].device;
37
+ // Check if all required features are supported
38
+ const allRequiredSupported = requiredFeatures.every((feature) => supportedFeatures.includes(feature));
39
+ if (!allRequiredSupported) {
40
+ reject(new Error('One or more required features are not supported by the device.'));
41
+ return;
42
+ }
43
+ // Filter out unsupported optional features
44
+ const supportedOptionalFeatures = optionalFeatures.filter((feature) => supportedFeatures.includes(feature));
45
+ // Combine required and supported optional features into enabled features
46
+ const enabledFeatures = Array.from(new Set([
47
+ ...requiredFeatures,
48
+ ...supportedOptionalFeatures,
49
+ WebXRFeatures.Viewer,
50
+ WebXRFeatures.Local,
51
+ ]));
52
+ // Proceed with session creation
53
+ const session = new XRSession(this[PRIVATE].device, mode, enabledFeatures);
54
+ this[PRIVATE].activeSession = session;
55
+ // Listen for session end to clear the active session
56
+ session.addEventListener('end', () => {
57
+ this[PRIVATE].activeSession = undefined;
58
+ });
59
+ resolve(session);
60
+ })
61
+ .catch(reject);
62
+ });
63
+ }
64
+ }
65
+ //# sourceMappingURL=XRSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRSystem.js","sourceRoot":"","sources":["../../src/initialization/XRSystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { XRJointSpace } from '../spaces/XRJointSpace';
2
+ export declare enum XRHandJoint {
3
+ Wrist = "wrist",
4
+ ThumbMetacarpal = "thumb-metacarpal",
5
+ ThumbPhalanxProximal = "thumb-phalanx-proximal",
6
+ ThumbPhalanxDistal = "thumb-phalanx-distal",
7
+ ThumbTip = "thumb-tip",
8
+ IndexFingerMetacarpal = "index-finger-metacarpal",
9
+ IndexFingerPhalanxProximal = "index-finger-phalanx-proximal",
10
+ IndexFingerPhalanxIntermediate = "index-finger-phalanx-intermediate",
11
+ IndexFingerPhalanxDistal = "index-finger-phalanx-distal",
12
+ IndexFingerTip = "index-finger-tip",
13
+ MiddleFingerMetacarpal = "middle-finger-metacarpal",
14
+ MiddleFingerPhalanxProximal = "middle-finger-phalanx-proximal",
15
+ MiddleFingerPhalanxIntermediate = "middle-finger-phalanx-intermediate",
16
+ MiddleFingerPhalanxDistal = "middle-finger-phalanx-distal",
17
+ MiddleFingerTip = "middle-finger-tip",
18
+ RingFingerMetacarpal = "ring-finger-metacarpal",
19
+ RingFingerPhalanxProximal = "ring-finger-phalanx-proximal",
20
+ RingFingerPhalanxIntermediate = "ring-finger-phalanx-intermediate",
21
+ RingFingerPhalanxDistal = "ring-finger-phalanx-distal",
22
+ RingFingerTip = "ring-finger-tip",
23
+ PinkyFingerMetacarpal = "pinky-finger-metacarpal",
24
+ PinkyFingerPhalanxProximal = "pinky-finger-phalanx-proximal",
25
+ PinkyFingerPhalanxIntermediate = "pinky-finger-phalanx-intermediate",
26
+ PinkyFingerPhalanxDistal = "pinky-finger-phalanx-distal",
27
+ PinkyFingerTip = "pinky-finger-tip"
28
+ }
29
+ export declare class XRHand extends Map<XRHandJoint, XRJointSpace> {
30
+ }
31
+ //# sourceMappingURL=XRHand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRHand.d.ts","sourceRoot":"","sources":["../../src/input/XRHand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,oBAAY,WAAW;IACtB,KAAK,UAAU;IAEf,eAAe,qBAAqB;IACpC,oBAAoB,2BAA2B;IAC/C,kBAAkB,yBAAyB;IAC3C,QAAQ,cAAc;IAEtB,qBAAqB,4BAA4B;IACjD,0BAA0B,kCAAkC;IAC5D,8BAA8B,sCAAsC;IACpE,wBAAwB,gCAAgC;IACxD,cAAc,qBAAqB;IAEnC,sBAAsB,6BAA6B;IACnD,2BAA2B,mCAAmC;IAC9D,+BAA+B,uCAAuC;IACtE,yBAAyB,iCAAiC;IAC1D,eAAe,sBAAsB;IAErC,oBAAoB,2BAA2B;IAC/C,yBAAyB,iCAAiC;IAC1D,6BAA6B,qCAAqC;IAClE,uBAAuB,+BAA+B;IACtD,aAAa,oBAAoB;IAEjC,qBAAqB,4BAA4B;IACjD,0BAA0B,kCAAkC;IAC5D,8BAA8B,sCAAsC;IACpE,wBAAwB,gCAAgC;IACxD,cAAc,qBAAqB;CACnC;AAED,qBAAa,MAAO,SAAQ,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;CAAG"}
@@ -0,0 +1,31 @@
1
+ export var XRHandJoint;
2
+ (function (XRHandJoint) {
3
+ XRHandJoint["Wrist"] = "wrist";
4
+ XRHandJoint["ThumbMetacarpal"] = "thumb-metacarpal";
5
+ XRHandJoint["ThumbPhalanxProximal"] = "thumb-phalanx-proximal";
6
+ XRHandJoint["ThumbPhalanxDistal"] = "thumb-phalanx-distal";
7
+ XRHandJoint["ThumbTip"] = "thumb-tip";
8
+ XRHandJoint["IndexFingerMetacarpal"] = "index-finger-metacarpal";
9
+ XRHandJoint["IndexFingerPhalanxProximal"] = "index-finger-phalanx-proximal";
10
+ XRHandJoint["IndexFingerPhalanxIntermediate"] = "index-finger-phalanx-intermediate";
11
+ XRHandJoint["IndexFingerPhalanxDistal"] = "index-finger-phalanx-distal";
12
+ XRHandJoint["IndexFingerTip"] = "index-finger-tip";
13
+ XRHandJoint["MiddleFingerMetacarpal"] = "middle-finger-metacarpal";
14
+ XRHandJoint["MiddleFingerPhalanxProximal"] = "middle-finger-phalanx-proximal";
15
+ XRHandJoint["MiddleFingerPhalanxIntermediate"] = "middle-finger-phalanx-intermediate";
16
+ XRHandJoint["MiddleFingerPhalanxDistal"] = "middle-finger-phalanx-distal";
17
+ XRHandJoint["MiddleFingerTip"] = "middle-finger-tip";
18
+ XRHandJoint["RingFingerMetacarpal"] = "ring-finger-metacarpal";
19
+ XRHandJoint["RingFingerPhalanxProximal"] = "ring-finger-phalanx-proximal";
20
+ XRHandJoint["RingFingerPhalanxIntermediate"] = "ring-finger-phalanx-intermediate";
21
+ XRHandJoint["RingFingerPhalanxDistal"] = "ring-finger-phalanx-distal";
22
+ XRHandJoint["RingFingerTip"] = "ring-finger-tip";
23
+ XRHandJoint["PinkyFingerMetacarpal"] = "pinky-finger-metacarpal";
24
+ XRHandJoint["PinkyFingerPhalanxProximal"] = "pinky-finger-phalanx-proximal";
25
+ XRHandJoint["PinkyFingerPhalanxIntermediate"] = "pinky-finger-phalanx-intermediate";
26
+ XRHandJoint["PinkyFingerPhalanxDistal"] = "pinky-finger-phalanx-distal";
27
+ XRHandJoint["PinkyFingerTip"] = "pinky-finger-tip";
28
+ })(XRHandJoint || (XRHandJoint = {}));
29
+ export class XRHand extends Map {
30
+ }
31
+ //# sourceMappingURL=XRHand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRHand.js","sourceRoot":"","sources":["../../src/input/XRHand.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,WA+BX;AA/BD,WAAY,WAAW;IACtB,8BAAe,CAAA;IAEf,mDAAoC,CAAA;IACpC,8DAA+C,CAAA;IAC/C,0DAA2C,CAAA;IAC3C,qCAAsB,CAAA;IAEtB,gEAAiD,CAAA;IACjD,2EAA4D,CAAA;IAC5D,mFAAoE,CAAA;IACpE,uEAAwD,CAAA;IACxD,kDAAmC,CAAA;IAEnC,kEAAmD,CAAA;IACnD,6EAA8D,CAAA;IAC9D,qFAAsE,CAAA;IACtE,yEAA0D,CAAA;IAC1D,oDAAqC,CAAA;IAErC,8DAA+C,CAAA;IAC/C,yEAA0D,CAAA;IAC1D,iFAAkE,CAAA;IAClE,qEAAsD,CAAA;IACtD,gDAAiC,CAAA;IAEjC,gEAAiD,CAAA;IACjD,2EAA4D,CAAA;IAC5D,mFAAoE,CAAA;IACpE,uEAAwD,CAAA;IACxD,kDAAmC,CAAA;AACpC,CAAC,EA/BW,WAAW,KAAX,WAAW,QA+BtB;AAED,MAAM,OAAO,MAAO,SAAQ,GAA8B;CAAG"}
@@ -0,0 +1,37 @@
1
+ import { Gamepad } from '../gamepad/Gamepad';
2
+ import { XRHand } from './XRHand';
3
+ import { XRSpace } from '../spaces/XRSpace';
4
+ export declare enum XRHandedness {
5
+ None = "none",
6
+ Left = "left",
7
+ Right = "right"
8
+ }
9
+ export declare enum XRTargetRayMode {
10
+ Gaze = "gaze",
11
+ TrackedPointer = "tracked-pointer",
12
+ Screen = "screen",
13
+ TransientPointer = "transient-pointer"
14
+ }
15
+ export declare class XRInputSourceArray extends Array<XRInputSource> {
16
+ }
17
+ export declare const PRIVATE: unique symbol;
18
+ export declare class XRInputSource {
19
+ [PRIVATE]: {
20
+ handedness: XRHandedness;
21
+ targetRayMode: XRTargetRayMode;
22
+ targetRaySpace: XRSpace;
23
+ gripSpace?: XRSpace;
24
+ profiles: Array<string>;
25
+ gamepad?: Gamepad;
26
+ hand?: XRHand;
27
+ };
28
+ constructor(handedness: XRHandedness, targetRayMode: XRTargetRayMode, profiles: string[], targetRaySpace: XRSpace, gamepad?: Gamepad, gripSpace?: XRSpace, hand?: XRHand);
29
+ get handedness(): XRHandedness;
30
+ get targetRayMode(): XRTargetRayMode;
31
+ get targetRaySpace(): XRSpace;
32
+ get gripSpace(): XRSpace | undefined;
33
+ get profiles(): string[];
34
+ get gamepad(): Gamepad | undefined;
35
+ get hand(): XRHand | undefined;
36
+ }
37
+ //# sourceMappingURL=XRInputSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XRInputSource.d.ts","sourceRoot":"","sources":["../../src/input/XRInputSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,oBAAY,YAAY;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CACf;AAED,oBAAY,eAAe;IAC1B,IAAI,SAAS;IACb,cAAc,oBAAoB;IAClC,MAAM,WAAW;IACjB,gBAAgB,sBAAsB;CACtC;AAED,qBAAa,kBAAmB,SAAQ,KAAK,CAAC,aAAa,CAAC;CAAG;AAE/D,eAAO,MAAM,OAAO,eAEnB,CAAC;AAEF,qBAAa,aAAa;IACzB,CAAC,OAAO,CAAC,EAAE;QACV,UAAU,EAAE,YAAY,CAAC;QACzB,aAAa,EAAE,eAAe,CAAC;QAC/B,cAAc,EAAE,OAAO,CAAC;QACxB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;gBAGD,UAAU,EAAE,YAAY,EACxB,aAAa,EAAE,eAAe,EAC9B,QAAQ,EAAE,MAAM,EAAE,EAClB,cAAc,EAAE,OAAO,EACvB,OAAO,CAAC,EAAE,OAAO,EACjB,SAAS,CAAC,EAAE,OAAO,EACnB,IAAI,CAAC,EAAE,MAAM;IAad,IAAI,UAAU,iBAEb;IAED,IAAI,aAAa,oBAEhB;IAED,IAAI,cAAc,YAEjB;IAED,IAAI,SAAS,wBAEZ;IAED,IAAI,QAAQ,aAEX;IAED,IAAI,OAAO,wBAEV;IAED,IAAI,IAAI,uBAEP;CACD"}