@babylonjs/core 9.8.0 → 9.9.0

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 (103) hide show
  1. package/Audio/audioSceneComponent.pure.js +17 -9
  2. package/Bones/bone.pure.js +39 -29
  3. package/Cameras/arcRotateCamera.pure.d.ts +0 -8
  4. package/Cameras/arcRotateCamera.pure.js +0 -12
  5. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  6. package/Cameras/inputMapper.d.ts +29 -8
  7. package/Cameras/inputMapper.js +63 -10
  8. package/Cameras/inputMapper.js.map +1 -1
  9. package/Cameras/targetCamera.pure.js +40 -27
  10. package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +17 -23
  11. package/Engines/abstractEngine.pure.js +4 -4
  12. package/Engines/abstractEngine.pure.js.map +1 -1
  13. package/Engines/thinEngine.pure.js +234 -280
  14. package/Materials/Background/backgroundMaterial.pure.js +5 -4
  15. package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
  16. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.d.ts +5 -0
  17. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.js +8 -0
  18. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.js.map +1 -0
  19. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.d.ts +278 -0
  20. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +718 -0
  21. package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -0
  22. package/Materials/GaussianSplatting/pure.d.ts +1 -0
  23. package/Materials/GaussianSplatting/pure.js +1 -0
  24. package/Materials/GaussianSplatting/pure.js.map +1 -1
  25. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +10 -14
  26. package/Materials/Node/Blocks/Dual/index.d.ts +0 -14
  27. package/Materials/Node/Blocks/Dual/index.js +0 -18
  28. package/Materials/Node/Blocks/Dual/index.js.map +1 -1
  29. package/Materials/Node/Blocks/Dual/textureBlock.pure.js +660 -662
  30. package/Materials/Node/Blocks/Fragment/index.d.ts +0 -10
  31. package/Materials/Node/Blocks/Fragment/index.js +0 -13
  32. package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
  33. package/Materials/Node/Blocks/GaussianSplatting/index.d.ts +12 -0
  34. package/Materials/Node/Blocks/GaussianSplatting/index.js +14 -1
  35. package/Materials/Node/Blocks/GaussianSplatting/index.js.map +1 -1
  36. package/Materials/Node/Blocks/Vertex/index.d.ts +0 -8
  37. package/Materials/Node/Blocks/Vertex/index.js +0 -10
  38. package/Materials/Node/Blocks/Vertex/index.js.map +1 -1
  39. package/Materials/PBR/openpbrMaterial.pure.js +6 -5
  40. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  41. package/Materials/PBR/pbrBaseMaterial.pure.js +6 -5
  42. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  43. package/Materials/Textures/index.d.ts +1 -0
  44. package/Materials/Textures/index.js +1 -0
  45. package/Materials/Textures/index.js.map +1 -1
  46. package/Materials/Textures/internalTexture.js +7 -0
  47. package/Materials/Textures/internalTexture.js.map +1 -1
  48. package/Materials/Textures/texture.pure.js +157 -255
  49. package/Materials/index.d.ts +30 -0
  50. package/Materials/index.js +31 -0
  51. package/Materials/index.js.map +1 -1
  52. package/Materials/material.pure.js +128 -69
  53. package/Materials/pure.d.ts +1 -0
  54. package/Materials/pure.js +1 -0
  55. package/Materials/pure.js.map +1 -1
  56. package/Materials/standardMaterial.pure.js +6 -5
  57. package/Materials/standardMaterial.pure.js.map +1 -1
  58. package/Maths/math.color.pure.js +55 -47
  59. package/Maths/math.vector.pure.js +118 -242
  60. package/Meshes/GaussianSplatting/gaussianSplattingDebugger.d.ts +7 -0
  61. package/Meshes/GaussianSplatting/gaussianSplattingDebugger.js +8 -0
  62. package/Meshes/GaussianSplatting/gaussianSplattingDebugger.js.map +1 -0
  63. package/Meshes/GaussianSplatting/gaussianSplattingDebugger.pure.d.ts +147 -0
  64. package/Meshes/GaussianSplatting/gaussianSplattingDebugger.pure.js +257 -0
  65. package/Meshes/GaussianSplatting/gaussianSplattingDebugger.pure.js.map +1 -0
  66. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +11 -0
  67. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +31 -0
  68. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  69. package/Meshes/GaussianSplatting/pure.d.ts +1 -0
  70. package/Meshes/GaussianSplatting/pure.js +1 -0
  71. package/Meshes/GaussianSplatting/pure.js.map +1 -1
  72. package/Meshes/GreasedLine/greasedLineMesh.pure.js +9 -14
  73. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +26 -27
  74. package/Meshes/index.d.ts +1 -0
  75. package/Meshes/index.js +1 -0
  76. package/Meshes/index.js.map +1 -1
  77. package/Meshes/meshSimplification.common.d.ts +53 -0
  78. package/Meshes/meshSimplification.common.js +34 -0
  79. package/Meshes/meshSimplification.common.js.map +1 -0
  80. package/Meshes/meshSimplification.d.ts +3 -53
  81. package/Meshes/meshSimplification.js +1 -33
  82. package/Meshes/meshSimplification.js.map +1 -1
  83. package/Meshes/meshSimplificationSceneComponent.pure.js.map +1 -1
  84. package/Meshes/meshSimplificationSceneComponent.types.d.ts +2 -1
  85. package/Meshes/meshSimplificationSceneComponent.types.js.map +1 -1
  86. package/Meshes/pure.d.ts +1 -0
  87. package/Meshes/pure.js +1 -0
  88. package/Meshes/pure.js.map +1 -1
  89. package/Meshes/transformNode.pure.js +82 -44
  90. package/Misc/tools.pure.js +124 -186
  91. package/Misc/tools.pure.js.map +1 -1
  92. package/Physics/v1/physicsImpostor.pure.js +43 -37
  93. package/Shaders/ShadersInclude/gaussianSplatting.js +33 -10
  94. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  95. package/Shaders/gaussianSplatting.vertex.js +20 -1
  96. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  97. package/Shaders/picking.fragment.js +4 -1
  98. package/Shaders/picking.fragment.js.map +1 -1
  99. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +33 -10
  100. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  101. package/ShadersWGSL/gaussianSplatting.vertex.js +21 -2
  102. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  103. package/package.json +3 -1
@@ -8,15 +8,7 @@ import { PrecisionDate } from "./precisionDate.js";
8
8
  import { _WarnImport } from "./devTools.js";
9
9
  import { WebRequest } from "./webRequest.js";
10
10
  import { EngineStore } from "../Engines/engineStore.js";
11
- import {
12
- FileToolsOptions,
13
- DecodeBase64UrlToBinary,
14
- IsBase64DataUrl,
15
- LoadFile as FileToolsLoadFile,
16
- LoadImage as FileToolLoadImage,
17
- ReadFile as FileToolsReadFile,
18
- SetCorsBehavior,
19
- } from "./fileTools.pure.js";
11
+ import { FileToolsOptions, DecodeBase64UrlToBinary, IsBase64DataUrl, LoadFile as FileToolsLoadFile, LoadImage as FileToolLoadImage, ReadFile as FileToolsReadFile, SetCorsBehavior, } from "./fileTools.pure.js";
20
12
  import { TimingTools } from "./timingTools.js";
21
13
  import { InstantiationTools } from "./instantiationTools.js";
22
14
  import { RandomGUID } from "./guid.js";
@@ -276,12 +268,7 @@ export class Tools {
276
268
  static SmoothAngleChange(previousAngle, newAngle, smoothFactor = 0.9) {
277
269
  const previousAngleRad = this.ToRadians(previousAngle);
278
270
  const newAngleRad = this.ToRadians(newAngle);
279
- return this.ToDegrees(
280
- Math.atan2(
281
- (1 - smoothFactor) * Math.sin(newAngleRad) + smoothFactor * Math.sin(previousAngleRad),
282
- (1 - smoothFactor) * Math.cos(newAngleRad) + smoothFactor * Math.cos(previousAngleRad)
283
- )
284
- );
271
+ return this.ToDegrees(Math.atan2((1 - smoothFactor) * Math.sin(newAngleRad) + smoothFactor * Math.sin(previousAngleRad), (1 - smoothFactor) * Math.cos(newAngleRad) + smoothFactor * Math.cos(previousAngleRad)));
285
272
  }
286
273
  /**
287
274
  * Returns an array if obj is not an array
@@ -366,19 +353,12 @@ export class Tools {
366
353
  */
367
354
  static async LoadFileAsync(url, useArrayBuffer = true) {
368
355
  return await new Promise((resolve, reject) => {
369
- FileToolsLoadFile(
370
- url,
371
- (data) => {
372
- resolve(data);
373
- },
374
- undefined,
375
- undefined,
376
- useArrayBuffer,
377
- (request, exception) => {
378
- // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
379
- reject(exception);
380
- }
381
- );
356
+ FileToolsLoadFile(url, (data) => {
357
+ resolve(data);
358
+ }, undefined, undefined, useArrayBuffer, (request, exception) => {
359
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
360
+ reject(exception);
361
+ });
382
362
  });
383
363
  }
384
364
  /**
@@ -415,7 +395,8 @@ export class Tools {
415
395
  // make sure no trailing slash is present
416
396
  const baseUrl = _a.ScriptBaseUrl.endsWith("/") ? _a.ScriptBaseUrl.slice(0, -1) : _a.ScriptBaseUrl;
417
397
  scriptUrl = scriptUrl.replace(_a._DefaultCdnUrl, baseUrl);
418
- } else if (_a._CdnVersion) {
398
+ }
399
+ else if (_a._CdnVersion) {
419
400
  // If a CDN version is set (injected at build time), rewrite unversioned CDN URLs to versioned ones
420
401
  const versionedBase = `${_a._DefaultCdnUrl}/v${_a._CdnVersion}`;
421
402
  // Guard against double-versioning if the URL already contains the version prefix
@@ -456,23 +437,16 @@ export class Tools {
456
437
  }
457
438
  static _LoadScriptNative(scriptUrl, onSuccess, onError) {
458
439
  if (_native) {
459
- _a.LoadFile(
460
- scriptUrl,
461
- (data) => {
462
- Function(data).apply(null);
463
- if (onSuccess) {
464
- onSuccess();
465
- }
466
- },
467
- undefined,
468
- undefined,
469
- false,
470
- (_request, exception) => {
471
- if (onError) {
472
- onError("LoadScript Error", exception);
473
- }
440
+ _a.LoadFile(scriptUrl, (data) => {
441
+ Function(data).apply(null);
442
+ if (onSuccess) {
443
+ onSuccess();
474
444
  }
475
- );
445
+ }, undefined, undefined, false, (_request, exception) => {
446
+ if (onError) {
447
+ onError("LoadScript Error", exception);
448
+ }
449
+ });
476
450
  }
477
451
  }
478
452
  static _LoadScriptWeb(scriptUrl, onSuccess, onError, scriptId, useModule = false) {
@@ -482,11 +456,13 @@ export class Tools {
482
456
  if (onSuccess) {
483
457
  onSuccess();
484
458
  }
485
- } catch (e) {
459
+ }
460
+ catch (e) {
486
461
  onError?.(`Unable to load script '${scriptUrl}' in worker`, e);
487
462
  }
488
463
  return;
489
- } else if (!IsWindowObjectExist()) {
464
+ }
465
+ else if (!IsWindowObjectExist()) {
490
466
  onError?.(`Cannot load script '${scriptUrl}' outside of a window or a worker`);
491
467
  return;
492
468
  }
@@ -495,7 +471,8 @@ export class Tools {
495
471
  if (useModule) {
496
472
  script.setAttribute("type", "module");
497
473
  script.innerText = scriptUrl;
498
- } else {
474
+ }
475
+ else {
499
476
  script.setAttribute("type", "text/javascript");
500
477
  script.setAttribute("src", scriptUrl);
501
478
  }
@@ -523,17 +500,12 @@ export class Tools {
523
500
  */
524
501
  static async LoadScriptAsync(scriptUrl, scriptId) {
525
502
  return await new Promise((resolve, reject) => {
526
- this.LoadScript(
527
- scriptUrl,
528
- () => {
529
- resolve();
530
- },
531
- (message, exception) => {
532
- // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
533
- reject(exception || new Error(message));
534
- },
535
- scriptId
536
- );
503
+ this.LoadScript(scriptUrl, () => {
504
+ resolve();
505
+ }, (message, exception) => {
506
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
507
+ reject(exception || new Error(message));
508
+ }, scriptId);
537
509
  });
538
510
  }
539
511
  /**
@@ -628,7 +600,8 @@ export class Tools {
628
600
  if (window.parent) {
629
601
  window.parent.addEventListener(event.name, event.handler, false);
630
602
  }
631
- } catch (e) {
603
+ }
604
+ catch (e) {
632
605
  // Silently fails...
633
606
  }
634
607
  }
@@ -646,7 +619,8 @@ export class Tools {
646
619
  if (windowElement.parent) {
647
620
  windowElement.parent.removeEventListener(event.name, event.handler);
648
621
  }
649
- } catch (e) {
622
+ }
623
+ catch (e) {
650
624
  // Silently fails...
651
625
  }
652
626
  }
@@ -716,9 +690,7 @@ export class Tools {
716
690
  // low performance polyfill based on toDataURL (https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob)
717
691
  canvas.toBlob = function (callback, type, quality) {
718
692
  setTimeout(() => {
719
- const binStr = atob(this.toDataURL(type, quality).split(",")[1]),
720
- len = binStr.length,
721
- arr = new Uint8Array(len);
693
+ const binStr = atob(this.toDataURL(type, quality).split(",")[1]), len = binStr.length, arr = new Uint8Array(len);
722
694
  for (let i = 0; i < len; i++) {
723
695
  arr[i] = binStr.charCodeAt(i);
724
696
  }
@@ -730,19 +702,16 @@ export class Tools {
730
702
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
731
703
  canvas
732
704
  .convertToBlob({
733
- type: mimeType,
734
- quality,
735
- })
705
+ type: mimeType,
706
+ quality,
707
+ })
736
708
  // eslint-disable-next-line github/no-then
737
709
  .then((blob) => successCallback(blob));
738
- } else {
739
- canvas.toBlob(
740
- function (blob) {
741
- successCallback(blob);
742
- },
743
- mimeType,
744
- quality
745
- );
710
+ }
711
+ else {
712
+ canvas.toBlob(function (blob) {
713
+ successCallback(blob);
714
+ }, mimeType, quality);
746
715
  }
747
716
  }
748
717
  /**
@@ -755,12 +724,12 @@ export class Tools {
755
724
  if ("download" in document.createElement("a")) {
756
725
  if (!fileName) {
757
726
  const date = new Date();
758
- const stringDate =
759
- (date.getFullYear() + "-" + (date.getMonth() + 1)).slice(2) + "-" + date.getDate() + "_" + date.getHours() + "-" + ("0" + date.getMinutes()).slice(-2);
727
+ const stringDate = (date.getFullYear() + "-" + (date.getMonth() + 1)).slice(2) + "-" + date.getDate() + "_" + date.getHours() + "-" + ("0" + date.getMinutes()).slice(-2);
760
728
  fileName = "screenshot_" + stringDate + ".png";
761
729
  }
762
730
  _a.Download(blob, fileName);
763
- } else {
731
+ }
732
+ else {
764
733
  if (blob && typeof URL !== "undefined") {
765
734
  const url = URL.createObjectURL(blob);
766
735
  const newWindow = window.open("");
@@ -787,36 +756,32 @@ export class Tools {
787
756
  */
788
757
  static EncodeScreenshotCanvasData(canvas, successCallback, mimeType = "image/png", fileName, quality) {
789
758
  if (typeof fileName === "string" || !successCallback) {
790
- this.ToBlob(
791
- canvas,
792
- function (blob) {
793
- if (blob) {
794
- _a.DownloadBlob(blob, fileName);
795
- }
796
- if (successCallback) {
797
- successCallback("");
798
- }
799
- },
800
- mimeType,
801
- quality
802
- );
803
- } else if (successCallback) {
759
+ this.ToBlob(canvas, function (blob) {
760
+ if (blob) {
761
+ _a.DownloadBlob(blob, fileName);
762
+ }
763
+ if (successCallback) {
764
+ successCallback("");
765
+ }
766
+ }, mimeType, quality);
767
+ }
768
+ else if (successCallback) {
804
769
  if (_a._IsOffScreenCanvas(canvas)) {
805
770
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
806
771
  canvas
807
772
  .convertToBlob({
808
- type: mimeType,
809
- quality,
810
- })
773
+ type: mimeType,
774
+ quality,
775
+ })
811
776
  // eslint-disable-next-line github/no-then
812
777
  .then((blob) => {
813
- const reader = new FileReader();
814
- reader.readAsDataURL(blob);
815
- reader.onloadend = () => {
816
- const base64data = reader.result;
817
- successCallback(base64data);
818
- };
819
- });
778
+ const reader = new FileReader();
779
+ reader.readAsDataURL(blob);
780
+ reader.onloadend = () => {
781
+ const base64data = reader.result;
782
+ successCallback(base64data);
783
+ };
784
+ });
820
785
  return;
821
786
  }
822
787
  const base64Image = canvas.toDataURL(mimeType, quality);
@@ -857,7 +822,8 @@ export class Tools {
857
822
  // is it used correctly?
858
823
  if (typeof args[0] === "boolean") {
859
824
  return args[0];
860
- } else if (typeof args[1] === "boolean") {
825
+ }
826
+ else if (typeof args[1] === "boolean") {
861
827
  return args[1];
862
828
  }
863
829
  return false;
@@ -930,21 +896,7 @@ export class Tools {
930
896
  * @param customizeTexture An optional callback that can be used to modify the render target texture before taking the screenshot. This can be used, for instance, to enable camera post-processes before taking the screenshot.
931
897
  */
932
898
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
933
- static CreateScreenshotUsingRenderTarget(
934
- engine,
935
- camera,
936
- size,
937
- successCallback,
938
- mimeType = "image/png",
939
- samples = 1,
940
- antialiasing = false,
941
- fileName,
942
- renderSprites = false,
943
- enableStencilBuffer = false,
944
- useLayerMask = true,
945
- quality,
946
- customizeTexture
947
- ) {
899
+ static CreateScreenshotUsingRenderTarget(engine, camera, size, successCallback, mimeType = "image/png", samples = 1, antialiasing = false, fileName, renderSprites = false, enableStencilBuffer = false, useLayerMask = true, quality, customizeTexture) {
948
900
  throw _WarnImport("ScreenshotTools");
949
901
  }
950
902
  // eslint-disable-next-line jsdoc/require-returns-check
@@ -972,20 +924,7 @@ export class Tools {
972
924
  * to the src parameter of an <img> to display it
973
925
  */
974
926
  // eslint-disable-next-line @typescript-eslint/no-unused-vars, no-restricted-syntax, @typescript-eslint/require-await
975
- static async CreateScreenshotUsingRenderTargetAsync(
976
- engine,
977
- camera,
978
- size,
979
- mimeType = "image/png",
980
- samples = 1,
981
- antialiasing = false,
982
- fileName,
983
- renderSprites = false,
984
- enableStencilBuffer = false,
985
- useLayerMask = true,
986
- quality,
987
- customizeTexture
988
- ) {
927
+ static async CreateScreenshotUsingRenderTargetAsync(engine, camera, size, mimeType = "image/png", samples = 1, antialiasing = false, fileName, renderSprites = false, enableStencilBuffer = false, useLayerMask = true, quality, customizeTexture) {
989
928
  throw _WarnImport("ScreenshotTools");
990
929
  }
991
930
  /**
@@ -1071,7 +1010,8 @@ export class Tools {
1071
1010
  _native.enablePerformanceLogging(1 /* NativeTraceLevel.Mark */);
1072
1011
  _a.StartPerformanceCounter = _a._StartMarkNative;
1073
1012
  _a.EndPerformanceCounter = _a._EndMarkNative;
1074
- } else {
1013
+ }
1014
+ else {
1075
1015
  _a.StartPerformanceCounter = _a._StartUserMark;
1076
1016
  _a.EndPerformanceCounter = _a._EndUserMark;
1077
1017
  }
@@ -1082,7 +1022,8 @@ export class Tools {
1082
1022
  _native.enablePerformanceLogging(2 /* NativeTraceLevel.Log */);
1083
1023
  _a.StartPerformanceCounter = _a._StartMarkNative;
1084
1024
  _a.EndPerformanceCounter = _a._EndMarkNative;
1085
- } else {
1025
+ }
1026
+ else {
1086
1027
  _a.StartPerformanceCounter = _a._StartPerformanceConsole;
1087
1028
  _a.EndPerformanceCounter = _a._EndPerformanceConsole;
1088
1029
  }
@@ -1093,9 +1034,9 @@ export class Tools {
1093
1034
  _native?.disablePerformanceLogging?.();
1094
1035
  }
1095
1036
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1096
- static _StartPerformanceCounterDisabled(counterName, condition) {}
1037
+ static _StartPerformanceCounterDisabled(counterName, condition) { }
1097
1038
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
1098
- static _EndPerformanceCounterDisabled(counterName, condition) {}
1039
+ static _EndPerformanceCounterDisabled(counterName, condition) { }
1099
1040
  static _StartUserMark(counterName, condition = true) {
1100
1041
  if (!_a._Performance) {
1101
1042
  if (!IsWindowObjectExist()) {
@@ -1135,7 +1076,8 @@ export class Tools {
1135
1076
  if (condition && _native?.startPerformanceCounter) {
1136
1077
  if (_a._NativePerformanceCounterHandles.has(counterName)) {
1137
1078
  _a.Warn(`Performance counter with name ${counterName} is already started.`);
1138
- } else {
1079
+ }
1080
+ else {
1139
1081
  const handle = _native.startPerformanceCounter(counterName);
1140
1082
  _a._NativePerformanceCounterHandles.set(counterName, handle);
1141
1083
  }
@@ -1147,7 +1089,8 @@ export class Tools {
1147
1089
  if (handle) {
1148
1090
  _native.endPerformanceCounter(handle);
1149
1091
  _a._NativePerformanceCounterHandles.delete(counterName);
1150
- } else {
1092
+ }
1093
+ else {
1151
1094
  _a.Warn(`Performance counter with name ${counterName} was not started.`);
1152
1095
  }
1153
1096
  }
@@ -1169,7 +1112,8 @@ export class Tools {
1169
1112
  let name = null;
1170
1113
  if (!isType && object.getClassName) {
1171
1114
  name = object.getClassName();
1172
- } else {
1115
+ }
1116
+ else {
1173
1117
  if (object instanceof Object) {
1174
1118
  const classObj = isType ? object : Object.getPrototypeOf(object);
1175
1119
  name = classObj.constructor["__bjsclassName__"];
@@ -1208,7 +1152,8 @@ export class Tools {
1208
1152
  let moduleName = null;
1209
1153
  if (!isType && object.getClassName) {
1210
1154
  className = object.getClassName();
1211
- } else {
1155
+ }
1156
+ else {
1212
1157
  if (object instanceof Object) {
1213
1158
  const classObj = isType ? object : Object.getPrototypeOf(object);
1214
1159
  className = classObj.constructor["__bjsclassName__"];
@@ -1277,7 +1222,7 @@ Tools._DefaultCdnUrl = "https://cdn.babylonjs.com";
1277
1222
  * When set, unversioned CDN URLs will be rewritten to include this version prefix.
1278
1223
  * @internal
1279
1224
  */
1280
- Tools._CdnVersion = "9.8.0";
1225
+ Tools._CdnVersion = "9.9.0";
1281
1226
  /**
1282
1227
  * @internal
1283
1228
  */
@@ -1296,18 +1241,17 @@ Tools.LoadScript = typeof _native === "undefined" ? _a._LoadScriptWeb : _a._Load
1296
1241
  /**
1297
1242
  * @returns the absolute URL of a given (relative) url
1298
1243
  */
1299
- Tools.GetAbsoluteUrl =
1300
- typeof document === "object"
1301
- ? (url) => {
1302
- const a = document.createElement("a");
1303
- a.href = url;
1304
- return a.href;
1305
- }
1306
- : typeof URL === "function" && typeof location === "object"
1307
- ? (url) => new URL(url, location.origin).href
1308
- : () => {
1309
- throw new Error("Unable to get absolute URL. Override BABYLON.Tools.GetAbsoluteUrl to a custom implementation for the current context.");
1310
- };
1244
+ Tools.GetAbsoluteUrl = typeof document === "object"
1245
+ ? (url) => {
1246
+ const a = document.createElement("a");
1247
+ a.href = url;
1248
+ return a.href;
1249
+ }
1250
+ : typeof URL === "function" && typeof location === "object"
1251
+ ? (url) => new URL(url, location.origin).href
1252
+ : () => {
1253
+ throw new Error("Unable to get absolute URL. Override BABYLON.Tools.GetAbsoluteUrl to a custom implementation for the current context.");
1254
+ };
1311
1255
  // Logs
1312
1256
  /**
1313
1257
  * No log
@@ -1383,14 +1327,10 @@ export class AsyncLoop {
1383
1327
  * @param offset starting offset.
1384
1328
  */
1385
1329
  constructor(
1386
- /**
1387
- * Defines the number of iterations for the loop
1388
- */
1389
- iterations,
1390
- func,
1391
- successCallback,
1392
- offset = 0
1393
- ) {
1330
+ /**
1331
+ * Defines the number of iterations for the loop
1332
+ */
1333
+ iterations, func, successCallback, offset = 0) {
1394
1334
  this.iterations = iterations;
1395
1335
  this.index = offset - 1;
1396
1336
  this._done = false;
@@ -1405,7 +1345,8 @@ export class AsyncLoop {
1405
1345
  if (this.index + 1 < this.iterations) {
1406
1346
  ++this.index;
1407
1347
  this._fn(this);
1408
- } else {
1348
+ }
1349
+ else {
1409
1350
  this.breakLoop();
1410
1351
  }
1411
1352
  }
@@ -1441,30 +1382,27 @@ export class AsyncLoop {
1441
1382
  * @returns the created async loop object
1442
1383
  */
1443
1384
  static SyncAsyncForLoop(iterations, syncedIterations, fn, callback, breakFunction, timeout = 0) {
1444
- return AsyncLoop.Run(
1445
- Math.ceil(iterations / syncedIterations),
1446
- (loop) => {
1447
- if (breakFunction && breakFunction()) {
1448
- loop.breakLoop();
1449
- } else {
1450
- setTimeout(() => {
1451
- for (let i = 0; i < syncedIterations; ++i) {
1452
- const iteration = loop.index * syncedIterations + i;
1453
- if (iteration >= iterations) {
1454
- break;
1455
- }
1456
- fn(iteration);
1457
- if (breakFunction && breakFunction()) {
1458
- loop.breakLoop();
1459
- break;
1460
- }
1385
+ return AsyncLoop.Run(Math.ceil(iterations / syncedIterations), (loop) => {
1386
+ if (breakFunction && breakFunction()) {
1387
+ loop.breakLoop();
1388
+ }
1389
+ else {
1390
+ setTimeout(() => {
1391
+ for (let i = 0; i < syncedIterations; ++i) {
1392
+ const iteration = loop.index * syncedIterations + i;
1393
+ if (iteration >= iterations) {
1394
+ break;
1461
1395
  }
1462
- loop.executeNext();
1463
- }, timeout);
1464
- }
1465
- },
1466
- callback
1467
- );
1396
+ fn(iteration);
1397
+ if (breakFunction && breakFunction()) {
1398
+ loop.breakLoop();
1399
+ break;
1400
+ }
1401
+ }
1402
+ loop.executeNext();
1403
+ }, timeout);
1404
+ }
1405
+ }, callback);
1468
1406
  }
1469
1407
  }
1470
1408
  let _Registered = false;
@@ -1483,4 +1421,4 @@ export function RegisterTools() {
1483
1421
  EngineStore.FallbackTexture =
1484
1422
  "data:image/jpg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4QBmRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAAQAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQubmV0IDQuMC41AP/bAEMABAIDAwMCBAMDAwQEBAQFCQYFBQUFCwgIBgkNCw0NDQsMDA4QFBEODxMPDAwSGBITFRYXFxcOERkbGRYaFBYXFv/bAEMBBAQEBQUFCgYGChYPDA8WFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFv/AABEIAQABAAMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APH6KKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76CiiigD5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BQooooA+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/voKKKKAPl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FCiiigD6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++gooooA+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gUKKKKAPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76Pl+iiivuj+BT6gooor4U/vo+X6KKK+6P4FPqCiiivhT++j5fooor7o/gU+oKKKK+FP76P//Z";
1485
1423
  }
1486
- //# sourceMappingURL=tools.pure.js.map
1424
+ //# sourceMappingURL=tools.pure.js.map