@combeenation/3d-viewer 5.0.3 → 5.1.0-rc2

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.
@@ -80,6 +80,12 @@ var cloneTransformNode = function (node, predicate, deep) {
80
80
  var clone = node.clone(node.name, node.parent, true);
81
81
  if (clone) {
82
82
  clone.metadata = lodash_es_1.cloneDeep(node.metadata);
83
+ // if the cloned node is of type InstancedMesh, due to a bug(?),
84
+ // the InstancedMesh.isEnabled state may have changed after cloning.
85
+ // in that case, set the clone's enabled state to the original's state
86
+ if (node.constructor.name === 'InstancedMesh') {
87
+ clone.setEnabled(node.isEnabled(false));
88
+ }
83
89
  }
84
90
  if (deep) {
85
91
  var children = node.getChildTransformNodes(true);
@@ -257,7 +263,7 @@ exports.transformTransformNode = transformTransformNode;
257
263
  */
258
264
  var changeEnvironment = function (scene, envDef) {
259
265
  var _a;
260
- var _b;
266
+ var _b, _c;
261
267
  // issue warning if both background texture and usedefault are set
262
268
  if (envDef.environmentUseDefault && envDef.environmentBackground) {
263
269
  console.warn("!!! Warning !!! Spec parameter 'environment.usedefault' is being overruled by 'environment.background'.");
@@ -271,15 +277,23 @@ var changeEnvironment = function (scene, envDef) {
271
277
  ? sceneSetup_1.defaultEnvHelperColor
272
278
  : sceneSetup_1.defaultSceneClearColor;
273
279
  var clearColorChanged = clearColorBefore !== scene.clearColor.toString();
280
+ // Remove all URI params from given env URL as `CubeTexture.CreateFromPrefilteredData` does not work correctly with
281
+ // URLs which contain URI params.
282
+ // E.g. `https://some.url/.../studio.env?name=defaultEnv` throws an exception whilst `https://some.url/.../studio.env`
283
+ // works as expected.
284
+ //
285
+ // See BJS forum for more details:
286
+ // https://forum.babylonjs.com/t/cubetexture-createfromprefiltereddata-does-not-work-with-url-that-contains-uri-params/34097
287
+ var newEnvUrl = (_b = envDef.environment) === null || _b === void 0 ? void 0 : _b.split('?')[0];
274
288
  // 2) dispose existing & set new ENVIRONMENT (==texture)
275
289
  var curEnvTexture = scene.environmentTexture;
276
- var envTextureChanged = envDef.environment !== (curEnvTexture === null || curEnvTexture === void 0 ? void 0 : curEnvTexture.url);
277
- if (curEnvTexture && (!envDef.environment || envTextureChanged)) {
290
+ var envTextureChanged = newEnvUrl !== (curEnvTexture === null || curEnvTexture === void 0 ? void 0 : curEnvTexture.url);
291
+ if (curEnvTexture && (!newEnvUrl || envTextureChanged)) {
278
292
  curEnvTexture.dispose();
279
293
  }
280
294
  var rotation = envDef.environmentRotation !== undefined ? tools_1.Tools.ToRadians(envDef.environmentRotation) : 0;
281
- if (envDef.environment && envTextureChanged) {
282
- var envTexture = cubeTexture_1.CubeTexture.CreateFromPrefilteredData(envDef.environment, scene);
295
+ if (newEnvUrl && envTextureChanged) {
296
+ var envTexture = cubeTexture_1.CubeTexture.CreateFromPrefilteredData(newEnvUrl, scene);
283
297
  envTexture.rotationY = rotation;
284
298
  scene.environmentTexture = envTexture;
285
299
  }
@@ -304,7 +318,7 @@ var changeEnvironment = function (scene, envDef) {
304
318
  curDome.rotation.y = rotationPhotoDome;
305
319
  }
306
320
  // 4) dispose existing & set new ENVIRONMENT_USEDEFAULT (only if no background is set)
307
- var curEnvHelper = (_b = scene.metadata) === null || _b === void 0 ? void 0 : _b[envHelperMetadataName];
321
+ var curEnvHelper = (_c = scene.metadata) === null || _c === void 0 ? void 0 : _c[envHelperMetadataName];
308
322
  if (curEnvHelper && !useDefaultEnv) {
309
323
  curEnvHelper.dispose();
310
324
  delete scene.metadata[envHelperMetadataName];
@@ -1 +1 @@
1
- {"version":3,"file":"babylonHelper.js","sourceRoot":"","sources":["../../../../src/api/util/babylonHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"babylonHelper.js","sourceRoot":"","sources":["../../../../src/api/util/babylonHelper.ts"],"names":[],"mappings":";;;;AACA,+DAA8D;AAE9D,sDAAqD;AAKrD,8EAA6E;AAC7E,6DAAuD;AACvD,+DAAkE;AAClE,iEAAwE;AACxE,oEAAmE;AACnE,sEAAqE;AAErE,sEAAqE;AACrE,oDAAmD;AAInD,qDAAuF;AACvF,uCAAuD;AACvD,oDAAmD;AAEnD,IAAM,kBAAkB,GAAG,gCAAgC,CAAC;AA8mB1D,gDAAkB;AA7mBpB,IAAM,qBAAqB,GAAG,iBAAiB,CAAC;AA8mB9C,sDAAqB;AA5mBvB;;;GAGG;AACH,IAAM,WAAW,GAAG,UAAU,IAAU;IACtC,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,OAAO,KAAK,CAAC,MAAM,EAAE;QACnB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;KACtB;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAukBA,kCAAW;AArkBb;;;;GAIG;AACH,IAAM,gBAAgB,GAAG,UAAa,KAAa,EAAE,SAAmC;IACtF,IAAM,GAAG,GAAG,IAAI,GAAG,EAAiB,CAAC;IACrC,IAAM,QAAQ,GAAG,UAAU,KAAW;QACpC,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;YACjC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAY,CAAC,CAAC;SAClD;QACD,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAA,KAAK;YAC/B,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI;QAChB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAmjBA,4CAAgB;AAjjBlB;;;GAGG;AACH,IAAM,oBAAoB,GAAG,UAAU,IAAU;IAC/C,IAAM,UAAU,GAAG,uBAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,OAAO,CAAC,MAAM,EAAE;QACrB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QACzB,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACtC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAsiBA,oDAAoB;AApiBtB;;;;;GAKG;AACH,IAAM,kBAAkB,GAAG,UACzB,IAAmB,EACnB,SAA4C,EAC5C,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IAEpB,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACjC,OAAO,IAAI,CAAC;KACb;IACD,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,KAAK,EAAE;QACT,KAAK,CAAC,QAAQ,GAAG,qBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,gEAAgE;QAChE,oEAAoE;QACpE,sEAAsE;QACtE,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE;YAC7C,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;SACzC;KACF;IACD,IAAI,IAAI,EAAE;QACR,IAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACnD,QAAQ,CAAC,OAAO,CAAC,UAAA,KAAK;YACpB,IAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,WAAW,EAAE;gBACf,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;aAC5B;QACH,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAmgBA,gDAAkB;AAjgBpB;;GAEG;AACH,IAAM,oBAAoB,GAAG,UAAU,IAAiB;IACtD,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,IAAI,YAAY,6BAAa,EAAE;QACjC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAmB,EAAE,IAAI,CAAC,CAAC;KAC1F;SAAM,IAAI,IAAI,YAAY,aAAK,EAAE;QAChC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAmB,CAAC,CAAC;KACpF;SAAM,IAAI,IAAI,EAAE;QACf,MAAM,IAAI,KAAK,CAAC,mBAAe,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAC,IAAI,kCAA6B,CAAC,CAAC;KACrF;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAqfA,oDAAoB;AAnftB;;;;;GAKG;AACH,IAAM,0BAA0B,GAAG,UACjC,IAAmB,EACnB,MAA+B,EAC/B,IAAoB;IADpB,uBAAA,EAAA,WAA+B;IAC/B,qBAAA,EAAA,WAAoB;IAEpB,IAAI,IAAI,YAAY,2BAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjD,IAAM,UAAU,GAAG,uBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/G,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACtD;IACD,IAAI,IAAI,EAAE;QACR,IAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACnD,QAAQ,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAA/C,CAA+C,CAAC,CAAC;KAC5E;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAgeA,gEAA0B;AA9d5B;;;;GAIG;AACH,IAAM,kBAAkB,GAAG,UAAU,IAAU,EAAE,QAAY,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IACjF,IAAI,CAAC,QAAQ,GAAG,iBAAK,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,IAAI,IAAI,IAAI,YAAY,6BAAa,EAAE;QACzC,IAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACnD,QAAQ,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAzC,CAAyC,CAAC,CAAC;KACtE;AACH,CAAC,CAAC;AAodA,gDAAkB;AAldpB;;;;;GAKG;AACH,IAAM,mBAAmB,GAAG,UAC1B,IAAmB,EACnB,cAAgC,EAChC,kBAA8B,EAC9B,IAAoB;IADpB,mCAAA,EAAA,uBAA8B;IAC9B,qBAAA,EAAA,WAAoB;IAEpB,cAAc,uCAAC,IAAI,GAAK,kBAAkB,GAAE;IAC5C,IAAI,IAAI,EAAE;QACR,IAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACnD,QAAQ,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAApE,CAAoE,CAAC,CAAC;KACjG;AACH,CAAC,CAAC;AAkcA,kDAAmB;AAhcrB;;;GAGG;AACH,IAAM,qBAAqB,GAAG,UAAU,IAAmB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IAC/E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtB;;;;;QAKC;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAlC,CAAkC,CAAC,CAAC;KACxF;AACH,CAAC,CAAC;AAkbA,sDAAqB;AAhbvB;;;GAGG;AACH,IAAM,uBAAuB,GAAG,UAAU,IAAmB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IACjF,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB;;;;;QAKC;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,uBAAuB,CAAC,KAAK,EAAE,IAAI,CAAC,EAApC,CAAoC,CAAC,CAAC;KAC1F;AACH,CAAC,CAAC;AAkaA,0DAAuB;AAhazB;;GAEG;AACH,IAAM,qBAAqB,GAAG,UAAU,IAAU;IAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtB,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACpC;AACH,CAAC,CAAC;AAyZA,sDAAqB;AAvZvB;;GAEG;AACH,IAAM,sBAAsB,GAAG,UAAU,IAAU;IACjD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrC;AACH,CAAC,CAAC;AAgZA,wDAAsB;AA9YxB;;;;GAIG;AACH,IAAM,sBAAsB,GAAG,UAAU,IAAmB,EAAE,cAAwC;IACpG,UAAU;IACV,IAAI,CAAC,eAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE;QAC1C,kBAAkB,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;KACtE;IACD,IAAM,cAAc,GAAG,eAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAY,CAAC;IACxE,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC/D,WAAW;IACX,IAAI,CAAC,eAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE;QAC3C,kBAAkB,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;KACxF;IACD,IAAM,eAAe,GAAG,eAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAY,CAAC;IAC1E,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACxG,WAAW;IACX,IAAI,CAAC,eAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,EAAE;QAC3C,IAAI,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACjD,IAAI,CAAC,kBAAkB,EAAE;YACvB,kBAAkB,GAAG,wBAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;SACzG;QACD,kBAAkB,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;KACvF;IACD,IAAM,yBAAyB,GAAG,wBAAU,CAAC,SAAS,CAAC,eAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAO,CAAC,CAAC;IACrG,IAAI,CAAC,kBAAkB,GAAG,yBAAyB,CAAC;IACpD,IAAI,CAAC,YAAY,CAAC,qBAAO,CAAC,IAAI,EAAE,EAAE,gBAAI,CAAC,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,YAAY,CAAC,qBAAO,CAAC,IAAI,EAAE,EAAE,gBAAI,CAAC,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,YAAY,CAAC,qBAAO,CAAC,IAAI,EAAE,EAAE,gBAAI,CAAC,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC;AA+WA,wDAAsB;AA7WxB;;;;GAIG;AACH,IAAM,iBAAiB,GAAG,UAAU,KAAY,EAAE,MAA6B;;;IAC7E,kEAAkE;IAClE,IAAI,MAAM,CAAC,qBAAqB,IAAI,MAAM,CAAC,qBAAqB,EAAE;QAChE,OAAO,CAAC,IAAI,CACV,yGAA6G,CAC9G,CAAC;KACH;IAED,IAAM,aAAa,GAAG,MAAM,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAEpF,2BAA2B;IAC3B,IAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACrD,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,gBAAgB;QACxC,CAAC,CAAC,mBAAM,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC;QAC5C,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,kCAAqB;YACvB,CAAC,CAAC,mCAAsB,CAAC;IAC3B,IAAM,iBAAiB,GAAG,gBAAgB,KAAK,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IAE3E,mHAAmH;IACnH,iCAAiC;IACjC,sHAAsH;IACtH,qBAAqB;IACrB,GAAG;IACH,kCAAkC;IAClC,4HAA4H;IAC5H,IAAM,SAAS,SAAG,MAAM,CAAC,WAAW,0CAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEpD,wDAAwD;IACxD,IAAM,aAAa,GAAG,KAAK,CAAC,kBAA2C,CAAC;IACxE,IAAM,iBAAiB,GAAG,SAAS,MAAK,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,GAAG,CAAA,CAAC;IAE3D,IAAI,aAAa,IAAI,CAAC,CAAC,SAAS,IAAI,iBAAiB,CAAC,EAAE;QACtD,aAAa,CAAC,OAAO,EAAE,CAAC;KACzB;IAED,IAAM,QAAQ,GAAG,MAAM,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,aAAK,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5G,IAAI,SAAS,IAAI,iBAAiB,EAAE;QAClC,IAAM,UAAU,GAAG,yBAAW,CAAC,yBAAyB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC3E,UAAU,CAAC,SAAS,GAAG,QAAQ,CAAC;QAChC,KAAK,CAAC,kBAAkB,GAAG,UAAU,CAAC;KACvC;SAAM,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS,KAAK,QAAQ,EAAE;QAChE,aAAa,CAAC,SAAS,GAAG,QAAQ,CAAC;KACpC;IAED,uDAAuD;IACvD,IAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAA0B,CAAC;IACjF,IAAM,oBAAoB,GAAG,MAAM,CAAC,qBAAqB,MAAK,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAC,GAAG,CAAA,CAAC;IAEnF,IAAI,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,qBAAqB,IAAI,oBAAoB,CAAC,EAAE;QACtE,OAAO,CAAC,OAAO,EAAE,CAAC;KACnB;IAED,IAAM,iBAAiB,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;IACxC,IAAI,MAAM,CAAC,qBAAqB,IAAI,oBAAoB,EAAE;QACxD,IAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC;QAChD,IAAM,IAAI,GAAG,IAAI,qBAAS,CAAC,kBAAkB,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QACjG,8DAA8D;QAC9D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,aAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,iBAAiB,CAAC;KACrC;SAAM,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,iBAAiB,EAAE;QAC9D,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,iBAAiB,CAAC;KACxC;IAED,sFAAsF;IACtF,IAAM,YAAY,GAAG,MAAA,KAAK,CAAC,QAAQ,0CAAG,qBAAqB,CAAkC,CAAC;IAE9F,IAAI,YAAY,IAAI,CAAC,aAAa,EAAE;QAClC,YAAY,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;KAC9C;IAED,IAAM,kBAAkB,GAAG,mBAAM,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,IAAI,aAAa,IAAI,CAAC,YAAY,EAAE;QAClC,IAAM,SAAS,GAAG,KAAK,CAAC,wBAAwB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,CAAC,kBAAkB,EAAE;QAC5C,IAAI,SAAS,EAAE;YACb,KAAK,CAAC,QAAQ,GAAG,iBAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,YAAI,GAAC,qBAAqB,IAAG,SAAS,MAAG,CAAC;SACpF;KACF;SAAM,IAAI,YAAY,IAAI,aAAa,IAAI,iBAAiB,EAAE;QAC7D,YAAY,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;KAC/C;IAED,+BAA+B;IAC/B,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAAE;QAC7C,KAAK,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;KAC1D;AACH,CAAC,CAAC;AA8RA,8CAAiB;AA5RnB;;;;GAIG;AACH,IAAM,WAAW,GAAG,UAAU,IAAmB,EAAE,QAAkB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IACzF,IAAI,IAAI,YAAY,2BAAY,EAAE;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAlC,CAAkC,CAAC,CAAC;KACxF;AACH,CAAC,CAAC;AAoQA,kCAAW;AAlQb;;;;;;;;;;;;;;;GAeG;AACH,IAAM,qBAAqB,GAAG,UAAU,IAAmB,EAAE,QAAkB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IACnG,IAAM,IAAI,GAAG,mQAEkB,CAAC;IAChC,OAAO,CAAC,IAAI,CAAC,sBAAoB,IAAM,CAAC,CAAC;IAEzC,IAAI,IAAI,YAAY,6BAAa,EAAE;QACjC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;KACrC;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,qBAAqB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAA5C,CAA4C,CAAC,CAAC;KAClG;AACH,CAAC,CAAC;AAuOA,sDAAqB;AArOvB;;;;GAIG;AACH,IAAM,gBAAgB,GAAG,UAAU,IAAmB,EAAE,KAAa,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IACzF,IAAI,IAAI,YAAY,2BAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjD,IAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACjD,QAAQ,WAAW,EAAE;YACnB,KAAK,aAAa;gBACf,IAAI,CAAC,QAAwB,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;gBACnE,MAAM;YACR,KAAK,kBAAkB;gBACpB,IAAI,CAAC,QAA6B,CAAC,YAAY,GAAG,KAAK,CAAC;gBACzD,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,8CAA2C,WAAW,8BAA0B,CAAC,CAAC;SACrG;KACF;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAApC,CAAoC,CAAC,CAAC;KAC1F;AACH,CAAC,CAAC;AAgNA,4CAAgB;AA9MlB;;;;GAIG;AACH,IAAM,kBAAkB,GAAG,UAAU,IAAmB,EAAE,OAAgB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IAC9F,IAAI,IAAI,YAAY,2BAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjD,IAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACjD,QAAQ,WAAW,EAAE;YACnB,KAAK,aAAa;gBACf,IAAI,CAAC,QAAwB,CAAC,aAAa,GAAG,OAAO,CAAC;gBACvD,MAAM;YACR,KAAK,kBAAkB;gBACpB,IAAI,CAAC,QAA6B,CAAC,cAAc,GAAG,OAAO,CAAC;gBAC7D,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,gDAA6C,WAAW,8BAA0B,CAAC,CAAC;SACvG;KACF;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAxC,CAAwC,CAAC,CAAC;KAC9F;AACH,CAAC,CAAC;AAyLA,gDAAkB;AAvLpB;;;;GAIG;AACH,IAAM,qBAAqB,GAAG,UAAU,IAAmB,EAAE,UAAkB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IACnG,IAAI,IAAI,YAAY,2BAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjD,IAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACjD,QAAQ,WAAW,EAAE;YACnB,KAAK,aAAa;gBACf,IAAI,CAAC,QAAwB,CAAC,QAAQ,GAAG,UAAU,CAAC;gBACrD,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,mDAAgD,WAAW,8BAA0B,CAAC,CAAC;SAC1G;KACF;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAA9C,CAA8C,CAAC,CAAC;KACpG;AACH,CAAC,CAAC;AAqKA,sDAAqB;AAnKvB;;;;GAIG;AACH,IAAM,oBAAoB,GAAG,UAAU,IAAmB,EAAE,SAAiB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IACjG,IAAI,IAAI,YAAY,2BAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;QACjD,IAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACjD,QAAQ,WAAW,EAAE;YACnB,KAAK,aAAa;gBACf,IAAI,CAAC,QAAwB,CAAC,SAAS,GAAG,SAAS,CAAC;gBACrD,MAAM;YACR,KAAK,kBAAkB;gBACpB,IAAI,CAAC,QAA6B,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC1D,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,kDAA+C,WAAW,8BAA0B,CAAC,CAAC;SACzG;KACF;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAA5C,CAA4C,CAAC,CAAC;KAClG;AACH,CAAC,CAAC;AA8IA,oDAAoB;AA5ItB;;;;;GAKG;AACH,IAAM,mBAAmB,GAAG,UAAU,KAAqB,EAAE,KAAa,EAAE,IAAmB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IACnH,IAAI,IAAI,YAAY,2BAAY,EAAE;QAChC,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,KAAK,CAAC,CAAC;KACpC;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAA9C,CAA8C,CAAC,CAAC;KACpG;AACH,CAAC,CAAC;AAgIA,kDAAmB;AA9HrB;;;;GAIG;AACH,IAAM,wBAAwB,GAAG,UAAU,KAAqB,EAAE,IAAmB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IACzG,IAAI,IAAI,YAAY,2BAAY,EAAE;QAChC,KAAK,CAAC,UAAU,CAAC,IAAY,CAAC,CAAC;KAChC;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAA5C,CAA4C,CAAC,CAAC;KAClG;AACH,CAAC,CAAC;AAmHA,4DAAwB;AAjH1B;;;;GAIG;AACH,IAAM,iBAAiB,GAAG,UAAU,IAAmB,EAAE,cAAuB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IACpG,IAAI,IAAI,YAAY,2BAAY,EAAE;QAChC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;KACtC;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,iBAAiB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,EAA9C,CAA8C,CAAC,CAAC;KACpG;AACH,CAAC,CAAC;AAsGA,8CAAiB;AApGnB;;;;GAIG;AACH,IAAM,oBAAoB,GAAG,UAAU,SAA0B,EAAE,IAAmB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IAC1G,IAAI,IAAI,YAAY,2BAAY,EAAE;QAChC,2EAA2E;QAC3E,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACxC;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,EAA5C,CAA4C,CAAC,CAAC;KAClG;AACH,CAAC,CAAC;AAuFA,oDAAoB;AArFtB;;;;GAIG;AACH,IAAM,yBAAyB,GAAG,UAAU,SAA0B,EAAE,IAAmB,EAAE,IAAoB;IAApB,qBAAA,EAAA,WAAoB;IAC/G,IAAI,IAAI,YAAY,2BAAY,EAAE;QAChC,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAC3C;IACD,IAAI,IAAI,EAAE;QACR,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK,IAAI,OAAA,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,EAAjD,CAAiD,CAAC,CAAC;KACvG;AACH,CAAC,CAAC;AA0EA,8DAAyB;AAxE3B;;;;;GAKG;AACH,IAAM,qBAAqB,GAAG,UAAU,IAAkB,EAAE,KAAY,EAAE,MAAyB;IACjG,+BAA+B;IAC/B,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC;IAC/D,4EAA4E;IAC5E,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1C,IAAM,eAAe,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;IACnD,IAAM,QAAQ,GAAG,KAAK,CAAC,YAAa,CAAC,QAAQ,CAAC;IAC9C,+GAA+G;IAC/G,IAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,UAAA,MAAM;QACxC,IAAM,UAAU,GAAG,qBAAO,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;QACnF,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;QACjD,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;QAClD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,mGAAmG;IACnG,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CACzB,IAAI,EACJ,WAAW,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC,CAC1B,CAAC;IACF,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CACzB,IAAI,EACJ,WAAW,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC,CAC1B,CAAC;IACF,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CACzB,IAAI,EACJ,WAAW,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC,CAC1B,CAAC;IACF,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CACzB,IAAI,EACJ,WAAW,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC,CAC1B,CAAC;IACF,gCAAgC;IAChC,OAAO;QACL,KAAK,EAAE,IAAI,GAAG,IAAI;QAClB,MAAM,EAAE,IAAI,GAAG,IAAI;QACnB,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;KACC,CAAC;AAClB,CAAC,CAAC;AA2BA,sDAAqB"}
@@ -1,4 +1,7 @@
1
+ import { Scene } from '@babylonjs/core/scene';
1
2
  import { ISceneLoaderPlugin } from '@babylonjs/core/Loading/sceneLoader';
3
+ import { Material } from '@babylonjs/core/Materials/material';
4
+ declare const missingMaterialMetadataName = "missingMaterial";
2
5
  /**
3
6
  * Create and return a custom loader plugin to be registered with SceneLoader, that allows
4
7
  * us to run our own code against the input data before using the standard procedure to
@@ -6,13 +9,20 @@ import { ISceneLoaderPlugin } from '@babylonjs/core/Loading/sceneLoader';
6
9
  * @param previousLoaderPlugin the actual loader that's executed after manipulating the input data
7
10
  * @returns Custom loader plugin to be registered with SceneLoader.RegisterPlugin()
8
11
  */
9
- declare const getCustomLoaderPlugin: (previousLoaderPlugin: ISceneLoaderPlugin) => ISceneLoaderPlugin;
12
+ declare const getCustomCbnBabylonLoaderPlugin: (previousLoaderPlugin: ISceneLoaderPlugin) => ISceneLoaderPlugin;
10
13
  /**
11
- * Return an observer to be applied to meshes that will post-load their material
12
- * upon set to enabled/visible.
13
- * @param targetMeshOrInstance mesh the observer will be set on
14
- * @param asset base directory PBRMaterial.parse() will draw textures from. filename is ignored.
14
+ * Return an observer to be applied to meshes in order to post-load missing materials
15
+ * upon set enabled/visible.
16
+ * @param targetMeshOrInstance AbstractMesh the observer will be applied to
17
+ * @param concerningMesh Mesh to look for missing materials on, and create/apply to (when found).
15
18
  * @returns observer
16
19
  */
17
20
  declare const getMaterialPostLoadObserver: (targetMeshOrInstance: AbstractMesh, concerningMesh: Mesh) => (_eventData: any, _eventState: any) => void;
18
- export { getCustomLoaderPlugin, getMaterialPostLoadObserver };
21
+ /**
22
+ * Look up the provided materials (see library import) and create and return one if found.
23
+ * @param materialId BabylonJs material-id. E.g. 'concrete".
24
+ * @param scene BabylonJs scene
25
+ * @returns PBRMaterial | null
26
+ */
27
+ export declare const getMaterialFromCbnAssets: (materialId: string, scene: Scene) => Material | null;
28
+ export { getCustomCbnBabylonLoaderPlugin, getMaterialPostLoadObserver, missingMaterialMetadataName };
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMaterialPostLoadObserver = exports.getCustomLoaderPlugin = void 0;
4
- var pbrMaterial_1 = require("@babylonjs/core/Materials/PBR/pbrMaterial");
3
+ exports.missingMaterialMetadataName = exports.getMaterialPostLoadObserver = exports.getCustomCbnBabylonLoaderPlugin = exports.getMaterialFromCbnAssets = void 0;
5
4
  var babylonHelper_1 = require("./babylonHelper");
6
5
  var has_1 = require("lodash-es/has");
6
+ var material_1 = require("@babylonjs/core/Materials/material");
7
+ var missingMaterialMetadataName = 'missingMaterial';
8
+ exports.missingMaterialMetadataName = missingMaterialMetadataName;
7
9
  /**
8
10
  * Create and return a custom loader plugin to be registered with SceneLoader, that allows
9
11
  * us to run our own code against the input data before using the standard procedure to
@@ -11,52 +13,47 @@ var has_1 = require("lodash-es/has");
11
13
  * @param previousLoaderPlugin the actual loader that's executed after manipulating the input data
12
14
  * @returns Custom loader plugin to be registered with SceneLoader.RegisterPlugin()
13
15
  */
14
- var getCustomLoaderPlugin = function (previousLoaderPlugin) {
16
+ var getCustomCbnBabylonLoaderPlugin = function (previousLoaderPlugin) {
15
17
  var customLoader = {
16
- name: 'combeenationCustomBabylonLoader',
18
+ name: 'cbnCustomBabylonLoader',
17
19
  extensions: '.babylon',
18
- importMesh: function (meshesNames, scene, data, rootUrl, meshes, particleSystems, skeletons) {
19
- return true;
20
- },
21
- load: function (scene, data, rootUrl) {
22
- return true;
23
- },
20
+ importMesh: previousLoaderPlugin.importMesh,
21
+ load: previousLoaderPlugin.load,
24
22
  loadAssetContainer: function (scene, data, rootUrl, onError) {
25
23
  //* 1) --- manipulate ORIGINAL data
26
24
  var dataParsed = JSON.parse(data);
27
25
  //* 2) --- call default (non-custom) loading method
28
26
  var importedContainer = previousLoaderPlugin.loadAssetContainer(scene, data, rootUrl);
29
27
  //* 3) --- manipulate IMPORTED data
30
- processImportedData(dataParsed, importedContainer);
28
+ addMissingMaterialMetadata(dataParsed, importedContainer);
31
29
  //* 4) --- return imported data
32
30
  return importedContainer;
33
31
  },
34
32
  };
35
33
  return customLoader;
36
34
  };
37
- exports.getCustomLoaderPlugin = getCustomLoaderPlugin;
35
+ exports.getCustomCbnBabylonLoaderPlugin = getCustomCbnBabylonLoaderPlugin;
38
36
  /**
39
- * Return an observer to be applied to meshes that will post-load their material
40
- * upon set to enabled/visible.
41
- * @param targetMeshOrInstance mesh the observer will be set on
42
- * @param asset base directory PBRMaterial.parse() will draw textures from. filename is ignored.
37
+ * Return an observer to be applied to meshes in order to post-load missing materials
38
+ * upon set enabled/visible.
39
+ * @param targetMeshOrInstance AbstractMesh the observer will be applied to
40
+ * @param concerningMesh Mesh to look for missing materials on, and create/apply to (when found).
43
41
  * @returns observer
44
42
  */
45
- //* targetMeshOrInstance .. AbstractMesh to apply the observer to. can be a parent of the concerning mesh
46
- //* concerningMesh .. actual Mesh with missingMaterial metadata.
47
43
  var getMaterialPostLoadObserver = function (targetMeshOrInstance, concerningMesh) {
48
44
  return function (_eventData, _eventState) {
49
- // console.log('## ONENABLEDSTATECHANGED-OBSERVER triggered by ', targetMeshOrInstance.name);
50
- // gatekeeper clause - if event was not triggered by ENABLING the AbstractMesh: exit
51
- if (targetMeshOrInstance.isEnabled(true) !== true)
52
- return;
53
- // gatekeeper clause - if concerning mesh has no missing material: exit
54
- if (!has_1.default(concerningMesh.metadata, 'missingMaterial'))
45
+ var hasBeenEnabled = targetMeshOrInstance.isEnabled(true);
46
+ var materialMissing = has_1.default(concerningMesh.metadata, missingMaterialMetadataName);
47
+ if (!hasBeenEnabled || !materialMissing)
55
48
  return;
56
- var currMaterialId = concerningMesh.metadata['missingMaterial'];
57
- var mat = concerningMesh.getScene().getMaterialById(currMaterialId);
58
- concerningMesh.material = mat || getMaterialFromCbnAssets(currMaterialId, concerningMesh.getScene());
59
- delete concerningMesh.metadata['missingMaterial'];
49
+ // get id of missing material
50
+ var missingMatId = concerningMesh.metadata[missingMaterialMetadataName];
51
+ // try to find material on the scene
52
+ var existingMat = concerningMesh.getScene().getMaterialById(missingMatId);
53
+ // assign either existing material or freshly created one
54
+ concerningMesh.material = existingMat || exports.getMaterialFromCbnAssets(missingMatId, concerningMesh.getScene());
55
+ // since the material is there now, we do not need the related metadata tag anymore
56
+ delete concerningMesh.metadata[missingMaterialMetadataName];
60
57
  };
61
58
  };
62
59
  exports.getMaterialPostLoadObserver = getMaterialPostLoadObserver;
@@ -66,22 +63,25 @@ exports.getMaterialPostLoadObserver = getMaterialPostLoadObserver;
66
63
  * @param dataParsed original data
67
64
  * @param container loaded data
68
65
  */
69
- var processImportedData = function (dataParsed, container) {
70
- container.meshes.forEach(function (im) {
66
+ var addMissingMaterialMetadata = function (dataParsed, container) {
67
+ container.meshes.forEach(function (currMeshImported) {
71
68
  var _a;
72
- for (var _i = 0, _b = dataParsed.meshes; _i < _b.length; _i++) {
73
- var currM = _b[_i];
74
- if (currM.name === im.name) {
75
- var materialOnImportedMesh = (_a = im.material) === null || _a === void 0 ? void 0 : _a.id;
76
- var materialOnOriginalMesh = currM.materialId;
77
- // if materialId was changed on import because it was not found on .babylon file,
78
- // write the intended materialId into that mesh's metadata, such that it can be loaded later on
79
- if (materialOnOriginalMesh && materialOnImportedMesh !== materialOnOriginalMesh) {
80
- console.info("Adding \"missingMaterial\" info on mesh \"" + currM.name + "\" with material \"" + currM.materialId + "\"");
81
- babylonHelper_1.injectNodeMetadata(im, { missingMaterial: materialOnOriginalMesh }, false);
82
- break;
83
- }
84
- }
69
+ var _b, _c;
70
+ for (var _i = 0, _d = dataParsed.meshes; _i < _d.length; _i++) {
71
+ var currMeshOriginal = _d[_i];
72
+ if (currMeshOriginal.name !== currMeshImported.name)
73
+ continue;
74
+ // we're dealing with the original version of the current imported mesh now
75
+ var materialOnImportedMesh = (_b = currMeshImported.material) === null || _b === void 0 ? void 0 : _b.id;
76
+ var materialOnOriginalMesh = currMeshOriginal.materialId;
77
+ if (!materialOnOriginalMesh || materialOnImportedMesh === materialOnOriginalMesh)
78
+ continue;
79
+ // TODO: Just for easier debugging. Remove before publishment...
80
+ console.info("Adding \"" + missingMaterialMetadataName + "\" info on mesh \"" + currMeshOriginal.name + "\" with material \"" + currMeshOriginal.materialId + "\"");
81
+ // if we're here, the imported mesh has different material than original one
82
+ (_c = window.Cbn) === null || _c === void 0 ? void 0 : _c.Assets.assertMaterialExists(materialOnOriginalMesh);
83
+ babylonHelper_1.injectNodeMetadata(currMeshImported, (_a = {}, _a[missingMaterialMetadataName] = materialOnOriginalMesh, _a), false);
84
+ break;
85
85
  }
86
86
  });
87
87
  };
@@ -94,7 +94,11 @@ var processImportedData = function (dataParsed, container) {
94
94
  var getMaterialFromCbnAssets = function (materialId, scene) {
95
95
  var _a;
96
96
  var materialDefinition = (_a = window.Cbn) === null || _a === void 0 ? void 0 : _a.Assets.getMaterial(materialId);
97
- var material = materialDefinition && pbrMaterial_1.PBRMaterial.Parse(materialDefinition, scene, '');
97
+ // The generic `Material.Parse` actually returns a more specific material like `BABYLON.StandardMaterial`,
98
+ // `BABYLON.PBRMaterial` or stuff like `BABYLON.PBRMetallicRoughnessMaterial` etc. based on the given `customType`
99
+ // within the material JSON definition
100
+ var material = materialDefinition && material_1.Material.Parse(materialDefinition, scene, '');
98
101
  return material || null;
99
102
  };
103
+ exports.getMaterialFromCbnAssets = getMaterialFromCbnAssets;
100
104
  //# sourceMappingURL=sceneLoaderHelper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sceneLoaderHelper.js","sourceRoot":"","sources":["../../../../src/api/util/sceneLoaderHelper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sceneLoaderHelper.js","sourceRoot":"","sources":["../../../../src/api/util/sceneLoaderHelper.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.0.3"
2
+ "version": "5.1.0-rc2"
3
3
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@combeenation/3d-viewer",
3
3
  "description": "Combeenation 3D Viewer",
4
- "version": "5.0.3",
4
+ "version": "5.1.0-rc2",
5
5
  "homepage": "https://github.com/Combeenation/3d-viewer#readme",
6
6
  "keywords": [],
7
7
  "author": "",
@@ -36,6 +36,9 @@ import { VariantParameterizable } from './../classes/variantParameterizable';
36
36
  import { DottedPath } from './dottedPath';
37
37
  import { Parameter } from './parameter';
38
38
  import { Variant } from './variant';
39
+ import { getMaterialPostLoadObserver, missingMaterialMetadataName } from '../util/sceneLoaderHelper';
40
+ import { Nullable } from '@babylonjs/core/types';
41
+ import { Node as BjsNode } from '@babylonjs/core/node'; //! overload DOM API Node due to name-clash with BJS
39
42
 
40
43
  /**
41
44
  * An {@link Element} of a {@link Variant}. Acts as a container for diverse definitions. Lives only in the context of a
@@ -62,6 +65,7 @@ export class Element extends VariantParameterizable {
62
65
  const nodes = this.variant.inheritedNodes.map(node => cloneTransformNode(node, this.filterNode.bind(this)));
63
66
  this.nodes = nodes.filter(node => !!node) as TransformNode[];
64
67
  this._dottedNodes = mapToDottedNodes<TransformNode>(this.nodes, node => node instanceof TransformNode);
68
+ this.addMissingMaterialObservers();
65
69
  this.addParameterObservers();
66
70
  }
67
71
 
@@ -145,6 +149,21 @@ export class Element extends VariantParameterizable {
145
149
  return flatMeshes;
146
150
  }
147
151
 
152
+ /**
153
+ * The actual {@link AbstractMesh}es that make up this {@link Element}.
154
+ * I.e. (real) Meshes as well as InstancedMeshes.
155
+ */
156
+ get abstractMeshesFlat(): AbstractMesh[] {
157
+ const allAbstractMeshes = this.nodes.reduce((acc, currNode) => {
158
+ const currAbstractMeshes = currNode.getChildMeshes(false, n => n instanceof AbstractMesh);
159
+ if (currNode instanceof AbstractMesh) {
160
+ currAbstractMeshes.unshift(currNode);
161
+ }
162
+ return [...acc, ...currAbstractMeshes];
163
+ }, [] as AbstractMesh[]); // initial accumulator value
164
+ return allAbstractMeshes;
165
+ }
166
+
148
167
  /**
149
168
  * The meshes of this {@link Element}.
150
169
  */
@@ -350,6 +369,32 @@ export class Element extends VariantParameterizable {
350
369
  return this.drawPaintable(paintable, image);
351
370
  }
352
371
 
372
+ /**
373
+ * Adds observers for loading missing materials where needed
374
+ */
375
+ protected addMissingMaterialObservers() {
376
+ for (const abstractMesh of this.abstractMeshesFlat) {
377
+ // set the concerning mesh, i.e. the mesh the observer should check for missing material.
378
+ // for instances, we want the sourcemesh here.
379
+ const concerningMesh = abstractMesh instanceof InstancedMesh ? abstractMesh.sourceMesh : (abstractMesh as Mesh);
380
+
381
+ // observer is pointless if concerning mesh has no missing material
382
+ if (!has(concerningMesh.metadata, missingMaterialMetadataName)) continue;
383
+
384
+ // for each of our AbstractMeshes, set an observer on the AbstractMesh itself,
385
+ // but also on all of its parents.
386
+ let currNode: Nullable<BjsNode> = abstractMesh as BjsNode;
387
+ while (currNode) {
388
+ // add observer. needed only once per node, hence addOnce()
389
+ abstractMesh.onEnabledStateChangedObservable.addOnce(
390
+ getMaterialPostLoadObserver(currNode as AbstractMesh, concerningMesh)
391
+ );
392
+ // console.log('## observer set on: ' + meshOrInstance.name);
393
+ currNode = currNode.parent;
394
+ }
395
+ }
396
+ }
397
+
353
398
  /**
354
399
  * Adds the default {@link ParameterObserver}s which are called every time {@link commitParameters} is called.
355
400
  */
@@ -8,7 +8,7 @@ import { TransformNode } from '@babylonjs/core/Meshes/transformNode';
8
8
  import '@babylonjs/loaders/glTF/2.0/Extensions/KHR_draco_mesh_compression';
9
9
  import '@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_transform';
10
10
  import '@babylonjs/loaders/glTF/2.0/glTFLoader';
11
- import { cloneDeep, concat, get, isEmpty, isEqual, isString, merge, set } from 'lodash-es';
11
+ import { cloneDeep, concat, get, has, isElement, isEmpty, isEqual, isString, merge, reject, set } from 'lodash-es';
12
12
  import { deactivateTransformNode, getDottedPathForNode, injectNodeMetadata } from '../util/babylonHelper';
13
13
  import { loadJson, mergeMaps } from '../util/resourceHelper';
14
14
  import { DottedPath } from './dottedPath';
@@ -20,6 +20,7 @@ import { ParameterObservable } from './parameterObservable';
20
20
  import { VariantParameterizable } from './variantParameterizable';
21
21
  import { Viewer } from './viewer';
22
22
  import { ViewerLight } from './viewerLight';
23
+ import { getMaterialFromCbnAssets } from '../util/sceneLoaderHelper';
23
24
 
24
25
  import '@babylonjs/loaders/glTF/2.0/Extensions/KHR_texture_basisu';
25
26
  import '@babylonjs/loaders/glTF/2.0/Extensions/KHR_materials_clearcoat';
@@ -425,17 +426,24 @@ export class Variant extends Parameterizable {
425
426
  * Gets the Material defined in one of the variants glTFs by its id.
426
427
  */
427
428
  public getMaterial(id: string): Material {
429
+ const scene = this.viewer.scene;
430
+
428
431
  for (const material of this.inheritedMaterials) {
429
432
  if (material.id === id) {
430
433
  return material;
431
434
  }
432
435
  }
433
436
  // fallback to dynamically created materials on scene
434
- for (const material of this.viewer.scene.materials) {
437
+ for (const material of scene.materials) {
435
438
  if (material.id === id) {
436
439
  return material;
437
440
  }
438
441
  }
442
+ const cbnAssetMaterial = getMaterialFromCbnAssets(id, scene);
443
+ if (cbnAssetMaterial) {
444
+ return cbnAssetMaterial;
445
+ }
446
+
439
447
  throw new Error(`Material with id "${id}" does not exist for variant "${this.id}".`);
440
448
  }
441
449
 
@@ -608,7 +616,8 @@ export class Variant extends Parameterizable {
608
616
  */
609
617
  protected async loadAssets(): Promise<Variant> {
610
618
  this.broadcastEvent(Event.ASSET_LOADING_START, this);
611
- return new Promise(resolve => {
619
+
620
+ const promisifiedLoader = new Promise<Variant>((resolve, reject) => {
612
621
  if (!this.structureJson) {
613
622
  this.broadcastEvent(Event.ASSET_LOADING_END, this);
614
623
  return resolve(this);
@@ -617,8 +626,12 @@ export class Variant extends Parameterizable {
617
626
  this.broadcastEvent(Event.ASSET_LOADING_END, this);
618
627
  return resolve(this);
619
628
  }
620
- SceneLoader.LoadAssetContainerAsync(this.glTF.rootUrl, this.glTF.fileName, this.viewer.scene)
621
- .then(container => {
629
+ SceneLoader.LoadAssetContainer(
630
+ this.glTF.rootUrl,
631
+ this.glTF.fileName,
632
+ this.viewer.scene,
633
+ // on success
634
+ container => {
622
635
  this.assetContainer = container;
623
636
  const nodes = this.assetContainer.getNodes().filter(n => n instanceof TransformNode) as TransformNode[];
624
637
  nodes.forEach(node => {
@@ -638,12 +651,17 @@ export class Variant extends Parameterizable {
638
651
  this.assetContainer.materials.forEach(material => this.viewer.scene.materials.push(material));
639
652
  this.broadcastEvent(Event.ASSET_LOADING_END, this);
640
653
  resolve(this);
641
- })
642
- .catch(reason => {
654
+ },
655
+ // on progress
656
+ undefined,
657
+ // on error
658
+ reason => {
643
659
  this.broadcastEvent(Event.ASSET_LOADING_END, this);
644
660
  throw new Error(`Error loading assets for variant "${this.id}": ${reason}.`);
645
- });
661
+ }
662
+ );
646
663
  });
664
+ return await promisifiedLoader;
647
665
  }
648
666
 
649
667
  /**
@@ -710,6 +728,27 @@ export class Variant extends Parameterizable {
710
728
  protected async commitParameterToElements(parameter: string, value: ParameterValue): Promise<Variant> {
711
729
  const promises = [];
712
730
  for (const element of this.elements) {
731
+ const elementVisibleParamPath = DottedPath.create([element.name, Parameter.VISIBLE]).toString();
732
+ const elementIsHiddenViaParams = this.inheritedParameters[elementVisibleParamPath] === false;
733
+
734
+ // Don't enable/show the variants element if it is explicitly hidden via its element parameters.
735
+ // E.g. via spec:
736
+ // ```
737
+ // variants: {
738
+ // theVariant: {
739
+ // elements: {
740
+ // Main: ['root.main'],
741
+ // Secondary: ['root.secondary'],
742
+ // },
743
+ // parameters: {
744
+ // // !!! The element `Secondary` should **not** be enabled when its containing variant is enabled !!!
745
+ // 'Secondary.visible': false,
746
+ // }
747
+ // }
748
+ // }
749
+ // ```
750
+ if (Parameter.VISIBLE === parameter && value && elementIsHiddenViaParams) continue;
751
+
713
752
  promises.push(element.commitParameter(parameter, value));
714
753
  }
715
754
  await Promise.all(promises);
@@ -31,6 +31,8 @@ import { IPointerEvent } from '@babylonjs/core/Events/deviceInputEvents';
31
31
  import { DebugLayer } from '@babylonjs/core/Debug/debugLayer';
32
32
  import { PhotoDome } from '@babylonjs/core/Helpers/photoDome';
33
33
  import { backgroundDomeName, envHelperMetadataName } from '../util/babylonHelper';
34
+ import { ISceneLoaderPlugin, SceneLoader } from '@babylonjs/core/Loading/sceneLoader';
35
+ import { getCustomCbnBabylonLoaderPlugin } from '../util/sceneLoaderHelper';
34
36
 
35
37
  /**
36
38
  * The main exposed object. This is the entry point into the application
@@ -157,6 +159,7 @@ export class Viewer extends EventBroadcaster {
157
159
  */
158
160
  public async bootstrap(): Promise<Viewer> {
159
161
  this.broadcastEvent(Event.BOOTSTRAP_START, this);
162
+
160
163
  let indexJson;
161
164
  if (isString(this.structureJson)) {
162
165
  indexJson = await loadJson<StructureJson>(this.structureJson);
@@ -168,6 +171,9 @@ export class Viewer extends EventBroadcaster {
168
171
  }
169
172
  // fill spec store
170
173
  SpecStorage.createFromSpec(indexJson);
174
+
175
+ this.initCbnBabylonLoaderPlugin();
176
+
171
177
  // load scene
172
178
  if (isString(indexJson.scene)) {
173
179
  const sceneJson = await loadJson<SceneJson>(indexJson.scene);
@@ -553,6 +559,18 @@ export class Viewer extends EventBroadcaster {
553
559
  return scene;
554
560
  }
555
561
 
562
+ /**
563
+ * Register custom file loader for babylon files which adds "missing-material" metadata to meshes which reference
564
+ * materials that are not present in the `materials` section of the given babylon file.
565
+ *
566
+ * Required for babylon files & materials loaded from "Combeenation configurator assets".
567
+ */
568
+ protected initCbnBabylonLoaderPlugin() {
569
+ const previousLoaderPlugin = SceneLoader.GetPluginForExtension('babylon') as ISceneLoaderPlugin;
570
+ const customLoaderPlugin = getCustomCbnBabylonLoaderPlugin(previousLoaderPlugin);
571
+ SceneLoader.RegisterPlugin(customLoaderPlugin);
572
+ }
573
+
556
574
  /**
557
575
  * Batch creation of multiple {@link VariantInstance} objects with a {@link SetupJson} object passed
558
576
  */
@@ -89,6 +89,12 @@ const cloneTransformNode = function (
89
89
  const clone = node.clone(node.name, node.parent, true);
90
90
  if (clone) {
91
91
  clone.metadata = cloneDeep(node.metadata);
92
+ // if the cloned node is of type InstancedMesh, due to a bug(?),
93
+ // the InstancedMesh.isEnabled state may have changed after cloning.
94
+ // in that case, set the clone's enabled state to the original's state
95
+ if (node.constructor.name === 'InstancedMesh') {
96
+ clone.setEnabled(node.isEnabled(false));
97
+ }
92
98
  }
93
99
  if (deep) {
94
100
  const children = node.getChildTransformNodes(true);
@@ -283,17 +289,26 @@ const changeEnvironment = function (scene: Scene, envDef: EnvironmentDefinition)
283
289
  : defaultSceneClearColor;
284
290
  const clearColorChanged = clearColorBefore !== scene.clearColor.toString();
285
291
 
292
+ // Remove all URI params from given env URL as `CubeTexture.CreateFromPrefilteredData` does not work correctly with
293
+ // URLs which contain URI params.
294
+ // E.g. `https://some.url/.../studio.env?name=defaultEnv` throws an exception whilst `https://some.url/.../studio.env`
295
+ // works as expected.
296
+ //
297
+ // See BJS forum for more details:
298
+ // https://forum.babylonjs.com/t/cubetexture-createfromprefiltereddata-does-not-work-with-url-that-contains-uri-params/34097
299
+ const newEnvUrl = envDef.environment?.split('?')[0];
300
+
286
301
  // 2) dispose existing & set new ENVIRONMENT (==texture)
287
302
  const curEnvTexture = scene.environmentTexture as Nullable<CubeTexture>;
288
- const envTextureChanged = envDef.environment !== curEnvTexture?.url;
303
+ const envTextureChanged = newEnvUrl !== curEnvTexture?.url;
289
304
 
290
- if (curEnvTexture && (!envDef.environment || envTextureChanged)) {
305
+ if (curEnvTexture && (!newEnvUrl || envTextureChanged)) {
291
306
  curEnvTexture.dispose();
292
307
  }
293
308
 
294
309
  const rotation = envDef.environmentRotation !== undefined ? Tools.ToRadians(envDef.environmentRotation) : 0;
295
- if (envDef.environment && envTextureChanged) {
296
- const envTexture = CubeTexture.CreateFromPrefilteredData(envDef.environment as string, scene);
310
+ if (newEnvUrl && envTextureChanged) {
311
+ const envTexture = CubeTexture.CreateFromPrefilteredData(newEnvUrl, scene);
297
312
  envTexture.rotationY = rotation;
298
313
  scene.environmentTexture = envTexture;
299
314
  } else if (curEnvTexture && curEnvTexture.rotationY !== rotation) {