@babylonjs/core 5.8.2 → 5.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 (79) hide show
  1. package/Buffers/buffer.js +2 -3
  2. package/Buffers/buffer.js.map +1 -1
  3. package/Culling/ray.js.map +1 -1
  4. package/Engines/Processors/shaderCodeNode.js +3 -4
  5. package/Engines/Processors/shaderCodeNode.js.map +1 -1
  6. package/Engines/thinEngine.js +2 -2
  7. package/Engines/thinEngine.js.map +1 -1
  8. package/Lights/shadowLight.d.ts +2 -0
  9. package/Lights/shadowLight.js +8 -0
  10. package/Lights/shadowLight.js.map +1 -1
  11. package/Loading/Plugins/babylonFileLoader.js +5 -2
  12. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  13. package/Loading/sceneLoader.js +1 -2
  14. package/Loading/sceneLoader.js.map +1 -1
  15. package/Materials/Node/nodeMaterialBuildState.js +2 -3
  16. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  17. package/Materials/Textures/Loaders/basisTextureLoader.js +1 -2
  18. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  19. package/Materials/Textures/Loaders/ddsTextureLoader.js +1 -2
  20. package/Materials/Textures/Loaders/ddsTextureLoader.js.map +1 -1
  21. package/Materials/Textures/Loaders/envTextureLoader.js +1 -2
  22. package/Materials/Textures/Loaders/envTextureLoader.js.map +1 -1
  23. package/Materials/Textures/Loaders/hdrTextureLoader.js +1 -2
  24. package/Materials/Textures/Loaders/hdrTextureLoader.js.map +1 -1
  25. package/Materials/Textures/Loaders/ktxTextureLoader.js +1 -2
  26. package/Materials/Textures/Loaders/ktxTextureLoader.js.map +1 -1
  27. package/Materials/Textures/Loaders/tgaTextureLoader.js +1 -2
  28. package/Materials/Textures/Loaders/tgaTextureLoader.js.map +1 -1
  29. package/Materials/Textures/cubeTexture.d.ts +2 -1
  30. package/Materials/Textures/cubeTexture.js +2 -2
  31. package/Materials/Textures/cubeTexture.js.map +1 -1
  32. package/Materials/Textures/texture.d.ts +5 -2
  33. package/Materials/Textures/texture.js +15 -11
  34. package/Materials/Textures/texture.js.map +1 -1
  35. package/Maths/math.vector.d.ts +45 -0
  36. package/Maths/math.vector.js +92 -7
  37. package/Maths/math.vector.js.map +1 -1
  38. package/Meshes/abstractMesh.js +2 -3
  39. package/Meshes/abstractMesh.js.map +1 -1
  40. package/Meshes/geometry.js +1 -1
  41. package/Meshes/geometry.js.map +1 -1
  42. package/Meshes/instancedMesh.js +11 -9
  43. package/Meshes/instancedMesh.js.map +1 -1
  44. package/Meshes/linesMesh.js +3 -0
  45. package/Meshes/linesMesh.js.map +1 -1
  46. package/Meshes/mesh.js +2 -2
  47. package/Meshes/mesh.js.map +1 -1
  48. package/Misc/deepCopier.js +1 -2
  49. package/Misc/deepCopier.js.map +1 -1
  50. package/Misc/index.d.ts +0 -1
  51. package/Misc/index.js +0 -1
  52. package/Misc/index.js.map +1 -1
  53. package/Misc/reflector.js +1 -2
  54. package/Misc/reflector.js.map +1 -1
  55. package/Misc/sceneSerializer.js +7 -2
  56. package/Misc/sceneSerializer.js.map +1 -1
  57. package/Misc/stringTools.d.ts +2 -0
  58. package/Misc/stringTools.js +4 -2
  59. package/Misc/stringTools.js.map +1 -1
  60. package/Misc/tools.d.ts +0 -17
  61. package/Misc/tools.js +0 -25
  62. package/Misc/tools.js.map +1 -1
  63. package/Particles/solidParticleSystem.js +6 -7
  64. package/Particles/solidParticleSystem.js.map +1 -1
  65. package/Rendering/edgesRenderer.js +1 -2
  66. package/Rendering/edgesRenderer.js.map +1 -1
  67. package/abstractScene.d.ts +1 -0
  68. package/abstractScene.js +1 -0
  69. package/abstractScene.js.map +1 -1
  70. package/package.json +1 -1
  71. package/scene.d.ts +2 -0
  72. package/scene.js +4 -6
  73. package/scene.js.map +1 -1
  74. package/Misc/promise.d.ts +0 -11
  75. package/Misc/promise.js +0 -230
  76. package/Misc/promise.js.map +0 -1
  77. package/Misc/sliceTools.d.ts +0 -22
  78. package/Misc/sliceTools.js +0 -37
  79. package/Misc/sliceTools.js.map +0 -1
@@ -1,4 +1,3 @@
1
- import { EndsWith } from "./stringTools.js";
2
1
  import { Logger } from "./logger.js";
3
2
  var CloneValue = function (source, destinationObject) {
4
3
  if (!source) {
@@ -46,7 +45,7 @@ var DeepCopier = /** @class */ (function () {
46
45
  if (prop[0] === "_" && (!mustCopyList || mustCopyList.indexOf(prop) === -1)) {
47
46
  continue;
48
47
  }
49
- if (EndsWith(prop, "Observable")) {
48
+ if (prop.endsWith("Observable")) {
50
49
  continue;
51
50
  }
52
51
  if (doNotCopyList && doNotCopyList.indexOf(prop) !== -1) {
@@ -1 +1 @@
1
- {"version":3,"file":"deepCopier.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Misc/deepCopier.ts"],"names":[],"mappings":"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","sourcesContent":["import { EndsWith } from \"./stringTools\";\r\nimport { Logger } from \"./logger\";\r\n\r\nconst CloneValue = (source: any, destinationObject: any) => {\r\n if (!source) {\r\n return null;\r\n }\r\n\r\n if (source.getClassName && source.getClassName() === \"Mesh\") {\r\n return null;\r\n }\r\n\r\n if (source.getClassName && source.getClassName() === \"SubMesh\") {\r\n return source.clone(destinationObject);\r\n } else if (source.clone) {\r\n return source.clone();\r\n }\r\n return null;\r\n};\r\n\r\nfunction GetAllPropertyNames(obj: any): string[] {\r\n const props: string[] = [];\r\n\r\n do {\r\n Object.getOwnPropertyNames(obj).forEach(function (prop) {\r\n if (props.indexOf(prop) === -1) {\r\n props.push(prop);\r\n }\r\n });\r\n } while ((obj = Object.getPrototypeOf(obj)));\r\n\r\n return props;\r\n}\r\n\r\n/**\r\n * Class containing a set of static utilities functions for deep copy.\r\n */\r\nexport class DeepCopier {\r\n /**\r\n * Tries to copy an object by duplicating every property\r\n * @param source defines the source object\r\n * @param destination defines the target object\r\n * @param doNotCopyList defines a list of properties to avoid\r\n * @param mustCopyList defines a list of properties to copy (even if they start with _)\r\n */\r\n public static DeepCopy(source: any, destination: any, doNotCopyList?: string[], mustCopyList?: string[]): void {\r\n const properties = GetAllPropertyNames(source);\r\n for (const prop of properties) {\r\n if (prop[0] === \"_\" && (!mustCopyList || mustCopyList.indexOf(prop) === -1)) {\r\n continue;\r\n }\r\n\r\n if (EndsWith(prop, \"Observable\")) {\r\n continue;\r\n }\r\n\r\n if (doNotCopyList && doNotCopyList.indexOf(prop) !== -1) {\r\n continue;\r\n }\r\n\r\n const sourceValue = source[prop];\r\n const typeOfSourceValue = typeof sourceValue;\r\n\r\n if (typeOfSourceValue === \"function\") {\r\n continue;\r\n }\r\n\r\n try {\r\n if (typeOfSourceValue === \"object\") {\r\n if (sourceValue instanceof Array) {\r\n destination[prop] = [];\r\n\r\n if (sourceValue.length > 0) {\r\n if (typeof sourceValue[0] == \"object\") {\r\n for (let index = 0; index < sourceValue.length; index++) {\r\n const clonedValue = CloneValue(sourceValue[index], destination);\r\n\r\n if (destination[prop].indexOf(clonedValue) === -1) {\r\n // Test if auto inject was not done\r\n destination[prop].push(clonedValue);\r\n }\r\n }\r\n } else {\r\n destination[prop] = sourceValue.slice(0);\r\n }\r\n }\r\n } else {\r\n destination[prop] = CloneValue(sourceValue, destination);\r\n }\r\n } else {\r\n destination[prop] = sourceValue;\r\n }\r\n } catch (e) {\r\n // Log a warning (it could be because of a read-only property)\r\n Logger.Warn(e.message);\r\n }\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"deepCopier.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Misc/deepCopier.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from \"./logger\";\r\n\r\nconst CloneValue = (source: any, destinationObject: any) => {\r\n if (!source) {\r\n return null;\r\n }\r\n\r\n if (source.getClassName && source.getClassName() === \"Mesh\") {\r\n return null;\r\n }\r\n\r\n if (source.getClassName && source.getClassName() === \"SubMesh\") {\r\n return source.clone(destinationObject);\r\n } else if (source.clone) {\r\n return source.clone();\r\n }\r\n return null;\r\n};\r\n\r\nfunction GetAllPropertyNames(obj: any): string[] {\r\n const props: string[] = [];\r\n\r\n do {\r\n Object.getOwnPropertyNames(obj).forEach(function (prop) {\r\n if (props.indexOf(prop) === -1) {\r\n props.push(prop);\r\n }\r\n });\r\n } while ((obj = Object.getPrototypeOf(obj)));\r\n\r\n return props;\r\n}\r\n\r\n/**\r\n * Class containing a set of static utilities functions for deep copy.\r\n */\r\nexport class DeepCopier {\r\n /**\r\n * Tries to copy an object by duplicating every property\r\n * @param source defines the source object\r\n * @param destination defines the target object\r\n * @param doNotCopyList defines a list of properties to avoid\r\n * @param mustCopyList defines a list of properties to copy (even if they start with _)\r\n */\r\n public static DeepCopy(source: any, destination: any, doNotCopyList?: string[], mustCopyList?: string[]): void {\r\n const properties = GetAllPropertyNames(source);\r\n for (const prop of properties) {\r\n if (prop[0] === \"_\" && (!mustCopyList || mustCopyList.indexOf(prop) === -1)) {\r\n continue;\r\n }\r\n\r\n if (prop.endsWith(\"Observable\")) {\r\n continue;\r\n }\r\n\r\n if (doNotCopyList && doNotCopyList.indexOf(prop) !== -1) {\r\n continue;\r\n }\r\n\r\n const sourceValue = source[prop];\r\n const typeOfSourceValue = typeof sourceValue;\r\n\r\n if (typeOfSourceValue === \"function\") {\r\n continue;\r\n }\r\n\r\n try {\r\n if (typeOfSourceValue === \"object\") {\r\n if (sourceValue instanceof Array) {\r\n destination[prop] = [];\r\n\r\n if (sourceValue.length > 0) {\r\n if (typeof sourceValue[0] == \"object\") {\r\n for (let index = 0; index < sourceValue.length; index++) {\r\n const clonedValue = CloneValue(sourceValue[index], destination);\r\n\r\n if (destination[prop].indexOf(clonedValue) === -1) {\r\n // Test if auto inject was not done\r\n destination[prop].push(clonedValue);\r\n }\r\n }\r\n } else {\r\n destination[prop] = sourceValue.slice(0);\r\n }\r\n }\r\n } else {\r\n destination[prop] = CloneValue(sourceValue, destination);\r\n }\r\n } else {\r\n destination[prop] = sourceValue;\r\n }\r\n } catch (e) {\r\n // Log a warning (it could be because of a read-only property)\r\n Logger.Warn(e.message);\r\n }\r\n }\r\n }\r\n}\r\n"]}
package/Misc/index.d.ts CHANGED
@@ -11,7 +11,6 @@ export * from "./HighDynamicRange/index";
11
11
  export * from "./khronosTextureContainer";
12
12
  export * from "./observable";
13
13
  export * from "./performanceMonitor";
14
- export * from "./promise";
15
14
  export * from "./sceneOptimizer";
16
15
  export * from "./sceneSerializer";
17
16
  export * from "./smartArray";
package/Misc/index.js CHANGED
@@ -12,7 +12,6 @@ export * from "./HighDynamicRange/index.js";
12
12
  export * from "./khronosTextureContainer.js";
13
13
  export * from "./observable.js";
14
14
  export * from "./performanceMonitor.js";
15
- export * from "./promise.js";
16
15
  export * from "./sceneOptimizer.js";
17
16
  export * from "./sceneSerializer.js";
18
17
  export * from "./smartArray.js";
package/Misc/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Misc/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,iCAAiC,CAAC;AAChD,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,yCAAyC;AACzC,cAAc,uBAAuB,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./andOrNotEvaluator\";\r\nexport * from \"./assetsManager\";\r\nexport * from \"./basis\";\r\nexport * from \"./dds\";\r\nexport * from \"./decorators\";\r\nexport * from \"./deferred\";\r\nexport * from \"./environmentTextureTools\";\r\nexport * from \"./meshExploder\";\r\nexport * from \"./filesInput\";\r\nexport * from \"./HighDynamicRange/index\";\r\nexport * from \"./khronosTextureContainer\";\r\nexport * from \"./observable\";\r\nexport * from \"./performanceMonitor\";\r\nexport * from \"./promise\";\r\nexport * from \"./sceneOptimizer\";\r\nexport * from \"./sceneSerializer\";\r\nexport * from \"./smartArray\";\r\nexport * from \"./stringDictionary\";\r\nexport * from \"./tags\";\r\nexport * from \"./textureTools\";\r\nexport * from \"./tga\";\r\nexport * from \"./tools\";\r\nexport * from \"./videoRecorder\";\r\nexport * from \"./virtualJoystick\";\r\nexport * from \"./workerPool\";\r\nexport * from \"./logger\";\r\nexport * from \"./typeStore\";\r\nexport * from \"./filesInputStore\";\r\nexport * from \"./deepCopier\";\r\nexport * from \"./pivotTools\";\r\nexport * from \"./precisionDate\";\r\nexport * from \"./screenshotTools\";\r\nexport * from \"./webRequest\";\r\nexport * from \"./iInspectable\";\r\nexport * from \"./brdfTextureTools\";\r\nexport * from \"./rgbdTextureTools\";\r\nexport * from \"./gradients\";\r\nexport * from \"./perfCounter\";\r\nexport * from \"./fileRequest\";\r\nexport * from \"./customAnimationFrameRequester\";\r\nexport * from \"./retryStrategy\";\r\nexport * from \"./interfaces/screenshotSize\";\r\nexport * from \"./interfaces/iPerfViewer\";\r\nexport * from \"./fileTools\";\r\nexport * from \"./stringTools\";\r\nexport * from \"./dataReader\";\r\nexport * from \"./minMaxReducer\";\r\nexport * from \"./depthReducer\";\r\nexport * from \"./dataStorage\";\r\nexport * from \"./sceneRecorder\";\r\nexport * from \"./khronosTextureContainer2\";\r\nexport * from \"./trajectoryClassifier\";\r\nexport * from \"./timer\";\r\nexport * from \"./copyTools\";\r\nexport * from \"./reflector\";\r\nexport * from \"./domManagement\";\r\nexport * from \"./computePressure\";\r\nexport * from \"./PerformanceViewer/index\";\r\nexport * from \"./coroutine\";\r\nexport * from \"./guid\";\r\nexport * from \"./error\";\r\n// eslint-disable-next-line import/export\r\nexport * from \"./observableCoroutine\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Misc/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,iCAAiC,CAAC;AAChD,cAAc,iBAAiB,CAAC;AAChC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,yCAAyC;AACzC,cAAc,uBAAuB,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./andOrNotEvaluator\";\r\nexport * from \"./assetsManager\";\r\nexport * from \"./basis\";\r\nexport * from \"./dds\";\r\nexport * from \"./decorators\";\r\nexport * from \"./deferred\";\r\nexport * from \"./environmentTextureTools\";\r\nexport * from \"./meshExploder\";\r\nexport * from \"./filesInput\";\r\nexport * from \"./HighDynamicRange/index\";\r\nexport * from \"./khronosTextureContainer\";\r\nexport * from \"./observable\";\r\nexport * from \"./performanceMonitor\";\r\nexport * from \"./sceneOptimizer\";\r\nexport * from \"./sceneSerializer\";\r\nexport * from \"./smartArray\";\r\nexport * from \"./stringDictionary\";\r\nexport * from \"./tags\";\r\nexport * from \"./textureTools\";\r\nexport * from \"./tga\";\r\nexport * from \"./tools\";\r\nexport * from \"./videoRecorder\";\r\nexport * from \"./virtualJoystick\";\r\nexport * from \"./workerPool\";\r\nexport * from \"./logger\";\r\nexport * from \"./typeStore\";\r\nexport * from \"./filesInputStore\";\r\nexport * from \"./deepCopier\";\r\nexport * from \"./pivotTools\";\r\nexport * from \"./precisionDate\";\r\nexport * from \"./screenshotTools\";\r\nexport * from \"./webRequest\";\r\nexport * from \"./iInspectable\";\r\nexport * from \"./brdfTextureTools\";\r\nexport * from \"./rgbdTextureTools\";\r\nexport * from \"./gradients\";\r\nexport * from \"./perfCounter\";\r\nexport * from \"./fileRequest\";\r\nexport * from \"./customAnimationFrameRequester\";\r\nexport * from \"./retryStrategy\";\r\nexport * from \"./interfaces/screenshotSize\";\r\nexport * from \"./interfaces/iPerfViewer\";\r\nexport * from \"./fileTools\";\r\nexport * from \"./stringTools\";\r\nexport * from \"./dataReader\";\r\nexport * from \"./minMaxReducer\";\r\nexport * from \"./depthReducer\";\r\nexport * from \"./dataStorage\";\r\nexport * from \"./sceneRecorder\";\r\nexport * from \"./khronosTextureContainer2\";\r\nexport * from \"./trajectoryClassifier\";\r\nexport * from \"./timer\";\r\nexport * from \"./copyTools\";\r\nexport * from \"./reflector\";\r\nexport * from \"./domManagement\";\r\nexport * from \"./computePressure\";\r\nexport * from \"./PerformanceViewer/index\";\r\nexport * from \"./coroutine\";\r\nexport * from \"./guid\";\r\nexport * from \"./error\";\r\n// eslint-disable-next-line import/export\r\nexport * from \"./observableCoroutine\";\r\n"]}
package/Misc/reflector.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { Logger } from "./logger.js";
2
2
  import { SceneSerializer } from "./sceneSerializer.js";
3
- import { StartsWith } from "./stringTools.js";
4
3
  /**
5
4
  * Class used to connect with the reflector zone of the sandbox via the reflector bridge
6
5
  * @since 5.0.0
@@ -19,7 +18,7 @@ var Reflector = /** @class */ (function () {
19
18
  this._webSocket = new WebSocket("ws://".concat(hostname, ":").concat(port));
20
19
  this._webSocket.onmessage = function (event) {
21
20
  var message = event.data;
22
- if (StartsWith(message, Reflector._SERVER_PREFIX)) {
21
+ if (message.startsWith(Reflector._SERVER_PREFIX)) {
23
22
  var serverMessage = message.substr(Reflector._SERVER_PREFIX.length);
24
23
  Logger.Log("[Reflector] Received server message: ".concat(serverMessage.substr(0, 64)));
25
24
  _this._handleServerMessage(serverMessage);
@@ -1 +1 @@
1
- {"version":3,"file":"reflector.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Misc/reflector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C;;;GAGG;AACH;IAMI;;;;;OAKG;IACH,mBAAmB,KAAY,EAAE,QAAgB,EAAE,IAAY;QAA/D,iBAsBC;QArBG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,MAAM,CAAC,GAAG,CAAC,yCAAkC,QAAQ,cAAI,IAAI,CAAE,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,eAAQ,QAAQ,cAAI,IAAI,CAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,UAAC,KAAK;YAC9B,IAAM,OAAO,GAAW,KAAK,CAAC,IAAI,CAAC;YACnC,IAAI,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAAE;gBAC/C,IAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACtE,MAAM,CAAC,GAAG,CAAC,+CAAwC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC;gBAClF,KAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;gBACzC,OAAO;aACV;iBAAM;gBACH,MAAM,CAAC,GAAG,CAAC,+CAAwC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC;gBAC5E,KAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,UAAC,KAAK;YAC5B,MAAM,CAAC,GAAG,CAAC,mCAA4B,KAAK,CAAC,IAAI,cAAI,KAAK,CAAC,MAAM,CAAE,CAAC,CAAC;QACzE,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACI,yBAAK,GAAZ;QACI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEO,wCAAoB,GAA5B,UAA6B,OAAe;QAA5C,iBASC;QARG,QAAQ,OAAO,EAAE;YACb,KAAK,WAAW,CAAC,CAAC;gBACd,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,UAAU;oBACxD,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAE,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;gBACH,MAAM;aACT;SACJ;IACL,CAAC;IAEO,wCAAoB,GAA5B;QACI,aAAa;IACjB,CAAC;IAvDuB,wBAAc,GAAG,IAAI,CAAC;IAwDlD,gBAAC;CAAA,AAzDD,IAyDC;SAzDY,SAAS","sourcesContent":["import type { Scene } from \"../scene\";\r\nimport { Logger } from \"./logger\";\r\nimport { SceneSerializer } from \"./sceneSerializer\";\r\nimport { StartsWith } from \"./stringTools\";\r\n\r\n/**\r\n * Class used to connect with the reflector zone of the sandbox via the reflector bridge\r\n * @since 5.0.0\r\n */\r\nexport class Reflector {\r\n private static readonly _SERVER_PREFIX = \"$$\";\r\n\r\n private _scene: Scene;\r\n private _webSocket: WebSocket;\r\n\r\n /**\r\n * Constructs a reflector object.\r\n * @param scene The scene to use\r\n * @param hostname The hostname of the reflector bridge\r\n * @param port The port of the reflector bridge\r\n */\r\n public constructor(scene: Scene, hostname: string, port: number) {\r\n this._scene = scene;\r\n\r\n Logger.Log(`[Reflector] Connecting to ws://${hostname}:${port}`);\r\n this._webSocket = new WebSocket(`ws://${hostname}:${port}`);\r\n\r\n this._webSocket.onmessage = (event) => {\r\n const message: string = event.data;\r\n if (StartsWith(message, Reflector._SERVER_PREFIX)) {\r\n const serverMessage = message.substr(Reflector._SERVER_PREFIX.length);\r\n Logger.Log(`[Reflector] Received server message: ${serverMessage.substr(0, 64)}`);\r\n this._handleServerMessage(serverMessage);\r\n return;\r\n } else {\r\n Logger.Log(`[Reflector] Received client message: ${message.substr(0, 64)}`);\r\n this._handleClientMessage();\r\n }\r\n };\r\n\r\n this._webSocket.onclose = (event) => {\r\n Logger.Log(`[Reflector] Disconnected ${event.code} ${event.reason}`);\r\n };\r\n }\r\n\r\n /**\r\n * Closes the reflector connection\r\n */\r\n public close(): void {\r\n this._webSocket.close();\r\n }\r\n\r\n private _handleServerMessage(message: string): void {\r\n switch (message) {\r\n case \"connected\": {\r\n SceneSerializer.SerializeAsync(this._scene).then((serialized) => {\r\n this._webSocket.send(`load|${JSON.stringify(serialized)}`);\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private _handleClientMessage(): void {\r\n // do nothing\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"reflector.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Misc/reflector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;GAGG;AACH;IAMI;;;;;OAKG;IACH,mBAAmB,KAAY,EAAE,QAAgB,EAAE,IAAY;QAA/D,iBAsBC;QArBG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,MAAM,CAAC,GAAG,CAAC,yCAAkC,QAAQ,cAAI,IAAI,CAAE,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,eAAQ,QAAQ,cAAI,IAAI,CAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,UAAC,KAAK;YAC9B,IAAM,OAAO,GAAW,KAAK,CAAC,IAAI,CAAC;YACnC,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE;gBAC9C,IAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBACtE,MAAM,CAAC,GAAG,CAAC,+CAAwC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC;gBAClF,KAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;gBACzC,OAAO;aACV;iBAAM;gBACH,MAAM,CAAC,GAAG,CAAC,+CAAwC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAE,CAAC,CAAC;gBAC5E,KAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B;QACL,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,OAAO,GAAG,UAAC,KAAK;YAC5B,MAAM,CAAC,GAAG,CAAC,mCAA4B,KAAK,CAAC,IAAI,cAAI,KAAK,CAAC,MAAM,CAAE,CAAC,CAAC;QACzE,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACI,yBAAK,GAAZ;QACI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEO,wCAAoB,GAA5B,UAA6B,OAAe;QAA5C,iBASC;QARG,QAAQ,OAAO,EAAE;YACb,KAAK,WAAW,CAAC,CAAC;gBACd,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,UAAC,UAAU;oBACxD,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAE,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;gBACH,MAAM;aACT;SACJ;IACL,CAAC;IAEO,wCAAoB,GAA5B;QACI,aAAa;IACjB,CAAC;IAvDuB,wBAAc,GAAG,IAAI,CAAC;IAwDlD,gBAAC;CAAA,AAzDD,IAyDC;SAzDY,SAAS","sourcesContent":["import type { Scene } from \"../scene\";\r\nimport { Logger } from \"./logger\";\r\nimport { SceneSerializer } from \"./sceneSerializer\";\r\n\r\n/**\r\n * Class used to connect with the reflector zone of the sandbox via the reflector bridge\r\n * @since 5.0.0\r\n */\r\nexport class Reflector {\r\n private static readonly _SERVER_PREFIX = \"$$\";\r\n\r\n private _scene: Scene;\r\n private _webSocket: WebSocket;\r\n\r\n /**\r\n * Constructs a reflector object.\r\n * @param scene The scene to use\r\n * @param hostname The hostname of the reflector bridge\r\n * @param port The port of the reflector bridge\r\n */\r\n public constructor(scene: Scene, hostname: string, port: number) {\r\n this._scene = scene;\r\n\r\n Logger.Log(`[Reflector] Connecting to ws://${hostname}:${port}`);\r\n this._webSocket = new WebSocket(`ws://${hostname}:${port}`);\r\n\r\n this._webSocket.onmessage = (event) => {\r\n const message: string = event.data;\r\n if (message.startsWith(Reflector._SERVER_PREFIX)) {\r\n const serverMessage = message.substr(Reflector._SERVER_PREFIX.length);\r\n Logger.Log(`[Reflector] Received server message: ${serverMessage.substr(0, 64)}`);\r\n this._handleServerMessage(serverMessage);\r\n return;\r\n } else {\r\n Logger.Log(`[Reflector] Received client message: ${message.substr(0, 64)}`);\r\n this._handleClientMessage();\r\n }\r\n };\r\n\r\n this._webSocket.onclose = (event) => {\r\n Logger.Log(`[Reflector] Disconnected ${event.code} ${event.reason}`);\r\n };\r\n }\r\n\r\n /**\r\n * Closes the reflector connection\r\n */\r\n public close(): void {\r\n this._webSocket.close();\r\n }\r\n\r\n private _handleServerMessage(message: string): void {\r\n switch (message) {\r\n case \"connected\": {\r\n SceneSerializer.SerializeAsync(this._scene).then((serialized) => {\r\n this._webSocket.send(`load|${JSON.stringify(serialized)}`);\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private _handleClientMessage(): void {\r\n // do nothing\r\n }\r\n}\r\n"]}
@@ -207,8 +207,13 @@ var SceneSerializer = /** @class */ (function () {
207
207
  }
208
208
  // Environment texture
209
209
  if (scene.environmentTexture) {
210
- serializationObject.environmentTexture = scene.environmentTexture.name;
211
- serializationObject.environmentTextureRotationY = scene.environmentTexture.rotationY;
210
+ if (scene.environmentTexture._files) {
211
+ serializationObject.environmentTexture = scene.environmentTexture.serialize();
212
+ }
213
+ else {
214
+ serializationObject.environmentTexture = scene.environmentTexture.name;
215
+ serializationObject.environmentTextureRotationY = scene.environmentTexture.rotationY;
216
+ }
212
217
  }
213
218
  // Environment Intensity
214
219
  serializationObject.environmentIntensity = scene.environmentIntensity;
@@ -1 +1 @@
1
- {"version":3,"file":"sceneSerializer.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Misc/sceneSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Geometry } from \"../Meshes/geometry\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { MultiMaterial } from \"../Materials/multiMaterial\";\r\nimport type { Material } from \"../Materials/material\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { Light } from \"../Lights/light\";\r\nimport { SerializationHelper } from \"./decorators\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport type { CubeTexture } from \"../Materials/Textures/cubeTexture\";\r\n\r\nlet serializedGeometries: Geometry[] = [];\r\nconst SerializeGeometry = (geometry: Geometry, serializationGeometries: any): any => {\r\n if (geometry.doNotSerialize) {\r\n return;\r\n }\r\n\r\n serializationGeometries.vertexData.push(geometry.serializeVerticeData());\r\n\r\n (<any>serializedGeometries)[geometry.id] = true;\r\n};\r\n\r\nconst SerializeMesh = (mesh: Mesh, serializationScene: any): any => {\r\n const serializationObject: any = {};\r\n\r\n // Geometry\r\n const geometry = mesh._geometry;\r\n if (geometry) {\r\n if (!mesh.getScene().getGeometryById(geometry.id)) {\r\n // Geometry was in the memory but not added to the scene, nevertheless it's better to serialize to be able to reload the mesh with its geometry\r\n SerializeGeometry(geometry, serializationScene.geometries);\r\n }\r\n }\r\n\r\n // Custom\r\n if (mesh.serialize) {\r\n mesh.serialize(serializationObject);\r\n }\r\n\r\n return serializationObject;\r\n};\r\n\r\nconst FinalizeSingleMesh = (mesh: Mesh, serializationObject: any) => {\r\n //only works if the mesh is already loaded\r\n if (mesh.delayLoadState === Constants.DELAYLOADSTATE_LOADED || mesh.delayLoadState === Constants.DELAYLOADSTATE_NONE) {\r\n const serializeMaterial = (material: Material) => {\r\n serializationObject.materials = serializationObject.materials || [];\r\n if (!serializationObject.materials.some((mat: Material) => mat.id === (<Material>mesh.material).id)) {\r\n serializationObject.materials.push(material.serialize());\r\n }\r\n };\r\n\r\n //serialize material\r\n if (mesh.material && !mesh.material.doNotSerialize) {\r\n if (mesh.material instanceof MultiMaterial) {\r\n serializationObject.multiMaterials = serializationObject.multiMaterials || [];\r\n if (!serializationObject.multiMaterials.some((mat: Material) => mat.id === (<Material>mesh.material).id)) {\r\n serializationObject.multiMaterials.push(mesh.material.serialize());\r\n for (const submaterial of mesh.material.subMaterials) {\r\n if (submaterial) {\r\n serializeMaterial(submaterial);\r\n }\r\n }\r\n }\r\n } else {\r\n serializeMaterial(mesh.material);\r\n }\r\n } else if (!mesh.material) {\r\n serializeMaterial(mesh.getScene().defaultMaterial);\r\n }\r\n\r\n //serialize geometry\r\n const geometry = mesh._geometry;\r\n if (geometry) {\r\n if (!serializationObject.geometries) {\r\n serializationObject.geometries = {};\r\n\r\n serializationObject.geometries.boxes = [];\r\n serializationObject.geometries.spheres = [];\r\n serializationObject.geometries.cylinders = [];\r\n serializationObject.geometries.toruses = [];\r\n serializationObject.geometries.grounds = [];\r\n serializationObject.geometries.planes = [];\r\n serializationObject.geometries.torusKnots = [];\r\n serializationObject.geometries.vertexData = [];\r\n }\r\n\r\n SerializeGeometry(geometry, serializationObject.geometries);\r\n }\r\n // Skeletons\r\n if (mesh.skeleton && !mesh.skeleton.doNotSerialize) {\r\n serializationObject.skeletons = serializationObject.skeletons || [];\r\n serializationObject.skeletons.push(mesh.skeleton.serialize());\r\n }\r\n\r\n //serialize the actual mesh\r\n serializationObject.meshes = serializationObject.meshes || [];\r\n serializationObject.meshes.push(SerializeMesh(mesh, serializationObject));\r\n }\r\n};\r\n\r\n/**\r\n * Class used to serialize a scene into a string\r\n */\r\nexport class SceneSerializer {\r\n /**\r\n * Clear cache used by a previous serialization\r\n */\r\n public static ClearCache(): void {\r\n serializedGeometries = [];\r\n }\r\n\r\n /**\r\n * Serialize a scene into a JSON compatible object\r\n * Note that if the current engine does not support synchronous texture reading (like WebGPU), you should use SerializeAsync instead\r\n * as else you may not retrieve the proper base64 encoded texture data (when using the Texture.ForceSerializeBuffers flag)\r\n * @param scene defines the scene to serialize\r\n * @returns a JSON compatible object\r\n */\r\n public static Serialize(scene: Scene): any {\r\n return SceneSerializer._Serialize(scene);\r\n }\r\n\r\n private static _Serialize(scene: Scene, checkSyncReadSupported = true): any {\r\n const serializationObject: any = {};\r\n\r\n if (checkSyncReadSupported && !scene.getEngine()._features.supportSyncTextureRead && Texture.ForceSerializeBuffers) {\r\n console.warn(\"The serialization object may not contain the proper base64 encoded texture data! You should use the SerializeAsync method instead.\");\r\n }\r\n\r\n SceneSerializer.ClearCache();\r\n\r\n // Scene\r\n serializationObject.useDelayedTextureLoading = scene.useDelayedTextureLoading;\r\n serializationObject.autoClear = scene.autoClear;\r\n serializationObject.clearColor = scene.clearColor.asArray();\r\n serializationObject.ambientColor = scene.ambientColor.asArray();\r\n serializationObject.gravity = scene.gravity.asArray();\r\n serializationObject.collisionsEnabled = scene.collisionsEnabled;\r\n serializationObject.useRightHandedSystem = scene.useRightHandedSystem;\r\n\r\n // Fog\r\n if (scene.fogMode && scene.fogMode !== 0) {\r\n serializationObject.fogMode = scene.fogMode;\r\n serializationObject.fogColor = scene.fogColor.asArray();\r\n serializationObject.fogStart = scene.fogStart;\r\n serializationObject.fogEnd = scene.fogEnd;\r\n serializationObject.fogDensity = scene.fogDensity;\r\n }\r\n\r\n //Physics\r\n if (scene.isPhysicsEnabled()) {\r\n const physicEngine = scene.getPhysicsEngine();\r\n\r\n if (physicEngine) {\r\n serializationObject.physicsEnabled = true;\r\n serializationObject.physicsGravity = physicEngine.gravity.asArray();\r\n serializationObject.physicsEngine = physicEngine.getPhysicsPluginName();\r\n }\r\n }\r\n\r\n // Metadata\r\n if (scene.metadata) {\r\n serializationObject.metadata = scene.metadata;\r\n }\r\n\r\n // Morph targets\r\n serializationObject.morphTargetManagers = [];\r\n for (const abstractMesh of scene.meshes) {\r\n const manager = (<Mesh>abstractMesh).morphTargetManager;\r\n\r\n if (manager) {\r\n serializationObject.morphTargetManagers.push(manager.serialize());\r\n }\r\n }\r\n\r\n // Lights\r\n serializationObject.lights = [];\r\n let index: number;\r\n let light: Light;\r\n for (index = 0; index < scene.lights.length; index++) {\r\n light = scene.lights[index];\r\n\r\n if (!light.doNotSerialize) {\r\n serializationObject.lights.push(light.serialize());\r\n }\r\n }\r\n\r\n // Cameras\r\n serializationObject.cameras = [];\r\n for (index = 0; index < scene.cameras.length; index++) {\r\n const camera = scene.cameras[index];\r\n\r\n if (!camera.doNotSerialize) {\r\n serializationObject.cameras.push(camera.serialize());\r\n }\r\n }\r\n\r\n if (scene.activeCamera) {\r\n serializationObject.activeCameraID = scene.activeCamera.id;\r\n }\r\n\r\n // Animations\r\n SerializationHelper.AppendSerializedAnimations(scene, serializationObject);\r\n\r\n // Animation Groups\r\n if (scene.animationGroups && scene.animationGroups.length > 0) {\r\n serializationObject.animationGroups = [];\r\n for (let animationGroupIndex = 0; animationGroupIndex < scene.animationGroups.length; animationGroupIndex++) {\r\n const animationGroup = scene.animationGroups[animationGroupIndex];\r\n\r\n serializationObject.animationGroups.push(animationGroup.serialize());\r\n }\r\n }\r\n\r\n // Reflection probes\r\n if (scene.reflectionProbes && scene.reflectionProbes.length > 0) {\r\n serializationObject.reflectionProbes = [];\r\n\r\n for (index = 0; index < scene.reflectionProbes.length; index++) {\r\n const reflectionProbe = scene.reflectionProbes[index];\r\n serializationObject.reflectionProbes.push(reflectionProbe.serialize());\r\n }\r\n }\r\n\r\n // Materials\r\n serializationObject.materials = [];\r\n serializationObject.multiMaterials = [];\r\n let material: Material;\r\n for (index = 0; index < scene.materials.length; index++) {\r\n material = scene.materials[index];\r\n if (!material.doNotSerialize) {\r\n serializationObject.materials.push(material.serialize());\r\n }\r\n }\r\n\r\n // MultiMaterials\r\n serializationObject.multiMaterials = [];\r\n for (index = 0; index < scene.multiMaterials.length; index++) {\r\n const multiMaterial = scene.multiMaterials[index];\r\n serializationObject.multiMaterials.push(multiMaterial.serialize());\r\n }\r\n\r\n // Environment texture\r\n if (scene.environmentTexture) {\r\n serializationObject.environmentTexture = scene.environmentTexture.name;\r\n serializationObject.environmentTextureRotationY = (scene.environmentTexture as CubeTexture).rotationY;\r\n }\r\n\r\n // Environment Intensity\r\n serializationObject.environmentIntensity = scene.environmentIntensity;\r\n\r\n // Skeletons\r\n serializationObject.skeletons = [];\r\n for (index = 0; index < scene.skeletons.length; index++) {\r\n const skeleton = scene.skeletons[index];\r\n if (!skeleton.doNotSerialize) {\r\n serializationObject.skeletons.push(skeleton.serialize());\r\n }\r\n }\r\n\r\n // Transform nodes\r\n serializationObject.transformNodes = [];\r\n for (index = 0; index < scene.transformNodes.length; index++) {\r\n if (!scene.transformNodes[index].doNotSerialize) {\r\n serializationObject.transformNodes.push(scene.transformNodes[index].serialize());\r\n }\r\n }\r\n\r\n // Geometries\r\n serializationObject.geometries = {};\r\n\r\n serializationObject.geometries.boxes = [];\r\n serializationObject.geometries.spheres = [];\r\n serializationObject.geometries.cylinders = [];\r\n serializationObject.geometries.toruses = [];\r\n serializationObject.geometries.grounds = [];\r\n serializationObject.geometries.planes = [];\r\n serializationObject.geometries.torusKnots = [];\r\n serializationObject.geometries.vertexData = [];\r\n\r\n serializedGeometries = [];\r\n const geometries = scene.getGeometries();\r\n for (index = 0; index < geometries.length; index++) {\r\n const geometry = geometries[index];\r\n\r\n if (geometry.isReady()) {\r\n SerializeGeometry(geometry, serializationObject.geometries);\r\n }\r\n }\r\n\r\n // Meshes\r\n serializationObject.meshes = [];\r\n for (index = 0; index < scene.meshes.length; index++) {\r\n const abstractMesh = scene.meshes[index];\r\n\r\n if (abstractMesh instanceof Mesh) {\r\n const mesh = abstractMesh;\r\n if (!mesh.doNotSerialize) {\r\n if (mesh.delayLoadState === Constants.DELAYLOADSTATE_LOADED || mesh.delayLoadState === Constants.DELAYLOADSTATE_NONE) {\r\n serializationObject.meshes.push(SerializeMesh(mesh, serializationObject));\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Particles Systems\r\n serializationObject.particleSystems = [];\r\n for (index = 0; index < scene.particleSystems.length; index++) {\r\n serializationObject.particleSystems.push(scene.particleSystems[index].serialize(false));\r\n }\r\n\r\n // Post processes\r\n serializationObject.postProcesses = [];\r\n for (index = 0; index < scene.postProcesses.length; index++) {\r\n serializationObject.postProcesses.push(scene.postProcesses[index].serialize());\r\n }\r\n\r\n // Action Manager\r\n if (scene.actionManager) {\r\n serializationObject.actions = scene.actionManager.serialize(\"scene\");\r\n }\r\n\r\n // Components\r\n for (const component of scene._serializableComponents) {\r\n component.serialize(serializationObject);\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Serialize a scene into a JSON compatible object\r\n * @param scene defines the scene to serialize\r\n * @returns a JSON promise compatible object\r\n */\r\n public static SerializeAsync(scene: Scene): Promise<any> {\r\n const serializationObject = SceneSerializer._Serialize(scene, false);\r\n\r\n const promises: Array<Promise<any>> = [];\r\n\r\n this._CollectPromises(serializationObject, promises);\r\n\r\n return Promise.all(promises).then(() => serializationObject);\r\n }\r\n\r\n private static _CollectPromises(obj: any, promises: Array<Promise<any>>): void {\r\n if (Array.isArray(obj)) {\r\n for (let i = 0; i < obj.length; ++i) {\r\n const o = obj[i];\r\n if (o instanceof Promise) {\r\n promises.push(o.then((res: any) => (obj[i] = res)));\r\n } else if (o instanceof Object || Array.isArray(o)) {\r\n this._CollectPromises(o, promises);\r\n }\r\n }\r\n } else if (obj instanceof Object) {\r\n for (const name in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, name)) {\r\n const o = obj[name];\r\n if (o instanceof Promise) {\r\n promises.push(o.then((res: any) => (obj[name] = res)));\r\n } else if (o instanceof Object || Array.isArray(o)) {\r\n this._CollectPromises(o, promises);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Serialize a mesh into a JSON compatible object\r\n * @param toSerialize defines the mesh to serialize\r\n * @param withParents defines if parents must be serialized as well\r\n * @param withChildren defines if children must be serialized as well\r\n * @returns a JSON compatible object\r\n */\r\n public static SerializeMesh(toSerialize: any /* Mesh || Mesh[] */, withParents: boolean = false, withChildren: boolean = false): any {\r\n const serializationObject: any = {};\r\n\r\n SceneSerializer.ClearCache();\r\n\r\n toSerialize = toSerialize instanceof Array ? toSerialize : [toSerialize];\r\n\r\n if (withParents || withChildren) {\r\n //deliberate for loop! not for each, appended should be processed as well.\r\n for (let i = 0; i < toSerialize.length; ++i) {\r\n if (withChildren) {\r\n toSerialize[i].getDescendants().forEach((node: Node) => {\r\n if (node instanceof Mesh && toSerialize.indexOf(node) < 0 && !node.doNotSerialize) {\r\n toSerialize.push(node);\r\n }\r\n });\r\n }\r\n //make sure the array doesn't contain the object already\r\n if (withParents && toSerialize[i].parent && toSerialize.indexOf(toSerialize[i].parent) < 0 && !toSerialize[i].parent.doNotSerialize) {\r\n toSerialize.push(toSerialize[i].parent);\r\n }\r\n }\r\n }\r\n\r\n toSerialize.forEach((mesh: Mesh) => {\r\n FinalizeSingleMesh(mesh, serializationObject);\r\n });\r\n\r\n return serializationObject;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"sceneSerializer.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Misc/sceneSerializer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Geometry } from \"../Meshes/geometry\";\r\nimport { Mesh } from \"../Meshes/mesh\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { MultiMaterial } from \"../Materials/multiMaterial\";\r\nimport type { Material } from \"../Materials/material\";\r\nimport type { Scene } from \"../scene\";\r\nimport type { Light } from \"../Lights/light\";\r\nimport { SerializationHelper } from \"./decorators\";\r\nimport { Texture } from \"../Materials/Textures/texture\";\r\nimport type { CubeTexture } from \"../Materials/Textures/cubeTexture\";\r\n\r\nlet serializedGeometries: Geometry[] = [];\r\nconst SerializeGeometry = (geometry: Geometry, serializationGeometries: any): any => {\r\n if (geometry.doNotSerialize) {\r\n return;\r\n }\r\n\r\n serializationGeometries.vertexData.push(geometry.serializeVerticeData());\r\n\r\n (<any>serializedGeometries)[geometry.id] = true;\r\n};\r\n\r\nconst SerializeMesh = (mesh: Mesh, serializationScene: any): any => {\r\n const serializationObject: any = {};\r\n\r\n // Geometry\r\n const geometry = mesh._geometry;\r\n if (geometry) {\r\n if (!mesh.getScene().getGeometryById(geometry.id)) {\r\n // Geometry was in the memory but not added to the scene, nevertheless it's better to serialize to be able to reload the mesh with its geometry\r\n SerializeGeometry(geometry, serializationScene.geometries);\r\n }\r\n }\r\n\r\n // Custom\r\n if (mesh.serialize) {\r\n mesh.serialize(serializationObject);\r\n }\r\n\r\n return serializationObject;\r\n};\r\n\r\nconst FinalizeSingleMesh = (mesh: Mesh, serializationObject: any) => {\r\n //only works if the mesh is already loaded\r\n if (mesh.delayLoadState === Constants.DELAYLOADSTATE_LOADED || mesh.delayLoadState === Constants.DELAYLOADSTATE_NONE) {\r\n const serializeMaterial = (material: Material) => {\r\n serializationObject.materials = serializationObject.materials || [];\r\n if (!serializationObject.materials.some((mat: Material) => mat.id === (<Material>mesh.material).id)) {\r\n serializationObject.materials.push(material.serialize());\r\n }\r\n };\r\n\r\n //serialize material\r\n if (mesh.material && !mesh.material.doNotSerialize) {\r\n if (mesh.material instanceof MultiMaterial) {\r\n serializationObject.multiMaterials = serializationObject.multiMaterials || [];\r\n if (!serializationObject.multiMaterials.some((mat: Material) => mat.id === (<Material>mesh.material).id)) {\r\n serializationObject.multiMaterials.push(mesh.material.serialize());\r\n for (const submaterial of mesh.material.subMaterials) {\r\n if (submaterial) {\r\n serializeMaterial(submaterial);\r\n }\r\n }\r\n }\r\n } else {\r\n serializeMaterial(mesh.material);\r\n }\r\n } else if (!mesh.material) {\r\n serializeMaterial(mesh.getScene().defaultMaterial);\r\n }\r\n\r\n //serialize geometry\r\n const geometry = mesh._geometry;\r\n if (geometry) {\r\n if (!serializationObject.geometries) {\r\n serializationObject.geometries = {};\r\n\r\n serializationObject.geometries.boxes = [];\r\n serializationObject.geometries.spheres = [];\r\n serializationObject.geometries.cylinders = [];\r\n serializationObject.geometries.toruses = [];\r\n serializationObject.geometries.grounds = [];\r\n serializationObject.geometries.planes = [];\r\n serializationObject.geometries.torusKnots = [];\r\n serializationObject.geometries.vertexData = [];\r\n }\r\n\r\n SerializeGeometry(geometry, serializationObject.geometries);\r\n }\r\n // Skeletons\r\n if (mesh.skeleton && !mesh.skeleton.doNotSerialize) {\r\n serializationObject.skeletons = serializationObject.skeletons || [];\r\n serializationObject.skeletons.push(mesh.skeleton.serialize());\r\n }\r\n\r\n //serialize the actual mesh\r\n serializationObject.meshes = serializationObject.meshes || [];\r\n serializationObject.meshes.push(SerializeMesh(mesh, serializationObject));\r\n }\r\n};\r\n\r\n/**\r\n * Class used to serialize a scene into a string\r\n */\r\nexport class SceneSerializer {\r\n /**\r\n * Clear cache used by a previous serialization\r\n */\r\n public static ClearCache(): void {\r\n serializedGeometries = [];\r\n }\r\n\r\n /**\r\n * Serialize a scene into a JSON compatible object\r\n * Note that if the current engine does not support synchronous texture reading (like WebGPU), you should use SerializeAsync instead\r\n * as else you may not retrieve the proper base64 encoded texture data (when using the Texture.ForceSerializeBuffers flag)\r\n * @param scene defines the scene to serialize\r\n * @returns a JSON compatible object\r\n */\r\n public static Serialize(scene: Scene): any {\r\n return SceneSerializer._Serialize(scene);\r\n }\r\n\r\n private static _Serialize(scene: Scene, checkSyncReadSupported = true): any {\r\n const serializationObject: any = {};\r\n\r\n if (checkSyncReadSupported && !scene.getEngine()._features.supportSyncTextureRead && Texture.ForceSerializeBuffers) {\r\n console.warn(\"The serialization object may not contain the proper base64 encoded texture data! You should use the SerializeAsync method instead.\");\r\n }\r\n\r\n SceneSerializer.ClearCache();\r\n\r\n // Scene\r\n serializationObject.useDelayedTextureLoading = scene.useDelayedTextureLoading;\r\n serializationObject.autoClear = scene.autoClear;\r\n serializationObject.clearColor = scene.clearColor.asArray();\r\n serializationObject.ambientColor = scene.ambientColor.asArray();\r\n serializationObject.gravity = scene.gravity.asArray();\r\n serializationObject.collisionsEnabled = scene.collisionsEnabled;\r\n serializationObject.useRightHandedSystem = scene.useRightHandedSystem;\r\n\r\n // Fog\r\n if (scene.fogMode && scene.fogMode !== 0) {\r\n serializationObject.fogMode = scene.fogMode;\r\n serializationObject.fogColor = scene.fogColor.asArray();\r\n serializationObject.fogStart = scene.fogStart;\r\n serializationObject.fogEnd = scene.fogEnd;\r\n serializationObject.fogDensity = scene.fogDensity;\r\n }\r\n\r\n //Physics\r\n if (scene.isPhysicsEnabled()) {\r\n const physicEngine = scene.getPhysicsEngine();\r\n\r\n if (physicEngine) {\r\n serializationObject.physicsEnabled = true;\r\n serializationObject.physicsGravity = physicEngine.gravity.asArray();\r\n serializationObject.physicsEngine = physicEngine.getPhysicsPluginName();\r\n }\r\n }\r\n\r\n // Metadata\r\n if (scene.metadata) {\r\n serializationObject.metadata = scene.metadata;\r\n }\r\n\r\n // Morph targets\r\n serializationObject.morphTargetManagers = [];\r\n for (const abstractMesh of scene.meshes) {\r\n const manager = (<Mesh>abstractMesh).morphTargetManager;\r\n\r\n if (manager) {\r\n serializationObject.morphTargetManagers.push(manager.serialize());\r\n }\r\n }\r\n\r\n // Lights\r\n serializationObject.lights = [];\r\n let index: number;\r\n let light: Light;\r\n for (index = 0; index < scene.lights.length; index++) {\r\n light = scene.lights[index];\r\n\r\n if (!light.doNotSerialize) {\r\n serializationObject.lights.push(light.serialize());\r\n }\r\n }\r\n\r\n // Cameras\r\n serializationObject.cameras = [];\r\n for (index = 0; index < scene.cameras.length; index++) {\r\n const camera = scene.cameras[index];\r\n\r\n if (!camera.doNotSerialize) {\r\n serializationObject.cameras.push(camera.serialize());\r\n }\r\n }\r\n\r\n if (scene.activeCamera) {\r\n serializationObject.activeCameraID = scene.activeCamera.id;\r\n }\r\n\r\n // Animations\r\n SerializationHelper.AppendSerializedAnimations(scene, serializationObject);\r\n\r\n // Animation Groups\r\n if (scene.animationGroups && scene.animationGroups.length > 0) {\r\n serializationObject.animationGroups = [];\r\n for (let animationGroupIndex = 0; animationGroupIndex < scene.animationGroups.length; animationGroupIndex++) {\r\n const animationGroup = scene.animationGroups[animationGroupIndex];\r\n\r\n serializationObject.animationGroups.push(animationGroup.serialize());\r\n }\r\n }\r\n\r\n // Reflection probes\r\n if (scene.reflectionProbes && scene.reflectionProbes.length > 0) {\r\n serializationObject.reflectionProbes = [];\r\n\r\n for (index = 0; index < scene.reflectionProbes.length; index++) {\r\n const reflectionProbe = scene.reflectionProbes[index];\r\n serializationObject.reflectionProbes.push(reflectionProbe.serialize());\r\n }\r\n }\r\n\r\n // Materials\r\n serializationObject.materials = [];\r\n serializationObject.multiMaterials = [];\r\n let material: Material;\r\n for (index = 0; index < scene.materials.length; index++) {\r\n material = scene.materials[index];\r\n if (!material.doNotSerialize) {\r\n serializationObject.materials.push(material.serialize());\r\n }\r\n }\r\n\r\n // MultiMaterials\r\n serializationObject.multiMaterials = [];\r\n for (index = 0; index < scene.multiMaterials.length; index++) {\r\n const multiMaterial = scene.multiMaterials[index];\r\n serializationObject.multiMaterials.push(multiMaterial.serialize());\r\n }\r\n\r\n // Environment texture\r\n if (scene.environmentTexture) {\r\n if ((scene.environmentTexture as CubeTexture)._files) {\r\n serializationObject.environmentTexture = scene.environmentTexture.serialize();\r\n } else {\r\n serializationObject.environmentTexture = scene.environmentTexture.name;\r\n serializationObject.environmentTextureRotationY = (scene.environmentTexture as CubeTexture).rotationY;\r\n }\r\n }\r\n\r\n // Environment Intensity\r\n serializationObject.environmentIntensity = scene.environmentIntensity;\r\n\r\n // Skeletons\r\n serializationObject.skeletons = [];\r\n for (index = 0; index < scene.skeletons.length; index++) {\r\n const skeleton = scene.skeletons[index];\r\n if (!skeleton.doNotSerialize) {\r\n serializationObject.skeletons.push(skeleton.serialize());\r\n }\r\n }\r\n\r\n // Transform nodes\r\n serializationObject.transformNodes = [];\r\n for (index = 0; index < scene.transformNodes.length; index++) {\r\n if (!scene.transformNodes[index].doNotSerialize) {\r\n serializationObject.transformNodes.push(scene.transformNodes[index].serialize());\r\n }\r\n }\r\n\r\n // Geometries\r\n serializationObject.geometries = {};\r\n\r\n serializationObject.geometries.boxes = [];\r\n serializationObject.geometries.spheres = [];\r\n serializationObject.geometries.cylinders = [];\r\n serializationObject.geometries.toruses = [];\r\n serializationObject.geometries.grounds = [];\r\n serializationObject.geometries.planes = [];\r\n serializationObject.geometries.torusKnots = [];\r\n serializationObject.geometries.vertexData = [];\r\n\r\n serializedGeometries = [];\r\n const geometries = scene.getGeometries();\r\n for (index = 0; index < geometries.length; index++) {\r\n const geometry = geometries[index];\r\n\r\n if (geometry.isReady()) {\r\n SerializeGeometry(geometry, serializationObject.geometries);\r\n }\r\n }\r\n\r\n // Meshes\r\n serializationObject.meshes = [];\r\n for (index = 0; index < scene.meshes.length; index++) {\r\n const abstractMesh = scene.meshes[index];\r\n\r\n if (abstractMesh instanceof Mesh) {\r\n const mesh = abstractMesh;\r\n if (!mesh.doNotSerialize) {\r\n if (mesh.delayLoadState === Constants.DELAYLOADSTATE_LOADED || mesh.delayLoadState === Constants.DELAYLOADSTATE_NONE) {\r\n serializationObject.meshes.push(SerializeMesh(mesh, serializationObject));\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Particles Systems\r\n serializationObject.particleSystems = [];\r\n for (index = 0; index < scene.particleSystems.length; index++) {\r\n serializationObject.particleSystems.push(scene.particleSystems[index].serialize(false));\r\n }\r\n\r\n // Post processes\r\n serializationObject.postProcesses = [];\r\n for (index = 0; index < scene.postProcesses.length; index++) {\r\n serializationObject.postProcesses.push(scene.postProcesses[index].serialize());\r\n }\r\n\r\n // Action Manager\r\n if (scene.actionManager) {\r\n serializationObject.actions = scene.actionManager.serialize(\"scene\");\r\n }\r\n\r\n // Components\r\n for (const component of scene._serializableComponents) {\r\n component.serialize(serializationObject);\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Serialize a scene into a JSON compatible object\r\n * @param scene defines the scene to serialize\r\n * @returns a JSON promise compatible object\r\n */\r\n public static SerializeAsync(scene: Scene): Promise<any> {\r\n const serializationObject = SceneSerializer._Serialize(scene, false);\r\n\r\n const promises: Array<Promise<any>> = [];\r\n\r\n this._CollectPromises(serializationObject, promises);\r\n\r\n return Promise.all(promises).then(() => serializationObject);\r\n }\r\n\r\n private static _CollectPromises(obj: any, promises: Array<Promise<any>>): void {\r\n if (Array.isArray(obj)) {\r\n for (let i = 0; i < obj.length; ++i) {\r\n const o = obj[i];\r\n if (o instanceof Promise) {\r\n promises.push(o.then((res: any) => (obj[i] = res)));\r\n } else if (o instanceof Object || Array.isArray(o)) {\r\n this._CollectPromises(o, promises);\r\n }\r\n }\r\n } else if (obj instanceof Object) {\r\n for (const name in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, name)) {\r\n const o = obj[name];\r\n if (o instanceof Promise) {\r\n promises.push(o.then((res: any) => (obj[name] = res)));\r\n } else if (o instanceof Object || Array.isArray(o)) {\r\n this._CollectPromises(o, promises);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Serialize a mesh into a JSON compatible object\r\n * @param toSerialize defines the mesh to serialize\r\n * @param withParents defines if parents must be serialized as well\r\n * @param withChildren defines if children must be serialized as well\r\n * @returns a JSON compatible object\r\n */\r\n public static SerializeMesh(toSerialize: any /* Mesh || Mesh[] */, withParents: boolean = false, withChildren: boolean = false): any {\r\n const serializationObject: any = {};\r\n\r\n SceneSerializer.ClearCache();\r\n\r\n toSerialize = toSerialize instanceof Array ? toSerialize : [toSerialize];\r\n\r\n if (withParents || withChildren) {\r\n //deliberate for loop! not for each, appended should be processed as well.\r\n for (let i = 0; i < toSerialize.length; ++i) {\r\n if (withChildren) {\r\n toSerialize[i].getDescendants().forEach((node: Node) => {\r\n if (node instanceof Mesh && toSerialize.indexOf(node) < 0 && !node.doNotSerialize) {\r\n toSerialize.push(node);\r\n }\r\n });\r\n }\r\n //make sure the array doesn't contain the object already\r\n if (withParents && toSerialize[i].parent && toSerialize.indexOf(toSerialize[i].parent) < 0 && !toSerialize[i].parent.doNotSerialize) {\r\n toSerialize.push(toSerialize[i].parent);\r\n }\r\n }\r\n }\r\n\r\n toSerialize.forEach((mesh: Mesh) => {\r\n FinalizeSingleMesh(mesh, serializationObject);\r\n });\r\n\r\n return serializationObject;\r\n }\r\n}\r\n"]}
@@ -3,6 +3,7 @@
3
3
  * @param str Source string
4
4
  * @param suffix Suffix to search for in the source string
5
5
  * @returns Boolean indicating whether the suffix was found (true) or not (false)
6
+ * @deprecated Please use native string function instead
6
7
  */
7
8
  export declare const EndsWith: (str: string, suffix: string) => boolean;
8
9
  /**
@@ -10,6 +11,7 @@ export declare const EndsWith: (str: string, suffix: string) => boolean;
10
11
  * @param str Source string
11
12
  * @param suffix Suffix to search for in the source string
12
13
  * @returns Boolean indicating whether the suffix was found (true) or not (false)
14
+ * @deprecated Please use native string function instead
13
15
  */
14
16
  export declare const StartsWith: (str: string, suffix: string) => boolean;
15
17
  /**
@@ -4,21 +4,23 @@
4
4
  * @param str Source string
5
5
  * @param suffix Suffix to search for in the source string
6
6
  * @returns Boolean indicating whether the suffix was found (true) or not (false)
7
+ * @deprecated Please use native string function instead
7
8
  */
8
9
  export var EndsWith = function (str, suffix) {
9
- return str.indexOf(suffix, str.length - suffix.length) !== -1;
10
+ return str.endsWith(suffix);
10
11
  };
11
12
  /**
12
13
  * Checks for a matching suffix at the beginning of a string (for ES5 and lower)
13
14
  * @param str Source string
14
15
  * @param suffix Suffix to search for in the source string
15
16
  * @returns Boolean indicating whether the suffix was found (true) or not (false)
17
+ * @deprecated Please use native string function instead
16
18
  */
17
19
  export var StartsWith = function (str, suffix) {
18
20
  if (!str) {
19
21
  return false;
20
22
  }
21
- return str.indexOf(suffix) === 0;
23
+ return str.startsWith(suffix);
22
24
  };
23
25
  /**
24
26
  * Decodes a buffer into a string
@@ -1 +1 @@
1
- {"version":3,"file":"stringTools.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Misc/stringTools.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n/**\r\n * Checks for a matching suffix at the end of a string (for ES5 and lower)\r\n * @param str Source string\r\n * @param suffix Suffix to search for in the source string\r\n * @returns Boolean indicating whether the suffix was found (true) or not (false)\r\n */\r\nexport const EndsWith = (str: string, suffix: string): boolean => {\r\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\r\n};\r\n\r\n/**\r\n * Checks for a matching suffix at the beginning of a string (for ES5 and lower)\r\n * @param str Source string\r\n * @param suffix Suffix to search for in the source string\r\n * @returns Boolean indicating whether the suffix was found (true) or not (false)\r\n */\r\nexport const StartsWith = (str: string, suffix: string): boolean => {\r\n if (!str) {\r\n return false;\r\n }\r\n return str.indexOf(suffix) === 0;\r\n};\r\n\r\n/**\r\n * Decodes a buffer into a string\r\n * @param buffer The buffer to decode\r\n * @returns The decoded string\r\n */\r\nexport const Decode = (buffer: Uint8Array | Uint16Array): string => {\r\n if (typeof TextDecoder !== \"undefined\") {\r\n return new TextDecoder().decode(buffer);\r\n }\r\n\r\n let result = \"\";\r\n for (let i = 0; i < buffer.byteLength; i++) {\r\n result += String.fromCharCode(buffer[i]);\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Encode a buffer to a base64 string\r\n * @param buffer defines the buffer to encode\r\n * @returns the encoded string\r\n */\r\nexport const EncodeArrayBufferToBase64 = (buffer: ArrayBuffer | ArrayBufferView): string => {\r\n const keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n let output = \"\";\r\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\r\n let i = 0;\r\n const bytes = ArrayBuffer.isView(buffer) ? new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength) : new Uint8Array(buffer);\r\n\r\n while (i < bytes.length) {\r\n chr1 = bytes[i++];\r\n chr2 = i < bytes.length ? bytes[i++] : Number.NaN;\r\n chr3 = i < bytes.length ? bytes[i++] : Number.NaN;\r\n\r\n enc1 = chr1 >> 2;\r\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n enc4 = chr3 & 63;\r\n\r\n if (isNaN(chr2)) {\r\n enc3 = enc4 = 64;\r\n } else if (isNaN(chr3)) {\r\n enc4 = 64;\r\n }\r\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\r\n }\r\n\r\n return output;\r\n};\r\n\r\n/**\r\n * Converts a given base64 string as an ASCII encoded stream of data\r\n * @param base64Data The base64 encoded string to decode\r\n * @returns Decoded ASCII string\r\n */\r\nexport const DecodeBase64ToString = (base64Data: string): string => {\r\n return atob(base64Data);\r\n};\r\n\r\n/**\r\n * Converts a given base64 string into an ArrayBuffer of raw byte data\r\n * @param base64Data The base64 encoded string to decode\r\n * @returns ArrayBuffer of byte data\r\n */\r\nexport const DecodeBase64ToBinary = (base64Data: string): ArrayBuffer => {\r\n const decodedString = DecodeBase64ToString(base64Data);\r\n const bufferLength = decodedString.length;\r\n const bufferView = new Uint8Array(new ArrayBuffer(bufferLength));\r\n\r\n for (let i = 0; i < bufferLength; i++) {\r\n bufferView[i] = decodedString.charCodeAt(i);\r\n }\r\n\r\n return bufferView.buffer;\r\n};\r\n\r\n/**\r\n * Converts a number to string and pads with preceding zeroes until it is of specified length.\r\n * @param num the number to convert and pad\r\n * @param length the expected length of the string\r\n * @returns the padded string\r\n */\r\nexport const PadNumber = (num: number, length: number): string => {\r\n let str = String(num);\r\n while (str.length < length) {\r\n str = \"0\" + str;\r\n }\r\n return str;\r\n};\r\n/**\r\n * Helper to manipulate strings\r\n */\r\nexport const StringTools = {\r\n EndsWith,\r\n StartsWith,\r\n Decode,\r\n EncodeArrayBufferToBase64,\r\n DecodeBase64ToString,\r\n DecodeBase64ToBinary,\r\n PadNumber,\r\n};\r\n"]}
1
+ {"version":3,"file":"stringTools.js","sourceRoot":"","sources":["../../../../../lts/core/generated/Misc/stringTools.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n\r\n/**\r\n * Checks for a matching suffix at the end of a string (for ES5 and lower)\r\n * @param str Source string\r\n * @param suffix Suffix to search for in the source string\r\n * @returns Boolean indicating whether the suffix was found (true) or not (false)\r\n * @deprecated Please use native string function instead\r\n */\r\nexport const EndsWith = (str: string, suffix: string): boolean => {\r\n return str.endsWith(suffix);\r\n};\r\n\r\n/**\r\n * Checks for a matching suffix at the beginning of a string (for ES5 and lower)\r\n * @param str Source string\r\n * @param suffix Suffix to search for in the source string\r\n * @returns Boolean indicating whether the suffix was found (true) or not (false)\r\n * @deprecated Please use native string function instead\r\n */\r\nexport const StartsWith = (str: string, suffix: string): boolean => {\r\n if (!str) {\r\n return false;\r\n }\r\n return str.startsWith(suffix);\r\n};\r\n\r\n/**\r\n * Decodes a buffer into a string\r\n * @param buffer The buffer to decode\r\n * @returns The decoded string\r\n */\r\nexport const Decode = (buffer: Uint8Array | Uint16Array): string => {\r\n if (typeof TextDecoder !== \"undefined\") {\r\n return new TextDecoder().decode(buffer);\r\n }\r\n\r\n let result = \"\";\r\n for (let i = 0; i < buffer.byteLength; i++) {\r\n result += String.fromCharCode(buffer[i]);\r\n }\r\n\r\n return result;\r\n};\r\n\r\n/**\r\n * Encode a buffer to a base64 string\r\n * @param buffer defines the buffer to encode\r\n * @returns the encoded string\r\n */\r\nexport const EncodeArrayBufferToBase64 = (buffer: ArrayBuffer | ArrayBufferView): string => {\r\n const keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n let output = \"\";\r\n let chr1, chr2, chr3, enc1, enc2, enc3, enc4;\r\n let i = 0;\r\n const bytes = ArrayBuffer.isView(buffer) ? new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength) : new Uint8Array(buffer);\r\n\r\n while (i < bytes.length) {\r\n chr1 = bytes[i++];\r\n chr2 = i < bytes.length ? bytes[i++] : Number.NaN;\r\n chr3 = i < bytes.length ? bytes[i++] : Number.NaN;\r\n\r\n enc1 = chr1 >> 2;\r\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n enc4 = chr3 & 63;\r\n\r\n if (isNaN(chr2)) {\r\n enc3 = enc4 = 64;\r\n } else if (isNaN(chr3)) {\r\n enc4 = 64;\r\n }\r\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\r\n }\r\n\r\n return output;\r\n};\r\n\r\n/**\r\n * Converts a given base64 string as an ASCII encoded stream of data\r\n * @param base64Data The base64 encoded string to decode\r\n * @returns Decoded ASCII string\r\n */\r\nexport const DecodeBase64ToString = (base64Data: string): string => {\r\n return atob(base64Data);\r\n};\r\n\r\n/**\r\n * Converts a given base64 string into an ArrayBuffer of raw byte data\r\n * @param base64Data The base64 encoded string to decode\r\n * @returns ArrayBuffer of byte data\r\n */\r\nexport const DecodeBase64ToBinary = (base64Data: string): ArrayBuffer => {\r\n const decodedString = DecodeBase64ToString(base64Data);\r\n const bufferLength = decodedString.length;\r\n const bufferView = new Uint8Array(new ArrayBuffer(bufferLength));\r\n\r\n for (let i = 0; i < bufferLength; i++) {\r\n bufferView[i] = decodedString.charCodeAt(i);\r\n }\r\n\r\n return bufferView.buffer;\r\n};\r\n\r\n/**\r\n * Converts a number to string and pads with preceding zeroes until it is of specified length.\r\n * @param num the number to convert and pad\r\n * @param length the expected length of the string\r\n * @returns the padded string\r\n */\r\nexport const PadNumber = (num: number, length: number): string => {\r\n let str = String(num);\r\n while (str.length < length) {\r\n str = \"0\" + str;\r\n }\r\n return str;\r\n};\r\n/**\r\n * Helper to manipulate strings\r\n */\r\nexport const StringTools = {\r\n EndsWith,\r\n StartsWith,\r\n Decode,\r\n EncodeArrayBufferToBase64,\r\n DecodeBase64ToString,\r\n DecodeBase64ToBinary,\r\n PadNumber,\r\n};\r\n"]}
package/Misc/tools.d.ts CHANGED
@@ -93,23 +93,6 @@ export declare class Tools {
93
93
  * @returns the new object or null if the system was not able to do the instantiation
94
94
  */
95
95
  static Instantiate(className: string): any;
96
- /**
97
- * Provides a slice function that will work even on IE
98
- * @param data defines the array to slice
99
- * @param start defines the start of the data (optional)
100
- * @param end defines the end of the data (optional)
101
- * @returns the new sliced array
102
- */
103
- static Slice<T>(data: T, start?: number, end?: number): T;
104
- /**
105
- * Provides a slice function that will work even on IE
106
- * The difference between this and Slice is that this will force-convert to array
107
- * @param data defines the array to slice
108
- * @param start defines the start of the data (optional)
109
- * @param end defines the end of the data (optional)
110
- * @returns the new sliced array
111
- */
112
- static SliceToArray<T, P>(data: T, start?: number, end?: number): Array<P>;
113
96
  /**
114
97
  * Polyfill for setImmediate
115
98
  * @param action defines the action to execute after the current execution block
package/Misc/tools.js CHANGED
@@ -8,11 +8,9 @@ import { _WarnImport } from "./devTools.js";
8
8
  import { WebRequest } from "./webRequest.js";
9
9
  import { EngineStore } from "../Engines/engineStore.js";
10
10
  import { FileToolsOptions, DecodeBase64UrlToBinary, IsBase64DataUrl, LoadFile as FileToolsLoadFile, LoadImage as FileToolLoadImage, ReadFile as FileToolsReadFile, SetCorsBehavior, } from "./fileTools.js";
11
- import { PromisePolyfill } from "./promise.js";
12
11
  import { TimingTools } from "./timingTools.js";
13
12
  import { InstantiationTools } from "./instantiationTools.js";
14
13
  import { RandomGUID } from "./guid.js";
15
- import { SliceTools } from "./sliceTools.js";
16
14
  /**
17
15
  * Class containing a set of static utilities functions
18
16
  */
@@ -140,27 +138,6 @@ var Tools = /** @class */ (function () {
140
138
  Tools.Instantiate = function (className) {
141
139
  return InstantiationTools.Instantiate(className);
142
140
  };
143
- /**
144
- * Provides a slice function that will work even on IE
145
- * @param data defines the array to slice
146
- * @param start defines the start of the data (optional)
147
- * @param end defines the end of the data (optional)
148
- * @returns the new sliced array
149
- */
150
- Tools.Slice = function (data, start, end) {
151
- return SliceTools.Slice(data, start, end);
152
- };
153
- /**
154
- * Provides a slice function that will work even on IE
155
- * The difference between this and Slice is that this will force-convert to array
156
- * @param data defines the array to slice
157
- * @param start defines the start of the data (optional)
158
- * @param end defines the end of the data (optional)
159
- * @returns the new sliced array
160
- */
161
- Tools.SliceToArray = function (data, start, end) {
162
- return SliceTools.SliceToArray(data, start, end);
163
- };
164
141
  /**
165
142
  * Polyfill for setImmediate
166
143
  * @param action defines the action to execute after the current execution block
@@ -1276,6 +1253,4 @@ export { AsyncLoop };
1276
1253
  // Will only be define if Tools is imported freeing up some space when only engine is required
1277
1254
  EngineStore.FallbackTexture =
1278
1255
  "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";
1279
- // Register promise fallback for IE
1280
- PromisePolyfill.Apply();
1281
1256
  //# sourceMappingURL=tools.js.map