@needle-tools/engine 4.8.7-next.e134730 → 4.8.8-next.5cb3196
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 +13 -0
- package/README.md +31 -23
- package/components.needle.json +1 -1
- package/dist/{needle-engine.bundle-X9nxhICu.umd.cjs → needle-engine.bundle-D83YACrg.umd.cjs} +147 -147
- package/dist/{needle-engine.bundle-CvRpjtJj.js → needle-engine.bundle-DJA-sz_-.js} +6955 -6904
- package/dist/{needle-engine.bundle-DrGsgE4t.min.js → needle-engine.bundle-SWdTk441.min.js} +144 -144
- package/dist/needle-engine.js +2 -2
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/lib/engine/engine_addressables.d.ts +12 -12
- package/lib/engine/engine_addressables.js +30 -23
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_animation.d.ts +1 -3
- package/lib/engine/engine_animation.js +15 -10
- package/lib/engine/engine_animation.js.map +1 -1
- package/lib/engine/engine_camera.d.ts +8 -1
- package/lib/engine/engine_camera.js +25 -0
- package/lib/engine/engine_camera.js.map +1 -1
- package/lib/engine/engine_context.d.ts +9 -0
- package/lib/engine/engine_context.js +15 -0
- package/lib/engine/engine_context.js.map +1 -1
- package/lib/engine/engine_loaders.callbacks.d.ts +1 -0
- package/lib/engine/engine_loaders.callbacks.js +1 -0
- package/lib/engine/engine_loaders.callbacks.js.map +1 -1
- package/lib/engine/engine_loaders.js +15 -11
- package/lib/engine/engine_loaders.js.map +1 -1
- package/lib/engine/webcomponents/needle-engine.attributes.d.ts +1 -0
- package/lib/engine/webcomponents/needle-engine.d.ts +2 -2
- package/lib/engine/webcomponents/needle-engine.js +19 -21
- package/lib/engine/webcomponents/needle-engine.js.map +1 -1
- package/lib/engine-components/Animation.js +2 -1
- package/lib/engine-components/Animation.js.map +1 -1
- package/lib/engine-components/AnimationUtilsAutoplay.js +1 -6
- package/lib/engine-components/AnimationUtilsAutoplay.js.map +1 -1
- package/lib/engine-components/Camera.d.ts +2 -0
- package/lib/engine-components/Camera.js +5 -1
- package/lib/engine-components/Camera.js.map +1 -1
- package/lib/engine-components/DropListener.d.ts +21 -15
- package/lib/engine-components/DropListener.js +38 -34
- package/lib/engine-components/DropListener.js.map +1 -1
- package/lib/engine-components/LookAtConstraint.d.ts +5 -1
- package/lib/engine-components/LookAtConstraint.js +8 -0
- package/lib/engine-components/LookAtConstraint.js.map +1 -1
- package/lib/engine-components/OrbitControls.d.ts +30 -9
- package/lib/engine-components/OrbitControls.js +53 -14
- package/lib/engine-components/OrbitControls.js.map +1 -1
- package/lib/engine-components/Skybox.js +8 -9
- package/lib/engine-components/Skybox.js.map +1 -1
- package/lib/engine-components/api.d.ts +1 -0
- package/lib/engine-components/api.js.map +1 -1
- package/lib/engine-components/export/usdz/Extension.d.ts +1 -1
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +1 -1
- package/lib/engine-components/export/usdz/ThreeUSDZExporter.js.map +1 -1
- package/lib/engine-components/export/usdz/USDZExporter.d.ts +7 -0
- package/lib/engine-components/export/usdz/USDZExporter.js +8 -1
- package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
- package/lib/engine-components/webxr/WebXRImageTracking.d.ts +4 -2
- package/lib/engine-components/webxr/WebXRImageTracking.js +117 -81
- package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
- package/package.json +1 -1
- package/plugins/vite/alias.js +26 -17
- package/plugins/vite/editor-connection.js +4 -4
- package/src/engine/engine_addressables.ts +44 -33
- package/src/engine/engine_animation.ts +17 -10
- package/src/engine/engine_camera.ts +40 -1
- package/src/engine/engine_context.ts +21 -1
- package/src/engine/engine_loaders.callbacks.ts +1 -0
- package/src/engine/engine_loaders.ts +18 -13
- package/src/engine/webcomponents/needle-engine.attributes.ts +2 -0
- package/src/engine/webcomponents/needle-engine.ts +21 -21
- package/src/engine-components/Animation.ts +1 -1
- package/src/engine-components/AnimationUtilsAutoplay.ts +1 -6
- package/src/engine-components/Camera.ts +7 -1
- package/src/engine-components/DropListener.ts +44 -34
- package/src/engine-components/LookAtConstraint.ts +9 -1
- package/src/engine-components/OrbitControls.ts +78 -22
- package/src/engine-components/Skybox.ts +9 -10
- package/src/engine-components/api.ts +2 -1
- package/src/engine-components/export/usdz/Extension.ts +1 -1
- package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +1 -1
- package/src/engine-components/export/usdz/USDZExporter.ts +21 -12
- package/src/engine-components/webxr/WebXRImageTracking.ts +138 -90
|
@@ -133,76 +133,102 @@ __decorate([
|
|
|
133
133
|
serializable()
|
|
134
134
|
], WebXRImageTrackingModel.prototype, "hideWhenTrackingIsLost", void 0);
|
|
135
135
|
class ImageTrackingExtension {
|
|
136
|
+
exporter;
|
|
137
|
+
component;
|
|
138
|
+
isImageTrackingExtension = true;
|
|
136
139
|
get extensionName() { return "image-tracking"; }
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
this.
|
|
143
|
-
|
|
140
|
+
constructor(exporter, component) {
|
|
141
|
+
this.exporter = exporter;
|
|
142
|
+
this.component = component;
|
|
143
|
+
if (debug)
|
|
144
|
+
console.log(this);
|
|
145
|
+
this.exporter.anchoringType = "image";
|
|
146
|
+
}
|
|
147
|
+
// set during export
|
|
148
|
+
shouldExport = true;
|
|
149
|
+
filename = "marker.png";
|
|
150
|
+
imageModel = null;
|
|
151
|
+
onBeforeBuildDocument(_context) {
|
|
152
|
+
// check if this extension is the first image tracking extension in the list
|
|
153
|
+
// since iOS can only track one image at a time we only allow one image tracking extension to be active
|
|
154
|
+
// we have to determine this at the earlierst export callback
|
|
155
|
+
// all subsequent export callbacks should then check is shouldExport is set to true
|
|
156
|
+
// this should only be the case for exactly one extension
|
|
157
|
+
const index = this.exporter.extensions
|
|
158
|
+
.filter(e => {
|
|
159
|
+
const ext = e;
|
|
160
|
+
return ext.isImageTrackingExtension && ext.component.activeAndEnabled && ext.component.trackedImages?.length > 0;
|
|
161
|
+
})
|
|
162
|
+
.indexOf(this);
|
|
163
|
+
this.shouldExport = index === 0;
|
|
164
|
+
if (!this.shouldExport)
|
|
165
|
+
return;
|
|
166
|
+
// Warn if more than one tracked image is used for USDZ; that's not supported at the moment.
|
|
167
|
+
if (this.component.trackedImages?.length > 1) {
|
|
168
|
+
if (debug || isDevEnvironment()) {
|
|
169
|
+
showBalloonWarning("USDZ: Only one tracked image is supported.");
|
|
170
|
+
console.warn("USDZ: Only one tracked image is supported. Will choose the first one in the trackedImages list");
|
|
171
|
+
}
|
|
172
|
+
}
|
|
144
173
|
}
|
|
145
174
|
onAfterHierarchy(_context, writer) {
|
|
175
|
+
if (!this.shouldExport)
|
|
176
|
+
return;
|
|
146
177
|
const iOSVersion = DeviceUtilities.getiOSVersion();
|
|
147
178
|
const majorVersion = iOSVersion ? parseInt(iOSVersion.split(".")[0]) : 18;
|
|
148
179
|
const workaroundForFB16119331 = majorVersion >= 18;
|
|
149
180
|
const multiplier = workaroundForFB16119331 ? 1 : 100;
|
|
150
181
|
writer.beginBlock(`def Preliminary_ReferenceImage "AnchoringReferenceImage"`);
|
|
151
182
|
writer.appendLine(`uniform asset image = @image_tracking/` + this.filename + `@`);
|
|
152
|
-
writer.appendLine(`uniform double physicalWidth = ` + (this.widthInMeters * multiplier).toFixed(8));
|
|
183
|
+
writer.appendLine(`uniform double physicalWidth = ` + (this.imageModel.widthInMeters * multiplier).toFixed(8));
|
|
153
184
|
writer.closeBlock();
|
|
154
185
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
if (!imageTracking || !imageTracking.trackedImages)
|
|
186
|
+
async onAfterSerialize(context) {
|
|
187
|
+
if (!this.shouldExport)
|
|
158
188
|
return;
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
}
|
|
166
|
-
onAfterSerialize(context) {
|
|
167
|
-
context.files['image_tracking/' + this.filename] = this.imageData;
|
|
189
|
+
const imageModel = this.imageModel;
|
|
190
|
+
const img = _imageElements.get(imageModel.image);
|
|
191
|
+
const canvas = await imageToCanvas(img);
|
|
192
|
+
const blob = await canvas.convertToBlob({ type: 'image/png' });
|
|
193
|
+
const arrayBuffer = await blob.arrayBuffer();
|
|
194
|
+
context.files['image_tracking/' + this.filename] = new Uint8Array(arrayBuffer);
|
|
168
195
|
}
|
|
169
196
|
onExportObject(object, model, _context) {
|
|
170
|
-
|
|
171
|
-
if (!imageTracking || !imageTracking.trackedImages)
|
|
197
|
+
if (!this.shouldExport)
|
|
172
198
|
return;
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
199
|
+
const imageTracking = this.component;
|
|
200
|
+
if (!imageTracking || !imageTracking.trackedImages?.length || !imageTracking.activeAndEnabled)
|
|
201
|
+
return;
|
|
202
|
+
// we only care about the first image
|
|
203
|
+
const trackedImage = imageTracking.trackedImages[0];
|
|
204
|
+
if (trackedImage.object?.asset === object) {
|
|
205
|
+
this.imageModel = trackedImage;
|
|
206
|
+
const { scale, target } = this.exporter.getARScaleAndTarget();
|
|
207
|
+
// We have to reset the image tracking object's position and rotation, because QuickLook applies them.
|
|
208
|
+
// On Android WebXR they're replaced by the tracked data
|
|
209
|
+
let parent = object;
|
|
210
|
+
const relativeMatrix = new Matrix4();
|
|
211
|
+
if (object !== target) {
|
|
212
|
+
while (parent && parent.parent && parent.parent !== target) {
|
|
213
|
+
parent = parent.parent;
|
|
214
|
+
relativeMatrix.premultiply(parent.matrix);
|
|
188
215
|
}
|
|
189
|
-
const mat = relativeMatrix
|
|
190
|
-
.clone()
|
|
191
|
-
.invert();
|
|
192
|
-
// apply session root scale again after undoing the world transformation
|
|
193
|
-
model.setMatrix(mat.scale(new Vector3(scale, scale, scale)));
|
|
194
|
-
// Unfortunately looks like Apple's docs are incomplete:
|
|
195
|
-
// https://developer.apple.com/documentation/realitykit/preliminary_anchoringapi#Nest-and-Layer-Anchorable-Prims
|
|
196
|
-
// In practice, it seems that nesting is not allowed – no image tracking will be applied to nested objects.
|
|
197
|
-
// Thus, we can't have separate transforms for "regularly placing content" and "placing content with an image marker".
|
|
198
|
-
// model.extraSchemas.push("Preliminary_AnchoringAPI");
|
|
199
|
-
// model.addEventListener("serialize", (_writer: USDWriter, _context: USDZExporterContext) => {
|
|
200
|
-
// writer.appendLine( `token preliminary:anchoring:type = "image"` );
|
|
201
|
-
// writer.appendLine( `rel preliminary:imageAnchoring:referenceImage = </${context.document.name}/Scenes/Scene/AnchoringReferenceImage>` );
|
|
202
|
-
// });
|
|
203
|
-
// We can only apply this to the first tracked image, more are not supported by QuickLook.
|
|
204
|
-
break;
|
|
205
216
|
}
|
|
217
|
+
const mat = relativeMatrix
|
|
218
|
+
.clone()
|
|
219
|
+
.invert();
|
|
220
|
+
// apply session root scale again after undoing the world transformation
|
|
221
|
+
model.setMatrix(mat.scale(new Vector3(scale, scale, scale)));
|
|
222
|
+
// Unfortunately looks like Apple's docs are incomplete:
|
|
223
|
+
// https://developer.apple.com/documentation/realitykit/preliminary_anchoringapi#Nest-and-Layer-Anchorable-Prims
|
|
224
|
+
// In practice, it seems that nesting is not allowed – no image tracking will be applied to nested objects.
|
|
225
|
+
// Thus, we can't have separate transforms for "regularly placing content" and "placing content with an image marker".
|
|
226
|
+
// model.extraSchemas.push("Preliminary_AnchoringAPI");
|
|
227
|
+
// model.addEventListener("serialize", (_writer: USDWriter, _context: USDZExporterContext) => {
|
|
228
|
+
// writer.appendLine( `token preliminary:anchoring:type = "image"` );
|
|
229
|
+
// writer.appendLine( `rel preliminary:imageAnchoring:referenceImage = </${context.document.name}/Scenes/Scene/AnchoringReferenceImage>` );
|
|
230
|
+
// });
|
|
231
|
+
// We can only apply this to the first tracked image, more are not supported by QuickLook.
|
|
206
232
|
}
|
|
207
233
|
}
|
|
208
234
|
}
|
|
@@ -211,11 +237,10 @@ class ImageTrackingExtension {
|
|
|
211
237
|
* @group Components
|
|
212
238
|
*/
|
|
213
239
|
export class WebXRImageTracking extends Behaviour {
|
|
214
|
-
trackedImages;
|
|
240
|
+
trackedImages = [];
|
|
215
241
|
/** Applies smoothing based on detected jitter to the tracked image. */
|
|
216
242
|
smooth = true;
|
|
217
243
|
trackedImageIndexMap = new Map();
|
|
218
|
-
static _imageElements = new Map();
|
|
219
244
|
/** @returns true if image tracking is supported on this device. This may return false at runtime if the user's browser did not enable webxr incubations */
|
|
220
245
|
get supported() { return this._supported; }
|
|
221
246
|
_supported = true;
|
|
@@ -226,34 +251,21 @@ export class WebXRImageTracking extends Behaviour {
|
|
|
226
251
|
return;
|
|
227
252
|
for (const trackedImage of this.trackedImages) {
|
|
228
253
|
if (trackedImage.image) {
|
|
229
|
-
|
|
230
|
-
// already loaded
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
const url = trackedImage.image;
|
|
234
|
-
WebXRImageTracking._imageElements.set(url, null);
|
|
235
|
-
const imageElement = document.createElement("img");
|
|
236
|
-
imageElement.src = url;
|
|
237
|
-
imageElement.addEventListener("load", async () => {
|
|
238
|
-
const img = await createImageBitmap(imageElement);
|
|
239
|
-
WebXRImageTracking._imageElements.set(url, img);
|
|
240
|
-
// read back Uint8Array to use in USDZ -
|
|
241
|
-
// TODO better would be to do that once we actually need it
|
|
242
|
-
const canvas = await imageToCanvas(img);
|
|
243
|
-
if (canvas) {
|
|
244
|
-
const blob = await canvas.convertToBlob({ type: 'image/png' });
|
|
245
|
-
const arrayBuffer = await blob.arrayBuffer();
|
|
246
|
-
const exporter = GameObject.findObjectOfType(USDZExporter);
|
|
247
|
-
if (exporter && this.trackedImages) {
|
|
248
|
-
exporter.extensions.push(new ImageTrackingExtension("marker.png", new Uint8Array(arrayBuffer), this.trackedImages[0].widthInMeters));
|
|
249
|
-
exporter.anchoringType = "image";
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
+
loadImage(trackedImage.image);
|
|
254
255
|
}
|
|
255
256
|
}
|
|
256
257
|
}
|
|
258
|
+
onEnable() {
|
|
259
|
+
USDZExporter.beforeExport.addEventListener(this.onBeforeUSDZExport);
|
|
260
|
+
}
|
|
261
|
+
onDisable() {
|
|
262
|
+
USDZExporter.beforeExport.removeEventListener(this.onBeforeUSDZExport);
|
|
263
|
+
}
|
|
264
|
+
onBeforeUSDZExport = (args) => {
|
|
265
|
+
if (this.activeAndEnabled && this.trackedImages?.length) {
|
|
266
|
+
args.exporter.extensions.push(new ImageTrackingExtension(args.exporter, this));
|
|
267
|
+
}
|
|
268
|
+
};
|
|
257
269
|
onBeforeXR(_mode, args) {
|
|
258
270
|
// console.log("onXRRequested", args, this.trackedImages)
|
|
259
271
|
if (this.trackedImages) {
|
|
@@ -263,7 +275,7 @@ export class WebXRImageTracking extends Behaviour {
|
|
|
263
275
|
args.trackedImages = [];
|
|
264
276
|
for (const trackedImage of this.trackedImages) {
|
|
265
277
|
if (trackedImage.image?.length && trackedImage.widthInMeters > 0) {
|
|
266
|
-
const bitmap =
|
|
278
|
+
const bitmap = _imageElements.get(trackedImage.image);
|
|
267
279
|
if (bitmap) {
|
|
268
280
|
this.trackedImageIndexMap.set(args.trackedImages.length, trackedImage);
|
|
269
281
|
args.trackedImages.push({
|
|
@@ -469,4 +481,28 @@ __decorate([
|
|
|
469
481
|
__decorate([
|
|
470
482
|
serializable()
|
|
471
483
|
], WebXRImageTracking.prototype, "smooth", void 0);
|
|
484
|
+
const _imageElements = new Map();
|
|
485
|
+
const _imageLoadingPromises = new Map();
|
|
486
|
+
async function loadImage(url) {
|
|
487
|
+
if (_imageElements.has(url)) {
|
|
488
|
+
if (_imageLoadingPromises.has(url))
|
|
489
|
+
return _imageLoadingPromises.get(url);
|
|
490
|
+
return Promise.resolve(true);
|
|
491
|
+
}
|
|
492
|
+
const promise = new Promise(res => {
|
|
493
|
+
_imageElements.set(url, null);
|
|
494
|
+
const imageElement = document.createElement("img");
|
|
495
|
+
imageElement.src = url;
|
|
496
|
+
imageElement.addEventListener("load", async () => {
|
|
497
|
+
const img = await createImageBitmap(imageElement);
|
|
498
|
+
_imageElements.set(url, img);
|
|
499
|
+
res(true);
|
|
500
|
+
});
|
|
501
|
+
});
|
|
502
|
+
_imageLoadingPromises.set(url, promise);
|
|
503
|
+
promise.finally(() => {
|
|
504
|
+
_imageLoadingPromises.delete(url);
|
|
505
|
+
});
|
|
506
|
+
return promise;
|
|
507
|
+
}
|
|
472
508
|
//# sourceMappingURL=WebXRImageTracking.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebXRImageTracking.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebXRImageTracking.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebXRImageTracking.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebXRImageTracking.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAqB,OAAO,EAAY,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGlF,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAErE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAS,eAAe,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAA0B,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EAAE,aAAa,EAA6C,MAAM,0DAA0D,CAAC;AACpI,OAAO,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,0EAA0E;AAE1E,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAE7C,MAAM,OAAO,iBAAiB;IAE1B,IAAI,GAAG,KAAa,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5D,IAAI,aAAa,KAAK,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC;IAC7E,IAAI,MAAM,KAAkB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,IAAI,KAAK,KAA8B,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC1D,YAAY,CAAS;IACrB,KAAK,CAAyB;IAEvC,0CAA0C;IAC1C,WAAW,CAAC,GAAY;QACpB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC;IACf,CAAC;IAED,8CAA8C;IAC9C,aAAa,CAAC,IAAgB;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,MAAgB,EAAE,MAA0B,SAAS;QAC/D,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,yHAAyH;QACzH,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QACjI,IAAI,GAAG;YAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QAC1C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,IAAI,CAAC,EAAE;YAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvC,oCAAoC;SACvC;aACI;YACD,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC7C,oCAAoC;SACvC;IACL,CAAC;IAEO,MAAM,CAAC,eAAe,GAA4B,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9F,MAAM,CAAC,eAAe,GAA+B,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IACpG,SAAS,CAAW;IACpB,SAAS,CAAc;IACvB,mBAAmB;QACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACjB,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;YACzD,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAA6B,CAAC;YACnD,MAAM,SAAS,GAAG,eAAe,CAAC,MAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;SAC9C;IACL,CAAC;IAEgB,kBAAkB,CAAqB;IACvC,aAAa,CAA0B;IACvC,OAAO,CAAc;IACrB,KAAK,CAAM;IAE5B,YAAY,OAA2B,EAAE,YAAqC,EAAE,MAAmB,EAAE,YAAoB,EAAE,KAA6B,EAAE,IAAS;QAC/J,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;QAAA,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;;AAcL;;;;;GAKG;AACH,MAAM,OAAO,uBAAuB;IAEhC;;OAEG;IAEH,KAAK,CAAU;IAEf;;MAEE;IAEF,aAAa,GAAW,GAAG,CAAC;IAE5B;;OAEG;IAEH,MAAM,CAAkB;IAExB;;OAEG;IAEH,oBAAoB,GAAY,KAAK,CAAC;IAEtC;;MAEE;IAEF,gBAAgB,GAAY,KAAK,CAAC;IAElC;;;OAGG;IAEH,sBAAsB,GAAY,IAAI,CAAC;CAC1C;AAhCG;IADC,YAAY,CAAC,GAAG,CAAC;sDACH;AAMf;IADC,YAAY,EAAE;8DACa;AAM5B;IADC,YAAY,CAAC,cAAc,CAAC;uDACL;AAMxB;IADC,YAAY,EAAE;qEACuB;AAMtC;IADC,YAAY,EAAE;iEACmB;AAOlC;IADC,YAAY,EAAE;uEACwB;AAG3C,MAAM,sBAAsB;IAQK;IAAyC;IAJ7D,wBAAwB,GAAG,IAAI,CAAC;IACzC,IAAI,aAAa,KAAK,OAAO,gBAAgB,CAAC,CAAC,CAAC;IAGhD,YAA6B,QAAsB,EAAmB,SAA6B;QAAtE,aAAQ,GAAR,QAAQ,CAAc;QAAmB,cAAS,GAAT,SAAS,CAAoB;QAC/F,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,OAAO,CAAC;IAC1C,CAAC;IAED,oBAAoB;IACZ,YAAY,GAAY,IAAI,CAAC;IAE7B,QAAQ,GAAW,YAAY,CAAC;IAChC,UAAU,GAAmC,IAAI,CAAC;IAE1D,qBAAqB,CAAC,QAA6B;QAE/C,4EAA4E;QAC5E,uGAAuG;QACvG,6DAA6D;QAC7D,mFAAmF;QACnF,yDAAyD;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU;aACjC,MAAM,CAAC,CAAC,CAAC,EAAE;YACR,MAAM,GAAG,GAAI,CAA4B,CAAC;YAC1C,OAAO,GAAG,CAAC,wBAAwB,IAAI,GAAG,CAAC,SAAS,CAAC,gBAAgB,IAAI,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC;QACrH,CAAC,CAAC;aACD,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,KAAK,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE/B,4FAA4F;QAC5F,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,EAAE;YAC1C,IAAI,KAAK,IAAI,gBAAgB,EAAE,EAAE;gBAC7B,kBAAkB,CAAC,4CAA4C,CAAC,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;aAClH;SACJ;IACL,CAAC;IAED,gBAAgB,CAAC,QAA6B,EAAE,MAAiB;QAC7D,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE/B,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,uBAAuB,GAAG,YAAY,IAAI,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACrD,MAAM,CAAC,UAAU,CAAC,0DAA0D,CAAC,CAAC;QAC9E,MAAM,CAAC,UAAU,CAAC,wCAAwC,GAAG,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;QAClF,MAAM,CAAC,UAAU,CAAC,iCAAiC,GAAG,CAAC,IAAI,CAAC,UAAW,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAChH,MAAM,CAAC,UAAU,EAAE,CAAC;IAExB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAA4B;QAC/C,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE/B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,UAAW,CAAC,KAAM,CAAE,CAAC;QAEpD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACnF,CAAC;IAED,cAAc,CAAC,MAAkC,EAAE,KAAgB,EAAE,QAA6B;QAC9F,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB;YAAE,OAAO;QAEtG,qCAAqC;QACrC,MAAM,YAAY,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEpD,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,KAAK,MAAM,EAAE;YACvC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC;YAE/B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YAE9D,sGAAsG;YACtG,wDAAwD;YACxD,IAAI,MAAM,GAAG,MAAM,CAAC;YAEpB,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;YACrC,IAAI,MAAM,KAAK,MAAM,EAAE;gBACnB,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE;oBACxD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;oBACvB,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBAC7C;aACJ;YACD,MAAM,GAAG,GAAG,cAAc;iBACrB,KAAK,EAAE;iBACP,MAAM,EAAE,CAAA;YACb,wEAAwE;YACxE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YAG7D,wDAAwD;YACxD,gHAAgH;YAChH,2GAA2G;YAC3G,sHAAsH;YACtH,uDAAuD;YACvD,+FAA+F;YAC/F,qEAAqE;YACrE,2IAA2I;YAC3I,MAAM;YAEN,0FAA0F;SAC7F;IACL,CAAC;CACJ;AAGD;;;GAGG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAG7C,aAAa,GAA8B,EAAE,CAAC;IAE9C,uEAAuE;IAEvE,MAAM,GAAY,IAAI,CAAC;IAEN,oBAAoB,GAAyC,IAAI,GAAG,EAAE,CAAC;IAExF,2JAA2J;IAC3J,IAAI,SAAS,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEnC,UAAU,GAAY,IAAI,CAAC;IAEnC,KAAK;QACD,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAChC,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;YAC3C,IAAI,YAAY,CAAC,KAAK,EAAE;gBACpB,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aACjC;SACJ;IACL,CAAC;IACD,QAAQ;QACJ,YAAY,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACxE,CAAC;IACD,SAAS;QACL,YAAY,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC3E,CAAC;IAEO,kBAAkB,GAAG,CAAC,IAAgC,EAAE,EAAE;QAC9D,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;YACrD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;SAClF;IACL,CAAC,CAAA;IAID,UAAU,CAAC,KAAoB,EAAE,IAAmD;QAChF,yDAAyD;QACzD,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBACjD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAEjD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC3C,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,IAAI,YAAY,CAAC,aAAa,GAAG,CAAC,EAAE;oBAC9D,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACtD,IAAI,MAAM,EAAE;wBACR,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;wBACvE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;4BACpB,KAAK,EAAE,MAAM;4BACb,aAAa,EAAE,YAAY,CAAC,aAAa;yBAC5C,CAAC,CAAC;qBACN;iBACJ;aACJ;SACJ;IACL,CAAC;IAED,SAAS,CAAC,KAAwB;QAC9B,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC3C,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE;oBAC5B,iGAAiG;oBACjG,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,KAAiB,CAAC;oBAClD,IAAI,CAAC,GAAG,CAAC,QAAQ;wBAAE,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;oBACrC,MAAM,KAAK,GAA8B;wBACrC,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;qBAC7B,CAAC;oBACF,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;iBAC1C;aACJ;SACJ;QACD,4CAA4C;QAC5C,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,EAAE;YACtD,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1B;IACL,CAAC;IAAA,CAAC;IAEF,SAAS,CAAC,KAAwB;QAE9B,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,eAAe,CAAC,eAAe,EAAE,EAAE;YACtD,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;SACpD;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC3C,IAAI,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE;oBAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,KAAiB,CAAC;oBAClD,IAAI,GAAG,CAAC,QAAQ,EAAE;wBACd,2DAA2D;wBAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAA0C,CAAC;wBACtF,IAAI,KAAK,EAAE;4BACP,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;4BAC5B,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;4BACvB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;4BAC9B,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;yBACjE;wBACD,OAAO,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;qBACzC;iBACJ;aACJ;SACJ;IACL,CAAC;IAEgB,gBAAgB,GAAG,IAAI,GAAG,EAAkG,CAAC;IAC7H,aAAa,GAAwB,EAAE,CAAC;IAGxC,uBAAuB,GAAG,oNAAoN,CAAC;IAEhQ,UAAU,CAAC,IAAuB;QAC9B,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,IAAI,CAAC,CAAC,yBAAyB,IAAI,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;gBAC1B,IAAI,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;aAC7C;YACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,kBAAkB,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACjD,OAAO;SACV;QACD,2HAA2H;QAC3H,sMAAsM;aACjM,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC,gBAAgB,CAAC,KAAK,KAAK,EAAE;YAC5E,iDAAiD;YACjD,OAAO;SACV;aACI,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,uBAAuB,KAAK,UAAU,EAAE;YAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC;YAChD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC;gBAC3D,IAAI,KAAK,EAAE;oBACP,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;wBAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC;wBACnC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;wBAChC,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAC/D,IAAI,YAAY,EAAE;4BACd,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;4BACrD,MAAM,SAAS,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;4BAC5G,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;yBACtC;6BACI;4BACD,IAAI,KAAK,EAAE;gCACP,OAAO,CAAC,IAAI,CAAC,4BAA4B,EAAE,UAAU,CAAC,CAAC;6BAC1D;yBACJ;qBACJ;oBACD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC/B,IAAI;4BACA,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;4BACtF,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;yBAClD;wBACD,OAAO,CAAC,EAAE;4BACN,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;yBACpB;qBACJ;iBACJ;aACJ;SACJ;QAED,iDAAiD;QACjD,qBAAqB;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC;QACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG;gBAAE,SAAS;YACpC,4EAA4E;YAC5E,IAAI,GAAG,CAAC,sBAAsB,KAAK,KAAK;gBAAE,SAAS;YACnD,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC3C,IAAI,YAAY,CAAC,KAAK,KAAK,GAAG,EAAE;oBAC5B,0JAA0J;oBAC1J,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,gBAAgB,CAAC;oBAClE,IAAI,GAAG,CAAC,gBAAgB,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS,IAAI,qBAAqB,IAAI,UAAU,EAAE;wBACjG,KAAK,GAAG,IAAI,CAAC;wBACb,MAAM;qBACT;iBACJ;aACJ;YACD,IAAI,CAAC,KAAK,EAAE;gBACR,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aAC7C;SACJ;IACL,CAAC;IAGO,qBAAqB,GAAG,CAAC,MAA2B,EAAE,EAAE;QAC5D,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,EAAE;YAAE,OAAO;QAGhB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC;YAC5C,mGAAmG;YACnG,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,SAAS;YAE5B,IAAI,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnD,IAAI,WAAW,KAAK,SAAS,EAAE;gBAC3B,WAAW,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;gBACxE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAE9C,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,KAAsB,EAAE,EAAE;oBAC1D,IAAI,KAAK,CAAC,oBAAoB,IAAI,KAAK,EAAE;wBACrC,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;qBACzC;oBAED,IAAI,KAAK,EAAE;wBACP,WAAY,CAAC,MAAM,GAAG,KAAK,CAAC;wBAE5B,6DAA6D;wBAC7D,oFAAoF;wBACpF,4EAA4E;wBAC5E,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,uBAAuB,CAAC,QAAQ,CAAC,EAAE;4BACxD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;yBACpC;wBAED,uCAAuC;wBACvC,IAAI,EAAE,CAAC,GAAG,EAAE;4BACR,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;4BAC7B,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;4BAC3B,IAAI,CAAE,KAAqB,CAAC,UAAU;gCAClC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;4BACtC,mCAAmC;yBACtC;6BACI;4BACD,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;yBAClD;qBAEJ;gBACL,CAAC,CAAC,CAAC;aACN;iBACI;gBACD,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrB,IAAI,SAAS;oBACT,WAAW,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAE9C,4FAA4F;gBAC5F,yCAAyC;gBACzC,IAAI,KAAK,CAAC,gBAAgB,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE;oBACjD,SAAS;gBAEb,IAAI,CAAC,WAAW,CAAC,MAAM;oBAAE,SAAS;gBAElC,IAAI,EAAE,CAAC,GAAG,EAAE;oBAER,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAE1C,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAC3G,IAAI,CAAE,WAAW,CAAC,MAAsB,CAAC,UAAU,EAAE;wBACjD,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;qBAClD;oBACD,gDAAgD;iBACnD;aACJ;SACJ;IACL,CAAC,CAAA;CACJ;AAxQG;IADC,YAAY,CAAC,uBAAuB,CAAC;yDACQ;AAI9C;IADC,YAAY,EAAE;kDACQ;AAyQ3B,MAAM,cAAc,GAAoC,IAAI,GAAG,EAAE,CAAC;AAClE,MAAM,qBAAqB,GAAkC,IAAI,GAAG,EAAE,CAAC;AAEvE,KAAK,UAAU,SAAS,CAAC,GAAW;IAChC,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACzB,IAAI,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1E,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAChC;IACD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAU,GAAG,CAAC,EAAE;QACvC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAqB,CAAC;QACvE,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC;QACvB,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAClD,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACxC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;QACjB,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACnB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@needle-tools/engine",
|
|
3
|
-
"version": "4.8.
|
|
3
|
+
"version": "4.8.8-next.5cb3196",
|
|
4
4
|
"description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in.",
|
|
5
5
|
"main": "dist/needle-engine.min.js",
|
|
6
6
|
"exports": {
|
package/plugins/vite/alias.js
CHANGED
|
@@ -62,7 +62,6 @@ const packages_to_resolve = {
|
|
|
62
62
|
|
|
63
63
|
'@needle-tools/gltf-progressive': "auto-resolve",
|
|
64
64
|
'@needle-tools/materialx': "auto-resolve",
|
|
65
|
-
'@needle-tools/materialx/needle': "auto-resolve"
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
/**
|
|
@@ -84,7 +83,7 @@ export const needleViteAlias = (command, config, userSettings) => {
|
|
|
84
83
|
outputDebugFile?.write(msg.join(" ") + "\n");
|
|
85
84
|
}
|
|
86
85
|
if (debug) {
|
|
87
|
-
const outputFilePath = path.resolve(projectDir, 'node_modules/.
|
|
86
|
+
const outputFilePath = path.resolve(projectDir, 'node_modules/.needle/needle.alias.log');
|
|
88
87
|
const outputDirectory = path.dirname(outputFilePath);
|
|
89
88
|
if (!existsSync(outputDirectory)) mkdirSync(outputDirectory, { recursive: true });
|
|
90
89
|
outputDebugFile = createWriteStream(outputFilePath, { flags: "a" });
|
|
@@ -110,6 +109,18 @@ export const needleViteAlias = (command, config, userSettings) => {
|
|
|
110
109
|
}
|
|
111
110
|
}
|
|
112
111
|
|
|
112
|
+
|
|
113
|
+
// is needle engine a local package?
|
|
114
|
+
// This will cause local changes to not be reflected anymore...
|
|
115
|
+
const localEnginePath = path.resolve(projectDir, 'node_modules/', '@needle-tools/engine', 'node_modules');
|
|
116
|
+
if (existsSync(localEnginePath)) {
|
|
117
|
+
config.optimizeDeps ??= {};
|
|
118
|
+
config.optimizeDeps.exclude ??= [];
|
|
119
|
+
config.optimizeDeps.exclude.push('@needle-tools/engine');
|
|
120
|
+
log("[needle-alias] Detected local @needle-tools/engine package: will exclude it from optimization");
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
|
|
113
124
|
if (debug) {
|
|
114
125
|
const testResults = [];
|
|
115
126
|
for (const name in aliasDict) {
|
|
@@ -179,22 +190,20 @@ export const needleViteAlias = (command, config, userSettings) => {
|
|
|
179
190
|
}
|
|
180
191
|
|
|
181
192
|
const workingDirectory = `${process.cwd()}/`;
|
|
193
|
+
const pathExists = existsSync(fullpath);
|
|
194
|
+
|
|
195
|
+
aliasDict[name] = (packageName, index, path) => {
|
|
196
|
+
if (callback !== null) {
|
|
197
|
+
const overrideResult = callback(fullpath, packageName, index, path);
|
|
198
|
+
if (typeof overrideResult === "string")
|
|
199
|
+
if (existsSync(overrideResult)) {
|
|
200
|
+
if (debug && overrideResult !== packageName) log(`[needle-alias] Resolved \"${path}\" → \"${overrideResult.substring(workingDirectory.length).replaceAll("\\", "/")}\"`);
|
|
201
|
+
return overrideResult;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
182
204
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
if (callback !== null) {
|
|
186
|
-
const overrideResult = callback(fullpath, packageName, index, path);
|
|
187
|
-
if (typeof overrideResult === "string")
|
|
188
|
-
if (existsSync(overrideResult)) {
|
|
189
|
-
if (debug && overrideResult !== packageName) console.warn(`[needle-alias] Resolved \"${path}\" → \"${overrideResult.substring(workingDirectory.length).replaceAll("\\", "/")}\"`);
|
|
190
|
-
return overrideResult;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
if (debug && path !== packageName) {
|
|
195
|
-
console.warn(`[needle-alias] Resolved \"${path}\" → \"${fullpath.substring(workingDirectory.length).replaceAll("\\", "/")}\"`);
|
|
196
|
-
}
|
|
197
|
-
|
|
205
|
+
if (pathExists) {
|
|
206
|
+
if (debug && path !== packageName) log(`[needle-alias] Resolved \"${path}\" → \"${fullpath.substring(workingDirectory.length).replaceAll("\\", "/")}\"`);
|
|
198
207
|
return fullpath;
|
|
199
208
|
}
|
|
200
209
|
}
|
|
@@ -63,16 +63,16 @@ function createPlugin(isInstalled) {
|
|
|
63
63
|
name: "needle-editor-connection",
|
|
64
64
|
// Setup HMR port for connecting to the editor
|
|
65
65
|
config(config) {
|
|
66
|
-
if (
|
|
66
|
+
if (isInstalled) {
|
|
67
67
|
if (!config.server) config.server = {};
|
|
68
68
|
if (!config.server.hmr) config.server.hmr = {};
|
|
69
69
|
if (config.server.hmr === false) {
|
|
70
|
-
setTimeout(() => console.log("HMR is disabled, not initializing Needle Editor"));
|
|
70
|
+
setTimeout(() => console.log("[needle-editor-sync] HMR is disabled, not initializing Needle Editor"));
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
|
-
if (config.server.hmr.port
|
|
73
|
+
if (config.server.hmr.port === undefined) {
|
|
74
74
|
config.server.hmr.port = 1107;
|
|
75
|
-
setTimeout(() => console.log("Update HMR port to " + config.server.hmr.port));
|
|
75
|
+
setTimeout(() => console.log("[needle-editor-sync] Update HMR port to " + config.server.hmr.port));
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
|
|
@@ -8,7 +8,7 @@ import { BlobStorage } from "./engine_networking_blob.js";
|
|
|
8
8
|
import { registerPrefabProvider, syncInstantiate, SyncInstantiateOptions } from "./engine_networking_instantiate.js";
|
|
9
9
|
import { SerializationContext, TypeSerializer } from "./engine_serialization_core.js";
|
|
10
10
|
import { Context } from "./engine_setup.js";
|
|
11
|
-
import type { GLTF, IComponent, IGameObject, SourceIdentifier } from "./engine_types.js";
|
|
11
|
+
import type { GLTF, IComponent, IGameObject, Model, SourceIdentifier } from "./engine_types.js";
|
|
12
12
|
|
|
13
13
|
const debug = getParam("debugaddressables");
|
|
14
14
|
|
|
@@ -138,21 +138,35 @@ export class AssetReference {
|
|
|
138
138
|
return ref;
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
private static currentlyInstantiating: Map<string, number> = new Map<string, number>();
|
|
142
141
|
|
|
143
|
-
/** @returns true if this is an AssetReference instance */
|
|
144
|
-
get isAssetReference() { return true; }
|
|
145
142
|
|
|
146
|
-
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
readonly isAssetReference = true;
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* This is the loaded asset root object. If the asset is a glb/gltf file this will be the {@link three#Scene} object.
|
|
150
|
+
*/
|
|
151
|
+
get rawAsset(): any { return this._rawAsset; }
|
|
152
|
+
|
|
153
|
+
/** The loaded asset root
|
|
154
|
+
*/
|
|
147
155
|
get asset(): Object3D | null {
|
|
148
|
-
return this._glbRoot ?? this.
|
|
156
|
+
return this._glbRoot ?? (this._rawAsset?.scene || null);
|
|
149
157
|
}
|
|
150
158
|
|
|
151
|
-
protected set asset(val:
|
|
152
|
-
|
|
159
|
+
protected set asset(val: Object3D | null) {
|
|
160
|
+
if (val) {
|
|
161
|
+
this._rawAsset = {
|
|
162
|
+
animations: val.animations,
|
|
163
|
+
scene: val,
|
|
164
|
+
scenes: [val],
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else this._rawAsset = null;
|
|
153
168
|
}
|
|
154
169
|
|
|
155
|
-
private _loading?: PromiseLike<any>;
|
|
156
170
|
|
|
157
171
|
/** The url of the loaded asset (or the asset to be loaded)
|
|
158
172
|
* @deprecated use url */
|
|
@@ -177,12 +191,7 @@ export class AssetReference {
|
|
|
177
191
|
(this._url.startsWith("http") || this._url.startsWith("blob:") || this._url.startsWith("www.") || this._url.includes("/"));
|
|
178
192
|
}
|
|
179
193
|
|
|
180
|
-
|
|
181
|
-
* This is the loaded asset root object. If the asset is a glb/gltf file this will be the {@link three#Scene} object.
|
|
182
|
-
*/
|
|
183
|
-
get rawAsset(): any { return this._asset; }
|
|
184
|
-
|
|
185
|
-
private _asset: any;
|
|
194
|
+
private _rawAsset: Model | null = null;
|
|
186
195
|
private _glbRoot?: Object3D | null;
|
|
187
196
|
private _url: string;
|
|
188
197
|
private _urlName: string;
|
|
@@ -207,7 +216,7 @@ export class AssetReference {
|
|
|
207
216
|
else {
|
|
208
217
|
this._urlName = uri;
|
|
209
218
|
}
|
|
210
|
-
|
|
219
|
+
|
|
211
220
|
if (asset !== null) this.asset = asset;
|
|
212
221
|
registerPrefabProvider(this._url, this.onResolvePrefab.bind(this));
|
|
213
222
|
}
|
|
@@ -226,6 +235,8 @@ export class AssetReference {
|
|
|
226
235
|
return !this.asset || (this.asset as any).__destroyed === true || isDestroyed(this.asset) === true;
|
|
227
236
|
}
|
|
228
237
|
|
|
238
|
+
private _loadingPromise: Promise<Model | null | undefined> | null = null;
|
|
239
|
+
|
|
229
240
|
/**
|
|
230
241
|
* @returns `true` if the asset has been loaded (via preload) or if it exists already (assigned to `asset`) */
|
|
231
242
|
isLoaded() { return this._rawBinary || this.asset !== undefined }
|
|
@@ -242,7 +253,7 @@ export class AssetReference {
|
|
|
242
253
|
this.asset = null;
|
|
243
254
|
this._rawBinary = undefined;
|
|
244
255
|
this._glbRoot = null;
|
|
245
|
-
this.
|
|
256
|
+
this._loadingPromise = null;
|
|
246
257
|
if (Context.Current) {
|
|
247
258
|
Context.Current.addressables.unregisterAssetReference(this);
|
|
248
259
|
}
|
|
@@ -267,16 +278,14 @@ export class AssetReference {
|
|
|
267
278
|
/** Loads the asset and creates one instance (assigned to `asset`)
|
|
268
279
|
* @returns the loaded asset
|
|
269
280
|
*/
|
|
270
|
-
async loadAssetAsync(prog?: ProgressCallback | null) {
|
|
271
|
-
if (debug)
|
|
272
|
-
console.log("loadAssetAsync", this.url);
|
|
281
|
+
async loadAssetAsync(prog?: ProgressCallback | null): Promise<Object3D | null> {
|
|
282
|
+
if (debug) console.log("[AssetReference] loadAssetAsync", this.url);
|
|
273
283
|
if (!this.mustLoad) return this.asset;
|
|
274
284
|
|
|
275
285
|
if (prog) this._progressListeners.push(prog);
|
|
276
|
-
|
|
277
|
-
if (this.
|
|
278
|
-
|
|
279
|
-
return this._loading.then(_ => this.asset);
|
|
286
|
+
|
|
287
|
+
if (this._loadingPromise !== null) {
|
|
288
|
+
return this._loadingPromise.then(_ => this.asset);
|
|
280
289
|
}
|
|
281
290
|
const context = Context.Current;
|
|
282
291
|
// TODO: technically we shouldnt call awake only when the object is added to a scene
|
|
@@ -285,31 +294,30 @@ export class AssetReference {
|
|
|
285
294
|
// console.log("START LOADING");
|
|
286
295
|
if (this._rawBinary) {
|
|
287
296
|
if (!(this._rawBinary instanceof ArrayBuffer)) {
|
|
288
|
-
console.error("Failed loading
|
|
297
|
+
console.error("[AssetReference] Failed loading – Invalid data. Must be of type ArrayBuffer. " + (typeof this._rawBinary));
|
|
289
298
|
return null;
|
|
290
299
|
}
|
|
291
|
-
this.
|
|
300
|
+
this._loadingPromise = getLoader().parseSync(context, this._rawBinary, this.url, null);
|
|
292
301
|
this.raiseProgressEvent(new ProgressEvent("progress", { loaded: this._rawBinary.byteLength, total: this._rawBinary.byteLength }));
|
|
293
302
|
}
|
|
294
303
|
else {
|
|
295
304
|
if (debug) console.log("Load async", this.url);
|
|
296
|
-
this.
|
|
305
|
+
this._loadingPromise = getLoader().loadSync(context, this.url, this.url, null, prog => {
|
|
297
306
|
this.raiseProgressEvent(prog);
|
|
298
307
|
});
|
|
299
308
|
}
|
|
300
|
-
|
|
309
|
+
this._loadingPromise.finally(() => this._loadingPromise = null);
|
|
310
|
+
const res = await this._loadingPromise;
|
|
301
311
|
// clear all progress listeners after download has finished
|
|
302
312
|
this._progressListeners.length = 0;
|
|
303
313
|
this._glbRoot = this.tryGetActualGameObjectRoot(res);
|
|
304
|
-
this._loading = undefined;
|
|
305
314
|
if (res) {
|
|
306
315
|
// Make sure the loaded roots all have a reference to this AssetReference
|
|
307
316
|
// that was originally loading it.
|
|
308
317
|
// We need this when the loaded asset is being disposed
|
|
309
318
|
// TODO: we have to prevent disposing resources that are still in use
|
|
310
319
|
res[$assetReference] = this;
|
|
311
|
-
if (this._glbRoot)
|
|
312
|
-
this._glbRoot[$assetReference] = this;
|
|
320
|
+
if (this._glbRoot) this._glbRoot[$assetReference] = this;
|
|
313
321
|
if (this.asset) this.asset[$assetReference] = this;
|
|
314
322
|
|
|
315
323
|
// we need to handle the pre_setup callsbacks before instantiating
|
|
@@ -317,7 +325,7 @@ export class AssetReference {
|
|
|
317
325
|
processNewScripts(context);
|
|
318
326
|
|
|
319
327
|
if (res.scene !== undefined) {
|
|
320
|
-
this.
|
|
328
|
+
this._rawAsset = res;
|
|
321
329
|
}
|
|
322
330
|
return this.asset;
|
|
323
331
|
}
|
|
@@ -352,6 +360,9 @@ export class AssetReference {
|
|
|
352
360
|
}
|
|
353
361
|
}
|
|
354
362
|
|
|
363
|
+
|
|
364
|
+
private static readonly currentlyInstantiating: Map<string, number> = new Map<string, number>();
|
|
365
|
+
|
|
355
366
|
private async onInstantiate(opts?: Object3D | IInstantiateOptions | SyncInstantiateOptions | null, networked: boolean = false, saveOnServer?: boolean): Promise<Object3D | null> {
|
|
356
367
|
const context = Context.Current;
|
|
357
368
|
|
|
@@ -544,7 +555,7 @@ export class ImageReference {
|
|
|
544
555
|
console.error("Can not load texture without url");
|
|
545
556
|
return failedTexturePromise;
|
|
546
557
|
}
|
|
547
|
-
|
|
558
|
+
|
|
548
559
|
if (!this.loader) this.loader = new TextureLoader();
|
|
549
560
|
this.loader.setCrossOrigin("anonymous");
|
|
550
561
|
return this.loader.loadAsync(this.url).then(res => {
|