@babylonjs/core 5.45.2 → 5.47.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 (563) hide show
  1. package/Actions/actionManager.js +6 -1
  2. package/Actions/actionManager.js.map +1 -1
  3. package/Actions/condition.js +23 -23
  4. package/Actions/condition.js.map +1 -1
  5. package/Animations/animatable.js +48 -48
  6. package/Animations/animatable.js.map +1 -1
  7. package/Animations/animation.js +53 -53
  8. package/Animations/animation.js.map +1 -1
  9. package/Animations/animationGroup.js +53 -53
  10. package/Animations/animationGroup.js.map +1 -1
  11. package/Animations/runtimeAnimation.js +36 -36
  12. package/Animations/runtimeAnimation.js.map +1 -1
  13. package/Audio/audioEngine.js +14 -14
  14. package/Audio/audioEngine.js.map +1 -1
  15. package/Audio/audioSceneComponent.js +14 -14
  16. package/Audio/audioSceneComponent.js.map +1 -1
  17. package/Audio/sound.js +47 -47
  18. package/Audio/sound.js.map +1 -1
  19. package/Behaviors/Meshes/baseSixDofDragBehavior.d.ts +1 -1
  20. package/Behaviors/Meshes/fadeInOutBehavior.js +11 -11
  21. package/Behaviors/Meshes/fadeInOutBehavior.js.map +1 -1
  22. package/Behaviors/Meshes/pointerDragBehavior.js +34 -34
  23. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  24. package/Bones/bone.js +15 -15
  25. package/Bones/bone.js.map +1 -1
  26. package/Bones/boneIKController.js +9 -9
  27. package/Bones/boneIKController.js.map +1 -1
  28. package/Bones/boneLookController.js +50 -50
  29. package/Bones/boneLookController.js.map +1 -1
  30. package/Bones/skeleton.js +35 -35
  31. package/Bones/skeleton.js.map +1 -1
  32. package/Buffers/buffer.js +14 -14
  33. package/Buffers/buffer.js.map +1 -1
  34. package/Buffers/dataBuffer.js +6 -6
  35. package/Buffers/dataBuffer.js.map +1 -1
  36. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js +42 -42
  37. package/Cameras/Inputs/freeCameraDeviceOrientationInput.js.map +1 -1
  38. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js +18 -18
  39. package/Cameras/Stereoscopic/stereoscopicScreenUniversalCamera.js.map +1 -1
  40. package/Cameras/VR/vrExperienceHelper.js +178 -178
  41. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  42. package/Cameras/arcRotateCamera.js +176 -176
  43. package/Cameras/arcRotateCamera.js.map +1 -1
  44. package/Cameras/camera.js +90 -90
  45. package/Cameras/camera.js.map +1 -1
  46. package/Cameras/flyCamera.js +82 -82
  47. package/Cameras/flyCamera.js.map +1 -1
  48. package/Cameras/freeCamera.js +54 -54
  49. package/Cameras/freeCamera.js.map +1 -1
  50. package/Compute/computeShader.js +12 -12
  51. package/Compute/computeShader.js.map +1 -1
  52. package/Culling/ray.d.ts +1 -1
  53. package/Debug/axesViewer.js +12 -12
  54. package/Debug/axesViewer.js.map +1 -1
  55. package/Debug/debugLayer.js +21 -21
  56. package/Debug/debugLayer.js.map +1 -1
  57. package/Debug/directionalLightFrustumViewer.js +20 -20
  58. package/Debug/directionalLightFrustumViewer.js.map +1 -1
  59. package/Debug/physicsViewer.js +3 -3
  60. package/Debug/physicsViewer.js.map +1 -1
  61. package/Debug/rayHelper.js +10 -10
  62. package/Debug/rayHelper.js.map +1 -1
  63. package/Debug/skeletonViewer.js +81 -81
  64. package/Debug/skeletonViewer.js.map +1 -1
  65. package/DeviceInput/InputDevices/deviceSource.d.ts +1 -1
  66. package/DeviceInput/InputDevices/deviceSourceManager.js +31 -31
  67. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  68. package/DeviceInput/InputDevices/deviceTypes.d.ts +1 -1
  69. package/DeviceInput/eventFactory.d.ts +1 -1
  70. package/DeviceInput/eventFactory.js +4 -4
  71. package/DeviceInput/eventFactory.js.map +1 -1
  72. package/DeviceInput/internalDeviceSourceManager.d.ts +2 -2
  73. package/DeviceInput/webDeviceInputSystem.js +2 -2
  74. package/DeviceInput/webDeviceInputSystem.js.map +1 -1
  75. package/Engines/Extensions/engine.computeShader.d.ts +3 -3
  76. package/Engines/Extensions/engine.multiRender.js +1 -1
  77. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  78. package/Engines/Extensions/engine.query.d.ts +1 -1
  79. package/Engines/Extensions/engine.renderTarget.d.ts +1 -1
  80. package/Engines/Extensions/engine.renderTarget.js +1 -1
  81. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  82. package/Engines/Native/nativeDataStream.d.ts +1 -1
  83. package/Engines/Native/nativeHardwareTexture.js +3 -3
  84. package/Engines/Native/nativeHardwareTexture.js.map +1 -1
  85. package/Engines/Native/nativeInterfaces.d.ts +5 -5
  86. package/Engines/Native/nativePipelineContext.js +7 -7
  87. package/Engines/Native/nativePipelineContext.js.map +1 -1
  88. package/Engines/Native/nativeRenderTargetWrapper.js +6 -6
  89. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  90. package/Engines/Processors/shaderCodeInliner.js +4 -4
  91. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  92. package/Engines/Processors/shaderProcessingOptions.d.ts +1 -1
  93. package/Engines/WebGL/webGLHardwareTexture.js +3 -3
  94. package/Engines/WebGL/webGLHardwareTexture.js.map +1 -1
  95. package/Engines/WebGPU/webgpuBufferManager.js +3 -3
  96. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  97. package/Engines/WebGPU/webgpuCacheBindGroups.js +6 -6
  98. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  99. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js +5 -5
  100. package/Engines/WebGPU/webgpuCacheRenderPipelineTree.js.map +1 -1
  101. package/Engines/WebGPU/webgpuClearQuad.js +11 -11
  102. package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
  103. package/Engines/WebGPU/webgpuComputeContext.js +7 -7
  104. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  105. package/Engines/WebGPU/webgpuComputePipelineContext.js +4 -4
  106. package/Engines/WebGPU/webgpuComputePipelineContext.js.map +1 -1
  107. package/Engines/WebGPU/webgpuDrawContext.js +7 -7
  108. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  109. package/Engines/WebGPU/webgpuHardwareTexture.js +9 -9
  110. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  111. package/Engines/WebGPU/webgpuMaterialContext.js +5 -5
  112. package/Engines/WebGPU/webgpuMaterialContext.js.map +1 -1
  113. package/Engines/WebGPU/webgpuOcclusionQuery.js +10 -10
  114. package/Engines/WebGPU/webgpuOcclusionQuery.js.map +1 -1
  115. package/Engines/WebGPU/webgpuPipelineContext.js +6 -6
  116. package/Engines/WebGPU/webgpuPipelineContext.js.map +1 -1
  117. package/Engines/WebGPU/webgpuQuerySet.js +3 -3
  118. package/Engines/WebGPU/webgpuQuerySet.js.map +1 -1
  119. package/Engines/WebGPU/webgpuShaderProcessingContext.js +3 -3
  120. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  121. package/Engines/WebGPU/webgpuTextureHelper.js +3 -3
  122. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  123. package/Engines/WebGPU/webgpuTimestampQuery.js +3 -3
  124. package/Engines/WebGPU/webgpuTimestampQuery.js.map +1 -1
  125. package/Engines/engine.js +134 -134
  126. package/Engines/engine.js.map +1 -1
  127. package/Engines/nativeEngine.js +6 -6
  128. package/Engines/nativeEngine.js.map +1 -1
  129. package/Engines/nullEngine.js +25 -25
  130. package/Engines/nullEngine.js.map +1 -1
  131. package/Engines/renderTargetWrapper.js +25 -25
  132. package/Engines/renderTargetWrapper.js.map +1 -1
  133. package/Engines/thinEngine.js +243 -243
  134. package/Engines/thinEngine.js.map +1 -1
  135. package/Engines/webgpuEngine.js +132 -132
  136. package/Engines/webgpuEngine.js.map +1 -1
  137. package/Events/keyboardEvents.js +10 -10
  138. package/Events/keyboardEvents.js.map +1 -1
  139. package/Events/pointerEvents.js +10 -10
  140. package/Events/pointerEvents.js.map +1 -1
  141. package/Gamepads/Controllers/poseEnabledController.js +9 -9
  142. package/Gamepads/Controllers/poseEnabledController.js.map +1 -1
  143. package/Gamepads/Controllers/webVRController.js +13 -13
  144. package/Gamepads/Controllers/webVRController.js.map +1 -1
  145. package/Gamepads/gamepad.js +20 -20
  146. package/Gamepads/gamepad.js.map +1 -1
  147. package/Gizmos/axisDragGizmo.js +45 -45
  148. package/Gizmos/axisDragGizmo.js.map +1 -1
  149. package/Gizmos/axisScaleGizmo.js +12 -12
  150. package/Gizmos/axisScaleGizmo.js.map +1 -1
  151. package/Gizmos/boundingBoxGizmo.js +74 -74
  152. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  153. package/Gizmos/gizmo.js +34 -34
  154. package/Gizmos/gizmo.js.map +1 -1
  155. package/Gizmos/gizmoManager.js +40 -40
  156. package/Gizmos/gizmoManager.js.map +1 -1
  157. package/Gizmos/planeDragGizmo.js +23 -23
  158. package/Gizmos/planeDragGizmo.js.map +1 -1
  159. package/Gizmos/planeRotationGizmo.js +12 -12
  160. package/Gizmos/planeRotationGizmo.js.map +1 -1
  161. package/Gizmos/positionGizmo.js +40 -40
  162. package/Gizmos/positionGizmo.js.map +1 -1
  163. package/Gizmos/rotationGizmo.js +47 -47
  164. package/Gizmos/rotationGizmo.js.map +1 -1
  165. package/Gizmos/scaleGizmo.js +41 -41
  166. package/Gizmos/scaleGizmo.js.map +1 -1
  167. package/Helpers/environmentHelper.js +18 -18
  168. package/Helpers/environmentHelper.js.map +1 -1
  169. package/Helpers/textureDome.js +96 -96
  170. package/Helpers/textureDome.js.map +1 -1
  171. package/IAccessibilityTag.d.ts +2 -2
  172. package/Inputs/scene.inputManager.d.ts +4 -3
  173. package/Inputs/scene.inputManager.js +12 -11
  174. package/Inputs/scene.inputManager.js.map +1 -1
  175. package/Instrumentation/engineInstrumentation.js +21 -21
  176. package/Instrumentation/engineInstrumentation.js.map +1 -1
  177. package/Instrumentation/sceneInstrumentation.js +90 -90
  178. package/Instrumentation/sceneInstrumentation.js.map +1 -1
  179. package/Layers/effectLayer.js +48 -48
  180. package/Layers/effectLayer.js.map +1 -1
  181. package/Layers/glowLayer.js +32 -32
  182. package/Layers/glowLayer.js.map +1 -1
  183. package/Layers/highlightLayer.js +26 -26
  184. package/Layers/highlightLayer.js.map +1 -1
  185. package/Layers/layer.js +40 -40
  186. package/Layers/layer.js.map +1 -1
  187. package/LensFlares/lensFlare.js +15 -15
  188. package/LensFlares/lensFlare.js.map +1 -1
  189. package/LensFlares/lensFlareSystem.js +4 -4
  190. package/LensFlares/lensFlareSystem.js.map +1 -1
  191. package/Lights/Shadows/cascadedShadowGenerator.js +18 -18
  192. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  193. package/Lights/Shadows/shadowGenerator.js +115 -115
  194. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  195. package/Lights/directionalLight.js +31 -31
  196. package/Lights/directionalLight.js.map +1 -1
  197. package/Lights/light.js +72 -72
  198. package/Lights/light.js.map +1 -1
  199. package/Lights/pointLight.js +18 -18
  200. package/Lights/pointLight.js.map +1 -1
  201. package/Lights/spotLight.js +30 -30
  202. package/Lights/spotLight.js.map +1 -1
  203. package/Loading/sceneLoader.d.ts +1 -1
  204. package/Materials/Background/backgroundMaterial.js +124 -124
  205. package/Materials/Background/backgroundMaterial.js.map +1 -1
  206. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +8 -8
  207. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  208. package/Materials/Node/Blocks/Dual/lightBlock.js +14 -14
  209. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +9 -9
  211. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  212. package/Materials/Node/Blocks/Dual/textureBlock.js +26 -26
  213. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/Input/inputBlock.js +34 -34
  215. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +14 -14
  217. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  218. package/Materials/Node/Blocks/PBR/reflectionBlock.js +16 -16
  219. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  220. package/Materials/Node/Blocks/customBlock.js +7 -7
  221. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/gradientBlock.js +13 -13
  223. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  224. package/Materials/Node/Blocks/triPlanarBlock.js +30 -30
  225. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  226. package/Materials/Node/nodeMaterial.d.ts +1 -1
  227. package/Materials/Node/nodeMaterial.js +60 -60
  228. package/Materials/Node/nodeMaterial.js.map +1 -1
  229. package/Materials/Node/nodeMaterialBlock.js +35 -35
  230. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  231. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +50 -50
  232. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  233. package/Materials/PBR/pbrAnisotropicConfiguration.js +5 -5
  234. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  235. package/Materials/PBR/pbrBRDFConfiguration.js +4 -4
  236. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  237. package/Materials/PBR/pbrBaseMaterial.js +53 -55
  238. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  239. package/Materials/PBR/pbrBaseSimpleMaterial.js +17 -17
  240. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  241. package/Materials/PBR/pbrClearCoatConfiguration.js +5 -5
  242. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  243. package/Materials/PBR/pbrIridescenceConfiguration.js +5 -5
  244. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  245. package/Materials/PBR/pbrMaterial.js +209 -209
  246. package/Materials/PBR/pbrMaterial.js.map +1 -1
  247. package/Materials/PBR/pbrSheenConfiguration.js +5 -5
  248. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  249. package/Materials/PBR/pbrSpecularGlossinessMaterial.js +6 -6
  250. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  251. package/Materials/PBR/pbrSubSurfaceConfiguration.js +51 -51
  252. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  253. package/Materials/Textures/baseTexture.js +99 -99
  254. package/Materials/Textures/baseTexture.js.map +1 -1
  255. package/Materials/Textures/cubeTexture.js +61 -61
  256. package/Materials/Textures/cubeTexture.js.map +1 -1
  257. package/Materials/Textures/externalTexture.js +16 -16
  258. package/Materials/Textures/externalTexture.js.map +1 -1
  259. package/Materials/Textures/hdrCubeTexture.js +44 -44
  260. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  261. package/Materials/Textures/internalTexture.js +31 -31
  262. package/Materials/Textures/internalTexture.js.map +1 -1
  263. package/Materials/Textures/mirrorTexture.js +73 -73
  264. package/Materials/Textures/mirrorTexture.js.map +1 -1
  265. package/Materials/Textures/multiRenderTarget.js +47 -47
  266. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  267. package/Materials/Textures/rawTexture2DArray.js +6 -6
  268. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  269. package/Materials/Textures/renderTargetTexture.js +142 -142
  270. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  271. package/Materials/Textures/texture.d.ts +1 -1
  272. package/Materials/Textures/texture.js +26 -26
  273. package/Materials/Textures/texture.js.map +1 -1
  274. package/Materials/Textures/textureCreationOptions.d.ts +1 -1
  275. package/Materials/Textures/textureSampler.js +20 -20
  276. package/Materials/Textures/textureSampler.js.map +1 -1
  277. package/Materials/Textures/thinRenderTargetTexture.js +6 -6
  278. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  279. package/Materials/Textures/thinTexture.js +39 -39
  280. package/Materials/Textures/thinTexture.js.map +1 -1
  281. package/Materials/Textures/videoTexture.js +41 -41
  282. package/Materials/Textures/videoTexture.js.map +1 -1
  283. package/Materials/drawWrapper.js +6 -6
  284. package/Materials/drawWrapper.js.map +1 -1
  285. package/Materials/effect.js +18 -18
  286. package/Materials/effect.js.map +1 -1
  287. package/Materials/effectRenderer.js +9 -9
  288. package/Materials/effectRenderer.js.map +1 -1
  289. package/Materials/fresnelParameters.d.ts +2 -2
  290. package/Materials/fresnelParameters.js +13 -13
  291. package/Materials/fresnelParameters.js.map +1 -1
  292. package/Materials/material.detailMapConfiguration.js +5 -5
  293. package/Materials/material.detailMapConfiguration.js.map +1 -1
  294. package/Materials/material.js +223 -223
  295. package/Materials/material.js.map +1 -1
  296. package/Materials/materialPluginBase.js +5 -5
  297. package/Materials/materialPluginBase.js.map +1 -1
  298. package/Materials/materialPluginEvent.d.ts +14 -14
  299. package/Materials/materialPluginManager.d.ts +1 -1
  300. package/Materials/multiMaterial.js +16 -16
  301. package/Materials/multiMaterial.js.map +1 -1
  302. package/Materials/shadowDepthWrapper.js +14 -14
  303. package/Materials/shadowDepthWrapper.js.map +1 -1
  304. package/Materials/standardMaterial.js +100 -100
  305. package/Materials/standardMaterial.js.map +1 -1
  306. package/Materials/uniformBufferEffectCommonAccessor.js +3 -3
  307. package/Materials/uniformBufferEffectCommonAccessor.js.map +1 -1
  308. package/Maths/math.functions.js +2 -0
  309. package/Maths/math.functions.js.map +1 -1
  310. package/Maths/math.path.js +11 -11
  311. package/Maths/math.path.js.map +1 -1
  312. package/Maths/math.vector.d.ts +27 -7
  313. package/Maths/math.vector.js +75 -48
  314. package/Maths/math.vector.js.map +1 -1
  315. package/Meshes/Builders/goldbergBuilder.d.ts +2 -2
  316. package/Meshes/Compression/dracoCompression.js +23 -23
  317. package/Meshes/Compression/dracoCompression.js.map +1 -1
  318. package/Meshes/Compression/meshoptCompression.js +9 -9
  319. package/Meshes/Compression/meshoptCompression.js.map +1 -1
  320. package/Meshes/abstractMesh.js +179 -179
  321. package/Meshes/abstractMesh.js.map +1 -1
  322. package/Meshes/geometry.js +32 -32
  323. package/Meshes/geometry.js.map +1 -1
  324. package/Meshes/goldbergMesh.d.ts +1 -1
  325. package/Meshes/linesMesh.js +3 -3
  326. package/Meshes/linesMesh.js.map +1 -1
  327. package/Meshes/mesh.js +166 -166
  328. package/Meshes/mesh.js.map +1 -1
  329. package/Meshes/mesh.vertexData.js.map +1 -1
  330. package/Meshes/polygonMesh.js +5 -5
  331. package/Meshes/polygonMesh.js.map +1 -1
  332. package/Meshes/subMesh.js +59 -59
  333. package/Meshes/subMesh.js.map +1 -1
  334. package/Meshes/transformNode.js +52 -52
  335. package/Meshes/transformNode.js.map +1 -1
  336. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +1 -1
  337. package/Misc/PerformanceViewer/performanceViewerCollector.js +12 -12
  338. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  339. package/Misc/arrayTools.d.ts +1 -1
  340. package/Misc/copyTextureToTexture.js +3 -3
  341. package/Misc/copyTextureToTexture.js.map +1 -1
  342. package/Misc/coroutine.d.ts +5 -5
  343. package/Misc/deferred.js +9 -9
  344. package/Misc/deferred.js.map +1 -1
  345. package/Misc/depthReducer.js +7 -7
  346. package/Misc/depthReducer.js.map +1 -1
  347. package/Misc/environmentTextureTools.d.ts +1 -1
  348. package/Misc/error.d.ts +1 -1
  349. package/Misc/fileTools.d.ts +5 -5
  350. package/Misc/filesInput.js +6 -6
  351. package/Misc/filesInput.js.map +1 -1
  352. package/Misc/khronosTextureContainer2.js +9 -9
  353. package/Misc/khronosTextureContainer2.js.map +1 -1
  354. package/Misc/observable.js +12 -12
  355. package/Misc/observable.js.map +1 -1
  356. package/Misc/perfCounter.js +16 -16
  357. package/Misc/perfCounter.js.map +1 -1
  358. package/Misc/sceneOptimizer.js +76 -76
  359. package/Misc/sceneOptimizer.js.map +1 -1
  360. package/Misc/stringDictionary.d.ts +1 -1
  361. package/Misc/trajectoryClassifier.js +67 -67
  362. package/Misc/trajectoryClassifier.js.map +1 -1
  363. package/Misc/videoRecorder.js +15 -15
  364. package/Misc/videoRecorder.js.map +1 -1
  365. package/Misc/virtualJoystick.js +12 -12
  366. package/Misc/virtualJoystick.js.map +1 -1
  367. package/Morph/morphTarget.js +28 -28
  368. package/Morph/morphTarget.js.map +1 -1
  369. package/Morph/morphTargetManager.js +18 -18
  370. package/Morph/morphTargetManager.js.map +1 -1
  371. package/Offline/database.js +12 -12
  372. package/Offline/database.js.map +1 -1
  373. package/Particles/EmitterTypes/coneParticleEmitter.js +25 -25
  374. package/Particles/EmitterTypes/coneParticleEmitter.js.map +1 -1
  375. package/Particles/EmitterTypes/meshParticleEmitter.js +20 -20
  376. package/Particles/EmitterTypes/meshParticleEmitter.js.map +1 -1
  377. package/Particles/baseParticleSystem.js +232 -232
  378. package/Particles/baseParticleSystem.js.map +1 -1
  379. package/Particles/cloudPoint.js +9 -9
  380. package/Particles/cloudPoint.js.map +1 -1
  381. package/Particles/gpuParticleSystem.js +123 -123
  382. package/Particles/gpuParticleSystem.js.map +1 -1
  383. package/Particles/particleSystem.js +102 -102
  384. package/Particles/particleSystem.js.map +1 -1
  385. package/Particles/particleSystemComponent.js +5 -0
  386. package/Particles/particleSystemComponent.js.map +1 -1
  387. package/Particles/pointsCloudSystem.js +18 -18
  388. package/Particles/pointsCloudSystem.js.map +1 -1
  389. package/Particles/solidParticle.js +23 -23
  390. package/Particles/solidParticle.js.map +1 -1
  391. package/Physics/index.d.ts +1 -0
  392. package/Physics/index.js +1 -0
  393. package/Physics/index.js.map +1 -1
  394. package/Physics/v1/physicsEngine.js +14 -14
  395. package/Physics/v1/physicsEngine.js.map +1 -1
  396. package/Physics/v1/physicsImpostor.js +149 -149
  397. package/Physics/v1/physicsImpostor.js.map +1 -1
  398. package/Physics/v2/IPhysicsEnginePlugin.d.ts +6 -8
  399. package/Physics/v2/IPhysicsEnginePlugin.js +1 -0
  400. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  401. package/Physics/v2/physicsBody.d.ts +10 -1
  402. package/Physics/v2/physicsBody.js +13 -1
  403. package/Physics/v2/physicsBody.js.map +1 -1
  404. package/Physics/v2/physicsConstraint.d.ts +139 -66
  405. package/Physics/v2/physicsConstraint.js +145 -78
  406. package/Physics/v2/physicsConstraint.js.map +1 -1
  407. package/Physics/v2/physicsEngine.js +14 -14
  408. package/Physics/v2/physicsEngine.js.map +1 -1
  409. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js +137 -129
  410. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  411. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +68 -68
  412. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  413. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +6 -6
  414. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  415. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js +226 -225
  416. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  417. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +10 -10
  418. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  419. package/PostProcesses/anaglyphPostProcess.js +7 -7
  420. package/PostProcesses/anaglyphPostProcess.js.map +1 -1
  421. package/PostProcesses/blackAndWhitePostProcess.js +7 -7
  422. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  423. package/PostProcesses/bloomEffect.js +28 -28
  424. package/PostProcesses/bloomEffect.js.map +1 -1
  425. package/PostProcesses/bloomMergePostProcess.js +7 -7
  426. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  427. package/PostProcesses/blurPostProcess.js +32 -32
  428. package/PostProcesses/blurPostProcess.js.map +1 -1
  429. package/PostProcesses/chromaticAberrationPostProcess.js +7 -7
  430. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  431. package/PostProcesses/circleOfConfusionPostProcess.js +7 -7
  432. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  433. package/PostProcesses/colorCorrectionPostProcess.js +7 -7
  434. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  435. package/PostProcesses/convolutionPostProcess.js +7 -7
  436. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  437. package/PostProcesses/depthOfFieldBlurPostProcess.js +7 -7
  438. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  439. package/PostProcesses/depthOfFieldEffect.js +36 -36
  440. package/PostProcesses/depthOfFieldEffect.js.map +1 -1
  441. package/PostProcesses/depthOfFieldMergePostProcess.js +7 -7
  442. package/PostProcesses/depthOfFieldMergePostProcess.js.map +1 -1
  443. package/PostProcesses/extractHighlightsPostProcess.js +7 -7
  444. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  445. package/PostProcesses/filterPostProcess.js +7 -7
  446. package/PostProcesses/filterPostProcess.js.map +1 -1
  447. package/PostProcesses/grainPostProcess.js +7 -7
  448. package/PostProcesses/grainPostProcess.js.map +1 -1
  449. package/PostProcesses/imageProcessingPostProcess.js +42 -42
  450. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  451. package/PostProcesses/motionBlurPostProcess.js +41 -41
  452. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  453. package/PostProcesses/passPostProcess.js +15 -15
  454. package/PostProcesses/passPostProcess.js.map +1 -1
  455. package/PostProcesses/postProcess.d.ts +2 -2
  456. package/PostProcesses/postProcess.js +123 -123
  457. package/PostProcesses/postProcess.js.map +1 -1
  458. package/PostProcesses/refractionPostProcess.js +21 -21
  459. package/PostProcesses/refractionPostProcess.js.map +1 -1
  460. package/PostProcesses/screenSpaceCurvaturePostProcess.js +7 -7
  461. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  462. package/PostProcesses/screenSpaceReflectionPostProcess.js +19 -19
  463. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  464. package/PostProcesses/sharpenPostProcess.js +7 -7
  465. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  466. package/PostProcesses/stereoscopicInterlacePostProcess.js +14 -14
  467. package/PostProcesses/stereoscopicInterlacePostProcess.js.map +1 -1
  468. package/PostProcesses/tonemapPostProcess.js +7 -7
  469. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  470. package/PostProcesses/volumetricLightScatteringPostProcess.js +11 -11
  471. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  472. package/PostProcesses/vrDistortionCorrectionPostProcess.js +7 -7
  473. package/PostProcesses/vrDistortionCorrectionPostProcess.js.map +1 -1
  474. package/Rendering/depthPeelingRenderer.js +36 -36
  475. package/Rendering/depthPeelingRenderer.js.map +1 -1
  476. package/Rendering/depthRenderer.js +8 -8
  477. package/Rendering/depthRenderer.js.map +1 -1
  478. package/Rendering/edgesRenderer.js +34 -34
  479. package/Rendering/edgesRenderer.js.map +1 -1
  480. package/Rendering/fluidRenderer/fluidRenderer.js +8 -8
  481. package/Rendering/fluidRenderer/fluidRenderer.js.map +1 -1
  482. package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js +3 -3
  483. package/Rendering/fluidRenderer/fluidRenderingDepthTextureCopy.js.map +1 -1
  484. package/Rendering/fluidRenderer/fluidRenderingObject.js +22 -19
  485. package/Rendering/fluidRenderer/fluidRenderingObject.js.map +1 -1
  486. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js +12 -12
  487. package/Rendering/fluidRenderer/fluidRenderingObjectCustomParticles.js.map +1 -1
  488. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js +18 -18
  489. package/Rendering/fluidRenderer/fluidRenderingObjectParticleSystem.js.map +1 -1
  490. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js +71 -68
  491. package/Rendering/fluidRenderer/fluidRenderingTargetRenderer.js.map +1 -1
  492. package/Rendering/fluidRenderer/fluidRenderingTextures.js +29 -29
  493. package/Rendering/fluidRenderer/fluidRenderingTextures.js.map +1 -1
  494. package/Rendering/geometryBufferRenderer.js +173 -168
  495. package/Rendering/geometryBufferRenderer.js.map +1 -1
  496. package/Rendering/prePassRenderer.js +51 -51
  497. package/Rendering/prePassRenderer.js.map +1 -1
  498. package/Rendering/renderingGroup.js +25 -25
  499. package/Rendering/renderingGroup.js.map +1 -1
  500. package/Rendering/renderingManager.js +21 -21
  501. package/Rendering/renderingManager.js.map +1 -1
  502. package/Rendering/subSurfaceConfiguration.js +18 -18
  503. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  504. package/Rendering/utilityLayerRenderer.js +76 -76
  505. package/Rendering/utilityLayerRenderer.js.map +1 -1
  506. package/Shaders/ShadersInclude/pbrBlockSubSurface.js +1 -1
  507. package/Shaders/ShadersInclude/pbrBlockSubSurface.js.map +1 -1
  508. package/Shaders/fluidRenderingParticleDepth.fragment.js +5 -1
  509. package/Shaders/fluidRenderingParticleDepth.fragment.js.map +1 -1
  510. package/Shaders/fluidRenderingRender.fragment.js +7 -2
  511. package/Shaders/fluidRenderingRender.fragment.js.map +1 -1
  512. package/Shaders/geometry.fragment.d.ts +2 -0
  513. package/Shaders/geometry.fragment.js +5 -1
  514. package/Shaders/geometry.fragment.js.map +1 -1
  515. package/Shaders/geometry.vertex.d.ts +2 -0
  516. package/Shaders/geometry.vertex.js +8 -4
  517. package/Shaders/geometry.vertex.js.map +1 -1
  518. package/Sprites/sprite.js +16 -16
  519. package/Sprites/sprite.js.map +1 -1
  520. package/Sprites/spriteManager.js +81 -81
  521. package/Sprites/spriteManager.js.map +1 -1
  522. package/Sprites/spriteMap.js +32 -32
  523. package/Sprites/spriteMap.js.map +1 -1
  524. package/Sprites/spriteRenderer.js +6 -6
  525. package/Sprites/spriteRenderer.js.map +1 -1
  526. package/Sprites/thinSprite.js +22 -22
  527. package/Sprites/thinSprite.js.map +1 -1
  528. package/States/stencilStateComposer.js +10 -10
  529. package/States/stencilStateComposer.js.map +1 -1
  530. package/XR/features/WebXRAnchorSystem.js +7 -7
  531. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  532. package/XR/features/WebXRControllerMovement.d.ts +3 -3
  533. package/XR/features/WebXRControllerMovement.js +97 -97
  534. package/XR/features/WebXRControllerMovement.js.map +1 -1
  535. package/XR/features/WebXRControllerPhysics.js +24 -24
  536. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  537. package/XR/features/WebXRControllerTeleportation.js +26 -26
  538. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  539. package/XR/features/WebXRDOMOverlay.d.ts +1 -1
  540. package/XR/features/WebXRFeaturePointSystem.js +6 -6
  541. package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
  542. package/XR/features/WebXRHandTracking.d.ts +1 -1
  543. package/XR/features/WebXRHandTracking.js +95 -95
  544. package/XR/features/WebXRHandTracking.js.map +1 -1
  545. package/XR/features/WebXRWalkingLocomotion.js +21 -21
  546. package/XR/features/WebXRWalkingLocomotion.js.map +1 -1
  547. package/XR/motionController/webXRAbstractMotionController.d.ts +3 -3
  548. package/XR/motionController/webXRMotionControllerManager.d.ts +1 -1
  549. package/XR/native/nativeXRFrame.js +3 -3
  550. package/XR/native/nativeXRFrame.js.map +1 -1
  551. package/XR/webXRFeaturesManager.d.ts +1 -1
  552. package/XR/webXRLayerWrapper.d.ts +2 -2
  553. package/XR/webXRLayerWrapper.js +17 -17
  554. package/XR/webXRLayerWrapper.js.map +1 -1
  555. package/abstractScene.d.ts +2 -2
  556. package/node.d.ts +1 -1
  557. package/node.js +71 -71
  558. package/node.js.map +1 -1
  559. package/package.json +1 -1
  560. package/scene.js +777 -777
  561. package/scene.js.map +1 -1
  562. package/sceneComponent.d.ts +12 -12
  563. package/types.d.ts +11 -11
package/scene.js CHANGED
@@ -43,693 +43,9 @@ export var ScenePerformancePriority;
43
43
  */
44
44
  export class Scene extends AbstractScene {
45
45
  /**
46
- * Creates a new Scene
47
- * @param engine defines the engine to use to render this scene
48
- * @param options defines the scene options
49
- */
50
- constructor(engine, options) {
51
- super();
52
- // Members
53
- /** @internal */
54
- this._inputManager = new InputManager(this);
55
- /** Define this parameter if you are using multiple cameras and you want to specify which one should be used for pointer position */
56
- this.cameraToUseForPointers = null;
57
- /** @internal */
58
- this._isScene = true;
59
- /** @internal */
60
- this._blockEntityCollection = false;
61
- /**
62
- * Gets or sets a boolean that indicates if the scene must clear the render buffer before rendering a frame
63
- */
64
- this.autoClear = true;
65
- /**
66
- * Gets or sets a boolean that indicates if the scene must clear the depth and stencil buffers before rendering a frame
67
- */
68
- this.autoClearDepthAndStencil = true;
69
- /**
70
- * Defines the color used to clear the render buffer (Default is (0.2, 0.2, 0.3, 1.0))
71
- */
72
- this.clearColor = new Color4(0.2, 0.2, 0.3, 1.0);
73
- /**
74
- * Defines the color used to simulate the ambient color (Default is (0, 0, 0))
75
- */
76
- this.ambientColor = new Color3(0, 0, 0);
77
- /**
78
- * Intensity of the environment in all pbr material.
79
- * This dims or reinforces the IBL lighting overall (reflection and diffuse).
80
- * As in the majority of the scene they are the same (exception for multi room and so on),
81
- * this is easier to reference from here than from all the materials.
82
- */
83
- this.environmentIntensity = 1;
84
- this._performancePriority = ScenePerformancePriority.BackwardCompatible;
85
- this._forceWireframe = false;
86
- this._skipFrustumClipping = false;
87
- this._forcePointsCloud = false;
88
- /**
89
- * Gets or sets a boolean indicating if animations are enabled
90
- */
91
- this.animationsEnabled = true;
92
- this._animationPropertiesOverride = null;
93
- /**
94
- * Gets or sets a boolean indicating if a constant deltatime has to be used
95
- * This is mostly useful for testing purposes when you do not want the animations to scale with the framerate
96
- */
97
- this.useConstantAnimationDeltaTime = false;
98
- /**
99
- * Gets or sets a boolean indicating if the scene must keep the meshUnderPointer property updated
100
- * Please note that it requires to run a ray cast through the scene on every frame
101
- */
102
- this.constantlyUpdateMeshUnderPointer = false;
103
- /**
104
- * Defines the HTML cursor to use when hovering over interactive elements
105
- */
106
- this.hoverCursor = "pointer";
107
- /**
108
- * Defines the HTML default cursor to use (empty by default)
109
- */
110
- this.defaultCursor = "";
111
- /**
112
- * Defines whether cursors are handled by the scene.
113
- */
114
- this.doNotHandleCursors = false;
115
- /**
116
- * This is used to call preventDefault() on pointer down
117
- * in order to block unwanted artifacts like system double clicks
118
- */
119
- this.preventDefaultOnPointerDown = true;
120
- /**
121
- * This is used to call preventDefault() on pointer up
122
- * in order to block unwanted artifacts like system double clicks
123
- */
124
- this.preventDefaultOnPointerUp = true;
125
- // Metadata
126
- /**
127
- * Gets or sets user defined metadata
128
- */
129
- this.metadata = null;
130
- /**
131
- * For internal use only. Please do not use.
132
- */
133
- this.reservedDataStore = null;
134
- /**
135
- * Use this array to add regular expressions used to disable offline support for specific urls
136
- */
137
- this.disableOfflineSupportExceptionRules = new Array();
138
- /**
139
- * An event triggered when the scene is disposed.
140
- */
141
- this.onDisposeObservable = new Observable();
142
- this._onDisposeObserver = null;
143
- /**
144
- * An event triggered before rendering the scene (right after animations and physics)
145
- */
146
- this.onBeforeRenderObservable = new Observable();
147
- this._onBeforeRenderObserver = null;
148
- /**
149
- * An event triggered after rendering the scene
150
- */
151
- this.onAfterRenderObservable = new Observable();
152
- /**
153
- * An event triggered after rendering the scene for an active camera (When scene.render is called this will be called after each camera)
154
- * This is triggered for each "sub" camera in a Camera Rig unlike onAfterCameraRenderObservable
155
- */
156
- this.onAfterRenderCameraObservable = new Observable();
157
- this._onAfterRenderObserver = null;
158
- /**
159
- * An event triggered before animating the scene
160
- */
161
- this.onBeforeAnimationsObservable = new Observable();
162
- /**
163
- * An event triggered after animations processing
164
- */
165
- this.onAfterAnimationsObservable = new Observable();
166
- /**
167
- * An event triggered before draw calls are ready to be sent
168
- */
169
- this.onBeforeDrawPhaseObservable = new Observable();
170
- /**
171
- * An event triggered after draw calls have been sent
172
- */
173
- this.onAfterDrawPhaseObservable = new Observable();
174
- /**
175
- * An event triggered when the scene is ready
176
- */
177
- this.onReadyObservable = new Observable();
178
- /**
179
- * An event triggered before rendering a camera
180
- */
181
- this.onBeforeCameraRenderObservable = new Observable();
182
- this._onBeforeCameraRenderObserver = null;
183
- /**
184
- * An event triggered after rendering a camera
185
- * This is triggered for the full rig Camera only unlike onAfterRenderCameraObservable
186
- */
187
- this.onAfterCameraRenderObservable = new Observable();
188
- this._onAfterCameraRenderObserver = null;
189
- /**
190
- * An event triggered when active meshes evaluation is about to start
191
- */
192
- this.onBeforeActiveMeshesEvaluationObservable = new Observable();
193
- /**
194
- * An event triggered when active meshes evaluation is done
195
- */
196
- this.onAfterActiveMeshesEvaluationObservable = new Observable();
197
- /**
198
- * An event triggered when particles rendering is about to start
199
- * Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
200
- */
201
- this.onBeforeParticlesRenderingObservable = new Observable();
202
- /**
203
- * An event triggered when particles rendering is done
204
- * Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
205
- */
206
- this.onAfterParticlesRenderingObservable = new Observable();
207
- /**
208
- * An event triggered when SceneLoader.Append or SceneLoader.Load or SceneLoader.ImportMesh were successfully executed
209
- */
210
- this.onDataLoadedObservable = new Observable();
211
- /**
212
- * An event triggered when a camera is created
213
- */
214
- this.onNewCameraAddedObservable = new Observable();
215
- /**
216
- * An event triggered when a camera is removed
217
- */
218
- this.onCameraRemovedObservable = new Observable();
219
- /**
220
- * An event triggered when a light is created
221
- */
222
- this.onNewLightAddedObservable = new Observable();
223
- /**
224
- * An event triggered when a light is removed
225
- */
226
- this.onLightRemovedObservable = new Observable();
227
- /**
228
- * An event triggered when a geometry is created
229
- */
230
- this.onNewGeometryAddedObservable = new Observable();
231
- /**
232
- * An event triggered when a geometry is removed
233
- */
234
- this.onGeometryRemovedObservable = new Observable();
235
- /**
236
- * An event triggered when a transform node is created
237
- */
238
- this.onNewTransformNodeAddedObservable = new Observable();
239
- /**
240
- * An event triggered when a transform node is removed
241
- */
242
- this.onTransformNodeRemovedObservable = new Observable();
243
- /**
244
- * An event triggered when a mesh is created
245
- */
246
- this.onNewMeshAddedObservable = new Observable();
247
- /**
248
- * An event triggered when a mesh is removed
249
- */
250
- this.onMeshRemovedObservable = new Observable();
251
- /**
252
- * An event triggered when a skeleton is created
253
- */
254
- this.onNewSkeletonAddedObservable = new Observable();
255
- /**
256
- * An event triggered when a skeleton is removed
257
- */
258
- this.onSkeletonRemovedObservable = new Observable();
259
- /**
260
- * An event triggered when a material is created
261
- */
262
- this.onNewMaterialAddedObservable = new Observable();
263
- /**
264
- * An event triggered when a multi material is created
265
- */
266
- this.onNewMultiMaterialAddedObservable = new Observable();
267
- /**
268
- * An event triggered when a material is removed
269
- */
270
- this.onMaterialRemovedObservable = new Observable();
271
- /**
272
- * An event triggered when a multi material is removed
273
- */
274
- this.onMultiMaterialRemovedObservable = new Observable();
275
- /**
276
- * An event triggered when a texture is created
277
- */
278
- this.onNewTextureAddedObservable = new Observable();
279
- /**
280
- * An event triggered when a texture is removed
281
- */
282
- this.onTextureRemovedObservable = new Observable();
283
- /**
284
- * An event triggered when render targets are about to be rendered
285
- * Can happen multiple times per frame.
286
- */
287
- this.onBeforeRenderTargetsRenderObservable = new Observable();
288
- /**
289
- * An event triggered when render targets were rendered.
290
- * Can happen multiple times per frame.
291
- */
292
- this.onAfterRenderTargetsRenderObservable = new Observable();
293
- /**
294
- * An event triggered before calculating deterministic simulation step
295
- */
296
- this.onBeforeStepObservable = new Observable();
297
- /**
298
- * An event triggered after calculating deterministic simulation step
299
- */
300
- this.onAfterStepObservable = new Observable();
301
- /**
302
- * An event triggered when the activeCamera property is updated
303
- */
304
- this.onActiveCameraChanged = new Observable();
305
- /**
306
- * An event triggered when the activeCameras property is updated
307
- */
308
- this.onActiveCamerasChanged = new Observable();
309
- /**
310
- * This Observable will be triggered before rendering each renderingGroup of each rendered camera.
311
- * The RenderingGroupInfo class contains all the information about the context in which the observable is called
312
- * If you wish to register an Observer only for a given set of renderingGroup, use the mask with a combination of the renderingGroup index elevated to the power of two (1 for renderingGroup 0, 2 for renderingrOup1, 4 for 2 and 8 for 3)
313
- */
314
- this.onBeforeRenderingGroupObservable = new Observable();
315
- /**
316
- * This Observable will be triggered after rendering each renderingGroup of each rendered camera.
317
- * The RenderingGroupInfo class contains all the information about the context in which the observable is called
318
- * If you wish to register an Observer only for a given set of renderingGroup, use the mask with a combination of the renderingGroup index elevated to the power of two (1 for renderingGroup 0, 2 for renderingrOup1, 4 for 2 and 8 for 3)
319
- */
320
- this.onAfterRenderingGroupObservable = new Observable();
321
- /**
322
- * This Observable will when a mesh has been imported into the scene.
323
- */
324
- this.onMeshImportedObservable = new Observable();
325
- /**
326
- * This Observable will when an animation file has been imported into the scene.
327
- */
328
- this.onAnimationFileImportedObservable = new Observable();
329
- // Animations
330
- /** @internal */
331
- this._registeredForLateAnimationBindings = new SmartArrayNoDuplicate(256);
332
- /**
333
- * Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer move event occurs.
334
- */
335
- this.skipPointerMovePicking = false;
336
- /**
337
- * Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer down event occurs.
338
- */
339
- this.skipPointerDownPicking = false;
340
- /**
341
- * Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer up event occurs. Off by default.
342
- */
343
- this.skipPointerUpPicking = false;
344
- /**
345
- * This observable event is triggered when any ponter event is triggered. It is registered during Scene.attachControl() and it is called BEFORE the 3D engine process anything (mesh/sprite picking for instance).
346
- * You have the possibility to skip the process and the call to onPointerObservable by setting PointerInfoPre.skipOnPointerObservable to true
347
- */
348
- this.onPrePointerObservable = new Observable();
349
- /**
350
- * Observable event triggered each time an input event is received from the rendering canvas
351
- */
352
- this.onPointerObservable = new Observable();
353
- // Keyboard
354
- /**
355
- * This observable event is triggered when any keyboard event si raised and registered during Scene.attachControl()
356
- * You have the possibility to skip the process and the call to onKeyboardObservable by setting KeyboardInfoPre.skipOnPointerObservable to true
357
- */
358
- this.onPreKeyboardObservable = new Observable();
359
- /**
360
- * Observable event triggered each time an keyboard event is received from the hosting window
361
- */
362
- this.onKeyboardObservable = new Observable();
363
- // Coordinates system
364
- this._useRightHandedSystem = false;
365
- // Deterministic lockstep
366
- this._timeAccumulator = 0;
367
- this._currentStepId = 0;
368
- this._currentInternalStep = 0;
369
- // Fog
370
- this._fogEnabled = true;
371
- this._fogMode = Scene.FOGMODE_NONE;
372
- /**
373
- * Gets or sets the fog color to use
374
- * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
375
- * (Default is Color3(0.2, 0.2, 0.3))
376
- */
377
- this.fogColor = new Color3(0.2, 0.2, 0.3);
378
- /**
379
- * Gets or sets the fog density to use
380
- * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
381
- * (Default is 0.1)
382
- */
383
- this.fogDensity = 0.1;
384
- /**
385
- * Gets or sets the fog start distance to use
386
- * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
387
- * (Default is 0)
388
- */
389
- this.fogStart = 0;
390
- /**
391
- * Gets or sets the fog end distance to use
392
- * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
393
- * (Default is 1000)
394
- */
395
- this.fogEnd = 1000.0;
396
- /**
397
- * Flag indicating if we need to store previous matrices when rendering
398
- */
399
- this.needsPreviousWorldMatrices = false;
400
- // Lights
401
- this._shadowsEnabled = true;
402
- this._lightsEnabled = true;
403
- this._unObserveActiveCameras = null;
404
- // Textures
405
- this._texturesEnabled = true;
406
- // Physics
407
- /**
408
- * Gets or sets a boolean indicating if physic engines are enabled on this scene
409
- */
410
- this.physicsEnabled = true;
411
- // Particles
412
- /**
413
- * Gets or sets a boolean indicating if particles are enabled on this scene
414
- */
415
- this.particlesEnabled = true;
416
- // Sprites
417
- /**
418
- * Gets or sets a boolean indicating if sprites are enabled on this scene
419
- */
420
- this.spritesEnabled = true;
421
- // Skeletons
422
- this._skeletonsEnabled = true;
423
- // Lens flares
424
- /**
425
- * Gets or sets a boolean indicating if lens flares are enabled on this scene
426
- */
427
- this.lensFlaresEnabled = true;
428
- // Collisions
429
- /**
430
- * Gets or sets a boolean indicating if collisions are enabled on this scene
431
- * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions
432
- */
433
- this.collisionsEnabled = true;
434
- /**
435
- * Defines the gravity applied to this scene (used only for collisions)
436
- * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions
437
- */
438
- this.gravity = new Vector3(0, -9.807, 0);
439
- // Postprocesses
440
- /**
441
- * Gets or sets a boolean indicating if postprocesses are enabled on this scene
442
- */
443
- this.postProcessesEnabled = true;
444
- // Customs render targets
445
- /**
446
- * Gets or sets a boolean indicating if render targets are enabled on this scene
447
- */
448
- this.renderTargetsEnabled = true;
449
- /**
450
- * Gets or sets a boolean indicating if next render targets must be dumped as image for debugging purposes
451
- * We recommend not using it and instead rely on Spector.js: http://spector.babylonjs.com
452
- */
453
- this.dumpNextRenderTargets = false;
454
- /**
455
- * The list of user defined render targets added to the scene
456
- */
457
- this.customRenderTargets = new Array();
458
- /**
459
- * Gets the list of meshes imported to the scene through SceneLoader
460
- */
461
- this.importedMeshesFiles = new Array();
462
- // Probes
463
- /**
464
- * Gets or sets a boolean indicating if probes are enabled on this scene
465
- */
466
- this.probesEnabled = true;
467
- this._meshesForIntersections = new SmartArrayNoDuplicate(256);
468
- // Procedural textures
469
- /**
470
- * Gets or sets a boolean indicating if procedural textures are enabled on this scene
471
- */
472
- this.proceduralTexturesEnabled = true;
473
- // Performance counters
474
- this._totalVertices = new PerfCounter();
475
- /** @internal */
476
- this._activeIndices = new PerfCounter();
477
- /** @internal */
478
- this._activeParticles = new PerfCounter();
479
- /** @internal */
480
- this._activeBones = new PerfCounter();
481
- /** @internal */
482
- this._animationTime = 0;
483
- /**
484
- * Gets or sets a general scale for animation speed
485
- * @see https://www.babylonjs-playground.com/#IBU2W7#3
486
- */
487
- this.animationTimeScale = 1;
488
- this._renderId = 0;
489
- this._frameId = 0;
490
- this._executeWhenReadyTimeoutId = null;
491
- this._intermediateRendering = false;
492
- this._defaultFrameBufferCleared = false;
493
- this._viewUpdateFlag = -1;
494
- this._projectionUpdateFlag = -1;
495
- /** @internal */
496
- this._toBeDisposed = new Array(256);
497
- this._activeRequests = new Array();
498
- /** @internal */
499
- this._pendingData = new Array();
500
- this._isDisposed = false;
501
- /**
502
- * Gets or sets a boolean indicating that all submeshes of active meshes must be rendered
503
- * Use this boolean to avoid computing frustum clipping on submeshes (This could help when you are CPU bound)
504
- */
505
- this.dispatchAllSubMeshesOfActiveMeshes = false;
506
- this._activeMeshes = new SmartArray(256);
507
- this._processedMaterials = new SmartArray(256);
508
- this._renderTargets = new SmartArrayNoDuplicate(256);
509
- this._materialsRenderTargets = new SmartArrayNoDuplicate(256);
510
- /** @internal */
511
- this._activeParticleSystems = new SmartArray(256);
512
- this._activeSkeletons = new SmartArrayNoDuplicate(32);
513
- this._softwareSkinnedMeshes = new SmartArrayNoDuplicate(32);
514
- /** @internal */
515
- this._activeAnimatables = new Array();
516
- this._transformMatrix = Matrix.Zero();
517
- /**
518
- * Gets or sets a boolean indicating if lights must be sorted by priority (off by default)
519
- * This is useful if there are more lights that the maximum simulteanous authorized
520
- */
521
- this.requireLightSorting = false;
522
- /**
523
- * @internal
524
- * Backing store of defined scene components.
525
- */
526
- this._components = [];
527
- /**
528
- * @internal
529
- * Backing store of defined scene components.
530
- */
531
- this._serializableComponents = [];
532
- /**
533
- * List of components to register on the next registration step.
534
- */
535
- this._transientComponents = [];
536
- /**
537
- * @internal
538
- * Defines the actions happening before camera updates.
539
- */
540
- this._beforeCameraUpdateStage = Stage.Create();
541
- /**
542
- * @internal
543
- * Defines the actions happening before clear the canvas.
544
- */
545
- this._beforeClearStage = Stage.Create();
546
- /**
547
- * @internal
548
- * Defines the actions happening before clear the canvas.
549
- */
550
- this._beforeRenderTargetClearStage = Stage.Create();
551
- /**
552
- * @internal
553
- * Defines the actions when collecting render targets for the frame.
554
- */
555
- this._gatherRenderTargetsStage = Stage.Create();
556
- /**
557
- * @internal
558
- * Defines the actions happening for one camera in the frame.
559
- */
560
- this._gatherActiveCameraRenderTargetsStage = Stage.Create();
561
- /**
562
- * @internal
563
- * Defines the actions happening during the per mesh ready checks.
564
- */
565
- this._isReadyForMeshStage = Stage.Create();
566
- /**
567
- * @internal
568
- * Defines the actions happening before evaluate active mesh checks.
569
- */
570
- this._beforeEvaluateActiveMeshStage = Stage.Create();
571
- /**
572
- * @internal
573
- * Defines the actions happening during the evaluate sub mesh checks.
574
- */
575
- this._evaluateSubMeshStage = Stage.Create();
576
- /**
577
- * @internal
578
- * Defines the actions happening during the active mesh stage.
579
- */
580
- this._preActiveMeshStage = Stage.Create();
581
- /**
582
- * @internal
583
- * Defines the actions happening during the per camera render target step.
584
- */
585
- this._cameraDrawRenderTargetStage = Stage.Create();
586
- /**
587
- * @internal
588
- * Defines the actions happening just before the active camera is drawing.
589
- */
590
- this._beforeCameraDrawStage = Stage.Create();
591
- /**
592
- * @internal
593
- * Defines the actions happening just before a render target is drawing.
594
- */
595
- this._beforeRenderTargetDrawStage = Stage.Create();
596
- /**
597
- * @internal
598
- * Defines the actions happening just before a rendering group is drawing.
599
- */
600
- this._beforeRenderingGroupDrawStage = Stage.Create();
601
- /**
602
- * @internal
603
- * Defines the actions happening just before a mesh is drawing.
604
- */
605
- this._beforeRenderingMeshStage = Stage.Create();
606
- /**
607
- * @internal
608
- * Defines the actions happening just after a mesh has been drawn.
609
- */
610
- this._afterRenderingMeshStage = Stage.Create();
611
- /**
612
- * @internal
613
- * Defines the actions happening just after a rendering group has been drawn.
614
- */
615
- this._afterRenderingGroupDrawStage = Stage.Create();
616
- /**
617
- * @internal
618
- * Defines the actions happening just after the active camera has been drawn.
619
- */
620
- this._afterCameraDrawStage = Stage.Create();
621
- /**
622
- * @internal
623
- * Defines the actions happening just after the post processing
624
- */
625
- this._afterCameraPostProcessStage = Stage.Create();
626
- /**
627
- * @internal
628
- * Defines the actions happening just after a render target has been drawn.
629
- */
630
- this._afterRenderTargetDrawStage = Stage.Create();
631
- /**
632
- * Defines the actions happening just after the post processing on a render target
633
- */
634
- this._afterRenderTargetPostProcessStage = Stage.Create();
635
- /**
636
- * @internal
637
- * Defines the actions happening just after rendering all cameras and computing intersections.
638
- */
639
- this._afterRenderStage = Stage.Create();
640
- /**
641
- * @internal
642
- * Defines the actions happening when a pointer move event happens.
643
- */
644
- this._pointerMoveStage = Stage.Create();
645
- /**
646
- * @internal
647
- * Defines the actions happening when a pointer down event happens.
648
- */
649
- this._pointerDownStage = Stage.Create();
650
- /**
651
- * @internal
652
- * Defines the actions happening when a pointer up event happens.
653
- */
654
- this._pointerUpStage = Stage.Create();
655
- /**
656
- * an optional map from Geometry Id to Geometry index in the 'geometries' array
657
- */
658
- this._geometriesByUniqueId = null;
659
- this._defaultMeshCandidates = {
660
- data: [],
661
- length: 0
662
- };
663
- this._defaultSubMeshCandidates = {
664
- data: [],
665
- length: 0
666
- };
667
- this._preventFreeActiveMeshesAndRenderingGroups = false;
668
- /** @internal */
669
- this._activeMeshesFrozen = false;
670
- /** @internal */
671
- this._activeMeshesFrozenButKeepClipping = false;
672
- this._skipEvaluateActiveMeshesCompletely = false;
673
- /** @internal */
674
- this._allowPostProcessClearColor = true;
675
- /**
676
- * User updatable function that will return a deterministic frame time when engine is in deterministic lock step mode
677
- */
678
- this.getDeterministicFrameTime = () => {
679
- return this._engine.getTimeStep();
680
- };
681
- /** @internal */
682
- this._registeredActions = 0;
683
- this._blockMaterialDirtyMechanism = false;
684
- /**
685
- * Internal perfCollector instance used for sharing between inspector and playground.
686
- * Marked as protected to allow sharing between prototype extensions, but disallow access at toplevel.
687
- */
688
- this._perfCollector = null;
689
- this.activeCameras = new Array();
690
- const fullOptions = {
691
- useGeometryUniqueIdsMap: true,
692
- useMaterialMeshMap: true,
693
- useClonedMeshMap: true,
694
- virtual: false,
695
- ...options
696
- };
697
- this._engine = engine || EngineStore.LastCreatedEngine;
698
- if (!fullOptions.virtual) {
699
- EngineStore._LastCreatedScene = this;
700
- this._engine.scenes.push(this);
701
- }
702
- else {
703
- this._engine._virtualScenes.push(this);
704
- }
705
- this._uid = null;
706
- this._renderingManager = new RenderingManager(this);
707
- if (PostProcessManager) {
708
- this.postProcessManager = new PostProcessManager(this);
709
- }
710
- if (IsWindowObjectExist()) {
711
- this.attachControl();
712
- }
713
- // Uniform Buffer
714
- this._createUbo();
715
- // Default Image processing definition
716
- if (ImageProcessingConfiguration) {
717
- this._imageProcessingConfiguration = new ImageProcessingConfiguration();
718
- }
719
- this.setDefaultCandidateProviders();
720
- if (fullOptions.useGeometryUniqueIdsMap) {
721
- this._geometriesByUniqueId = {};
722
- }
723
- this.useMaterialMeshMap = fullOptions.useMaterialMeshMap;
724
- this.useClonedMeshMap = fullOptions.useClonedMeshMap;
725
- if (!options || !options.virtual) {
726
- this._engine.onNewSceneAddedObservable.notifyObservers(this);
727
- }
728
- }
729
- /**
730
- * Factory used to create the default material.
731
- * @param scene The scene to create the material for
732
- * @returns The default material
46
+ * Factory used to create the default material.
47
+ * @param scene The scene to create the material for
48
+ * @returns The default material
733
49
  */
734
50
  static DefaultMaterialFactory(scene) {
735
51
  throw _WarnImport("StandardMaterial");
@@ -1098,103 +414,787 @@ export class Scene extends AbstractScene {
1098
414
  this._activeCamera = value;
1099
415
  this.onActiveCameraChanged.notifyObservers(this);
1100
416
  }
1101
- /** The default material used on meshes when no material is affected */
1102
- get defaultMaterial() {
1103
- if (!this._defaultMaterial) {
1104
- this._defaultMaterial = Scene.DefaultMaterialFactory(this);
417
+ /** The default material used on meshes when no material is affected */
418
+ get defaultMaterial() {
419
+ if (!this._defaultMaterial) {
420
+ this._defaultMaterial = Scene.DefaultMaterialFactory(this);
421
+ }
422
+ return this._defaultMaterial;
423
+ }
424
+ /** The default material used on meshes when no material is affected */
425
+ set defaultMaterial(value) {
426
+ this._defaultMaterial = value;
427
+ }
428
+ /**
429
+ * Gets or sets a boolean indicating if textures are enabled on this scene
430
+ */
431
+ set texturesEnabled(value) {
432
+ if (this._texturesEnabled === value) {
433
+ return;
434
+ }
435
+ this._texturesEnabled = value;
436
+ this.markAllMaterialsAsDirty(1);
437
+ }
438
+ get texturesEnabled() {
439
+ return this._texturesEnabled;
440
+ }
441
+ /**
442
+ * Gets or sets a boolean indicating if skeletons are enabled on this scene
443
+ */
444
+ set skeletonsEnabled(value) {
445
+ if (this._skeletonsEnabled === value) {
446
+ return;
447
+ }
448
+ this._skeletonsEnabled = value;
449
+ this.markAllMaterialsAsDirty(8);
450
+ }
451
+ get skeletonsEnabled() {
452
+ return this._skeletonsEnabled;
453
+ }
454
+ /** @internal */
455
+ get collisionCoordinator() {
456
+ if (!this._collisionCoordinator) {
457
+ this._collisionCoordinator = Scene.CollisionCoordinatorFactory();
458
+ this._collisionCoordinator.init(this);
459
+ }
460
+ return this._collisionCoordinator;
461
+ }
462
+ /**
463
+ * Gets the scene's rendering manager
464
+ */
465
+ get renderingManager() {
466
+ return this._renderingManager;
467
+ }
468
+ /**
469
+ * Gets the list of frustum planes (built from the active camera)
470
+ */
471
+ get frustumPlanes() {
472
+ return this._frustumPlanes;
473
+ }
474
+ /**
475
+ * Registers the transient components if needed.
476
+ */
477
+ _registerTransientComponents() {
478
+ // Register components that have been associated lately to the scene.
479
+ if (this._transientComponents.length > 0) {
480
+ for (const component of this._transientComponents) {
481
+ component.register();
482
+ }
483
+ this._transientComponents.length = 0;
484
+ }
485
+ }
486
+ /**
487
+ * @internal
488
+ * Add a component to the scene.
489
+ * Note that the ccomponent could be registered on th next frame if this is called after
490
+ * the register component stage.
491
+ * @param component Defines the component to add to the scene
492
+ */
493
+ _addComponent(component) {
494
+ this._components.push(component);
495
+ this._transientComponents.push(component);
496
+ const serializableComponent = component;
497
+ if (serializableComponent.addFromContainer && serializableComponent.serialize) {
498
+ this._serializableComponents.push(serializableComponent);
499
+ }
500
+ }
501
+ /**
502
+ * @internal
503
+ * Gets a component from the scene.
504
+ * @param name defines the name of the component to retrieve
505
+ * @returns the component or null if not present
506
+ */
507
+ _getComponent(name) {
508
+ for (const component of this._components) {
509
+ if (component.name === name) {
510
+ return component;
511
+ }
512
+ }
513
+ return null;
514
+ }
515
+ /**
516
+ * Creates a new Scene
517
+ * @param engine defines the engine to use to render this scene
518
+ * @param options defines the scene options
519
+ */
520
+ constructor(engine, options) {
521
+ super();
522
+ // Members
523
+ /** @internal */
524
+ this._inputManager = new InputManager(this);
525
+ /** Define this parameter if you are using multiple cameras and you want to specify which one should be used for pointer position */
526
+ this.cameraToUseForPointers = null;
527
+ /** @internal */
528
+ this._isScene = true;
529
+ /** @internal */
530
+ this._blockEntityCollection = false;
531
+ /**
532
+ * Gets or sets a boolean that indicates if the scene must clear the render buffer before rendering a frame
533
+ */
534
+ this.autoClear = true;
535
+ /**
536
+ * Gets or sets a boolean that indicates if the scene must clear the depth and stencil buffers before rendering a frame
537
+ */
538
+ this.autoClearDepthAndStencil = true;
539
+ /**
540
+ * Defines the color used to clear the render buffer (Default is (0.2, 0.2, 0.3, 1.0))
541
+ */
542
+ this.clearColor = new Color4(0.2, 0.2, 0.3, 1.0);
543
+ /**
544
+ * Defines the color used to simulate the ambient color (Default is (0, 0, 0))
545
+ */
546
+ this.ambientColor = new Color3(0, 0, 0);
547
+ /**
548
+ * Intensity of the environment in all pbr material.
549
+ * This dims or reinforces the IBL lighting overall (reflection and diffuse).
550
+ * As in the majority of the scene they are the same (exception for multi room and so on),
551
+ * this is easier to reference from here than from all the materials.
552
+ */
553
+ this.environmentIntensity = 1;
554
+ this._performancePriority = ScenePerformancePriority.BackwardCompatible;
555
+ this._forceWireframe = false;
556
+ this._skipFrustumClipping = false;
557
+ this._forcePointsCloud = false;
558
+ /**
559
+ * Gets or sets a boolean indicating if animations are enabled
560
+ */
561
+ this.animationsEnabled = true;
562
+ this._animationPropertiesOverride = null;
563
+ /**
564
+ * Gets or sets a boolean indicating if a constant deltatime has to be used
565
+ * This is mostly useful for testing purposes when you do not want the animations to scale with the framerate
566
+ */
567
+ this.useConstantAnimationDeltaTime = false;
568
+ /**
569
+ * Gets or sets a boolean indicating if the scene must keep the meshUnderPointer property updated
570
+ * Please note that it requires to run a ray cast through the scene on every frame
571
+ */
572
+ this.constantlyUpdateMeshUnderPointer = false;
573
+ /**
574
+ * Defines the HTML cursor to use when hovering over interactive elements
575
+ */
576
+ this.hoverCursor = "pointer";
577
+ /**
578
+ * Defines the HTML default cursor to use (empty by default)
579
+ */
580
+ this.defaultCursor = "";
581
+ /**
582
+ * Defines whether cursors are handled by the scene.
583
+ */
584
+ this.doNotHandleCursors = false;
585
+ /**
586
+ * This is used to call preventDefault() on pointer down
587
+ * in order to block unwanted artifacts like system double clicks
588
+ */
589
+ this.preventDefaultOnPointerDown = true;
590
+ /**
591
+ * This is used to call preventDefault() on pointer up
592
+ * in order to block unwanted artifacts like system double clicks
593
+ */
594
+ this.preventDefaultOnPointerUp = true;
595
+ // Metadata
596
+ /**
597
+ * Gets or sets user defined metadata
598
+ */
599
+ this.metadata = null;
600
+ /**
601
+ * For internal use only. Please do not use.
602
+ */
603
+ this.reservedDataStore = null;
604
+ /**
605
+ * Use this array to add regular expressions used to disable offline support for specific urls
606
+ */
607
+ this.disableOfflineSupportExceptionRules = new Array();
608
+ /**
609
+ * An event triggered when the scene is disposed.
610
+ */
611
+ this.onDisposeObservable = new Observable();
612
+ this._onDisposeObserver = null;
613
+ /**
614
+ * An event triggered before rendering the scene (right after animations and physics)
615
+ */
616
+ this.onBeforeRenderObservable = new Observable();
617
+ this._onBeforeRenderObserver = null;
618
+ /**
619
+ * An event triggered after rendering the scene
620
+ */
621
+ this.onAfterRenderObservable = new Observable();
622
+ /**
623
+ * An event triggered after rendering the scene for an active camera (When scene.render is called this will be called after each camera)
624
+ * This is triggered for each "sub" camera in a Camera Rig unlike onAfterCameraRenderObservable
625
+ */
626
+ this.onAfterRenderCameraObservable = new Observable();
627
+ this._onAfterRenderObserver = null;
628
+ /**
629
+ * An event triggered before animating the scene
630
+ */
631
+ this.onBeforeAnimationsObservable = new Observable();
632
+ /**
633
+ * An event triggered after animations processing
634
+ */
635
+ this.onAfterAnimationsObservable = new Observable();
636
+ /**
637
+ * An event triggered before draw calls are ready to be sent
638
+ */
639
+ this.onBeforeDrawPhaseObservable = new Observable();
640
+ /**
641
+ * An event triggered after draw calls have been sent
642
+ */
643
+ this.onAfterDrawPhaseObservable = new Observable();
644
+ /**
645
+ * An event triggered when the scene is ready
646
+ */
647
+ this.onReadyObservable = new Observable();
648
+ /**
649
+ * An event triggered before rendering a camera
650
+ */
651
+ this.onBeforeCameraRenderObservable = new Observable();
652
+ this._onBeforeCameraRenderObserver = null;
653
+ /**
654
+ * An event triggered after rendering a camera
655
+ * This is triggered for the full rig Camera only unlike onAfterRenderCameraObservable
656
+ */
657
+ this.onAfterCameraRenderObservable = new Observable();
658
+ this._onAfterCameraRenderObserver = null;
659
+ /**
660
+ * An event triggered when active meshes evaluation is about to start
661
+ */
662
+ this.onBeforeActiveMeshesEvaluationObservable = new Observable();
663
+ /**
664
+ * An event triggered when active meshes evaluation is done
665
+ */
666
+ this.onAfterActiveMeshesEvaluationObservable = new Observable();
667
+ /**
668
+ * An event triggered when particles rendering is about to start
669
+ * Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
670
+ */
671
+ this.onBeforeParticlesRenderingObservable = new Observable();
672
+ /**
673
+ * An event triggered when particles rendering is done
674
+ * Note: This event can be trigger more than once per frame (because particles can be rendered by render target textures as well)
675
+ */
676
+ this.onAfterParticlesRenderingObservable = new Observable();
677
+ /**
678
+ * An event triggered when SceneLoader.Append or SceneLoader.Load or SceneLoader.ImportMesh were successfully executed
679
+ */
680
+ this.onDataLoadedObservable = new Observable();
681
+ /**
682
+ * An event triggered when a camera is created
683
+ */
684
+ this.onNewCameraAddedObservable = new Observable();
685
+ /**
686
+ * An event triggered when a camera is removed
687
+ */
688
+ this.onCameraRemovedObservable = new Observable();
689
+ /**
690
+ * An event triggered when a light is created
691
+ */
692
+ this.onNewLightAddedObservable = new Observable();
693
+ /**
694
+ * An event triggered when a light is removed
695
+ */
696
+ this.onLightRemovedObservable = new Observable();
697
+ /**
698
+ * An event triggered when a geometry is created
699
+ */
700
+ this.onNewGeometryAddedObservable = new Observable();
701
+ /**
702
+ * An event triggered when a geometry is removed
703
+ */
704
+ this.onGeometryRemovedObservable = new Observable();
705
+ /**
706
+ * An event triggered when a transform node is created
707
+ */
708
+ this.onNewTransformNodeAddedObservable = new Observable();
709
+ /**
710
+ * An event triggered when a transform node is removed
711
+ */
712
+ this.onTransformNodeRemovedObservable = new Observable();
713
+ /**
714
+ * An event triggered when a mesh is created
715
+ */
716
+ this.onNewMeshAddedObservable = new Observable();
717
+ /**
718
+ * An event triggered when a mesh is removed
719
+ */
720
+ this.onMeshRemovedObservable = new Observable();
721
+ /**
722
+ * An event triggered when a skeleton is created
723
+ */
724
+ this.onNewSkeletonAddedObservable = new Observable();
725
+ /**
726
+ * An event triggered when a skeleton is removed
727
+ */
728
+ this.onSkeletonRemovedObservable = new Observable();
729
+ /**
730
+ * An event triggered when a material is created
731
+ */
732
+ this.onNewMaterialAddedObservable = new Observable();
733
+ /**
734
+ * An event triggered when a multi material is created
735
+ */
736
+ this.onNewMultiMaterialAddedObservable = new Observable();
737
+ /**
738
+ * An event triggered when a material is removed
739
+ */
740
+ this.onMaterialRemovedObservable = new Observable();
741
+ /**
742
+ * An event triggered when a multi material is removed
743
+ */
744
+ this.onMultiMaterialRemovedObservable = new Observable();
745
+ /**
746
+ * An event triggered when a texture is created
747
+ */
748
+ this.onNewTextureAddedObservable = new Observable();
749
+ /**
750
+ * An event triggered when a texture is removed
751
+ */
752
+ this.onTextureRemovedObservable = new Observable();
753
+ /**
754
+ * An event triggered when render targets are about to be rendered
755
+ * Can happen multiple times per frame.
756
+ */
757
+ this.onBeforeRenderTargetsRenderObservable = new Observable();
758
+ /**
759
+ * An event triggered when render targets were rendered.
760
+ * Can happen multiple times per frame.
761
+ */
762
+ this.onAfterRenderTargetsRenderObservable = new Observable();
763
+ /**
764
+ * An event triggered before calculating deterministic simulation step
765
+ */
766
+ this.onBeforeStepObservable = new Observable();
767
+ /**
768
+ * An event triggered after calculating deterministic simulation step
769
+ */
770
+ this.onAfterStepObservable = new Observable();
771
+ /**
772
+ * An event triggered when the activeCamera property is updated
773
+ */
774
+ this.onActiveCameraChanged = new Observable();
775
+ /**
776
+ * An event triggered when the activeCameras property is updated
777
+ */
778
+ this.onActiveCamerasChanged = new Observable();
779
+ /**
780
+ * This Observable will be triggered before rendering each renderingGroup of each rendered camera.
781
+ * The RenderingGroupInfo class contains all the information about the context in which the observable is called
782
+ * If you wish to register an Observer only for a given set of renderingGroup, use the mask with a combination of the renderingGroup index elevated to the power of two (1 for renderingGroup 0, 2 for renderingrOup1, 4 for 2 and 8 for 3)
783
+ */
784
+ this.onBeforeRenderingGroupObservable = new Observable();
785
+ /**
786
+ * This Observable will be triggered after rendering each renderingGroup of each rendered camera.
787
+ * The RenderingGroupInfo class contains all the information about the context in which the observable is called
788
+ * If you wish to register an Observer only for a given set of renderingGroup, use the mask with a combination of the renderingGroup index elevated to the power of two (1 for renderingGroup 0, 2 for renderingrOup1, 4 for 2 and 8 for 3)
789
+ */
790
+ this.onAfterRenderingGroupObservable = new Observable();
791
+ /**
792
+ * This Observable will when a mesh has been imported into the scene.
793
+ */
794
+ this.onMeshImportedObservable = new Observable();
795
+ /**
796
+ * This Observable will when an animation file has been imported into the scene.
797
+ */
798
+ this.onAnimationFileImportedObservable = new Observable();
799
+ // Animations
800
+ /** @internal */
801
+ this._registeredForLateAnimationBindings = new SmartArrayNoDuplicate(256);
802
+ /**
803
+ * Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer move event occurs.
804
+ */
805
+ this.skipPointerMovePicking = false;
806
+ /**
807
+ * Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer down event occurs.
808
+ */
809
+ this.skipPointerDownPicking = false;
810
+ /**
811
+ * Gets or sets a boolean indicating if the user want to entirely skip the picking phase when a pointer up event occurs. Off by default.
812
+ */
813
+ this.skipPointerUpPicking = false;
814
+ /**
815
+ * This observable event is triggered when any ponter event is triggered. It is registered during Scene.attachControl() and it is called BEFORE the 3D engine process anything (mesh/sprite picking for instance).
816
+ * You have the possibility to skip the process and the call to onPointerObservable by setting PointerInfoPre.skipOnPointerObservable to true
817
+ */
818
+ this.onPrePointerObservable = new Observable();
819
+ /**
820
+ * Observable event triggered each time an input event is received from the rendering canvas
821
+ */
822
+ this.onPointerObservable = new Observable();
823
+ // Keyboard
824
+ /**
825
+ * This observable event is triggered when any keyboard event si raised and registered during Scene.attachControl()
826
+ * You have the possibility to skip the process and the call to onKeyboardObservable by setting KeyboardInfoPre.skipOnPointerObservable to true
827
+ */
828
+ this.onPreKeyboardObservable = new Observable();
829
+ /**
830
+ * Observable event triggered each time an keyboard event is received from the hosting window
831
+ */
832
+ this.onKeyboardObservable = new Observable();
833
+ // Coordinates system
834
+ this._useRightHandedSystem = false;
835
+ // Deterministic lockstep
836
+ this._timeAccumulator = 0;
837
+ this._currentStepId = 0;
838
+ this._currentInternalStep = 0;
839
+ // Fog
840
+ this._fogEnabled = true;
841
+ this._fogMode = Scene.FOGMODE_NONE;
842
+ /**
843
+ * Gets or sets the fog color to use
844
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
845
+ * (Default is Color3(0.2, 0.2, 0.3))
846
+ */
847
+ this.fogColor = new Color3(0.2, 0.2, 0.3);
848
+ /**
849
+ * Gets or sets the fog density to use
850
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
851
+ * (Default is 0.1)
852
+ */
853
+ this.fogDensity = 0.1;
854
+ /**
855
+ * Gets or sets the fog start distance to use
856
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
857
+ * (Default is 0)
858
+ */
859
+ this.fogStart = 0;
860
+ /**
861
+ * Gets or sets the fog end distance to use
862
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/environment/environment_introduction#fog
863
+ * (Default is 1000)
864
+ */
865
+ this.fogEnd = 1000.0;
866
+ /**
867
+ * Flag indicating if we need to store previous matrices when rendering
868
+ */
869
+ this.needsPreviousWorldMatrices = false;
870
+ // Lights
871
+ this._shadowsEnabled = true;
872
+ this._lightsEnabled = true;
873
+ this._unObserveActiveCameras = null;
874
+ // Textures
875
+ this._texturesEnabled = true;
876
+ // Physics
877
+ /**
878
+ * Gets or sets a boolean indicating if physic engines are enabled on this scene
879
+ */
880
+ this.physicsEnabled = true;
881
+ // Particles
882
+ /**
883
+ * Gets or sets a boolean indicating if particles are enabled on this scene
884
+ */
885
+ this.particlesEnabled = true;
886
+ // Sprites
887
+ /**
888
+ * Gets or sets a boolean indicating if sprites are enabled on this scene
889
+ */
890
+ this.spritesEnabled = true;
891
+ // Skeletons
892
+ this._skeletonsEnabled = true;
893
+ // Lens flares
894
+ /**
895
+ * Gets or sets a boolean indicating if lens flares are enabled on this scene
896
+ */
897
+ this.lensFlaresEnabled = true;
898
+ // Collisions
899
+ /**
900
+ * Gets or sets a boolean indicating if collisions are enabled on this scene
901
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions
902
+ */
903
+ this.collisionsEnabled = true;
904
+ /**
905
+ * Defines the gravity applied to this scene (used only for collisions)
906
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/cameras/camera_collisions
907
+ */
908
+ this.gravity = new Vector3(0, -9.807, 0);
909
+ // Postprocesses
910
+ /**
911
+ * Gets or sets a boolean indicating if postprocesses are enabled on this scene
912
+ */
913
+ this.postProcessesEnabled = true;
914
+ // Customs render targets
915
+ /**
916
+ * Gets or sets a boolean indicating if render targets are enabled on this scene
917
+ */
918
+ this.renderTargetsEnabled = true;
919
+ /**
920
+ * Gets or sets a boolean indicating if next render targets must be dumped as image for debugging purposes
921
+ * We recommend not using it and instead rely on Spector.js: http://spector.babylonjs.com
922
+ */
923
+ this.dumpNextRenderTargets = false;
924
+ /**
925
+ * The list of user defined render targets added to the scene
926
+ */
927
+ this.customRenderTargets = new Array();
928
+ /**
929
+ * Gets the list of meshes imported to the scene through SceneLoader
930
+ */
931
+ this.importedMeshesFiles = new Array();
932
+ // Probes
933
+ /**
934
+ * Gets or sets a boolean indicating if probes are enabled on this scene
935
+ */
936
+ this.probesEnabled = true;
937
+ this._meshesForIntersections = new SmartArrayNoDuplicate(256);
938
+ // Procedural textures
939
+ /**
940
+ * Gets or sets a boolean indicating if procedural textures are enabled on this scene
941
+ */
942
+ this.proceduralTexturesEnabled = true;
943
+ // Performance counters
944
+ this._totalVertices = new PerfCounter();
945
+ /** @internal */
946
+ this._activeIndices = new PerfCounter();
947
+ /** @internal */
948
+ this._activeParticles = new PerfCounter();
949
+ /** @internal */
950
+ this._activeBones = new PerfCounter();
951
+ /** @internal */
952
+ this._animationTime = 0;
953
+ /**
954
+ * Gets or sets a general scale for animation speed
955
+ * @see https://www.babylonjs-playground.com/#IBU2W7#3
956
+ */
957
+ this.animationTimeScale = 1;
958
+ this._renderId = 0;
959
+ this._frameId = 0;
960
+ this._executeWhenReadyTimeoutId = null;
961
+ this._intermediateRendering = false;
962
+ this._defaultFrameBufferCleared = false;
963
+ this._viewUpdateFlag = -1;
964
+ this._projectionUpdateFlag = -1;
965
+ /** @internal */
966
+ this._toBeDisposed = new Array(256);
967
+ this._activeRequests = new Array();
968
+ /** @internal */
969
+ this._pendingData = new Array();
970
+ this._isDisposed = false;
971
+ /**
972
+ * Gets or sets a boolean indicating that all submeshes of active meshes must be rendered
973
+ * Use this boolean to avoid computing frustum clipping on submeshes (This could help when you are CPU bound)
974
+ */
975
+ this.dispatchAllSubMeshesOfActiveMeshes = false;
976
+ this._activeMeshes = new SmartArray(256);
977
+ this._processedMaterials = new SmartArray(256);
978
+ this._renderTargets = new SmartArrayNoDuplicate(256);
979
+ this._materialsRenderTargets = new SmartArrayNoDuplicate(256);
980
+ /** @internal */
981
+ this._activeParticleSystems = new SmartArray(256);
982
+ this._activeSkeletons = new SmartArrayNoDuplicate(32);
983
+ this._softwareSkinnedMeshes = new SmartArrayNoDuplicate(32);
984
+ /** @internal */
985
+ this._activeAnimatables = new Array();
986
+ this._transformMatrix = Matrix.Zero();
987
+ /**
988
+ * Gets or sets a boolean indicating if lights must be sorted by priority (off by default)
989
+ * This is useful if there are more lights that the maximum simulteanous authorized
990
+ */
991
+ this.requireLightSorting = false;
992
+ /**
993
+ * @internal
994
+ * Backing store of defined scene components.
995
+ */
996
+ this._components = [];
997
+ /**
998
+ * @internal
999
+ * Backing store of defined scene components.
1000
+ */
1001
+ this._serializableComponents = [];
1002
+ /**
1003
+ * List of components to register on the next registration step.
1004
+ */
1005
+ this._transientComponents = [];
1006
+ /**
1007
+ * @internal
1008
+ * Defines the actions happening before camera updates.
1009
+ */
1010
+ this._beforeCameraUpdateStage = Stage.Create();
1011
+ /**
1012
+ * @internal
1013
+ * Defines the actions happening before clear the canvas.
1014
+ */
1015
+ this._beforeClearStage = Stage.Create();
1016
+ /**
1017
+ * @internal
1018
+ * Defines the actions happening before clear the canvas.
1019
+ */
1020
+ this._beforeRenderTargetClearStage = Stage.Create();
1021
+ /**
1022
+ * @internal
1023
+ * Defines the actions when collecting render targets for the frame.
1024
+ */
1025
+ this._gatherRenderTargetsStage = Stage.Create();
1026
+ /**
1027
+ * @internal
1028
+ * Defines the actions happening for one camera in the frame.
1029
+ */
1030
+ this._gatherActiveCameraRenderTargetsStage = Stage.Create();
1031
+ /**
1032
+ * @internal
1033
+ * Defines the actions happening during the per mesh ready checks.
1034
+ */
1035
+ this._isReadyForMeshStage = Stage.Create();
1036
+ /**
1037
+ * @internal
1038
+ * Defines the actions happening before evaluate active mesh checks.
1039
+ */
1040
+ this._beforeEvaluateActiveMeshStage = Stage.Create();
1041
+ /**
1042
+ * @internal
1043
+ * Defines the actions happening during the evaluate sub mesh checks.
1044
+ */
1045
+ this._evaluateSubMeshStage = Stage.Create();
1046
+ /**
1047
+ * @internal
1048
+ * Defines the actions happening during the active mesh stage.
1049
+ */
1050
+ this._preActiveMeshStage = Stage.Create();
1051
+ /**
1052
+ * @internal
1053
+ * Defines the actions happening during the per camera render target step.
1054
+ */
1055
+ this._cameraDrawRenderTargetStage = Stage.Create();
1056
+ /**
1057
+ * @internal
1058
+ * Defines the actions happening just before the active camera is drawing.
1059
+ */
1060
+ this._beforeCameraDrawStage = Stage.Create();
1061
+ /**
1062
+ * @internal
1063
+ * Defines the actions happening just before a render target is drawing.
1064
+ */
1065
+ this._beforeRenderTargetDrawStage = Stage.Create();
1066
+ /**
1067
+ * @internal
1068
+ * Defines the actions happening just before a rendering group is drawing.
1069
+ */
1070
+ this._beforeRenderingGroupDrawStage = Stage.Create();
1071
+ /**
1072
+ * @internal
1073
+ * Defines the actions happening just before a mesh is drawing.
1074
+ */
1075
+ this._beforeRenderingMeshStage = Stage.Create();
1076
+ /**
1077
+ * @internal
1078
+ * Defines the actions happening just after a mesh has been drawn.
1079
+ */
1080
+ this._afterRenderingMeshStage = Stage.Create();
1081
+ /**
1082
+ * @internal
1083
+ * Defines the actions happening just after a rendering group has been drawn.
1084
+ */
1085
+ this._afterRenderingGroupDrawStage = Stage.Create();
1086
+ /**
1087
+ * @internal
1088
+ * Defines the actions happening just after the active camera has been drawn.
1089
+ */
1090
+ this._afterCameraDrawStage = Stage.Create();
1091
+ /**
1092
+ * @internal
1093
+ * Defines the actions happening just after the post processing
1094
+ */
1095
+ this._afterCameraPostProcessStage = Stage.Create();
1096
+ /**
1097
+ * @internal
1098
+ * Defines the actions happening just after a render target has been drawn.
1099
+ */
1100
+ this._afterRenderTargetDrawStage = Stage.Create();
1101
+ /**
1102
+ * Defines the actions happening just after the post processing on a render target
1103
+ */
1104
+ this._afterRenderTargetPostProcessStage = Stage.Create();
1105
+ /**
1106
+ * @internal
1107
+ * Defines the actions happening just after rendering all cameras and computing intersections.
1108
+ */
1109
+ this._afterRenderStage = Stage.Create();
1110
+ /**
1111
+ * @internal
1112
+ * Defines the actions happening when a pointer move event happens.
1113
+ */
1114
+ this._pointerMoveStage = Stage.Create();
1115
+ /**
1116
+ * @internal
1117
+ * Defines the actions happening when a pointer down event happens.
1118
+ */
1119
+ this._pointerDownStage = Stage.Create();
1120
+ /**
1121
+ * @internal
1122
+ * Defines the actions happening when a pointer up event happens.
1123
+ */
1124
+ this._pointerUpStage = Stage.Create();
1125
+ /**
1126
+ * an optional map from Geometry Id to Geometry index in the 'geometries' array
1127
+ */
1128
+ this._geometriesByUniqueId = null;
1129
+ this._defaultMeshCandidates = {
1130
+ data: [],
1131
+ length: 0
1132
+ };
1133
+ this._defaultSubMeshCandidates = {
1134
+ data: [],
1135
+ length: 0
1136
+ };
1137
+ this._preventFreeActiveMeshesAndRenderingGroups = false;
1138
+ /** @internal */
1139
+ this._activeMeshesFrozen = false;
1140
+ /** @internal */
1141
+ this._activeMeshesFrozenButKeepClipping = false;
1142
+ this._skipEvaluateActiveMeshesCompletely = false;
1143
+ /** @internal */
1144
+ this._allowPostProcessClearColor = true;
1145
+ /**
1146
+ * User updatable function that will return a deterministic frame time when engine is in deterministic lock step mode
1147
+ */
1148
+ this.getDeterministicFrameTime = () => {
1149
+ return this._engine.getTimeStep();
1150
+ };
1151
+ /** @internal */
1152
+ this._registeredActions = 0;
1153
+ this._blockMaterialDirtyMechanism = false;
1154
+ /**
1155
+ * Internal perfCollector instance used for sharing between inspector and playground.
1156
+ * Marked as protected to allow sharing between prototype extensions, but disallow access at toplevel.
1157
+ */
1158
+ this._perfCollector = null;
1159
+ this.activeCameras = new Array();
1160
+ const fullOptions = {
1161
+ useGeometryUniqueIdsMap: true,
1162
+ useMaterialMeshMap: true,
1163
+ useClonedMeshMap: true,
1164
+ virtual: false,
1165
+ ...options
1166
+ };
1167
+ this._engine = engine || EngineStore.LastCreatedEngine;
1168
+ if (!fullOptions.virtual) {
1169
+ EngineStore._LastCreatedScene = this;
1170
+ this._engine.scenes.push(this);
1105
1171
  }
1106
- return this._defaultMaterial;
1107
- }
1108
- /** The default material used on meshes when no material is affected */
1109
- set defaultMaterial(value) {
1110
- this._defaultMaterial = value;
1111
- }
1112
- /**
1113
- * Gets or sets a boolean indicating if textures are enabled on this scene
1114
- */
1115
- set texturesEnabled(value) {
1116
- if (this._texturesEnabled === value) {
1117
- return;
1172
+ else {
1173
+ this._engine._virtualScenes.push(this);
1118
1174
  }
1119
- this._texturesEnabled = value;
1120
- this.markAllMaterialsAsDirty(1);
1121
- }
1122
- get texturesEnabled() {
1123
- return this._texturesEnabled;
1124
- }
1125
- /**
1126
- * Gets or sets a boolean indicating if skeletons are enabled on this scene
1127
- */
1128
- set skeletonsEnabled(value) {
1129
- if (this._skeletonsEnabled === value) {
1130
- return;
1175
+ this._uid = null;
1176
+ this._renderingManager = new RenderingManager(this);
1177
+ if (PostProcessManager) {
1178
+ this.postProcessManager = new PostProcessManager(this);
1131
1179
  }
1132
- this._skeletonsEnabled = value;
1133
- this.markAllMaterialsAsDirty(8);
1134
- }
1135
- get skeletonsEnabled() {
1136
- return this._skeletonsEnabled;
1137
- }
1138
- /** @internal */
1139
- get collisionCoordinator() {
1140
- if (!this._collisionCoordinator) {
1141
- this._collisionCoordinator = Scene.CollisionCoordinatorFactory();
1142
- this._collisionCoordinator.init(this);
1180
+ if (IsWindowObjectExist()) {
1181
+ this.attachControl();
1143
1182
  }
1144
- return this._collisionCoordinator;
1145
- }
1146
- /**
1147
- * Gets the scene's rendering manager
1148
- */
1149
- get renderingManager() {
1150
- return this._renderingManager;
1151
- }
1152
- /**
1153
- * Gets the list of frustum planes (built from the active camera)
1154
- */
1155
- get frustumPlanes() {
1156
- return this._frustumPlanes;
1157
- }
1158
- /**
1159
- * Registers the transient components if needed.
1160
- */
1161
- _registerTransientComponents() {
1162
- // Register components that have been associated lately to the scene.
1163
- if (this._transientComponents.length > 0) {
1164
- for (const component of this._transientComponents) {
1165
- component.register();
1166
- }
1167
- this._transientComponents.length = 0;
1183
+ // Uniform Buffer
1184
+ this._createUbo();
1185
+ // Default Image processing definition
1186
+ if (ImageProcessingConfiguration) {
1187
+ this._imageProcessingConfiguration = new ImageProcessingConfiguration();
1168
1188
  }
1169
- }
1170
- /**
1171
- * @internal
1172
- * Add a component to the scene.
1173
- * Note that the ccomponent could be registered on th next frame if this is called after
1174
- * the register component stage.
1175
- * @param component Defines the component to add to the scene
1176
- */
1177
- _addComponent(component) {
1178
- this._components.push(component);
1179
- this._transientComponents.push(component);
1180
- const serializableComponent = component;
1181
- if (serializableComponent.addFromContainer && serializableComponent.serialize) {
1182
- this._serializableComponents.push(serializableComponent);
1189
+ this.setDefaultCandidateProviders();
1190
+ if (fullOptions.useGeometryUniqueIdsMap) {
1191
+ this._geometriesByUniqueId = {};
1183
1192
  }
1184
- }
1185
- /**
1186
- * @internal
1187
- * Gets a component from the scene.
1188
- * @param name defines the name of the component to retrieve
1189
- * @returns the component or null if not present
1190
- */
1191
- _getComponent(name) {
1192
- for (const component of this._components) {
1193
- if (component.name === name) {
1194
- return component;
1195
- }
1193
+ this.useMaterialMeshMap = fullOptions.useMaterialMeshMap;
1194
+ this.useClonedMeshMap = fullOptions.useClonedMeshMap;
1195
+ if (!options || !options.virtual) {
1196
+ this._engine.onNewSceneAddedObservable.notifyObservers(this);
1196
1197
  }
1197
- return null;
1198
1198
  }
1199
1199
  /**
1200
1200
  * Gets a string identifying the name of the class