@needle-tools/engine 3.3.0-alpha → 3.5.0-alpha
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/CHANGELOG.md +19 -0
- package/dist/needle-engine.js +62620 -61118
- package/dist/needle-engine.min.js +434 -410
- package/dist/needle-engine.umd.cjs +435 -411
- package/lib/engine/api.d.ts +1 -0
- package/lib/engine/api.js +1 -0
- package/lib/engine/api.js.map +1 -1
- package/lib/engine/codegen/register_types.js +50 -2
- package/lib/engine/codegen/register_types.js.map +1 -1
- package/lib/engine/engine_context.d.ts +1 -1
- package/lib/engine/engine_context.js +21 -15
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_context_registry.d.ts +5 -3
- package/lib/engine/engine_context_registry.js +10 -2
- package/lib/engine/engine_context_registry.js.map +1 -1
- package/lib/engine/engine_element.js.map +1 -1
- package/lib/engine/engine_element_loading.js +2 -3
- package/lib/engine/engine_element_loading.js.map +1 -1
- package/lib/engine/engine_gameobject.d.ts +1 -1
- package/lib/engine/engine_gameobject.js +4 -2
- package/lib/engine/engine_gameobject.js.map +1 -1
- package/lib/engine/engine_input.d.ts +2 -2
- package/lib/engine/engine_physics.d.ts +20 -93
- package/lib/engine/engine_physics.js +20 -892
- package/lib/engine/engine_physics.js.map +1 -1
- package/lib/engine/engine_physics.types.js.map +1 -1
- package/lib/engine/engine_physics_rapier.d.ts +103 -0
- package/lib/engine/engine_physics_rapier.js +1003 -0
- package/lib/engine/engine_physics_rapier.js.map +1 -0
- package/lib/engine/engine_three_utils.js +2 -2
- package/lib/engine/engine_three_utils.js.map +1 -1
- package/lib/engine/engine_types.d.ts +50 -1
- package/lib/engine/engine_types.js +8 -0
- package/lib/engine/engine_types.js.map +1 -1
- package/lib/engine-components/Animation.js +4 -0
- package/lib/engine-components/Animation.js.map +1 -1
- package/lib/engine-components/Collider.js +6 -6
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/Joints.js +2 -2
- package/lib/engine-components/Joints.js.map +1 -1
- package/lib/engine-components/RigidBody.d.ts +0 -1
- package/lib/engine-components/RigidBody.js +24 -30
- package/lib/engine-components/RigidBody.js.map +1 -1
- package/lib/engine-components/codegen/components.d.ts +25 -1
- package/lib/engine-components/codegen/components.js +25 -1
- package/lib/engine-components/codegen/components.js.map +1 -1
- package/lib/engine-components/export/usdz/Extension.d.ts +4 -4
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +86 -0
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +858 -0
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.js.map +1 -0
- package/lib/engine-components/export/usdz/USDZExporter.d.ts +6 -3
- package/lib/engine-components/export/usdz/USDZExporter.js +34 -11
- package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
- package/lib/engine-components/export/usdz/extensions/Animation.d.ts +15 -15
- package/lib/engine-components/export/usdz/extensions/Animation.js +24 -29
- package/lib/engine-components/export/usdz/extensions/Animation.js.map +1 -1
- package/lib/engine-components/export/usdz/extensions/DocumentExtension.d.ts +5 -0
- package/lib/engine-components/export/usdz/extensions/DocumentExtension.js +7 -0
- package/lib/engine-components/export/usdz/extensions/DocumentExtension.js.map +1 -0
- package/lib/engine-components/export/usdz/extensions/USDZText.d.ts +47 -0
- package/lib/engine-components/export/usdz/extensions/USDZText.js +114 -0
- package/lib/engine-components/export/usdz/extensions/USDZText.js.map +1 -0
- package/lib/engine-components/export/usdz/extensions/behavior/Actions.d.ts +30 -0
- package/lib/engine-components/export/usdz/extensions/behavior/Actions.js +89 -0
- package/lib/engine-components/export/usdz/extensions/behavior/Actions.js.map +1 -0
- package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.d.ts +23 -0
- package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js +114 -0
- package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js.map +1 -0
- package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +102 -0
- package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +458 -0
- package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js.map +1 -0
- package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.d.ts +111 -0
- package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js +409 -0
- package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js.map +1 -0
- package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
- package/lib/engine-components/ui/BaseUIComponent.d.ts +2 -0
- package/lib/engine-components/ui/BaseUIComponent.js +6 -0
- package/lib/engine-components/ui/BaseUIComponent.js.map +1 -1
- package/lib/engine-components/ui/Canvas.d.ts +11 -1
- package/lib/engine-components/ui/Canvas.js +72 -3
- package/lib/engine-components/ui/Canvas.js.map +1 -1
- package/lib/engine-components/ui/Graphic.js.map +1 -1
- package/lib/engine-components/ui/Image.js +4 -4
- package/lib/engine-components/ui/Image.js.map +1 -1
- package/lib/engine-components/ui/Interfaces.d.ts +11 -0
- package/lib/engine-components/ui/Interfaces.js +11 -0
- package/lib/engine-components/ui/Interfaces.js.map +1 -1
- package/lib/engine-components/ui/Layout.d.ts +65 -3
- package/lib/engine-components/ui/Layout.js +304 -3
- package/lib/engine-components/ui/Layout.js.map +1 -1
- package/lib/engine-components/ui/RectTransform.d.ts +8 -7
- package/lib/engine-components/ui/RectTransform.js +66 -36
- package/lib/engine-components/ui/RectTransform.js.map +1 -1
- package/lib/engine-components/utils/LookAt.d.ts +7 -1
- package/lib/engine-components/utils/LookAt.js +43 -6
- package/lib/engine-components/utils/LookAt.js.map +1 -1
- package/lib/engine-components/webxr/WebXRImageTracking.d.ts +4 -3
- package/lib/engine-components/webxr/WebXRImageTracking.js +81 -25
- package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/plugins/vite/config.js +2 -1
- package/plugins/vite/defines.js +30 -0
- package/plugins/vite/dependency-watcher.js +173 -0
- package/plugins/vite/editor-connection.js +37 -39
- package/plugins/vite/index.js +5 -1
- package/plugins/vite/reload.js +16 -3
- package/src/engine/api.ts +1 -0
- package/src/engine/codegen/register_types.js +50 -2
- package/src/engine/engine_context.ts +32 -23
- package/src/engine/engine_context_registry.ts +13 -6
- package/src/engine/engine_element.ts +2 -1
- package/src/engine/engine_element_loading.ts +2 -3
- package/src/engine/engine_gameobject.ts +3 -2
- package/src/engine/engine_input.ts +2 -2
- package/src/engine/engine_physics.ts +25 -1020
- package/src/engine/engine_physics.types.ts +1 -3
- package/src/engine/engine_physics_rapier.ts +1127 -0
- package/src/engine/engine_three_utils.ts +2 -2
- package/src/engine/engine_types.ts +66 -4
- package/src/engine-components/Animation.ts +4 -0
- package/src/engine-components/Collider.ts +6 -6
- package/src/engine-components/Joints.ts +2 -2
- package/src/engine-components/RigidBody.ts +24 -31
- package/src/engine-components/codegen/components.ts +25 -1
- package/src/engine-components/export/usdz/Extension.ts +4 -5
- package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +1312 -0
- package/src/engine-components/export/usdz/USDZExporter.ts +39 -17
- package/src/engine-components/export/usdz/extensions/Animation.ts +37 -45
- package/src/engine-components/export/usdz/extensions/DocumentExtension.ts +10 -0
- package/src/engine-components/export/usdz/extensions/USDZText.ts +142 -0
- package/src/engine-components/export/usdz/extensions/behavior/Actions.ts +99 -0
- package/src/engine-components/export/usdz/extensions/behavior/Behaviour.ts +181 -0
- package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +545 -0
- package/src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +459 -0
- package/src/engine-components/postprocessing/PostProcessingHandler.ts +1 -1
- package/src/engine-components/ui/BaseUIComponent.ts +7 -1
- package/src/engine-components/ui/Canvas.ts +80 -5
- package/src/engine-components/ui/Graphic.ts +2 -0
- package/src/engine-components/ui/Image.ts +3 -3
- package/src/engine-components/ui/Interfaces.ts +30 -6
- package/src/engine-components/ui/Layout.ts +303 -4
- package/src/engine-components/ui/RectTransform.ts +67 -41
- package/src/engine-components/utils/LookAt.ts +60 -7
- package/src/engine-components/webxr/WebXRImageTracking.ts +100 -27
- package/lib/engine-components/export/usdz/types.d.ts +0 -34
- package/lib/engine-components/export/usdz/types.js +0 -2
- package/lib/engine-components/export/usdz/types.js.map +0 -1
- package/src/engine-components/export/usdz/types.ts +0 -39
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { WebXR } from "./WebXR";
|
|
1
|
+
import { WebXR, WebXREvent } from "./WebXR";
|
|
2
2
|
import { serializable } from "../../engine/engine_serialization";
|
|
3
3
|
import { Behaviour, GameObject } from "../Component";
|
|
4
4
|
import { Object3D, Quaternion, Vector3 } from "three";
|
|
5
5
|
import { CircularBuffer, getParam } from "../../engine/engine_utils";
|
|
6
6
|
import { AssetReference } from "../../engine/engine_addressables";
|
|
7
|
+
import { showBalloonWarning } from "../../engine/debug";
|
|
8
|
+
|
|
9
|
+
import { USDZExporter } from "../../engine-components/export/usdz/USDZExporter";
|
|
10
|
+
import { USDZExporterContext, USDWriter, imageToCanvas } from "../../engine-components/export/usdz/ThreeUSDZExporter";
|
|
7
11
|
|
|
8
12
|
// https://github.com/immersive-web/marker-tracking/blob/main/explainer.md
|
|
9
13
|
|
|
@@ -18,16 +22,6 @@ export class WebXRTrackedImage {
|
|
|
18
22
|
readonly measuredSize: number;
|
|
19
23
|
readonly state: "tracked" | "emulated";
|
|
20
24
|
|
|
21
|
-
// private _matrix: Matrix4 | null = null;
|
|
22
|
-
// private get matrix(): Matrix4 {
|
|
23
|
-
// if (!this._matrix) {
|
|
24
|
-
// // this._matrix = WebXRTrackedImage._matrixBuffer.get();
|
|
25
|
-
// // const matrix = this._pose.transform.matrix;
|
|
26
|
-
// // this._matrix.fromArray(matrix);
|
|
27
|
-
// }
|
|
28
|
-
// return this._matrix!;
|
|
29
|
-
// }
|
|
30
|
-
|
|
31
25
|
/** Copy the image position to a vector */
|
|
32
26
|
getPosition(vec: Vector3) {
|
|
33
27
|
this.ensureTransformData();
|
|
@@ -42,13 +36,23 @@ export class WebXRTrackedImage {
|
|
|
42
36
|
return quat;
|
|
43
37
|
}
|
|
44
38
|
|
|
45
|
-
|
|
39
|
+
private static y180 = new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), Math.PI);
|
|
40
|
+
applyToObject(object: Object3D, t01: number | undefined = undefined) {
|
|
46
41
|
this.ensureTransformData();
|
|
47
|
-
|
|
48
|
-
object.quaternion.
|
|
42
|
+
// check if position/_position or rotation/_rotation changed more than just a little bit
|
|
43
|
+
const haveChanged = object.position.distanceToSquared(this._position) > 0.05 || object.quaternion.angleTo(this._rotation) > 0.05;
|
|
44
|
+
if (t01 === undefined || t01 >= 1 || haveChanged) {
|
|
45
|
+
object.position.copy(this._position);
|
|
46
|
+
object.quaternion.copy(this._rotation);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
t01 = Math.max(0, Math.min(1, t01));
|
|
50
|
+
object.position.lerp(this._position, t01);
|
|
51
|
+
object.quaternion.slerp(this._rotation, t01);
|
|
52
|
+
}
|
|
53
|
+
object.quaternion.multiply(WebXRTrackedImage.y180);
|
|
49
54
|
}
|
|
50
55
|
|
|
51
|
-
// private static _matrixBuffer: CircularBuffer<Matrix4> = new CircularBuffer(() => new Matrix4(), 20);
|
|
52
56
|
private static _positionBuffer: CircularBuffer<Vector3> = new CircularBuffer(() => new Vector3(), 20);
|
|
53
57
|
private static _rotationBuffer: CircularBuffer<Quaternion> = new CircularBuffer(() => new Quaternion(), 20);
|
|
54
58
|
private _position!: Vector3;
|
|
@@ -58,8 +62,14 @@ export class WebXRTrackedImage {
|
|
|
58
62
|
this._position = WebXRTrackedImage._positionBuffer.get();
|
|
59
63
|
this._rotation = WebXRTrackedImage._rotationBuffer.get();
|
|
60
64
|
const t = this._pose.transform;
|
|
61
|
-
|
|
62
|
-
|
|
65
|
+
|
|
66
|
+
// when parented to the world, we need to flip data here
|
|
67
|
+
//this._position.set(-t.position.x, t.position.y, -t.position.z);
|
|
68
|
+
// this._rotation.set(-t.orientation.x, t.orientation.y, -t.orientation.z, t.orientation.w);
|
|
69
|
+
|
|
70
|
+
// for some reason when parented to the XRRig, we need the original data
|
|
71
|
+
this._position.set(t.position.x, t.position.y, t.position.z);
|
|
72
|
+
this._rotation.set(t.orientation.x, t.orientation.y, t.orientation.z, t.orientation.w);
|
|
63
73
|
}
|
|
64
74
|
}
|
|
65
75
|
|
|
@@ -99,6 +109,32 @@ export class WebXRImageTrackingModel {
|
|
|
99
109
|
imageDoesNotMove: boolean = false;
|
|
100
110
|
}
|
|
101
111
|
|
|
112
|
+
class ImageTrackingExtension {
|
|
113
|
+
|
|
114
|
+
get extensionName() { return "image-tracking"; }
|
|
115
|
+
|
|
116
|
+
private filename: string;
|
|
117
|
+
private widthInMeters: number;
|
|
118
|
+
private imageData: Uint8Array;
|
|
119
|
+
|
|
120
|
+
constructor(filename: string, imageData: Uint8Array, widthInMeters: number) {
|
|
121
|
+
this.filename = filename;
|
|
122
|
+
this.imageData = imageData;
|
|
123
|
+
this.widthInMeters = widthInMeters;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
onAfterHierarchy(_context: USDZExporterContext, writer: USDWriter) {
|
|
127
|
+
writer.beginBlock(`def Preliminary_ReferenceImage "AnchoringReferenceImage"`);
|
|
128
|
+
writer.appendLine(`uniform asset image = @tracker/` + this.filename + `@`);
|
|
129
|
+
writer.appendLine(`uniform double physicalWidth = ` + (this.widthInMeters * 100).toFixed(8));
|
|
130
|
+
writer.closeBlock();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
onAfterSerialize(context: USDZExporterContext) {
|
|
134
|
+
context.files['tracker/' + this.filename] = this.imageData;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
102
138
|
export class WebXRImageTracking extends Behaviour {
|
|
103
139
|
|
|
104
140
|
@serializable(WebXRImageTrackingModel)
|
|
@@ -121,22 +157,43 @@ export class WebXRImageTracking extends Behaviour {
|
|
|
121
157
|
imageElement.addEventListener("load", async () => {
|
|
122
158
|
const img = await createImageBitmap(imageElement);
|
|
123
159
|
WebXRImageTracking._imageElements.set(url, img);
|
|
160
|
+
|
|
161
|
+
// read back Uint8Array to use in USDZ -
|
|
162
|
+
// TODO better would be to do that once we actually need it
|
|
163
|
+
const canvas = await imageToCanvas( img );
|
|
164
|
+
if (canvas) {
|
|
165
|
+
const blob = await new Promise( resolve => canvas.toBlob( resolve, 'image/png', 1 ) ) as any;
|
|
166
|
+
const arrayBuffer = await blob.arrayBuffer();
|
|
167
|
+
|
|
168
|
+
const exporter = GameObject.findObjectOfType(USDZExporter);
|
|
169
|
+
if (exporter) {
|
|
170
|
+
exporter.extensions.push(
|
|
171
|
+
new ImageTrackingExtension("marker.png", new Uint8Array(arrayBuffer), this.trackedImages[0].widthInMeters)
|
|
172
|
+
);
|
|
173
|
+
exporter.anchoringType = "image";
|
|
174
|
+
}
|
|
175
|
+
}
|
|
124
176
|
});
|
|
125
177
|
}
|
|
126
178
|
}
|
|
127
179
|
}
|
|
128
180
|
}
|
|
129
181
|
|
|
182
|
+
private xr: WebXR | null = null;
|
|
183
|
+
|
|
130
184
|
onEnable(): void {
|
|
131
|
-
|
|
132
|
-
WebXR.addEventListener(
|
|
133
|
-
|
|
185
|
+
this.xr = GameObject.findObjectOfType(WebXR);
|
|
186
|
+
WebXR.addEventListener(WebXREvent.ModifyAROptions, this.onModifyAROptions);
|
|
187
|
+
WebXR.addEventListener(WebXREvent.XRStarted, this.onXRStarted);
|
|
188
|
+
WebXR.addEventListener(WebXREvent.XRUpdate, this.onXRUpdate);
|
|
189
|
+
this.addEventListener("image-tracking", this.onImageTrackingUpdate);
|
|
134
190
|
}
|
|
135
191
|
|
|
136
192
|
onDisable(): void {
|
|
137
|
-
WebXR.removeEventListener(
|
|
138
|
-
WebXR.removeEventListener(
|
|
139
|
-
|
|
193
|
+
WebXR.removeEventListener(WebXREvent.ModifyAROptions, this.onModifyAROptions);
|
|
194
|
+
WebXR.removeEventListener(WebXREvent.XRStarted, this.onXRStarted);
|
|
195
|
+
WebXR.removeEventListener(WebXREvent.XRUpdate, this.onXRUpdate);
|
|
196
|
+
this.removeEventListener("image-tracking", this.onImageTrackingUpdate);
|
|
140
197
|
}
|
|
141
198
|
|
|
142
199
|
private onModifyAROptions = (event: any) => {
|
|
@@ -197,8 +254,12 @@ export class WebXRImageTracking extends Behaviour {
|
|
|
197
254
|
|
|
198
255
|
if (asset) {
|
|
199
256
|
trackedData!.object = asset;
|
|
200
|
-
|
|
201
|
-
|
|
257
|
+
|
|
258
|
+
// make sure to parent to the WebXR.rig
|
|
259
|
+
if (this.xr) {
|
|
260
|
+
this.xr.Rig.add(asset);
|
|
261
|
+
}
|
|
262
|
+
|
|
202
263
|
image.applyToObject(asset);
|
|
203
264
|
if (!asset.activeSelf)
|
|
204
265
|
GameObject.setActive(asset, true);
|
|
@@ -215,6 +276,10 @@ export class WebXRImageTracking extends Behaviour {
|
|
|
215
276
|
|
|
216
277
|
if (!trackedData.object) continue;
|
|
217
278
|
|
|
279
|
+
if (this.xr) {
|
|
280
|
+
this.xr.Rig.add(trackedData.object);
|
|
281
|
+
}
|
|
282
|
+
|
|
218
283
|
image.applyToObject(trackedData.object);
|
|
219
284
|
if (!trackedData.object.activeSelf)
|
|
220
285
|
GameObject.setActive(trackedData.object, true);
|
|
@@ -229,9 +294,17 @@ export class WebXRImageTracking extends Behaviour {
|
|
|
229
294
|
}
|
|
230
295
|
};
|
|
231
296
|
|
|
232
|
-
|
|
297
|
+
private onXRUpdate = (evt): void => {
|
|
298
|
+
const frame = evt.frame;
|
|
299
|
+
if (!frame) return;
|
|
300
|
+
|
|
301
|
+
if (frame.session && !("getImageTrackingResults" in frame)) {
|
|
302
|
+
showBalloonWarning("Image tracking is currently not supported on this device. On Chrome for Android, you can enable the <a href=\"chrome://flags/#webxr-incubations\">chrome://flags/#webxr-incubations</a> flag.");
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
|
|
233
306
|
//@ts-ignore
|
|
234
|
-
if (frame
|
|
307
|
+
if (frame.session && typeof frame.getImageTrackingResults === "function") {
|
|
235
308
|
//@ts-ignore
|
|
236
309
|
const results = frame.getImageTrackingResults();
|
|
237
310
|
if (results.length) {
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Object3D, Matrix4, Material, BufferGeometry } from "three";
|
|
2
|
-
/** implementation is in three */
|
|
3
|
-
export declare class USDZDocument {
|
|
4
|
-
name: string;
|
|
5
|
-
get isDocumentRoot(): boolean;
|
|
6
|
-
add(obj: USDZObject): any;
|
|
7
|
-
remove(obj: USDZObject): any;
|
|
8
|
-
traverse(callback: (obj: USDZObject) => void): any;
|
|
9
|
-
findById(uuid: string): USDZObject | undefined;
|
|
10
|
-
get isDynamic(): boolean;
|
|
11
|
-
}
|
|
12
|
-
/** implementation is in three */
|
|
13
|
-
export declare class USDZObject {
|
|
14
|
-
static createEmptyParent(parent: USDZObject): any;
|
|
15
|
-
uuid: string;
|
|
16
|
-
name: string;
|
|
17
|
-
matrix: Matrix4;
|
|
18
|
-
material: Material;
|
|
19
|
-
geometry: BufferGeometry;
|
|
20
|
-
parent: USDZObject | USDZDocument | null;
|
|
21
|
-
children: USDZObject[];
|
|
22
|
-
_eventListeners: {
|
|
23
|
-
[event: string]: Function[];
|
|
24
|
-
};
|
|
25
|
-
isDynamic: boolean;
|
|
26
|
-
is(obj: Object3D): boolean;
|
|
27
|
-
isEmpty(): boolean;
|
|
28
|
-
clone(): any;
|
|
29
|
-
getPath(): any;
|
|
30
|
-
add(child: USDZObject): any;
|
|
31
|
-
remove(child: USDZObject): any;
|
|
32
|
-
addEventListener(evt: string, listener: Function): any;
|
|
33
|
-
removeEventListener(evt: string, listener: Function): any;
|
|
34
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/engine-components/export/usdz/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Object3D, Matrix4, Material, BufferGeometry } from "three";
|
|
2
|
-
|
|
3
|
-
// keep in sync with USDZExporter.js
|
|
4
|
-
|
|
5
|
-
/** implementation is in three */
|
|
6
|
-
export declare class USDZDocument {
|
|
7
|
-
name: string;
|
|
8
|
-
get isDocumentRoot(): boolean;
|
|
9
|
-
add(obj: USDZObject);
|
|
10
|
-
remove(obj: USDZObject);
|
|
11
|
-
traverse(callback: (obj: USDZObject) => void);
|
|
12
|
-
findById(uuid: string): USDZObject | undefined;
|
|
13
|
-
get isDynamic(): boolean;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/** implementation is in three */
|
|
19
|
-
export declare class USDZObject {
|
|
20
|
-
static createEmptyParent(parent: USDZObject);
|
|
21
|
-
uuid: string;
|
|
22
|
-
name: string;
|
|
23
|
-
matrix: Matrix4;
|
|
24
|
-
material: Material;
|
|
25
|
-
geometry: BufferGeometry;
|
|
26
|
-
parent: USDZObject | USDZDocument | null;
|
|
27
|
-
children: USDZObject[];
|
|
28
|
-
_eventListeners: { [event: string]: Function[] };
|
|
29
|
-
isDynamic: boolean;
|
|
30
|
-
|
|
31
|
-
is(obj: Object3D): boolean;
|
|
32
|
-
isEmpty(): boolean;
|
|
33
|
-
clone();
|
|
34
|
-
getPath();
|
|
35
|
-
add(child: USDZObject);
|
|
36
|
-
remove(child: USDZObject);
|
|
37
|
-
addEventListener(evt: string, listener: Function);
|
|
38
|
-
removeEventListener(evt: string, listener: Function);
|
|
39
|
-
}
|