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.
- package/build/iwer.js +4628 -0
- package/build/iwer.min.js +1 -0
- package/build/iwer.module.js +4591 -0
- package/build/iwer.module.min.js +1 -0
- package/lib/action/ActionPlayer.d.ts +75 -0
- package/lib/action/ActionPlayer.d.ts.map +1 -0
- package/lib/action/ActionPlayer.js +206 -0
- package/lib/action/ActionPlayer.js.map +1 -0
- package/lib/action/ActionRecorder.d.ts +59 -0
- package/lib/action/ActionRecorder.d.ts.map +1 -0
- package/lib/action/ActionRecorder.js +162 -0
- package/lib/action/ActionRecorder.js.map +1 -0
- package/lib/action/Capture.d.ts +3 -0
- package/lib/action/Capture.d.ts.map +1 -0
- package/lib/action/Capture.js +26907 -0
- package/lib/action/Capture.js.map +1 -0
- package/lib/device/XRController.d.ts +24 -0
- package/lib/device/XRController.d.ts.map +1 -0
- package/lib/device/XRController.js +82 -0
- package/lib/device/XRController.js.map +1 -0
- package/lib/device/XRDevice.d.ts +142 -0
- package/lib/device/XRDevice.d.ts.map +1 -0
- package/lib/device/XRDevice.js +370 -0
- package/lib/device/XRDevice.js.map +1 -0
- package/lib/device/XRHandInput.d.ts +44 -0
- package/lib/device/XRHandInput.d.ts.map +1 -0
- package/lib/device/XRHandInput.js +133 -0
- package/lib/device/XRHandInput.js.map +1 -0
- package/lib/device/XRTrackedInput.d.ts +22 -0
- package/lib/device/XRTrackedInput.d.ts.map +1 -0
- package/lib/device/XRTrackedInput.js +89 -0
- package/lib/device/XRTrackedInput.js.map +1 -0
- package/lib/device/configs/controller/meta.d.ts +6 -0
- package/lib/device/configs/controller/meta.d.ts.map +1 -0
- package/lib/device/configs/controller/meta.js +152 -0
- package/lib/device/configs/controller/meta.js.map +1 -0
- package/lib/device/configs/hand/pinch.d.ts +3 -0
- package/lib/device/configs/hand/pinch.d.ts.map +1 -0
- package/lib/device/configs/hand/pinch.js +237 -0
- package/lib/device/configs/hand/pinch.js.map +1 -0
- package/lib/device/configs/hand/point.d.ts +3 -0
- package/lib/device/configs/hand/point.d.ts.map +1 -0
- package/lib/device/configs/hand/point.js +236 -0
- package/lib/device/configs/hand/point.js.map +1 -0
- package/lib/device/configs/hand/relaxed.d.ts +3 -0
- package/lib/device/configs/hand/relaxed.d.ts.map +1 -0
- package/lib/device/configs/hand/relaxed.js +236 -0
- package/lib/device/configs/hand/relaxed.js.map +1 -0
- package/lib/device/configs/headset/meta.d.ts +6 -0
- package/lib/device/configs/headset/meta.d.ts.map +1 -0
- package/lib/device/configs/headset/meta.js +99 -0
- package/lib/device/configs/headset/meta.js.map +1 -0
- package/lib/device/controllers.d.ts +31 -0
- package/lib/device/controllers.d.ts.map +1 -0
- package/lib/device/controllers.js +8 -0
- package/lib/device/controllers.js.map +1 -0
- package/lib/events/XRInputSourceEvent.d.ts +16 -0
- package/lib/events/XRInputSourceEvent.d.ts.map +1 -0
- package/lib/events/XRInputSourceEvent.js +14 -0
- package/lib/events/XRInputSourceEvent.js.map +1 -0
- package/lib/events/XRInputSourcesChangeEvent.d.ts +18 -0
- package/lib/events/XRInputSourcesChangeEvent.d.ts.map +1 -0
- package/lib/events/XRInputSourcesChangeEvent.js +18 -0
- package/lib/events/XRInputSourcesChangeEvent.js.map +1 -0
- package/lib/events/XRReferenceSpaceEvent.d.ts +16 -0
- package/lib/events/XRReferenceSpaceEvent.d.ts.map +1 -0
- package/lib/events/XRReferenceSpaceEvent.js +11 -0
- package/lib/events/XRReferenceSpaceEvent.js.map +1 -0
- package/lib/events/XRSessionEvent.d.ts +13 -0
- package/lib/events/XRSessionEvent.d.ts.map +1 -0
- package/lib/events/XRSessionEvent.js +10 -0
- package/lib/events/XRSessionEvent.js.map +1 -0
- package/lib/frameloop/XRFrame.d.ts +28 -0
- package/lib/frameloop/XRFrame.d.ts.map +1 -0
- package/lib/frameloop/XRFrame.js +117 -0
- package/lib/frameloop/XRFrame.js.map +1 -0
- package/lib/gamepad/Gamepad.d.ts +72 -0
- package/lib/gamepad/Gamepad.d.ts.map +1 -0
- package/lib/gamepad/Gamepad.js +126 -0
- package/lib/gamepad/Gamepad.js.map +1 -0
- package/lib/index.d.ts +24 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +36 -0
- package/lib/index.js.map +1 -0
- package/lib/initialization/XRSystem.d.ts +13 -0
- package/lib/initialization/XRSystem.d.ts.map +1 -0
- package/lib/initialization/XRSystem.js +65 -0
- package/lib/initialization/XRSystem.js.map +1 -0
- package/lib/input/XRHand.d.ts +31 -0
- package/lib/input/XRHand.d.ts.map +1 -0
- package/lib/input/XRHand.js +31 -0
- package/lib/input/XRHand.js.map +1 -0
- package/lib/input/XRInputSource.d.ts +37 -0
- package/lib/input/XRInputSource.d.ts.map +1 -0
- package/lib/input/XRInputSource.js +51 -0
- package/lib/input/XRInputSource.js.map +1 -0
- package/lib/input/XRInputSourceArray.d.ts +11 -0
- package/lib/input/XRInputSourceArray.d.ts.map +1 -0
- package/lib/input/XRInputSourceArray.js +17 -0
- package/lib/input/XRInputSourceArray.js.map +1 -0
- package/lib/layers/XRWebGLLayer.d.ts +31 -0
- package/lib/layers/XRWebGLLayer.d.ts.map +1 -0
- package/lib/layers/XRWebGLLayer.js +67 -0
- package/lib/layers/XRWebGLLayer.js.map +1 -0
- package/lib/pose/XRJointPose.d.ts +11 -0
- package/lib/pose/XRJointPose.d.ts.map +1 -0
- package/lib/pose/XRJointPose.js +12 -0
- package/lib/pose/XRJointPose.js.map +1 -0
- package/lib/pose/XRPose.d.ts +16 -0
- package/lib/pose/XRPose.d.ts.map +1 -0
- package/lib/pose/XRPose.js +24 -0
- package/lib/pose/XRPose.js.map +1 -0
- package/lib/pose/XRViewerPose.d.ts +12 -0
- package/lib/pose/XRViewerPose.d.ts.map +1 -0
- package/lib/pose/XRViewerPose.js +14 -0
- package/lib/pose/XRViewerPose.js.map +1 -0
- package/lib/primitives/XRRigidTransform.d.ts +17 -0
- package/lib/primitives/XRRigidTransform.d.ts.map +1 -0
- package/lib/primitives/XRRigidTransform.js +54 -0
- package/lib/primitives/XRRigidTransform.js.map +1 -0
- package/lib/session/XRRenderState.d.ts +22 -0
- package/lib/session/XRRenderState.d.ts.map +1 -0
- package/lib/session/XRRenderState.js +26 -0
- package/lib/session/XRRenderState.js.map +1 -0
- package/lib/session/XRSession.d.ts +103 -0
- package/lib/session/XRSession.d.ts.map +1 -0
- package/lib/session/XRSession.js +459 -0
- package/lib/session/XRSession.js.map +1 -0
- package/lib/spaces/XRJointSpace.d.ts +13 -0
- package/lib/spaces/XRJointSpace.d.ts.map +1 -0
- package/lib/spaces/XRJointSpace.js +12 -0
- package/lib/spaces/XRJointSpace.js.map +1 -0
- package/lib/spaces/XRReferenceSpace.d.ts +22 -0
- package/lib/spaces/XRReferenceSpace.d.ts.map +1 -0
- package/lib/spaces/XRReferenceSpace.js +42 -0
- package/lib/spaces/XRReferenceSpace.js.map +1 -0
- package/lib/spaces/XRSpace.d.ts +20 -0
- package/lib/spaces/XRSpace.d.ts.map +1 -0
- package/lib/spaces/XRSpace.js +45 -0
- package/lib/spaces/XRSpace.js.map +1 -0
- package/lib/utils/DOMPointReadOnly.d.ts +17 -0
- package/lib/utils/DOMPointReadOnly.d.ts.map +1 -0
- package/lib/utils/DOMPointReadOnly.js +26 -0
- package/lib/utils/DOMPointReadOnly.js.map +1 -0
- package/lib/utils/Math.d.ts +49 -0
- package/lib/utils/Math.d.ts.map +1 -0
- package/lib/utils/Math.js +129 -0
- package/lib/utils/Math.js.map +1 -0
- package/lib/version.d.ts +2 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +2 -0
- package/lib/version.js.map +1 -0
- package/lib/views/XRView.d.ts +25 -0
- package/lib/views/XRView.d.ts.map +1 -0
- package/lib/views/XRView.js +39 -0
- package/lib/views/XRView.js.map +1 -0
- package/lib/views/XRViewport.d.ts +15 -0
- package/lib/views/XRViewport.d.ts.map +1 -0
- package/lib/views/XRViewport.js +19 -0
- package/lib/views/XRViewport.js.map +1 -0
- 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
|
package/lib/index.js.map
ADDED
|
@@ -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"}
|