@needle-tools/engine 4.8.7-next.e134730 → 4.8.8-next.5537a55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +31 -23
  3. package/components.needle.json +1 -1
  4. package/dist/{needle-engine.bundle-CvRpjtJj.js → needle-engine.bundle-BoZqXGLO.js} +6957 -6906
  5. package/dist/{needle-engine.bundle-DrGsgE4t.min.js → needle-engine.bundle-CpsmWsJo.min.js} +144 -144
  6. package/dist/{needle-engine.bundle-X9nxhICu.umd.cjs → needle-engine.bundle-D6vHQoPC.umd.cjs} +147 -147
  7. package/dist/needle-engine.js +2 -2
  8. package/dist/needle-engine.min.js +1 -1
  9. package/dist/needle-engine.umd.cjs +1 -1
  10. package/lib/engine/engine_addressables.d.ts +12 -12
  11. package/lib/engine/engine_addressables.js +30 -23
  12. package/lib/engine/engine_addressables.js.map +1 -1
  13. package/lib/engine/engine_animation.d.ts +1 -3
  14. package/lib/engine/engine_animation.js +15 -10
  15. package/lib/engine/engine_animation.js.map +1 -1
  16. package/lib/engine/engine_assetdatabase.js +6 -6
  17. package/lib/engine/engine_assetdatabase.js.map +1 -1
  18. package/lib/engine/engine_camera.d.ts +8 -1
  19. package/lib/engine/engine_camera.js +25 -0
  20. package/lib/engine/engine_camera.js.map +1 -1
  21. package/lib/engine/engine_context.d.ts +9 -0
  22. package/lib/engine/engine_context.js +15 -0
  23. package/lib/engine/engine_context.js.map +1 -1
  24. package/lib/engine/engine_gameobject.js +2 -2
  25. package/lib/engine/engine_gameobject.js.map +1 -1
  26. package/lib/engine/engine_loaders.callbacks.d.ts +1 -0
  27. package/lib/engine/engine_loaders.callbacks.js +1 -0
  28. package/lib/engine/engine_loaders.callbacks.js.map +1 -1
  29. package/lib/engine/engine_loaders.js +15 -11
  30. package/lib/engine/engine_loaders.js.map +1 -1
  31. package/lib/engine/webcomponents/needle-engine.attributes.d.ts +1 -0
  32. package/lib/engine/webcomponents/needle-engine.d.ts +2 -2
  33. package/lib/engine/webcomponents/needle-engine.js +19 -21
  34. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  35. package/lib/engine-components/Animation.js +2 -1
  36. package/lib/engine-components/Animation.js.map +1 -1
  37. package/lib/engine-components/AnimationUtilsAutoplay.js +1 -6
  38. package/lib/engine-components/AnimationUtilsAutoplay.js.map +1 -1
  39. package/lib/engine-components/Camera.d.ts +2 -0
  40. package/lib/engine-components/Camera.js +5 -1
  41. package/lib/engine-components/Camera.js.map +1 -1
  42. package/lib/engine-components/DropListener.d.ts +21 -15
  43. package/lib/engine-components/DropListener.js +38 -34
  44. package/lib/engine-components/DropListener.js.map +1 -1
  45. package/lib/engine-components/LookAtConstraint.d.ts +5 -1
  46. package/lib/engine-components/LookAtConstraint.js +8 -0
  47. package/lib/engine-components/LookAtConstraint.js.map +1 -1
  48. package/lib/engine-components/OrbitControls.d.ts +30 -9
  49. package/lib/engine-components/OrbitControls.js +53 -14
  50. package/lib/engine-components/OrbitControls.js.map +1 -1
  51. package/lib/engine-components/Skybox.js +8 -9
  52. package/lib/engine-components/Skybox.js.map +1 -1
  53. package/lib/engine-components/api.d.ts +1 -0
  54. package/lib/engine-components/api.js.map +1 -1
  55. package/lib/engine-components/export/usdz/Extension.d.ts +1 -1
  56. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +1 -1
  57. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js.map +1 -1
  58. package/lib/engine-components/export/usdz/USDZExporter.d.ts +7 -0
  59. package/lib/engine-components/export/usdz/USDZExporter.js +8 -1
  60. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  61. package/lib/engine-components/webxr/WebXRImageTracking.d.ts +4 -2
  62. package/lib/engine-components/webxr/WebXRImageTracking.js +117 -81
  63. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  64. package/package.json +1 -1
  65. package/plugins/common/files.js +6 -3
  66. package/plugins/vite/alias.js +26 -17
  67. package/plugins/vite/editor-connection.js +4 -4
  68. package/src/engine/engine_addressables.ts +44 -33
  69. package/src/engine/engine_animation.ts +17 -10
  70. package/src/engine/engine_assetdatabase.ts +7 -7
  71. package/src/engine/engine_camera.ts +40 -1
  72. package/src/engine/engine_context.ts +21 -1
  73. package/src/engine/engine_gameobject.ts +2 -2
  74. package/src/engine/engine_loaders.callbacks.ts +1 -0
  75. package/src/engine/engine_loaders.ts +18 -13
  76. package/src/engine/webcomponents/needle-engine.attributes.ts +2 -0
  77. package/src/engine/webcomponents/needle-engine.ts +21 -21
  78. package/src/engine-components/Animation.ts +1 -1
  79. package/src/engine-components/AnimationUtilsAutoplay.ts +1 -6
  80. package/src/engine-components/Camera.ts +7 -1
  81. package/src/engine-components/DropListener.ts +44 -34
  82. package/src/engine-components/LookAtConstraint.ts +9 -1
  83. package/src/engine-components/OrbitControls.ts +78 -22
  84. package/src/engine-components/Skybox.ts +9 -10
  85. package/src/engine-components/api.ts +2 -1
  86. package/src/engine-components/export/usdz/Extension.ts +1 -1
  87. package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +1 -1
  88. package/src/engine-components/export/usdz/USDZExporter.ts +21 -12
  89. 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
- filename;
138
- widthInMeters;
139
- imageData;
140
- constructor(filename, imageData, widthInMeters) {
141
- this.filename = filename;
142
- this.imageData = imageData;
143
- this.widthInMeters = widthInMeters;
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
- onBeforeBuildDocument(_context) {
156
- const imageTracking = GameObject.findObjectOfType(WebXRImageTracking);
157
- if (!imageTracking || !imageTracking.trackedImages)
186
+ async onAfterSerialize(context) {
187
+ if (!this.shouldExport)
158
188
  return;
159
- // Warn if more than one tracked image is used for USDZ; that's not supported at the moment.
160
- if (imageTracking.trackedImages.length > 1) {
161
- if (isDevEnvironment())
162
- showBalloonWarning("USDZ: Only one tracked image is supported.");
163
- console.warn("USDZ: Only one tracked image is supported.");
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
- const imageTracking = GameObject.findObjectOfType(WebXRImageTracking);
171
- if (!imageTracking || !imageTracking.trackedImages)
197
+ if (!this.shouldExport)
172
198
  return;
173
- for (const trackedImage of imageTracking.trackedImages) {
174
- if (trackedImage.object?.asset === object) {
175
- const exporter = GameObject.findObjectOfType(USDZExporter);
176
- if (!exporter)
177
- continue;
178
- const { scale, target } = exporter.getARScaleAndTarget();
179
- // We have to reset the image tracking object's position and rotation, because QuickLook applies them.
180
- // On Android WebXR they're replaced by the tracked data
181
- let parent = object;
182
- const relativeMatrix = new Matrix4();
183
- if (object !== target) {
184
- while (parent.parent && parent.parent !== target) {
185
- parent = parent.parent;
186
- relativeMatrix.premultiply(parent.matrix);
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
- if (WebXRImageTracking._imageElements.has(trackedImage.image)) {
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 = WebXRImageTracking._imageElements.get(trackedImage.image);
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.7-next.e134730",
3
+ "version": "4.8.8-next.5537a55",
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": {
@@ -24,9 +24,12 @@ export function copyFilesSync(src, dest, override = true, ctx = undefined) {
24
24
  });
25
25
  }
26
26
  else if (override || !existsSync(dest)) {
27
- if (ctx) {
28
- ctx.count += 1;
27
+ if (exists) {
28
+ if (ctx) {
29
+ ctx.count += 1;
30
+ }
31
+ copyFileSync(src, dest);
29
32
  }
30
- copyFileSync(src, dest);
33
+ else console.warn(`[needle-copy] - File at ${src} does not exist`);
31
34
  }
32
35
  };
@@ -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/.vite/needle.alias.log');
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
- if (existsSync(fullpath)) {
184
- aliasDict[name] = (packageName, index, path) => {
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 (!isInstalled) {
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 !== 1107) {
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
- /** The loaded asset */
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._asset;
156
+ return this._glbRoot ?? (this._rawAsset?.scene || null);
149
157
  }
150
158
 
151
- protected set asset(val: any) {
152
- this._asset = val;
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._loading = undefined;
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._loading !== undefined) {
278
- // console.warn("Wait for other loading thiny");
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: Invalid raw binary data. Must be of type ArrayBuffer. " + (typeof this._rawBinary));
297
+ console.error("[AssetReference] Failed loading Invalid data. Must be of type ArrayBuffer. " + (typeof this._rawBinary));
289
298
  return null;
290
299
  }
291
- this._loading = getLoader().parseSync(context, this._rawBinary, this.url, null);
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._loading = getLoader().loadSync(context, this.url, this.url, null, prog => {
305
+ this._loadingPromise = getLoader().loadSync(context, this.url, this.url, null, prog => {
297
306
  this.raiseProgressEvent(prog);
298
307
  });
299
308
  }
300
- const res = await this._loading;
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.asset = res;
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 => {