@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.
- package/Audio/audioSceneComponent.pure.js +17 -9
- package/Bones/bone.pure.js +39 -29
- package/Cameras/arcRotateCamera.pure.d.ts +0 -8
- package/Cameras/arcRotateCamera.pure.js +0 -12
- package/Cameras/arcRotateCamera.pure.js.map +1 -1
- package/Cameras/inputMapper.d.ts +29 -8
- package/Cameras/inputMapper.js +63 -10
- package/Cameras/inputMapper.js.map +1 -1
- package/Cameras/targetCamera.pure.js +40 -27
- package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +17 -23
- package/Engines/abstractEngine.pure.js +4 -4
- package/Engines/abstractEngine.pure.js.map +1 -1
- package/Engines/thinEngine.pure.js +234 -280
- package/Materials/Background/backgroundMaterial.pure.js +5 -4
- package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.d.ts +5 -0
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.js +8 -0
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.js.map +1 -0
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.d.ts +278 -0
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js +718 -0
- package/Materials/GaussianSplatting/gaussianSplattingDebugMaterialPlugin.pure.js.map +1 -0
- package/Materials/GaussianSplatting/pure.d.ts +1 -0
- package/Materials/GaussianSplatting/pure.js +1 -0
- package/Materials/GaussianSplatting/pure.js.map +1 -1
- package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +10 -14
- package/Materials/Node/Blocks/Dual/index.d.ts +0 -14
- package/Materials/Node/Blocks/Dual/index.js +0 -18
- package/Materials/Node/Blocks/Dual/index.js.map +1 -1
- package/Materials/Node/Blocks/Dual/textureBlock.pure.js +660 -662
- package/Materials/Node/Blocks/Fragment/index.d.ts +0 -10
- package/Materials/Node/Blocks/Fragment/index.js +0 -13
- package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
- package/Materials/Node/Blocks/GaussianSplatting/index.d.ts +12 -0
- package/Materials/Node/Blocks/GaussianSplatting/index.js +14 -1
- package/Materials/Node/Blocks/GaussianSplatting/index.js.map +1 -1
- package/Materials/Node/Blocks/Vertex/index.d.ts +0 -8
- package/Materials/Node/Blocks/Vertex/index.js +0 -10
- package/Materials/Node/Blocks/Vertex/index.js.map +1 -1
- package/Materials/PBR/openpbrMaterial.pure.js +6 -5
- package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.pure.js +6 -5
- package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
- package/Materials/Textures/index.d.ts +1 -0
- package/Materials/Textures/index.js +1 -0
- package/Materials/Textures/index.js.map +1 -1
- package/Materials/Textures/internalTexture.js +7 -0
- package/Materials/Textures/internalTexture.js.map +1 -1
- package/Materials/Textures/texture.pure.js +157 -255
- package/Materials/index.d.ts +30 -0
- package/Materials/index.js +31 -0
- package/Materials/index.js.map +1 -1
- package/Materials/material.pure.js +128 -69
- package/Materials/pure.d.ts +1 -0
- package/Materials/pure.js +1 -0
- package/Materials/pure.js.map +1 -1
- package/Materials/standardMaterial.pure.js +6 -5
- package/Materials/standardMaterial.pure.js.map +1 -1
- package/Maths/math.color.pure.js +55 -47
- package/Maths/math.vector.pure.js +118 -242
- package/Meshes/GaussianSplatting/gaussianSplattingDebugger.d.ts +7 -0
- package/Meshes/GaussianSplatting/gaussianSplattingDebugger.js +8 -0
- package/Meshes/GaussianSplatting/gaussianSplattingDebugger.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingDebugger.pure.d.ts +147 -0
- package/Meshes/GaussianSplatting/gaussianSplattingDebugger.pure.js +257 -0
- package/Meshes/GaussianSplatting/gaussianSplattingDebugger.pure.js.map +1 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +11 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +31 -0
- package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
- package/Meshes/GaussianSplatting/pure.d.ts +1 -0
- package/Meshes/GaussianSplatting/pure.js +1 -0
- package/Meshes/GaussianSplatting/pure.js.map +1 -1
- package/Meshes/GreasedLine/greasedLineMesh.pure.js +9 -14
- package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +26 -27
- package/Meshes/index.d.ts +1 -0
- package/Meshes/index.js +1 -0
- package/Meshes/index.js.map +1 -1
- package/Meshes/meshSimplification.common.d.ts +53 -0
- package/Meshes/meshSimplification.common.js +34 -0
- package/Meshes/meshSimplification.common.js.map +1 -0
- package/Meshes/meshSimplification.d.ts +3 -53
- package/Meshes/meshSimplification.js +1 -33
- package/Meshes/meshSimplification.js.map +1 -1
- package/Meshes/meshSimplificationSceneComponent.pure.js.map +1 -1
- package/Meshes/meshSimplificationSceneComponent.types.d.ts +2 -1
- package/Meshes/meshSimplificationSceneComponent.types.js.map +1 -1
- package/Meshes/pure.d.ts +1 -0
- package/Meshes/pure.js +1 -0
- package/Meshes/pure.js.map +1 -1
- package/Meshes/transformNode.pure.js +82 -44
- package/Misc/tools.pure.js +124 -186
- package/Misc/tools.pure.js.map +1 -1
- package/Physics/v1/physicsImpostor.pure.js +43 -37
- package/Shaders/ShadersInclude/gaussianSplatting.js +33 -10
- package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/Shaders/gaussianSplatting.vertex.js +20 -1
- package/Shaders/gaussianSplatting.vertex.js.map +1 -1
- package/Shaders/picking.fragment.js +4 -1
- package/Shaders/picking.fragment.js.map +1 -1
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +33 -10
- package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
- package/ShadersWGSL/gaussianSplatting.vertex.js +21 -2
- package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
- package/package.json +3 -1
package/Misc/tools.pure.js
CHANGED
|
@@ -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
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
461
|
-
(
|
|
462
|
-
|
|
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
|
-
}
|
|
459
|
+
}
|
|
460
|
+
catch (e) {
|
|
486
461
|
onError?.(`Unable to load script '${scriptUrl}' in worker`, e);
|
|
487
462
|
}
|
|
488
463
|
return;
|
|
489
|
-
}
|
|
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
|
-
}
|
|
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
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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
|
-
|
|
734
|
-
|
|
735
|
-
|
|
705
|
+
type: mimeType,
|
|
706
|
+
quality,
|
|
707
|
+
})
|
|
736
708
|
// eslint-disable-next-line github/no-then
|
|
737
709
|
.then((blob) => successCallback(blob));
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
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
|
-
|
|
809
|
-
|
|
810
|
-
|
|
773
|
+
type: mimeType,
|
|
774
|
+
quality,
|
|
775
|
+
})
|
|
811
776
|
// eslint-disable-next-line github/no-then
|
|
812
777
|
.then((blob) => {
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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.
|
|
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
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
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
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
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
|
-
}
|
|
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
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
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
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
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
|