@iwsdk/core 0.1.0 → 0.2.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/dist/camera/camera-source.d.ts +61 -0
- package/dist/camera/camera-source.d.ts.map +1 -0
- package/dist/camera/camera-source.js +40 -0
- package/dist/camera/camera-source.js.map +1 -0
- package/dist/camera/camera-system.d.ts +139 -0
- package/dist/camera/camera-system.d.ts.map +1 -0
- package/dist/camera/camera-system.js +210 -0
- package/dist/camera/camera-system.js.map +1 -0
- package/dist/camera/camera-utils.d.ts +63 -0
- package/dist/camera/camera-utils.d.ts.map +1 -0
- package/dist/camera/camera-utils.js +141 -0
- package/dist/camera/camera-utils.js.map +1 -0
- package/dist/camera/index.d.ts +11 -0
- package/dist/camera/index.d.ts.map +1 -0
- package/dist/camera/types.d.ts +28 -0
- package/dist/camera/types.d.ts.map +1 -0
- package/dist/camera/types.js +23 -0
- package/dist/camera/types.js.map +1 -0
- package/dist/grab/distance-grabbable.d.ts +6 -0
- package/dist/grab/distance-grabbable.d.ts.map +1 -1
- package/dist/grab/distance-grabbable.js +6 -0
- package/dist/grab/distance-grabbable.js.map +1 -1
- package/dist/grab/handles.d.ts +2 -0
- package/dist/grab/handles.d.ts.map +1 -1
- package/dist/grab/handles.js +34 -11
- package/dist/grab/handles.js.map +1 -1
- package/dist/grab/pointer-events-patch.d.ts.map +1 -1
- package/dist/grab/pointer-events-patch.js +34 -7
- package/dist/grab/pointer-events-patch.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/init/world-initializer.d.ts +4 -0
- package/dist/init/world-initializer.d.ts.map +1 -1
- package/dist/init/world-initializer.js +15 -2
- package/dist/init/world-initializer.js.map +1 -1
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/html.js +128 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/html.js.map +1 -0
- package/dist/node_modules/.pnpm/{@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_ → @pmndrs_uikitml@0.1.7_super-three@0.177.0}/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +34 -27
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.1.7_super-three@0.177.0/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +1 -0
- package/dist/physics/physics-system.d.ts +32 -0
- package/dist/physics/physics-system.d.ts.map +1 -1
- package/dist/physics/physics-system.js +15 -6
- package/dist/physics/physics-system.js.map +1 -1
- package/dist/physics/physicsBody.d.ts +9 -0
- package/dist/physics/physicsBody.d.ts.map +1 -1
- package/dist/physics/physicsBody.js +4 -1
- package/dist/physics/physicsBody.js.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -1
- package/dist/scene-understanding/scene-understanding-system.js +5 -5
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -1
- package/dist/transform/transform.d.ts.map +1 -1
- package/dist/transform/transform.js +1 -0
- package/dist/transform/transform.js.map +1 -1
- package/dist/ui/index.d.ts +2 -2
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/ui.d.ts +27 -0
- package/dist/ui/ui.d.ts.map +1 -1
- package/dist/ui/ui.js +21 -3
- package/dist/ui/ui.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -6
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js +0 -13
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +0 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { CameraSource } from './camera-source.js';
|
|
2
|
+
import { CameraFacing } from './types.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* CameraUtils - Static utilities for camera discovery and selection
|
|
12
|
+
* Handles permission requests and device enumeration with caching
|
|
13
|
+
*/
|
|
14
|
+
class CameraUtils {
|
|
15
|
+
/**
|
|
16
|
+
* Get available camera devices
|
|
17
|
+
*
|
|
18
|
+
* On first call or if refresh=true:
|
|
19
|
+
* - Requests camera permission (if not granted)
|
|
20
|
+
* - Enumerates all video input devices
|
|
21
|
+
* - Caches results for subsequent calls
|
|
22
|
+
*
|
|
23
|
+
* On subsequent calls with refresh=false:
|
|
24
|
+
* - Returns cached results immediately
|
|
25
|
+
*
|
|
26
|
+
* @param refresh - Force re-enumeration (useful for hot-plugged devices)
|
|
27
|
+
* @returns Array of available camera devices
|
|
28
|
+
*/
|
|
29
|
+
static async getDevices(refresh = false) {
|
|
30
|
+
// Return cache if available and not forcing refresh
|
|
31
|
+
if (this.cachedDevices && !refresh) {
|
|
32
|
+
return this.cachedDevices;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
// Request permission by getting a temporary stream
|
|
36
|
+
const tempStream = await navigator.mediaDevices.getUserMedia({
|
|
37
|
+
video: true,
|
|
38
|
+
});
|
|
39
|
+
// Immediately stop the stream - we just needed permission
|
|
40
|
+
tempStream.getTracks().forEach((track) => track.stop());
|
|
41
|
+
// Enumerate all video devices
|
|
42
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
43
|
+
const videoDevices = devices.filter((d) => d.kind === 'videoinput');
|
|
44
|
+
// Map to our interface with facing detection
|
|
45
|
+
this.cachedDevices = videoDevices.map((device) => {
|
|
46
|
+
const label = device.label.toLowerCase();
|
|
47
|
+
let facing = CameraFacing.Unknown;
|
|
48
|
+
if (label.includes('back') ||
|
|
49
|
+
label.includes('environment') ||
|
|
50
|
+
label.includes('rear')) {
|
|
51
|
+
facing = CameraFacing.Back;
|
|
52
|
+
}
|
|
53
|
+
else if (label.includes('front') ||
|
|
54
|
+
label.includes('user') ||
|
|
55
|
+
label.includes('face')) {
|
|
56
|
+
facing = CameraFacing.Front;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
deviceId: device.deviceId,
|
|
60
|
+
label: device.label,
|
|
61
|
+
facing,
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
return this.cachedDevices;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error('Failed to enumerate camera devices:', error);
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Find camera by facing direction from device list
|
|
73
|
+
*/
|
|
74
|
+
static findByFacing(devices, facing) {
|
|
75
|
+
return devices.find((d) => d.facing === facing) || null;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if camera permission is granted (doesn't request)
|
|
79
|
+
*/
|
|
80
|
+
static async hasPermission() {
|
|
81
|
+
try {
|
|
82
|
+
const result = await navigator.permissions.query({
|
|
83
|
+
name: 'camera',
|
|
84
|
+
});
|
|
85
|
+
return result.state === 'granted';
|
|
86
|
+
}
|
|
87
|
+
catch (_a) {
|
|
88
|
+
// Permissions API not supported
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Capture current video frame as a canvas
|
|
94
|
+
* Returns canvas at full video resolution, ready for processing
|
|
95
|
+
*
|
|
96
|
+
* @param entity - Entity with CameraSource component
|
|
97
|
+
* @returns HTMLCanvasElement or null if camera not ready
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* // Simple texture creation
|
|
101
|
+
* const canvas = CameraUtils.captureFrame(cameraEntity);
|
|
102
|
+
* if (canvas) {
|
|
103
|
+
* const texture = new CanvasTexture(canvas);
|
|
104
|
+
* }
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* // With post-processing
|
|
108
|
+
* const canvas = CameraUtils.captureFrame(cameraEntity);
|
|
109
|
+
* if (canvas) {
|
|
110
|
+
* const ctx = canvas.getContext('2d');
|
|
111
|
+
* ctx.filter = 'blur(2px)';
|
|
112
|
+
* const texture = new CanvasTexture(canvas);
|
|
113
|
+
* }
|
|
114
|
+
*/
|
|
115
|
+
static captureFrame(entity) {
|
|
116
|
+
// Get video element from CameraSource component
|
|
117
|
+
const videoElement = entity.getValue(CameraSource, 'videoElement');
|
|
118
|
+
if (!videoElement) {
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
// Validate video has valid dimensions
|
|
122
|
+
if (videoElement.videoWidth === 0 || videoElement.videoHeight === 0) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
// Create canvas at video resolution
|
|
126
|
+
const canvas = document.createElement('canvas');
|
|
127
|
+
canvas.width = videoElement.videoWidth;
|
|
128
|
+
canvas.height = videoElement.videoHeight;
|
|
129
|
+
// Draw current video frame to canvas
|
|
130
|
+
const ctx = canvas.getContext('2d', { colorSpace: 'srgb' });
|
|
131
|
+
if (!ctx) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
ctx.drawImage(videoElement, 0, 0);
|
|
135
|
+
return canvas;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
CameraUtils.cachedDevices = null;
|
|
139
|
+
|
|
140
|
+
export { CameraUtils };
|
|
141
|
+
//# sourceMappingURL=camera-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"camera-utils.js","sources":["../../src/camera/camera-utils.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
export * from './types.js';
|
|
8
|
+
export * from './camera-utils.js';
|
|
9
|
+
export * from './camera-source.js';
|
|
10
|
+
export * from './camera-system.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/camera/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
export declare const CameraFacing: {
|
|
8
|
+
readonly Back: "back";
|
|
9
|
+
readonly Front: "front";
|
|
10
|
+
readonly Unknown: "unknown";
|
|
11
|
+
};
|
|
12
|
+
export type CameraFacingType = (typeof CameraFacing)[keyof typeof CameraFacing];
|
|
13
|
+
export interface CameraDeviceInfo {
|
|
14
|
+
deviceId: string;
|
|
15
|
+
label: string;
|
|
16
|
+
facing: CameraFacingType;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Camera stream state lifecycle
|
|
20
|
+
*/
|
|
21
|
+
export declare const CameraState: {
|
|
22
|
+
readonly Inactive: "inactive";
|
|
23
|
+
readonly Starting: "starting";
|
|
24
|
+
readonly Active: "active";
|
|
25
|
+
readonly Error: "error";
|
|
26
|
+
};
|
|
27
|
+
export type CameraStateType = (typeof CameraState)[keyof typeof CameraState];
|
|
28
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/camera/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,YAAY;;;;CAIf,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAEhF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
const CameraFacing = {
|
|
8
|
+
Back: 'back',
|
|
9
|
+
Front: 'front',
|
|
10
|
+
Unknown: 'unknown',
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Camera stream state lifecycle
|
|
14
|
+
*/
|
|
15
|
+
const CameraState = {
|
|
16
|
+
Inactive: 'inactive', // Not started
|
|
17
|
+
Starting: 'starting', // Async initialization in progress
|
|
18
|
+
Active: 'active', // Stream running
|
|
19
|
+
Error: 'error', // Failed to start
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { CameraFacing, CameraState };
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../src/camera/types.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;AAKG;AAEI,MAAM,YAAY,GAAG;AAC1B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,OAAO,EAAE,SAAS;;AAWpB;;AAEG;AACI,MAAM,WAAW,GAAG;IACzB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;;;;;"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
1
7
|
import { Types } from '../ecs/index.js';
|
|
2
8
|
/**
|
|
3
9
|
* Component for enabling distance‑based object grabbing and manipulation.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distance-grabbable.d.ts","sourceRoot":"","sources":["../../src/grab/distance-grabbable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AAGzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,iBAAiB;IAG1B,qEAAqE;;;;;IAErE,gGAAgG;;;;;IAKhG,gGAAgG;;;;;IAKhG,8EAA8E;;;;;IAE9E,mFAAmF;;;;;IAKnF,mFAAmF;;;;;IAKnF,gFAAgF;;;;;IAEhF,kFAAkF;;;;;IAKlF,kFAAkF;;;;;IAKlF,gFAAgF;;;;;;;;;;;IAMhF,iGAAiG;;;;;IAEjG,qEAAqE;;;;;EAIxE,CAAC"}
|
|
1
|
+
{"version":3,"file":"distance-grabbable.d.ts","sourceRoot":"","sources":["../../src/grab/distance-grabbable.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AAGzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAO,MAAM,iBAAiB;IAG1B,qEAAqE;;;;;IAErE,gGAAgG;;;;;IAKhG,gGAAgG;;;;;IAKhG,8EAA8E;;;;;IAE9E,mFAAmF;;;;;IAKnF,mFAAmF;;;;;IAKnF,gFAAgF;;;;;IAEhF,kFAAkF;;;;;IAKlF,kFAAkF;;;;;IAKlF,gFAAgF;;;;;;;;;;;IAMhF,iGAAiG;;;;;IAEjG,qEAAqE;;;;;EAIxE,CAAC"}
|
|
@@ -4,6 +4,12 @@ import { createComponent, Types } from 'elics';
|
|
|
4
4
|
import '../ecs/component-registry.js';
|
|
5
5
|
import { MovementMode } from './handles.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
9
|
+
*
|
|
10
|
+
* This source code is licensed under the MIT license found in the
|
|
11
|
+
* LICENSE file in the root directory of this source tree.
|
|
12
|
+
*/
|
|
7
13
|
/**
|
|
8
14
|
* Component for enabling distance‑based object grabbing and manipulation.
|
|
9
15
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distance-grabbable.js","sources":["../../src/grab/distance-grabbable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"distance-grabbable.js","sources":["../../src/grab/distance-grabbable.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;;;AAKG;AAKH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CG;AACI,MAAM,iBAAiB,GAAG,eAAe,CAC9C,mBAAmB,EACnB;;IAEE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAE9C,IAAA,SAAS,EAAE;QACT,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,SAAS,EAAE;QACT,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;;IAED,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAEjD,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;;IAED,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;;AAE7C,IAAA,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;AACxC,KAAA;;AAED,IAAA,QAAQ,EAAE;QACR,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AAC3C,KAAA;;AAED,IAAA,YAAY,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,YAAY,CAAC,iBAAiB;AACxC,KAAA;;IAED,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;;IAEvD,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;CACjD,EACD,+DAA+D;;;;"}
|
package/dist/grab/handles.d.ts
CHANGED
|
@@ -34,6 +34,8 @@ export declare class DistanceGrabHandle<T> extends HandleStore<T> {
|
|
|
34
34
|
readonly moveSpeed: number;
|
|
35
35
|
private previousPointerOrigin;
|
|
36
36
|
private static _tmp;
|
|
37
|
+
private static _posHelper;
|
|
38
|
+
private static _quatHelper;
|
|
37
39
|
constructor(target_: Object3D | {
|
|
38
40
|
current?: Object3D | null;
|
|
39
41
|
}, getOptions: (() => HandleOptions<T>) | undefined, movementMode: string, returnToOrigin: Boolean, moveSpeed?: number);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handles.d.ts","sourceRoot":"","sources":["../../src/grab/handles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"handles.d.ts","sourceRoot":"","sources":["../../src/grab/handles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAuB,MAAM,qBAAqB,CAAC;AAEpE,eAAO,MAAM,MAAM;;;;;EAMlB,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,YAAY;IACvB,oFAAoF;;IAEpF,qEAAqE;;IAErE,qFAAqF;;IAErF,8DAA8D;;CAE/D,CAAC;AAEF,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAOrD,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG;QAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;KAAE;aAC1C,UAAU,EAAE,MAAM,aAAa,CAAC,CAAC,CAAC;aAClC,YAAY,EAAE,MAAM;aACpB,cAAc,EAAE,OAAO;aACvB,SAAS,EAAE,MAAM;IAVnC,OAAO,CAAC,qBAAqB,CAAsB;IACnD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAiB;IACpC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAiB;IAC1C,OAAO,CAAC,MAAM,CAAC,WAAW,CAAoB;gBAGnC,OAAO,EAAE,QAAQ,GAAG;QAAE,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;KAAE,EAC1C,UAAU,GAAE,MAAM,aAAa,CAAC,CAAC,CAAC,aAAa,EAC/C,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,OAAO,EACvB,SAAS,GAAE,MAAY;IAKzC,MAAM,CAAC,IAAI,EAAE,MAAM;IAqHnB,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,GAAG,CAAC;CAcrC"}
|
package/dist/grab/handles.js
CHANGED
|
@@ -4,7 +4,7 @@ import '../ecs/world.js';
|
|
|
4
4
|
import { createComponent, Types } from 'elics';
|
|
5
5
|
import '../ecs/component-registry.js';
|
|
6
6
|
import '../runtime/three.js';
|
|
7
|
-
import { Vector3 } from 'three';
|
|
7
|
+
import { Vector3, Quaternion } from 'three';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
@@ -52,11 +52,9 @@ class DistanceGrabHandle extends HandleStore {
|
|
|
52
52
|
}
|
|
53
53
|
return;
|
|
54
54
|
}
|
|
55
|
-
if (target.parent) {
|
|
56
|
-
target.removeFromParent();
|
|
57
|
-
target.matrixWorld.decompose(target.position, target.quaternion, target.scale);
|
|
58
|
-
}
|
|
59
55
|
const pointerAmount = this.inputState.size;
|
|
56
|
+
target.getWorldPosition(DistanceGrabHandle._posHelper);
|
|
57
|
+
target.getWorldQuaternion(DistanceGrabHandle._quatHelper);
|
|
60
58
|
const position = target.position;
|
|
61
59
|
const quaternion = target.quaternion;
|
|
62
60
|
const rotation = target.rotation;
|
|
@@ -69,7 +67,7 @@ class DistanceGrabHandle extends HandleStore {
|
|
|
69
67
|
const delta = DistanceGrabHandle._tmp
|
|
70
68
|
.copy(current)
|
|
71
69
|
.sub(this.previousPointerOrigin);
|
|
72
|
-
|
|
70
|
+
DistanceGrabHandle._posHelper.add(delta);
|
|
73
71
|
}
|
|
74
72
|
else {
|
|
75
73
|
this.previousPointerOrigin = new Vector3().copy(current);
|
|
@@ -81,22 +79,45 @@ class DistanceGrabHandle extends HandleStore {
|
|
|
81
79
|
case MovementMode.MoveTowardsTarget: {
|
|
82
80
|
const [p1] = this.inputState.values();
|
|
83
81
|
const pointerOrigin = p1.pointerWorldOrigin;
|
|
84
|
-
const distance = pointerOrigin.distanceTo(
|
|
82
|
+
const distance = pointerOrigin.distanceTo(DistanceGrabHandle._posHelper);
|
|
85
83
|
if (distance > this.moveSpeed) {
|
|
86
84
|
const step = DistanceGrabHandle._tmp
|
|
87
85
|
.copy(pointerOrigin)
|
|
88
|
-
.sub(
|
|
86
|
+
.sub(DistanceGrabHandle._posHelper)
|
|
89
87
|
.normalize()
|
|
90
88
|
.multiplyScalar(this.moveSpeed);
|
|
91
|
-
|
|
89
|
+
DistanceGrabHandle._posHelper.add(step);
|
|
92
90
|
}
|
|
93
91
|
else {
|
|
94
|
-
|
|
95
|
-
|
|
92
|
+
DistanceGrabHandle._posHelper.set(pointerOrigin.x, pointerOrigin.y, pointerOrigin.z);
|
|
93
|
+
DistanceGrabHandle._quatHelper.set(p1.pointerWorldQuaternion.x, p1.pointerWorldQuaternion.y, p1.pointerWorldQuaternion.z, p1.pointerWorldQuaternion.w);
|
|
96
94
|
}
|
|
97
95
|
break;
|
|
98
96
|
}
|
|
99
97
|
}
|
|
98
|
+
// Convert world space transforms to local space
|
|
99
|
+
if (target.parent) {
|
|
100
|
+
// Get parent's inverse world matrix
|
|
101
|
+
const parentWorldMatrixInverse = target.parent.matrixWorld
|
|
102
|
+
.clone()
|
|
103
|
+
.invert();
|
|
104
|
+
// Transform desired world position to local space
|
|
105
|
+
position
|
|
106
|
+
.copy(DistanceGrabHandle._posHelper)
|
|
107
|
+
.applyMatrix4(parentWorldMatrixInverse);
|
|
108
|
+
// Transform desired world quaternion to local space
|
|
109
|
+
const parentWorldQuaternionInverse = target.parent
|
|
110
|
+
.getWorldQuaternion(new Quaternion())
|
|
111
|
+
.invert();
|
|
112
|
+
quaternion
|
|
113
|
+
.copy(DistanceGrabHandle._quatHelper)
|
|
114
|
+
.premultiply(parentWorldQuaternionInverse);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
// No parent, world space = local space
|
|
118
|
+
position.copy(DistanceGrabHandle._posHelper);
|
|
119
|
+
quaternion.copy(DistanceGrabHandle._quatHelper);
|
|
120
|
+
}
|
|
100
121
|
// Always apply during drag; if returnToOrigin is true,
|
|
101
122
|
// the override in apply() will snap back on release.
|
|
102
123
|
this.outputState.update(this.latestMoveEvent, {
|
|
@@ -127,6 +148,8 @@ class DistanceGrabHandle extends HandleStore {
|
|
|
127
148
|
}
|
|
128
149
|
}
|
|
129
150
|
DistanceGrabHandle._tmp = new Vector3();
|
|
151
|
+
DistanceGrabHandle._posHelper = new Vector3();
|
|
152
|
+
DistanceGrabHandle._quatHelper = new Quaternion();
|
|
130
153
|
|
|
131
154
|
export { DistanceGrabHandle, Handle, MovementMode };
|
|
132
155
|
//# sourceMappingURL=handles.js.map
|
package/dist/grab/handles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handles.js","sources":["../../src/grab/handles.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAAA;;;;;AAKG;AAMI,MAAM,MAAM,GAAG,eAAe,CACnC,QAAQ,EACR;IACE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;CACrD,EACD,kEAAkE;AAGpE;AACO,MAAM,YAAY,GAAG;;AAE1B,IAAA,cAAc,EAAE,gBAAgB;;AAEhC,IAAA,iBAAiB,EAAE,mBAAmB;;AAEtC,IAAA,YAAY,EAAE,cAAc;;AAE5B,IAAA,cAAc,EAAE,gBAAgB;;AAG5B,MAAO,kBAAsB,SAAQ,WAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"handles.js","sources":["../../src/grab/handles.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer-events-patch.d.ts","sourceRoot":"","sources":["../../src/grab/pointer-events-patch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAIL,QAAQ,EAKT,MAAM,qBAAqB,CAAC;AAE7B,KAAK,cAAc,GAAG;IAAE,YAAY,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"pointer-events-patch.d.ts","sourceRoot":"","sources":["../../src/grab/pointer-events-patch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAIL,QAAQ,EAKT,MAAM,qBAAqB,CAAC;AAE7B,KAAK,cAAc,GAAG;IAAE,YAAY,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAC;AAmB9D,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,GAAG,EACT,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,cAAc,OAmEzC;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,GAAG,EACT,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,cAAc,OAuEzC;AA6ID,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,QASrE"}
|
|
@@ -11,10 +11,13 @@ import { Plane, Sphere, Vector3, Quaternion, Matrix4, InstancedMesh, Mesh } from
|
|
|
11
11
|
// during pointer capture. This keeps grabbing performant on dense meshes.
|
|
12
12
|
const planeHelper = new Plane();
|
|
13
13
|
const helperSphere = new Sphere();
|
|
14
|
-
const
|
|
14
|
+
const rayDirectionHelperMap = new Map();
|
|
15
|
+
const pointerPositionHelperMap = new Map();
|
|
16
|
+
const pointerQuaternionHelperMap = new Map();
|
|
15
17
|
const oldInputDevicePointOffset = new Vector3();
|
|
16
18
|
const inputDeviceQuaternionOffset = new Quaternion();
|
|
17
19
|
const vectorHelper = new Vector3();
|
|
20
|
+
const matrixHelper = new Matrix4();
|
|
18
21
|
const boxSizeHelper = new Vector3();
|
|
19
22
|
const boxCenterHelper = new Vector3();
|
|
20
23
|
const vec0_0001 = new Vector3(0.0001, 0.0001, 0.0001);
|
|
@@ -41,9 +44,24 @@ function patchedIntersectRayPointerCapture({ intersection, object }) {
|
|
|
41
44
|
}
|
|
42
45
|
const { ray } = this.raycaster;
|
|
43
46
|
const pointOnFace = (_c = ray.intersectPlane(planeHelper, new Vector3())) !== null && _c !== void 0 ? _c : intersection.point;
|
|
47
|
+
let rayDirectionHelper = rayDirectionHelperMap.get(this);
|
|
48
|
+
if (!rayDirectionHelper) {
|
|
49
|
+
rayDirectionHelper = new Vector3();
|
|
50
|
+
rayDirectionHelperMap.set(this, rayDirectionHelper);
|
|
51
|
+
}
|
|
52
|
+
let pointerPositionHelper = pointerPositionHelperMap.get(this);
|
|
53
|
+
if (!pointerPositionHelper) {
|
|
54
|
+
pointerPositionHelper = new Vector3();
|
|
55
|
+
pointerPositionHelperMap.set(this, pointerPositionHelper);
|
|
56
|
+
}
|
|
57
|
+
let pointerQuaternionHelper = pointerQuaternionHelperMap.get(this);
|
|
58
|
+
if (!pointerQuaternionHelper) {
|
|
59
|
+
pointerQuaternionHelper = new Quaternion();
|
|
60
|
+
pointerQuaternionHelperMap.set(this, pointerQuaternionHelper);
|
|
61
|
+
}
|
|
44
62
|
// Preserve distance along the ray from previous intersection
|
|
45
63
|
const distanceAlongRay = intersection.pointerPosition.distanceTo(intersection.point);
|
|
46
|
-
const point =
|
|
64
|
+
const point = rayDirectionHelper
|
|
47
65
|
.copy(ray.direction)
|
|
48
66
|
.multiplyScalar(distanceAlongRay)
|
|
49
67
|
.add(ray.origin);
|
|
@@ -53,8 +71,8 @@ function patchedIntersectRayPointerCapture({ intersection, object }) {
|
|
|
53
71
|
object,
|
|
54
72
|
pointOnFace,
|
|
55
73
|
point,
|
|
56
|
-
pointerPosition: ray.origin
|
|
57
|
-
pointerQuaternion: this.raycasterQuaternion
|
|
74
|
+
pointerPosition: pointerPositionHelper.copy(ray.origin),
|
|
75
|
+
pointerQuaternion: pointerQuaternionHelper.copy(this.raycasterQuaternion),
|
|
58
76
|
};
|
|
59
77
|
}
|
|
60
78
|
function patchedIntersectSpherePointerCapture({ intersection, object }) {
|
|
@@ -92,14 +110,24 @@ function patchedIntersectSpherePointerCapture({ intersection, object }) {
|
|
|
92
110
|
planeHelper.setFromNormalAndCoplanarPoint(new Vector3(0, 0, 1), intersection.point);
|
|
93
111
|
}
|
|
94
112
|
const pointOnFace = planeHelper.projectPoint(this.fromPosition, new Vector3());
|
|
113
|
+
let pointerPositionHelper = pointerPositionHelperMap.get(this);
|
|
114
|
+
if (!pointerPositionHelper) {
|
|
115
|
+
pointerPositionHelper = new Vector3();
|
|
116
|
+
pointerPositionHelperMap.set(this, pointerPositionHelper);
|
|
117
|
+
}
|
|
118
|
+
let pointerQuaternionHelper = pointerQuaternionHelperMap.get(this);
|
|
119
|
+
if (!pointerQuaternionHelper) {
|
|
120
|
+
pointerQuaternionHelper = new Quaternion();
|
|
121
|
+
pointerQuaternionHelperMap.set(this, pointerQuaternionHelper);
|
|
122
|
+
}
|
|
95
123
|
// NOTE: We intentionally skip UV recomputation here for performance.
|
|
96
124
|
return {
|
|
97
125
|
details: {
|
|
98
126
|
type: 'sphere',
|
|
99
127
|
},
|
|
100
128
|
distance: point.distanceTo(pointOnFace),
|
|
101
|
-
pointerPosition: this.fromPosition
|
|
102
|
-
pointerQuaternion: this.fromQuaternion
|
|
129
|
+
pointerPosition: pointerPositionHelper.copy(this.fromPosition),
|
|
130
|
+
pointerQuaternion: pointerQuaternionHelper.copy(this.fromQuaternion),
|
|
103
131
|
object,
|
|
104
132
|
point,
|
|
105
133
|
pointOnFace,
|
|
@@ -135,7 +163,6 @@ function patchedIsSphereIntersectingMesh(pointerSphere, { geometry }, meshMatrix
|
|
|
135
163
|
return (helperSphere.center.distanceToSquared(pointerSphere.center) <
|
|
136
164
|
(pointerSphere.radius + helperSphere.radius) ** 2);
|
|
137
165
|
}
|
|
138
|
-
const matrixHelper = new Matrix4();
|
|
139
166
|
function patchedIntersectSphereWithObject(pointerSphere, object, target) {
|
|
140
167
|
object.updateWorldMatrix(true, false);
|
|
141
168
|
if (object.spherecast != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer-events-patch.js","sources":["../../src/grab/pointer-events-patch.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAEH;AACA;AAeA,MAAM,WAAW,GAAG,IAAI,KAAK,EAAE;AAC/B,MAAM,YAAY,GAAW,IAAI,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"pointer-events-patch.js","sources":["../../src/grab/pointer-events-patch.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export * from './level/index.js';
|
|
|
20
20
|
export * from './scene-understanding/index.js';
|
|
21
21
|
export * from './audio/index.js';
|
|
22
22
|
export * from './physics/index.js';
|
|
23
|
+
export * from './camera/index.js';
|
|
23
24
|
export * from '@iwsdk/xr-input';
|
|
24
25
|
export * from '@iwsdk/locomotor';
|
|
25
26
|
export * as UIKit from '@pmndrs/uikit';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ export { TurnSystem, TurningMethod } from './locomotion/turn.js';
|
|
|
19
19
|
export { LocomotionEnvironment, LocomotionSystem } from './locomotion/locomotion.js';
|
|
20
20
|
export { Visibility, VisibilitySystem } from './visibility/visibility.js';
|
|
21
21
|
export { UIKitDocument } from './ui/document.js';
|
|
22
|
-
export { PanelDocument, PanelUI, PanelUISystem } from './ui/ui.js';
|
|
22
|
+
export { ColorSchemeType, PanelDocument, PanelUI, PanelUISystem } from './ui/ui.js';
|
|
23
23
|
export { FollowBehavior, FollowSystem, Follower } from './ui/follow.js';
|
|
24
24
|
export { ScreenSpace, ScreenSpaceUISystem } from './ui/screenspace.js';
|
|
25
25
|
export { ReferenceSpaceType, SessionMode, buildSessionInit, launchXR, normalizeReferenceSpec, resolveReferenceSpaceType } from './init/xr.js';
|
|
@@ -46,9 +46,13 @@ export { AudioSystem } from './audio/audio-system.js';
|
|
|
46
46
|
export { AudioUtils } from './audio/audio-utils.js';
|
|
47
47
|
export { AudioPool } from './audio/audio-pool.js';
|
|
48
48
|
export { PhysicsSystem } from './physics/physics-system.js';
|
|
49
|
-
export { DEFAULT_GRAVITY_FACTOR, DEFAULT_LINEAR_DAMPING, PhysicsBody, PhysicsState } from './physics/physicsBody.js';
|
|
49
|
+
export { DEFAULT_ANGULAR_DAMPING, DEFAULT_GRAVITY_FACTOR, DEFAULT_LINEAR_DAMPING, PhysicsBody, PhysicsState } from './physics/physicsBody.js';
|
|
50
50
|
export { PhysicsManipulation } from './physics/physicsManipulation.js';
|
|
51
51
|
export { DEFAULT_DENSITY, DEFAULT_FRICTION, DEFAULT_RESTITUTION, PhysicsShape, PhysicsShapeType } from './physics/physicsShape.js';
|
|
52
|
+
export { CameraFacing, CameraState } from './camera/types.js';
|
|
53
|
+
export { CameraUtils } from './camera/camera-utils.js';
|
|
54
|
+
export { CameraSource } from './camera/camera-source.js';
|
|
55
|
+
export { CameraSystem } from './camera/camera-system.js';
|
|
52
56
|
export * from '@iwsdk/xr-input';
|
|
53
57
|
export * from '@iwsdk/locomotor';
|
|
54
58
|
import * as uikit from '@pmndrs/uikit';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":["EliCSVersion"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":[null],"names":["EliCSVersion"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;AA8BH,OAAO,CAAC,GAAG,CAAC,CAAA;;;;;;;;;qBASS,OAAO;YAChB,QAAQ;SACXA,SAAY,CAAA,CAAE,CAAC;;;;"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { AssetManifest } from '../asset/index.js';
|
|
8
8
|
import { World } from '../ecs/index.js';
|
|
9
|
+
import { ColorScheme } from '../ui/index.js';
|
|
9
10
|
import { XROptions } from './index.js';
|
|
10
11
|
/** Options for {@link initializeWorld} / {@link World.create}.
|
|
11
12
|
*
|
|
@@ -47,10 +48,13 @@ export type WorldOptions = {
|
|
|
47
48
|
physics?: boolean;
|
|
48
49
|
/** Scene Understanding (planes/meshes/anchors). @defaultValue false */
|
|
49
50
|
sceneUnderstanding?: boolean;
|
|
51
|
+
/** Camera access for video streaming. @defaultValue false */
|
|
52
|
+
camera?: boolean;
|
|
50
53
|
/** Spatial UI systems (PanelUI/ScreenSpace/Follow). Boolean or config. @defaultValue true */
|
|
51
54
|
spatialUI?: boolean | {
|
|
52
55
|
forwardHtmlEvents?: boolean;
|
|
53
56
|
kits?: Array<Record<string, unknown>> | Record<string, unknown>;
|
|
57
|
+
preferredColorScheme?: ColorScheme;
|
|
54
58
|
};
|
|
55
59
|
};
|
|
56
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world-initializer.d.ts","sourceRoot":"","sources":["../../src/init/world-initializer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAgB,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"world-initializer.d.ts","sourceRoot":"","sources":["../../src/init/world-initializer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAgB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AAkCzD,OAAO,EAOL,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAGL,SAAS,EAIV,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,wDAAwD;IACxD,MAAM,CAAC,EAAE,aAAa,CAAC;IAEvB,qGAAqG;IACrG,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IAElC,6CAA6C;IAC7C,EAAE,CAAC,EAAE,SAAS,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAC;IAExD,uCAAuC;IACvC,MAAM,CAAC,EAAE;QACP,wDAAwD;QACxD,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,6CAA6C;QAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,4CAA4C;QAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,iFAAiF;QACjF,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IAEF,8BAA8B;IAC9B,QAAQ,CAAC,EAAE;QACT,+EAA+E;QAC/E,UAAU,CAAC,EAAE,OAAO,GAAG;YAAE,SAAS,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAC/C,6DAA6D;QAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,sDAAsD;QACtD,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,uEAAuE;QACvE,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC7B,6DAA6D;QAC7D,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,6FAA6F;QAC7F,SAAS,CAAC,EACN,OAAO,GACP;YACE,iBAAiB,CAAC,EAAE,OAAO,CAAC;YAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChE,oBAAoB,CAAC,EAAE,WAAW,CAAC;SACpC,CAAC;KACP,CAAC;CACH,CAAC;AAEF;;;;;;;GAOG;AACH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,cAAc,EACzB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,KAAK,CAAC,CAwDhB"}
|