@onerjs/core 8.53.5 → 8.53.6

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 (841) hide show
  1. package/Animations/animationGroup.d.ts +0 -1
  2. package/Animations/animationGroup.js +0 -1
  3. package/Animations/animationGroup.js.map +1 -1
  4. package/Animations/animationGroup.pure.js +2 -0
  5. package/Animations/animationGroup.pure.js.map +1 -1
  6. package/Animations/runtimeAnimation.js +11 -0
  7. package/Animations/runtimeAnimation.js.map +1 -1
  8. package/Audio/audioSceneComponent.pure.js +1 -1
  9. package/AudioV2/abstractAudio/abstractSound.d.ts +2 -1
  10. package/AudioV2/abstractAudio/abstractSound.js +7 -2
  11. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  12. package/AudioV2/abstractAudio/abstractSoundInstance.d.ts +3 -1
  13. package/AudioV2/abstractAudio/abstractSoundInstance.js.map +1 -1
  14. package/AudioV2/abstractAudio/staticSound.d.ts +6 -0
  15. package/AudioV2/abstractAudio/staticSound.js +17 -1
  16. package/AudioV2/abstractAudio/staticSound.js.map +1 -1
  17. package/AudioV2/abstractAudio/staticSoundInstance.d.ts +4 -2
  18. package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
  19. package/AudioV2/abstractAudio/streamingSound.d.ts +6 -0
  20. package/AudioV2/abstractAudio/streamingSound.js +9 -1
  21. package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
  22. package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -1
  23. package/AudioV2/webAudio/webAudioStaticSound.js +56 -8
  24. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  25. package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -1
  26. package/AudioV2/webAudio/webAudioStreamingSound.js +16 -4
  27. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  28. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +2 -2
  29. package/BakedVertexAnimation/bakedVertexAnimationManager.js +151 -121
  30. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  31. package/Behaviors/Cameras/interpolatingBehavior.d.ts +17 -2
  32. package/Behaviors/Cameras/interpolatingBehavior.js +53 -23
  33. package/Behaviors/Cameras/interpolatingBehavior.js.map +1 -1
  34. package/Bones/bone.pure.js +3 -3
  35. package/Buffers/buffer.pure.js +0 -12
  36. package/Buffers/buffer.pure.js.map +1 -1
  37. package/Cameras/Inputs/BaseCameraMouseWheelInput.js +141 -126
  38. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  39. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +2 -1
  40. package/Cameras/Inputs/BaseCameraPointersInput.js +290 -277
  41. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  42. package/Cameras/Inputs/arcRotateCameraGamepadInput.js +115 -102
  43. package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
  44. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.d.ts +3 -0
  45. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js +334 -273
  46. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  47. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +273 -258
  48. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  49. package/Cameras/Inputs/arcRotateCameraPointersInput.js +237 -213
  50. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  51. package/Cameras/Inputs/flyCameraKeyboardInput.js +199 -168
  52. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  53. package/Cameras/Inputs/flyCameraMouseInput.js +243 -229
  54. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  55. package/Cameras/Inputs/followCameraKeyboardMoveInput.js +311 -266
  56. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  57. package/Cameras/Inputs/followCameraMouseWheelInput.js +139 -119
  58. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  59. package/Cameras/Inputs/followCameraPointersInput.js +239 -203
  60. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  61. package/Cameras/Inputs/freeCameraGamepadInput.js +127 -114
  62. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  63. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js +278 -244
  64. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  65. package/Cameras/Inputs/freeCameraMouseInput.js +216 -202
  66. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  67. package/Cameras/Inputs/freeCameraMouseWheelInput.js +368 -353
  68. package/Cameras/Inputs/freeCameraMouseWheelInput.js.map +1 -1
  69. package/Cameras/Inputs/freeCameraTouchInput.js +185 -172
  70. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  71. package/Cameras/Inputs/geospatialCameraKeyboardInput.d.ts +2 -0
  72. package/Cameras/Inputs/geospatialCameraKeyboardInput.js +291 -246
  73. package/Cameras/Inputs/geospatialCameraKeyboardInput.js.map +1 -1
  74. package/Cameras/Inputs/geospatialCameraPointersInput.d.ts +11 -1
  75. package/Cameras/Inputs/geospatialCameraPointersInput.js +18 -2
  76. package/Cameras/Inputs/geospatialCameraPointersInput.js.map +1 -1
  77. package/Cameras/Inputs/orbitCameraPointersInput.js +112 -96
  78. package/Cameras/Inputs/orbitCameraPointersInput.js.map +1 -1
  79. package/Cameras/VR/vrExperienceHelper.d.ts +0 -2
  80. package/Cameras/VR/vrExperienceHelper.js +0 -2
  81. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  82. package/Cameras/VR/vrExperienceHelper.pure.js +5 -0
  83. package/Cameras/VR/vrExperienceHelper.pure.js.map +1 -1
  84. package/Cameras/arcRotateCamera.pure.js +1559 -1479
  85. package/Cameras/arcRotateCamera.pure.js.map +1 -1
  86. package/Cameras/camera.pure.js +1225 -1178
  87. package/Cameras/camera.pure.js.map +1 -1
  88. package/Cameras/flyCamera.pure.js +369 -351
  89. package/Cameras/flyCamera.pure.js.map +1 -1
  90. package/Cameras/followCamera.pure.js +229 -192
  91. package/Cameras/followCamera.pure.js.map +1 -1
  92. package/Cameras/freeCamera.pure.js +373 -351
  93. package/Cameras/freeCamera.pure.js.map +1 -1
  94. package/Cameras/geospatialCamera.pure.d.ts +30 -7
  95. package/Cameras/geospatialCamera.pure.js +502 -457
  96. package/Cameras/geospatialCamera.pure.js.map +1 -1
  97. package/Cameras/geospatialCameraMovement.js +2 -2
  98. package/Cameras/geospatialCameraMovement.js.map +1 -1
  99. package/Cameras/targetCamera.pure.d.ts +7 -0
  100. package/Cameras/targetCamera.pure.js +550 -509
  101. package/Cameras/targetCamera.pure.js.map +1 -1
  102. package/Cameras/universalCamera.pure.js +98 -85
  103. package/Cameras/universalCamera.pure.js.map +1 -1
  104. package/Collisions/gpuPicker.d.ts +111 -4
  105. package/Collisions/gpuPicker.js +696 -119
  106. package/Collisions/gpuPicker.js.map +1 -1
  107. package/Compute/computeShader.pure.js +372 -355
  108. package/Compute/computeShader.pure.js.map +1 -1
  109. package/Culling/Helper/transformFeedbackBoundingHelper.pure.js +2 -2
  110. package/Decorators/nodeDecorator.d.ts +11 -1
  111. package/Decorators/nodeDecorator.js +43 -6
  112. package/Decorators/nodeDecorator.js.map +1 -1
  113. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js +8 -0
  114. package/Engines/AbstractEngine/abstractEngine.loadFile.pure.js.map +1 -1
  115. package/Engines/Native/nativeHelpers.js +15 -0
  116. package/Engines/Native/nativeHelpers.js.map +1 -1
  117. package/Engines/Native/nativeInterfaces.d.ts +7 -2
  118. package/Engines/Native/nativeInterfaces.js.map +1 -1
  119. package/Engines/Native/nativeRenderTargetWrapper.d.ts +5 -0
  120. package/Engines/Native/nativeRenderTargetWrapper.js +35 -1
  121. package/Engines/Native/nativeRenderTargetWrapper.js.map +1 -1
  122. package/Engines/Processors/shaderProcessor.js +5 -3
  123. package/Engines/Processors/shaderProcessor.js.map +1 -1
  124. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js +16 -3
  125. package/Engines/WebGPU/Extensions/engine.videoTexture.pure.js.map +1 -1
  126. package/Engines/WebGPU/webgpuClearQuad.pure.js +7 -1
  127. package/Engines/WebGPU/webgpuClearQuad.pure.js.map +1 -1
  128. package/Engines/abstractEngine.functions.d.ts +8 -2
  129. package/Engines/abstractEngine.functions.js +12 -4
  130. package/Engines/abstractEngine.functions.js.map +1 -1
  131. package/Engines/abstractEngine.pure.d.ts +20 -1
  132. package/Engines/abstractEngine.pure.js +21 -134
  133. package/Engines/abstractEngine.pure.js.map +1 -1
  134. package/Engines/engine.d.ts +208 -0
  135. package/Engines/engine.pure.js +0 -15
  136. package/Engines/engine.pure.js.map +1 -1
  137. package/Engines/nullEngine.pure.d.ts +66 -0
  138. package/Engines/nullEngine.pure.js +97 -0
  139. package/Engines/nullEngine.pure.js.map +1 -1
  140. package/Engines/thinEngine.pure.d.ts +0 -13
  141. package/Engines/thinEngine.pure.js +4 -23
  142. package/Engines/thinEngine.pure.js.map +1 -1
  143. package/Engines/thinNativeEngine.d.ts +0 -1
  144. package/Engines/thinNativeEngine.js +0 -1
  145. package/Engines/thinNativeEngine.js.map +1 -1
  146. package/Engines/thinNativeEngine.pure.d.ts +27 -0
  147. package/Engines/thinNativeEngine.pure.js +383 -17
  148. package/Engines/thinNativeEngine.pure.js.map +1 -1
  149. package/Engines/webgpuEngine.d.ts +1 -0
  150. package/Engines/webgpuEngine.js +1 -0
  151. package/Engines/webgpuEngine.js.map +1 -1
  152. package/Engines/webgpuEngine.pure.d.ts +9 -0
  153. package/Engines/webgpuEngine.pure.js +7 -0
  154. package/Engines/webgpuEngine.pure.js.map +1 -1
  155. package/FlowGraph/flowGraph.js +9 -0
  156. package/FlowGraph/flowGraph.js.map +1 -1
  157. package/FlowGraph/flowGraphContext.js +597 -584
  158. package/FlowGraph/flowGraphContext.js.map +1 -1
  159. package/FlowGraph/flowGraphDataConnection.pure.d.ts +14 -0
  160. package/FlowGraph/flowGraphDataConnection.pure.js +38 -1
  161. package/FlowGraph/flowGraphDataConnection.pure.js.map +1 -1
  162. package/FlowGraph/serialization.d.ts +11 -0
  163. package/FlowGraph/serialization.js +11 -1
  164. package/FlowGraph/serialization.js.map +1 -1
  165. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js +182 -170
  166. package/FrameGraph/Node/Blocks/Layers/glowLayerBlock.pure.js.map +1 -1
  167. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js +196 -184
  168. package/FrameGraph/Node/Blocks/Layers/highlightLayerBlock.pure.js.map +1 -1
  169. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js +222 -210
  170. package/FrameGraph/Node/Blocks/Layers/selectionOutlineLayerBlock.pure.js.map +1 -1
  171. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +123 -111
  172. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  173. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +158 -146
  174. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -1
  175. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js +63 -51
  176. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.pure.js.map +1 -1
  177. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js +122 -110
  178. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.pure.js.map +1 -1
  179. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js +76 -64
  180. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.pure.js.map +1 -1
  181. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js +89 -77
  182. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.pure.js.map +1 -1
  183. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js +134 -122
  184. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.pure.js.map +1 -1
  185. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js +58 -46
  186. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.pure.js.map +1 -1
  187. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js +107 -95
  188. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.pure.js.map +1 -1
  189. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js +181 -169
  190. package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.pure.js.map +1 -1
  191. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js +63 -51
  192. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.pure.js.map +1 -1
  193. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js +63 -51
  194. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.pure.js.map +1 -1
  195. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js +76 -64
  196. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.pure.js.map +1 -1
  197. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js +246 -234
  198. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.pure.js.map +1 -1
  199. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js +108 -96
  200. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.pure.js.map +1 -1
  201. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js +87 -75
  202. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.pure.js.map +1 -1
  203. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js +76 -64
  204. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.pure.js.map +1 -1
  205. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js +313 -301
  206. package/FrameGraph/Node/Blocks/PostProcesses/ssao2PostProcessBlock.pure.js.map +1 -1
  207. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js +502 -490
  208. package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.pure.js.map +1 -1
  209. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js +147 -135
  210. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.pure.js.map +1 -1
  211. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js +90 -78
  212. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.pure.js.map +1 -1
  213. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js +179 -167
  214. package/FrameGraph/Node/Blocks/PostProcesses/volumetricLightingBlock.pure.js.map +1 -1
  215. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js +462 -451
  216. package/FrameGraph/Node/Blocks/Rendering/baseObjectRendererBlock.js.map +1 -1
  217. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +265 -253
  218. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  219. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js +204 -192
  220. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.pure.js.map +1 -1
  221. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js +611 -550
  222. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.pure.js.map +1 -1
  223. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js +320 -308
  224. package/FrameGraph/Node/Blocks/Rendering/iblShadowsRendererBlock.pure.js.map +1 -1
  225. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js +87 -75
  226. package/FrameGraph/Node/Blocks/Rendering/utilityLayerRendererBlock.pure.js.map +1 -1
  227. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js +154 -142
  228. package/FrameGraph/Node/Blocks/Textures/clearBlock.pure.js.map +1 -1
  229. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js +150 -138
  230. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.pure.js.map +1 -1
  231. package/FrameGraph/Node/Blocks/inputBlock.pure.js +270 -256
  232. package/FrameGraph/Node/Blocks/inputBlock.pure.js.map +1 -1
  233. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js +95 -83
  234. package/FrameGraph/Node/Blocks/lightingVolumeBlock.pure.js.map +1 -1
  235. package/FrameGraph/Node/nodeRenderGraph.js +715 -693
  236. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  237. package/FrameGraph/Node/nodeRenderGraphBlock.js +548 -533
  238. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  239. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.d.ts +2 -2
  240. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js +43 -51
  241. package/FrameGraph/Tasks/Rendering/iblShadows/iblShadowsAccumulationTask.js.map +1 -1
  242. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.d.ts +0 -1
  243. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js +0 -1
  244. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.js.map +1 -1
  245. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.d.ts +0 -1
  246. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js +66 -35
  247. package/FrameGraph/Tasks/Rendering/iblShadowsRendererTask.pure.js.map +1 -1
  248. package/Helpers/environmentHelper.js +2 -2
  249. package/Helpers/environmentHelper.js.map +1 -1
  250. package/Layers/effectLayer.js +529 -519
  251. package/Layers/effectLayer.js.map +1 -1
  252. package/Layers/glowLayer.pure.js +428 -413
  253. package/Layers/glowLayer.pure.js.map +1 -1
  254. package/Layers/highlightLayer.pure.js +473 -458
  255. package/Layers/highlightLayer.pure.js.map +1 -1
  256. package/Layers/selectionOutlineLayer.pure.js +360 -345
  257. package/Layers/selectionOutlineLayer.pure.js.map +1 -1
  258. package/Lights/Clustered/clusteredLightContainer.pure.d.ts +1 -1
  259. package/Lights/Clustered/clusteredLightContainer.pure.js +583 -558
  260. package/Lights/Clustered/clusteredLightContainer.pure.js.map +1 -1
  261. package/Lights/Shadows/shadowGenerator.js +6 -1
  262. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  263. package/Lights/areaLight.pure.js +61 -39
  264. package/Lights/areaLight.pure.js.map +1 -1
  265. package/Lights/directionalLight.pure.js +308 -284
  266. package/Lights/directionalLight.pure.js.map +1 -1
  267. package/Lights/hemisphericLight.pure.js +123 -104
  268. package/Lights/hemisphericLight.pure.js.map +1 -1
  269. package/Lights/light.d.ts +5 -3
  270. package/Lights/light.js +869 -827
  271. package/Lights/light.js.map +1 -1
  272. package/Lights/pointLight.pure.js +185 -174
  273. package/Lights/pointLight.pure.js.map +1 -1
  274. package/Lights/rectAreaLight.pure.d.ts +17 -0
  275. package/Lights/rectAreaLight.pure.js +238 -159
  276. package/Lights/rectAreaLight.pure.js.map +1 -1
  277. package/Lights/shadowLight.js +280 -268
  278. package/Lights/shadowLight.js.map +1 -1
  279. package/Lights/spotLight.pure.js +460 -427
  280. package/Lights/spotLight.pure.js.map +1 -1
  281. package/Loading/Plugins/babylonFileLoader.pure.js +17 -5
  282. package/Loading/Plugins/babylonFileLoader.pure.js.map +1 -1
  283. package/Loading/sceneLoader.d.ts +5 -1
  284. package/Loading/sceneLoader.js +299 -402
  285. package/Loading/sceneLoader.js.map +1 -1
  286. package/Materials/Background/backgroundMaterial.pure.d.ts +18 -18
  287. package/Materials/Background/backgroundMaterial.pure.js +949 -794
  288. package/Materials/Background/backgroundMaterial.pure.js.map +1 -1
  289. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.d.ts +15 -0
  290. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js +34 -1
  291. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.pure.js.map +1 -1
  292. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.d.ts +9 -0
  293. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js +26 -2
  294. package/Materials/GaussianSplatting/gaussianSplattingMaterial.pure.js.map +1 -1
  295. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.d.ts +2 -1
  296. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js +169 -149
  297. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.pure.js.map +1 -1
  298. package/Materials/Node/Blocks/Dual/imageSourceBlock.pure.js +1 -1
  299. package/Materials/Node/Blocks/Dual/lightBlock.pure.js +442 -429
  300. package/Materials/Node/Blocks/Dual/lightBlock.pure.js.map +1 -1
  301. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js +396 -383
  302. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.pure.js.map +1 -1
  303. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js +237 -220
  304. package/Materials/Node/Blocks/Dual/sceneDepthBlock.pure.js.map +1 -1
  305. package/Materials/Node/Blocks/Dual/textureBlock.pure.js +1 -1
  306. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js +150 -133
  307. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.pure.js.map +1 -1
  308. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js +265 -250
  309. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.pure.js.map +1 -1
  310. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js +159 -142
  311. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.pure.js.map +1 -1
  312. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js +214 -201
  313. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.pure.js.map +1 -1
  314. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js +419 -400
  315. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.pure.js.map +1 -1
  316. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js +3 -1
  317. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.pure.js.map +1 -1
  318. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js +302 -289
  319. package/Materials/Node/Blocks/PBR/clearCoatBlock.pure.js.map +1 -1
  320. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js +1327 -1272
  321. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.pure.js.map +1 -1
  322. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js +352 -337
  323. package/Materials/Node/Blocks/PBR/reflectionBlock.pure.js.map +1 -1
  324. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js +297 -277
  325. package/Materials/Node/Blocks/PBR/refractionBlock.pure.js.map +1 -1
  326. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js +146 -131
  327. package/Materials/Node/Blocks/PBR/sheenBlock.pure.js.map +1 -1
  328. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js +158 -145
  329. package/Materials/Node/Blocks/PBR/subSurfaceBlock.pure.js.map +1 -1
  330. package/Materials/Node/Blocks/clampBlock.pure.js +92 -77
  331. package/Materials/Node/Blocks/clampBlock.pure.js.map +1 -1
  332. package/Materials/Node/Blocks/cloudBlock.pure.js +145 -132
  333. package/Materials/Node/Blocks/cloudBlock.pure.js.map +1 -1
  334. package/Materials/Node/Blocks/conditionalBlock.pure.js +182 -169
  335. package/Materials/Node/Blocks/conditionalBlock.pure.js.map +1 -1
  336. package/Materials/Node/Blocks/curveBlock.pure.js +259 -246
  337. package/Materials/Node/Blocks/curveBlock.pure.js.map +1 -1
  338. package/Materials/Node/Blocks/debugBlock.pure.js +119 -106
  339. package/Materials/Node/Blocks/debugBlock.pure.js.map +1 -1
  340. package/Materials/Node/Blocks/loopBlock.pure.js +123 -110
  341. package/Materials/Node/Blocks/loopBlock.pure.js.map +1 -1
  342. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js +185 -172
  343. package/Materials/Node/Blocks/meshAttributeExistsBlock.pure.js.map +1 -1
  344. package/Materials/Node/Blocks/remapBlock.pure.js +127 -112
  345. package/Materials/Node/Blocks/remapBlock.pure.js.map +1 -1
  346. package/Materials/Node/Blocks/transformBlock.pure.js +196 -185
  347. package/Materials/Node/Blocks/transformBlock.pure.js.map +1 -1
  348. package/Materials/Node/Blocks/triPlanarBlock.pure.js +451 -438
  349. package/Materials/Node/Blocks/triPlanarBlock.pure.js.map +1 -1
  350. package/Materials/Node/Blocks/trigonometryBlock.pure.js +184 -171
  351. package/Materials/Node/Blocks/trigonometryBlock.pure.js.map +1 -1
  352. package/Materials/Node/Blocks/waveBlock.pure.js +97 -84
  353. package/Materials/Node/Blocks/waveBlock.pure.js.map +1 -1
  354. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js +276 -263
  355. package/Materials/Node/Blocks/worleyNoise3DBlock.pure.js.map +1 -1
  356. package/Materials/Node/nodeMaterial.pure.js +1765 -1737
  357. package/Materials/Node/nodeMaterial.pure.js.map +1 -1
  358. package/Materials/Node/nodeMaterialBuildState.d.ts +3 -3
  359. package/Materials/PBR/openpbrMaterial.pure.d.ts +102 -102
  360. package/Materials/PBR/openpbrMaterial.pure.js +3115 -2243
  361. package/Materials/PBR/openpbrMaterial.pure.js.map +1 -1
  362. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -3
  363. package/Materials/PBR/pbrAnisotropicConfiguration.js +255 -227
  364. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  365. package/Materials/PBR/pbrBRDFConfiguration.d.ts +9 -9
  366. package/Materials/PBR/pbrBRDFConfiguration.js +203 -155
  367. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  368. package/Materials/PBR/pbrBaseMaterial.pure.d.ts +1 -1
  369. package/Materials/PBR/pbrBaseMaterial.pure.js +1751 -1736
  370. package/Materials/PBR/pbrBaseMaterial.pure.js.map +1 -1
  371. package/Materials/PBR/pbrBaseSimpleMaterial.d.ts +13 -13
  372. package/Materials/PBR/pbrBaseSimpleMaterial.js +205 -117
  373. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  374. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +9 -9
  375. package/Materials/PBR/pbrClearCoatConfiguration.js +464 -406
  376. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  377. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -3
  378. package/Materials/PBR/pbrIridescenceConfiguration.js +271 -239
  379. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  380. package/Materials/PBR/pbrMaterial.pure.d.ts +66 -66
  381. package/Materials/PBR/pbrMaterial.pure.js +1041 -685
  382. package/Materials/PBR/pbrMaterial.pure.js.map +1 -1
  383. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.d.ts +5 -5
  384. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js +176 -115
  385. package/Materials/PBR/pbrMetallicRoughnessMaterial.pure.js.map +1 -1
  386. package/Materials/PBR/pbrSheenConfiguration.d.ts +7 -7
  387. package/Materials/PBR/pbrSheenConfiguration.js +314 -270
  388. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  389. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.d.ts +5 -5
  390. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js +172 -117
  391. package/Materials/PBR/pbrSpecularGlossinessMaterial.pure.js.map +1 -1
  392. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +16 -16
  393. package/Materials/PBR/pbrSubSurfaceConfiguration.js +864 -764
  394. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  395. package/Materials/Textures/HTML/htmlInCanvasPolyfill.d.ts +43 -0
  396. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js +64 -0
  397. package/Materials/Textures/HTML/htmlInCanvasPolyfill.js.map +1 -0
  398. package/Materials/Textures/HTML/htmlInteractionManager.d.ts +69 -0
  399. package/Materials/Textures/HTML/htmlInteractionManager.js +130 -0
  400. package/Materials/Textures/HTML/htmlInteractionManager.js.map +1 -0
  401. package/Materials/Textures/HTML/htmlRaycastInteractionManager.d.ts +84 -0
  402. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js +246 -0
  403. package/Materials/Textures/HTML/htmlRaycastInteractionManager.js.map +1 -0
  404. package/Materials/Textures/HTML/htmlTexture.d.ts +148 -0
  405. package/Materials/Textures/HTML/htmlTexture.js +455 -0
  406. package/Materials/Textures/HTML/htmlTexture.js.map +1 -0
  407. package/Materials/Textures/HTML/index.d.ts +4 -0
  408. package/Materials/Textures/HTML/index.js +5 -0
  409. package/Materials/Textures/HTML/index.js.map +1 -0
  410. package/Materials/Textures/HTML/pure.d.ts +5 -0
  411. package/Materials/Textures/HTML/pure.js +6 -0
  412. package/Materials/Textures/HTML/pure.js.map +1 -0
  413. package/Materials/Textures/Procedurals/proceduralTexture.pure.js +671 -643
  414. package/Materials/Textures/Procedurals/proceduralTexture.pure.js.map +1 -1
  415. package/Materials/Textures/baseTexture.pure.js +880 -825
  416. package/Materials/Textures/baseTexture.pure.js.map +1 -1
  417. package/Materials/Textures/cubeTexture.d.ts +0 -1
  418. package/Materials/Textures/cubeTexture.js +0 -1
  419. package/Materials/Textures/cubeTexture.js.map +1 -1
  420. package/Materials/Textures/cubeTexture.pure.js +368 -333
  421. package/Materials/Textures/cubeTexture.pure.js.map +1 -1
  422. package/Materials/Textures/dynamicTexture.d.ts +0 -1
  423. package/Materials/Textures/dynamicTexture.js +0 -1
  424. package/Materials/Textures/dynamicTexture.js.map +1 -1
  425. package/Materials/Textures/dynamicTexture.pure.js +2 -0
  426. package/Materials/Textures/dynamicTexture.pure.js.map +1 -1
  427. package/Materials/Textures/htmlElementTexture.d.ts +0 -2
  428. package/Materials/Textures/htmlElementTexture.js +0 -2
  429. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  430. package/Materials/Textures/htmlElementTexture.pure.js +4 -0
  431. package/Materials/Textures/htmlElementTexture.pure.js.map +1 -1
  432. package/Materials/Textures/index.d.ts +1 -0
  433. package/Materials/Textures/index.js +1 -1
  434. package/Materials/Textures/index.js.map +1 -1
  435. package/Materials/Textures/multiRenderTarget.d.ts +0 -1
  436. package/Materials/Textures/multiRenderTarget.js +0 -1
  437. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  438. package/Materials/Textures/multiRenderTarget.pure.js +2 -0
  439. package/Materials/Textures/multiRenderTarget.pure.js.map +1 -1
  440. package/Materials/Textures/pure.d.ts +1 -0
  441. package/Materials/Textures/pure.js +1 -0
  442. package/Materials/Textures/pure.js.map +1 -1
  443. package/Materials/Textures/texture.pure.js +961 -923
  444. package/Materials/Textures/texture.pure.js.map +1 -1
  445. package/Materials/Textures/videoTexture.pure.d.ts +3 -0
  446. package/Materials/Textures/videoTexture.pure.js +450 -401
  447. package/Materials/Textures/videoTexture.pure.js.map +1 -1
  448. package/Materials/colorCurves.pure.js +510 -477
  449. package/Materials/colorCurves.pure.js.map +1 -1
  450. package/Materials/effect.pure.js +0 -7
  451. package/Materials/effect.pure.js.map +1 -1
  452. package/Materials/imageProcessing.js +12 -4
  453. package/Materials/imageProcessing.js.map +1 -1
  454. package/Materials/imageProcessingConfiguration.pure.js +647 -587
  455. package/Materials/imageProcessingConfiguration.pure.js.map +1 -1
  456. package/Materials/material.decalMapConfiguration.pure.d.ts +2 -2
  457. package/Materials/material.decalMapConfiguration.pure.js +149 -130
  458. package/Materials/material.decalMapConfiguration.pure.js.map +1 -1
  459. package/Materials/material.detailMapConfiguration.d.ts +3 -3
  460. package/Materials/material.detailMapConfiguration.js +213 -175
  461. package/Materials/material.detailMapConfiguration.js.map +1 -1
  462. package/Materials/material.pure.js +1815 -1721
  463. package/Materials/material.pure.js.map +1 -1
  464. package/Materials/materialPluginBase.pure.js +270 -249
  465. package/Materials/materialPluginBase.pure.js.map +1 -1
  466. package/Materials/materialPluginManager.pure.js +18 -8
  467. package/Materials/materialPluginManager.pure.js.map +1 -1
  468. package/Materials/materialStencilState.js +211 -200
  469. package/Materials/materialStencilState.js.map +1 -1
  470. package/Materials/meshDebugPluginMaterial.pure.d.ts +2 -2
  471. package/Materials/meshDebugPluginMaterial.pure.js +397 -275
  472. package/Materials/meshDebugPluginMaterial.pure.js.map +1 -1
  473. package/Materials/standardMaterial.pure.d.ts +32 -32
  474. package/Materials/standardMaterial.pure.js +1804 -1394
  475. package/Materials/standardMaterial.pure.js.map +1 -1
  476. package/Maths/math.color.pure.js +5 -5
  477. package/Maths/math.functions.js +38 -30
  478. package/Maths/math.functions.js.map +1 -1
  479. package/Maths/math.vector.pure.js +25 -25
  480. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js +18 -8
  481. package/Meshes/GaussianSplatting/gaussianSplattingMesh.pure.js.map +1 -1
  482. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.d.ts +86 -1
  483. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js +255 -104
  484. package/Meshes/GaussianSplatting/gaussianSplattingMeshBase.pure.js.map +1 -1
  485. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.d.ts +39 -0
  486. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js +322 -0
  487. package/Meshes/GaussianSplatting/gaussianSplattingSortWorker.js.map +1 -0
  488. package/Meshes/GreasedLine/greasedLineMesh.pure.js +4 -4
  489. package/Meshes/GreasedLine/greasedLineRibbonMesh.pure.js +3 -3
  490. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js +107 -94
  491. package/Meshes/Node/Blocks/Instances/instantiateBaseBlock.js.map +1 -1
  492. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js +276 -263
  493. package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.pure.js.map +1 -1
  494. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js +247 -232
  495. package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.pure.js.map +1 -1
  496. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js +299 -284
  497. package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.pure.js.map +1 -1
  498. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js +196 -181
  499. package/Meshes/Node/Blocks/Set/aggregatorBlock.pure.js.map +1 -1
  500. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js +198 -179
  501. package/Meshes/Node/Blocks/Set/latticeBlock.pure.js.map +1 -1
  502. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js +151 -138
  503. package/Meshes/Node/Blocks/Set/setColorsBlock.pure.js.map +1 -1
  504. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js +107 -94
  505. package/Meshes/Node/Blocks/Set/setMaterialIDBlock.pure.js.map +1 -1
  506. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js +138 -125
  507. package/Meshes/Node/Blocks/Set/setNormalsBlock.pure.js.map +1 -1
  508. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js +213 -200
  509. package/Meshes/Node/Blocks/Set/setPositionsBlock.pure.js.map +1 -1
  510. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js +138 -125
  511. package/Meshes/Node/Blocks/Set/setTangentsBlock.pure.js.map +1 -1
  512. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js +179 -164
  513. package/Meshes/Node/Blocks/Set/setUVsBlock.pure.js.map +1 -1
  514. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js +183 -170
  515. package/Meshes/Node/Blocks/Sources/boxBlock.pure.js.map +1 -1
  516. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js +125 -112
  517. package/Meshes/Node/Blocks/Sources/capsuleBlock.pure.js.map +1 -1
  518. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js +153 -140
  519. package/Meshes/Node/Blocks/Sources/cylinderBlock.pure.js.map +1 -1
  520. package/Meshes/Node/Blocks/Sources/discBlock.pure.js +112 -99
  521. package/Meshes/Node/Blocks/Sources/discBlock.pure.js.map +1 -1
  522. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js +133 -120
  523. package/Meshes/Node/Blocks/Sources/gridBlock.pure.js.map +1 -1
  524. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js +128 -115
  525. package/Meshes/Node/Blocks/Sources/icoSphereBlock.pure.js.map +1 -1
  526. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js +116 -103
  527. package/Meshes/Node/Blocks/Sources/meshBlock.pure.js.map +1 -1
  528. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js +160 -147
  529. package/Meshes/Node/Blocks/Sources/planeBlock.pure.js.map +1 -1
  530. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js +144 -131
  531. package/Meshes/Node/Blocks/Sources/sphereBlock.pure.js.map +1 -1
  532. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js +112 -99
  533. package/Meshes/Node/Blocks/Sources/torusBlock.pure.js.map +1 -1
  534. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js +200 -185
  535. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.pure.js.map +1 -1
  536. package/Meshes/Node/Blocks/bevelBlock.pure.js +111 -98
  537. package/Meshes/Node/Blocks/bevelBlock.pure.js.map +1 -1
  538. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js +182 -165
  539. package/Meshes/Node/Blocks/booleanGeometryBlock.pure.js.map +1 -1
  540. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js +89 -76
  541. package/Meshes/Node/Blocks/cleanGeometryBlock.pure.js.map +1 -1
  542. package/Meshes/Node/Blocks/conditionBlock.pure.js +184 -169
  543. package/Meshes/Node/Blocks/conditionBlock.pure.js.map +1 -1
  544. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js +270 -255
  545. package/Meshes/Node/Blocks/extrudeGeometryBlock.pure.js.map +1 -1
  546. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js +172 -159
  547. package/Meshes/Node/Blocks/geometryCollectionBlock.pure.js.map +1 -1
  548. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js +230 -217
  549. package/Meshes/Node/Blocks/geometryCurveBlock.pure.js.map +1 -1
  550. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js +256 -245
  551. package/Meshes/Node/Blocks/geometryEaseBlock.pure.js.map +1 -1
  552. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js +206 -189
  553. package/Meshes/Node/Blocks/geometryOptimizeBlock.pure.js.map +1 -1
  554. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js +166 -153
  555. package/Meshes/Node/Blocks/geometryTransformBlock.pure.js.map +1 -1
  556. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js +221 -208
  557. package/Meshes/Node/Blocks/geometryTrigonometryBlock.pure.js.map +1 -1
  558. package/Meshes/Node/Blocks/mappingBlock.pure.js +150 -137
  559. package/Meshes/Node/Blocks/mappingBlock.pure.js.map +1 -1
  560. package/Meshes/Node/Blocks/mathBlock.pure.js +269 -256
  561. package/Meshes/Node/Blocks/mathBlock.pure.js.map +1 -1
  562. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js +141 -128
  563. package/Meshes/Node/Blocks/mergeGeometryBlock.pure.js.map +1 -1
  564. package/Meshes/Node/Blocks/randomBlock.pure.js +161 -148
  565. package/Meshes/Node/Blocks/randomBlock.pure.js.map +1 -1
  566. package/Meshes/Node/Blocks/subdivideBlock.pure.js +102 -87
  567. package/Meshes/Node/Blocks/subdivideBlock.pure.js.map +1 -1
  568. package/Meshes/Node/nodeGeometry.js +560 -538
  569. package/Meshes/Node/nodeGeometry.js.map +1 -1
  570. package/Meshes/Node/nodeGeometryBlock.js +473 -458
  571. package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
  572. package/Meshes/abstractMesh.pure.js +2218 -2207
  573. package/Meshes/abstractMesh.pure.js.map +1 -1
  574. package/Meshes/geometry.js +30 -15
  575. package/Meshes/geometry.js.map +1 -1
  576. package/Meshes/mesh.pure.js +26 -14
  577. package/Meshes/mesh.pure.js.map +1 -1
  578. package/Meshes/mesh.vertexData.js +1665 -1655
  579. package/Meshes/mesh.vertexData.js.map +1 -1
  580. package/Meshes/transformNode.pure.js +1400 -1372
  581. package/Meshes/transformNode.pure.js.map +1 -1
  582. package/Misc/decorators.d.ts +34 -19
  583. package/Misc/decorators.functions.d.ts +33 -2
  584. package/Misc/decorators.functions.js +114 -35
  585. package/Misc/decorators.functions.js.map +1 -1
  586. package/Misc/decorators.js +96 -68
  587. package/Misc/decorators.js.map +1 -1
  588. package/Misc/decorators.serialization.js +47 -40
  589. package/Misc/decorators.serialization.js.map +1 -1
  590. package/Misc/decorators.serializationUtilities.d.ts +24 -0
  591. package/Misc/decorators.serializationUtilities.js +20 -0
  592. package/Misc/decorators.serializationUtilities.js.map +1 -0
  593. package/Misc/dumpTools.pure.js +43 -33
  594. package/Misc/dumpTools.pure.js.map +1 -1
  595. package/Misc/fileTools.pure.js +8 -0
  596. package/Misc/fileTools.pure.js.map +1 -1
  597. package/Misc/observable.pure.js +0 -7
  598. package/Misc/observable.pure.js.map +1 -1
  599. package/Misc/snapshotRenderingHelper.d.ts +4 -1
  600. package/Misc/snapshotRenderingHelper.js.map +1 -1
  601. package/Misc/symbolMetadataPolyfill.d.ts +11 -0
  602. package/Misc/symbolMetadataPolyfill.js +22 -0
  603. package/Misc/symbolMetadataPolyfill.js.map +1 -0
  604. package/Misc/tools.pure.js +2 -2
  605. package/Misc/tools.pure.js.map +1 -1
  606. package/Morph/morphTarget.js +382 -365
  607. package/Morph/morphTarget.js.map +1 -1
  608. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js +160 -145
  609. package/Particles/Node/Blocks/Conditions/particleConditionBlock.pure.js.map +1 -1
  610. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js +187 -174
  611. package/Particles/Node/Blocks/Emitters/coneShapeBlock.pure.js.map +1 -1
  612. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js +238 -219
  613. package/Particles/Node/Blocks/Emitters/meshShapeBlock.pure.js.map +1 -1
  614. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js +140 -115
  615. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.pure.js.map +1 -1
  616. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js +157 -144
  617. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.pure.js.map +1 -1
  618. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js +133 -119
  619. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.pure.js.map +1 -1
  620. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js +93 -80
  621. package/Particles/Node/Blocks/Update/alignAngleBlock.pure.js.map +1 -1
  622. package/Particles/Node/Blocks/particleDebugBlock.pure.js +117 -105
  623. package/Particles/Node/Blocks/particleDebugBlock.pure.js.map +1 -1
  624. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js +105 -92
  625. package/Particles/Node/Blocks/particleFloatToIntBlock.pure.js.map +1 -1
  626. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js +82 -69
  627. package/Particles/Node/Blocks/particleGradientValueBlock.pure.js.map +1 -1
  628. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js +113 -101
  629. package/Particles/Node/Blocks/particleLocalVariableBlock.pure.js.map +1 -1
  630. package/Particles/Node/Blocks/particleMathBlock.pure.js +278 -265
  631. package/Particles/Node/Blocks/particleMathBlock.pure.js.map +1 -1
  632. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js +155 -142
  633. package/Particles/Node/Blocks/particleNumberMathBlock.pure.js.map +1 -1
  634. package/Particles/Node/Blocks/particleRandomBlock.pure.js +156 -143
  635. package/Particles/Node/Blocks/particleRandomBlock.pure.js.map +1 -1
  636. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js +217 -204
  637. package/Particles/Node/Blocks/particleTrigonometryBlock.pure.js.map +1 -1
  638. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js +106 -93
  639. package/Particles/Node/Blocks/particleVectorMathBlock.pure.js.map +1 -1
  640. package/Particles/Node/Blocks/systemBlock.pure.js +366 -330
  641. package/Particles/Node/Blocks/systemBlock.pure.js.map +1 -1
  642. package/Particles/Node/nodeParticleBlock.js +339 -324
  643. package/Particles/Node/nodeParticleBlock.js.map +1 -1
  644. package/Particles/Node/nodeParticleSystemSet.js +494 -473
  645. package/Particles/Node/nodeParticleSystemSet.js.map +1 -1
  646. package/Particles/gpuParticleSystem.d.ts +0 -1
  647. package/Particles/gpuParticleSystem.js +0 -1
  648. package/Particles/gpuParticleSystem.js.map +1 -1
  649. package/Particles/gpuParticleSystem.pure.d.ts +4 -3
  650. package/Particles/gpuParticleSystem.pure.js +27 -16
  651. package/Particles/gpuParticleSystem.pure.js.map +1 -1
  652. package/Particles/particleSystem.pure.js +57 -2
  653. package/Particles/particleSystem.pure.js.map +1 -1
  654. package/Particles/thinParticleSystem.d.ts +0 -1
  655. package/Particles/thinParticleSystem.js +0 -1
  656. package/Particles/thinParticleSystem.js.map +1 -1
  657. package/Particles/thinParticleSystem.pure.js +2 -0
  658. package/Particles/thinParticleSystem.pure.js.map +1 -1
  659. package/Particles/webgl2ParticleSystem.pure.js +2 -0
  660. package/Particles/webgl2ParticleSystem.pure.js.map +1 -1
  661. package/Physics/v1/physicsImpostor.pure.js +4 -4
  662. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js +675 -656
  663. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.pure.js.map +1 -1
  664. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.d.ts +0 -1
  665. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js +0 -1
  666. package/PostProcesses/RenderPipeline/Pipelines/lensRenderingPipeline.js.map +1 -1
  667. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js +521 -486
  668. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.pure.js.map +1 -1
  669. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.d.ts +0 -1
  670. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js +0 -1
  671. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  672. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js +241 -220
  673. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.pure.js.map +1 -1
  674. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js +852 -835
  675. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.pure.js.map +1 -1
  676. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js +1135 -1073
  677. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.pure.js.map +1 -1
  678. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js +319 -303
  679. package/PostProcesses/RenderPipeline/Pipelines/taaRenderingPipeline.pure.js.map +1 -1
  680. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js +212 -199
  681. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  682. package/PostProcesses/blackAndWhitePostProcess.pure.js +67 -55
  683. package/PostProcesses/blackAndWhitePostProcess.pure.js.map +1 -1
  684. package/PostProcesses/bloomMergePostProcess.pure.js +74 -62
  685. package/PostProcesses/bloomMergePostProcess.pure.js.map +1 -1
  686. package/PostProcesses/blurPostProcess.pure.js +127 -115
  687. package/PostProcesses/blurPostProcess.pure.js.map +1 -1
  688. package/PostProcesses/chromaticAberrationPostProcess.pure.js +130 -118
  689. package/PostProcesses/chromaticAberrationPostProcess.pure.js.map +1 -1
  690. package/PostProcesses/circleOfConfusionPostProcess.pure.js +115 -104
  691. package/PostProcesses/circleOfConfusionPostProcess.pure.js.map +1 -1
  692. package/PostProcesses/colorCorrectionPostProcess.pure.js +55 -43
  693. package/PostProcesses/colorCorrectionPostProcess.pure.js.map +1 -1
  694. package/PostProcesses/convolutionPostProcess.pure.js +96 -84
  695. package/PostProcesses/convolutionPostProcess.pure.js.map +1 -1
  696. package/PostProcesses/extractHighlightsPostProcess.pure.js +68 -57
  697. package/PostProcesses/extractHighlightsPostProcess.pure.js.map +1 -1
  698. package/PostProcesses/filterPostProcess.pure.js +66 -54
  699. package/PostProcesses/filterPostProcess.pure.js.map +1 -1
  700. package/PostProcesses/fxaaPostProcess.pure.js.map +1 -1
  701. package/PostProcesses/grainPostProcess.pure.js +82 -70
  702. package/PostProcesses/grainPostProcess.pure.js.map +1 -1
  703. package/PostProcesses/imageProcessingPostProcess.js +334 -322
  704. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  705. package/PostProcesses/motionBlurPostProcess.pure.js +246 -235
  706. package/PostProcesses/motionBlurPostProcess.pure.js.map +1 -1
  707. package/PostProcesses/passPostProcess.pure.js +75 -63
  708. package/PostProcesses/passPostProcess.pure.js.map +1 -1
  709. package/PostProcesses/postProcess.pure.js +899 -835
  710. package/PostProcesses/postProcess.pure.js.map +1 -1
  711. package/PostProcesses/refractionPostProcess.pure.js +114 -87
  712. package/PostProcesses/refractionPostProcess.pure.js.map +1 -1
  713. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js +108 -96
  714. package/PostProcesses/screenSpaceCurvaturePostProcess.pure.js.map +1 -1
  715. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js +241 -220
  716. package/PostProcesses/screenSpaceReflectionPostProcess.pure.js.map +1 -1
  717. package/PostProcesses/sharpenPostProcess.pure.js +86 -74
  718. package/PostProcesses/sharpenPostProcess.pure.js.map +1 -1
  719. package/PostProcesses/tonemapPostProcess.pure.js +82 -70
  720. package/PostProcesses/tonemapPostProcess.pure.js.map +1 -1
  721. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js +500 -465
  722. package/PostProcesses/volumetricLightScatteringPostProcess.pure.js.map +1 -1
  723. package/PostProcesses/vrMultiviewToSingleviewPostProcess.d.ts +0 -1
  724. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js +0 -1
  725. package/PostProcesses/vrMultiviewToSingleviewPostProcess.js.map +1 -1
  726. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js +2 -0
  727. package/PostProcesses/vrMultiviewToSingleviewPostProcess.pure.js.map +1 -1
  728. package/Probes/reflectionProbe.pure.js +238 -224
  729. package/Probes/reflectionProbe.pure.js.map +1 -1
  730. package/Rendering/GlobalIllumination/giRSMManager.pure.d.ts +1 -1
  731. package/Rendering/GlobalIllumination/giRSMManager.pure.js +138 -105
  732. package/Rendering/GlobalIllumination/giRSMManager.pure.js.map +1 -1
  733. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.d.ts +1 -1
  734. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js +155 -138
  735. package/Rendering/IBLShadows/iblShadowsPluginMaterial.pure.js.map +1 -1
  736. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +0 -2
  737. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +0 -2
  738. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  739. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js +5 -0
  740. package/Rendering/IBLShadows/iblShadowsRenderPipeline.pure.js.map +1 -1
  741. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +0 -1
  742. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +0 -1
  743. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  744. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.d.ts +1 -0
  745. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js +34 -0
  746. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.pure.js.map +1 -1
  747. package/Rendering/edgesRenderer.pure.js.map +1 -1
  748. package/Rendering/prePassRenderer.d.ts +0 -2
  749. package/Rendering/prePassRenderer.js +0 -2
  750. package/Rendering/prePassRenderer.js.map +1 -1
  751. package/Rendering/prePassRenderer.pure.js +2 -0
  752. package/Rendering/prePassRenderer.pure.js.map +1 -1
  753. package/Rendering/reflectiveShadowMap.pure.d.ts +1 -1
  754. package/Rendering/reflectiveShadowMap.pure.js +151 -130
  755. package/Rendering/reflectiveShadowMap.pure.js.map +1 -1
  756. package/Rendering/thinDepthPeelingRenderer.d.ts +0 -1
  757. package/Rendering/thinDepthPeelingRenderer.js +0 -1
  758. package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
  759. package/Shaders/ShadersInclude/gaussianSplatting.js +1 -0
  760. package/Shaders/ShadersInclude/gaussianSplatting.js.map +1 -1
  761. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +35 -5
  762. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  763. package/Shaders/gaussianSplatting.fragment.js +17 -1
  764. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  765. package/Shaders/gaussianSplatting.vertex.js +1 -1
  766. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  767. package/Shaders/gaussianSplattingDepth.vertex.js +1 -1
  768. package/Shaders/gaussianSplattingDepth.vertex.js.map +1 -1
  769. package/Shaders/picking.fragment.js +39 -3
  770. package/Shaders/picking.fragment.js.map +1 -1
  771. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js +3 -1
  772. package/ShadersWGSL/ShadersInclude/gaussianSplatting.js.map +1 -1
  773. package/ShadersWGSL/ShadersInclude/helperFunctions.js +2 -2
  774. package/ShadersWGSL/ShadersInclude/helperFunctions.js.map +1 -1
  775. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +39 -7
  776. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  777. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js +4 -3
  778. package/ShadersWGSL/ShadersInclude/openpbrIblFunctions.js.map +1 -1
  779. package/ShadersWGSL/gaussianSplatting.fragment.js +14 -1
  780. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  781. package/ShadersWGSL/gaussianSplatting.vertex.js +2 -2
  782. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  783. package/ShadersWGSL/gaussianSplattingDepth.vertex.js +2 -2
  784. package/ShadersWGSL/gaussianSplattingDepth.vertex.js.map +1 -1
  785. package/ShadersWGSL/lightingVolume.compute.js +2 -2
  786. package/ShadersWGSL/lightingVolume.compute.js.map +1 -1
  787. package/ShadersWGSL/picking.fragment.js +22 -1
  788. package/ShadersWGSL/picking.fragment.js.map +1 -1
  789. package/XR/features/Layers/WebXRCompositionLayer.d.ts +3 -2
  790. package/XR/features/Layers/WebXRCompositionLayer.js +2 -2
  791. package/XR/features/Layers/WebXRCompositionLayer.js.map +1 -1
  792. package/XR/features/Layers/WebXRWebGPUCompositionLayer.d.ts +59 -0
  793. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js +120 -0
  794. package/XR/features/Layers/WebXRWebGPUCompositionLayer.js.map +1 -0
  795. package/XR/features/Layers/WebXRWebGPUProjectionLayer.d.ts +25 -0
  796. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js +69 -0
  797. package/XR/features/Layers/WebXRWebGPUProjectionLayer.js.map +1 -0
  798. package/XR/features/WebXRLayers.pure.d.ts +8 -0
  799. package/XR/features/WebXRLayers.pure.js +43 -6
  800. package/XR/features/WebXRLayers.pure.js.map +1 -1
  801. package/XR/native/nativeXRRenderTarget.d.ts +2 -2
  802. package/XR/native/nativeXRRenderTarget.js +2 -2
  803. package/XR/native/nativeXRRenderTarget.js.map +1 -1
  804. package/XR/webXRExperienceHelper.js +10 -1
  805. package/XR/webXRExperienceHelper.js.map +1 -1
  806. package/XR/webXRGraphicsBinding.d.ts +90 -0
  807. package/XR/webXRGraphicsBinding.js +85 -0
  808. package/XR/webXRGraphicsBinding.js.map +1 -0
  809. package/XR/webXRLayerRenderTargetTexture.d.ts +24 -0
  810. package/XR/webXRLayerRenderTargetTexture.js +30 -0
  811. package/XR/webXRLayerRenderTargetTexture.js.map +1 -0
  812. package/XR/webXRManagedOutputCanvas.d.ts +14 -0
  813. package/XR/webXRManagedOutputCanvas.js +24 -5
  814. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  815. package/XR/webXRRenderTargetTextureProvider.d.ts +25 -4
  816. package/XR/webXRRenderTargetTextureProvider.js +33 -35
  817. package/XR/webXRRenderTargetTextureProvider.js.map +1 -1
  818. package/XR/webXRSessionManager.d.ts +11 -0
  819. package/XR/webXRSessionManager.js +37 -0
  820. package/XR/webXRSessionManager.js.map +1 -1
  821. package/XR/webXRTypes.d.ts +9 -6
  822. package/XR/webXRTypes.js.map +1 -1
  823. package/XR/webXRWebGLLayer.d.ts +2 -2
  824. package/XR/webXRWebGLLayer.js +2 -2
  825. package/XR/webXRWebGLLayer.js.map +1 -1
  826. package/XR/webXRWebGLRenderTargetTextureProvider.d.ts +12 -0
  827. package/XR/webXRWebGLRenderTargetTextureProvider.js +58 -0
  828. package/XR/webXRWebGLRenderTargetTextureProvider.js.map +1 -0
  829. package/XR/webXRWebGPURenderTargetTextureProvider.d.ts +69 -0
  830. package/XR/webXRWebGPURenderTargetTextureProvider.js +148 -0
  831. package/XR/webXRWebGPURenderTargetTextureProvider.js.map +1 -0
  832. package/index.d.ts +1 -0
  833. package/index.js +1 -0
  834. package/index.js.map +1 -1
  835. package/node.js +878 -845
  836. package/node.js.map +1 -1
  837. package/package.json +8 -14
  838. package/scene.pure.d.ts +12 -0
  839. package/scene.pure.js +36 -0
  840. package/scene.pure.js.map +1 -1
  841. package/tslib.es6.js +304 -150
package/node.js CHANGED
@@ -1,4 +1,4 @@
1
- import { __decorate } from "./tslib.es6.js";
1
+ import { __esDecorate, __runInitializers } from "./tslib.es6.js";
2
2
  import { Matrix, Vector3 } from "./Maths/math.vector.pure.js";
3
3
  import { serialize } from "./Misc/decorators.js";
4
4
  import { Observable } from "./Misc/observable.js";
@@ -23,852 +23,885 @@ class _InternalNodeDataInfo {
23
23
  /**
24
24
  * Node is the basic class for all scene objects (Mesh, Light, Camera.)
25
25
  */
26
- export class Node {
27
- /**
28
- * Add a new node constructor
29
- * @param type defines the type name of the node to construct
30
- * @param constructorFunc defines the constructor function
31
- */
32
- static AddNodeConstructor(type, constructorFunc) {
33
- this._NodeConstructors[type] = constructorFunc;
34
- }
35
- /**
36
- * Returns a node constructor based on type name
37
- * @param type defines the type name
38
- * @param name defines the new node name
39
- * @param scene defines the hosting scene
40
- * @param options defines optional options to transmit to constructors
41
- * @returns the new constructor or null
42
- */
43
- static Construct(type, name, scene, options) {
44
- const constructorFunc = this._NodeConstructors[type];
45
- if (!constructorFunc) {
46
- return null;
47
- }
48
- return constructorFunc(name, scene, options);
49
- }
50
- /**
51
- * Gets or sets the accessibility tag to describe the node for accessibility purpose.
52
- */
53
- set accessibilityTag(value) {
54
- this._accessibilityTag = value;
55
- this.onAccessibilityTagChangedObservable.notifyObservers(value);
56
- }
57
- get accessibilityTag() {
58
- return this._accessibilityTag;
59
- }
60
- /**
61
- * Gets or sets a boolean used to define if the node must be serialized
62
- */
63
- get doNotSerialize() {
64
- if (this._nodeDataStorage._doNotSerialize) {
65
- return true;
66
- }
67
- if (this._parentNode) {
68
- return this._parentNode.doNotSerialize;
69
- }
70
- return false;
71
- }
72
- set doNotSerialize(value) {
73
- this._nodeDataStorage._doNotSerialize = value;
74
- }
75
- /**
76
- * Gets a boolean indicating if the node has been disposed
77
- * @returns true if the node was disposed
78
- */
79
- isDisposed() {
80
- return this._nodeDataStorage._isDisposed;
81
- }
82
- /**
83
- * Gets or sets the parent of the node (without keeping the current position in the scene)
84
- * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/transforms/parent_pivot/parent
85
- */
86
- set parent(parent) {
87
- if (this._parentNode === parent) {
88
- return;
89
- }
90
- const previousParentNode = this._parentNode;
91
- const cachedPreviousParentNodeChildren = previousParentNode ? (previousParentNode._children ? previousParentNode._children.slice() : null) : null;
92
- // Remove self from list of children of parent
93
- if (this._parentNode && this._parentNode._children !== undefined && this._parentNode._children !== null) {
94
- const index = this._parentNode._children.indexOf(this);
95
- if (index !== -1) {
96
- this._parentNode._children.splice(index, 1);
97
- }
98
- if (!parent && !this._nodeDataStorage._isDisposed) {
99
- this._addToSceneRootNodes();
100
- }
101
- }
102
- // Store new parent
103
- this._parentNode = parent;
104
- this._isDirty = true;
105
- // Add as child to new parent
106
- if (this._parentNode) {
107
- if (this._parentNode._children === undefined || this._parentNode._children === null) {
108
- this._parentNode._children = new Array();
109
- }
110
- const cachedChildren = this._parentNode._children.slice();
111
- this._parentNode._children.push(this);
112
- this._parentNode.onChildNodesChangedObservable.notifyObservers({
113
- current: this._parentNode._children,
114
- cache: cachedChildren,
115
- });
116
- if (!previousParentNode) {
117
- this._removeFromSceneRootNodes();
118
- }
119
- }
120
- if (previousParentNode) {
121
- previousParentNode.onChildNodesChangedObservable.notifyObservers({
122
- current: previousParentNode._children,
123
- cache: cachedPreviousParentNodeChildren,
124
- });
125
- }
126
- // Enabled state
127
- this._syncParentEnabledState();
128
- }
129
- get parent() {
130
- return this._parentNode;
131
- }
132
- /**
133
- * If set to true, this node, when renderable, will only be visible if its parent(s) are also visible.
134
- * @default false
135
- */
136
- get inheritVisibility() {
137
- return this._nodeDataStorage._inheritVisibility;
138
- }
139
- set inheritVisibility(value) {
140
- this._nodeDataStorage._inheritVisibility = value;
141
- }
142
- /**
143
- * Gets or sets a boolean indicating whether this node is visible, either this node itself when it is renderable or its renderable child nodes when `inheritVisibility` is true.
144
- * @default true
145
- */
146
- get isVisible() {
147
- if (!this._isSystemVisible) {
148
- return false;
149
- }
150
- if (this.inheritVisibility && this._parentNode && !this._parentNode.isVisible) {
151
- return false;
152
- }
153
- return this._nodeDataStorage._isVisible;
154
- }
155
- set isVisible(value) {
156
- this._nodeDataStorage._isVisible = value;
157
- }
158
- /**
159
- * @internal
160
- */
161
- _serializeAsParent(serializationObject) {
162
- serializationObject.parentId = this.uniqueId;
163
- }
164
- /** @internal */
165
- _addToSceneRootNodes() {
166
- if (this._nodeDataStorage._sceneRootNodesIndex === -1) {
167
- this._nodeDataStorage._sceneRootNodesIndex = this._scene.rootNodes.length;
168
- this._scene.rootNodes.push(this);
169
- }
170
- }
171
- /** @internal */
172
- _removeFromSceneRootNodes() {
173
- if (this._nodeDataStorage._sceneRootNodesIndex !== -1) {
174
- const rootNodes = this._scene.rootNodes;
175
- const lastIdx = rootNodes.length - 1;
176
- rootNodes[this._nodeDataStorage._sceneRootNodesIndex] = rootNodes[lastIdx];
177
- rootNodes[this._nodeDataStorage._sceneRootNodesIndex]._nodeDataStorage._sceneRootNodesIndex = this._nodeDataStorage._sceneRootNodesIndex;
178
- this._scene.rootNodes.pop();
179
- this._nodeDataStorage._sceneRootNodesIndex = -1;
180
- }
181
- }
182
- /**
183
- * Gets or sets the animation properties override
184
- */
185
- get animationPropertiesOverride() {
186
- if (!this._animationPropertiesOverride) {
187
- return this._scene.animationPropertiesOverride;
188
- }
189
- return this._animationPropertiesOverride;
190
- }
191
- set animationPropertiesOverride(value) {
192
- this._animationPropertiesOverride = value;
193
- }
194
- /**
195
- * Gets a string identifying the name of the class
196
- * @returns "Node" string
197
- */
198
- getClassName() {
199
- return "Node";
200
- }
201
- /**
202
- * Sets a callback that will be raised when the node will be disposed
203
- */
204
- set onDispose(callback) {
205
- if (this._onDisposeObserver) {
206
- this.onDisposeObservable.remove(this._onDisposeObserver);
207
- }
208
- this._onDisposeObserver = this.onDisposeObservable.add(callback);
209
- }
210
- /**
211
- * An event triggered when the enabled state of the node changes
212
- */
213
- get onEnabledStateChangedObservable() {
214
- return this._nodeDataStorage._onEnabledStateChangedObservable;
215
- }
216
- /**
217
- * An event triggered when the node is cloned
218
- */
219
- get onClonedObservable() {
220
- return this._nodeDataStorage._onClonedObservable;
221
- }
222
- /**
223
- * Creates a new Node
224
- * @param name the name and id to be given to this node
225
- * @param scene the scene this node will be added to
226
- * @param isPure indicates this Node is just a Node, and not a derived class like Mesh or Camera
227
- */
228
- constructor(name, scene = null, isPure = true) {
229
- this._isDirty = false;
230
- this._nodeDataStorage = new _InternalNodeDataInfo();
231
- /**
232
- * Gets or sets a string used to store user defined state for the node
233
- */
234
- this.state = "";
235
- /**
236
- * Gets or sets an object used to store user defined information for the node
237
- */
238
- this.metadata = null;
239
- /**
240
- * For internal use only. Please do not use.
241
- */
242
- this.reservedDataStore = null;
243
- this._accessibilityTag = null;
244
- /**
245
- * Observable fired when an accessibility tag is changed
246
- */
247
- this.onAccessibilityTagChangedObservable = new Observable();
248
- /**
249
- * Observable fired when children changed
250
- */
251
- this.onChildNodesChangedObservable = new Observable();
252
- /** @internal */
253
- this._parentContainer = null;
254
- /**
255
- * Gets a list of Animations associated with the node
256
- */
257
- this.animations = [];
258
- this._ranges = {};
259
- /**
260
- * Callback raised when the node is ready to be used
261
- */
262
- this.onReady = null;
263
- /** @internal */
264
- this._currentRenderId = -1;
265
- this._parentUpdateId = -1;
266
- /** @internal */
267
- this._childUpdateId = -1;
268
- /** @internal */
269
- this._waitingParentId = null;
270
- /** @internal */
271
- this._waitingParentInstanceIndex = null;
272
- /** @internal */
273
- this._waitingParsedUniqueId = null;
274
- /** @internal */
275
- this._cache = {};
276
- this._parentNode = null;
277
- /** @internal */
278
- this._children = null;
279
- /** @internal */
280
- this._worldMatrix = Matrix.Identity();
281
- /** @internal */
282
- this._worldMatrixDeterminant = 0;
283
- /** @internal */
284
- this._worldMatrixDeterminantIsDirty = true;
285
- /**
286
- * Control if the mesh is visible by system define
287
- */
288
- this._isSystemVisible = true;
289
- this._animationPropertiesOverride = null;
290
- /** @internal */
291
- this._isNode = true;
292
- /**
293
- * An event triggered when the mesh is disposed
294
- */
295
- this.onDisposeObservable = new Observable();
296
- this._onDisposeObserver = null;
297
- // Behaviors
298
- this._behaviors = new Array();
299
- this.name = name;
300
- this.id = name;
301
- this._scene = (scene || EngineStore.LastCreatedScene);
302
- this.uniqueId = this._scene.getUniqueId();
303
- this._initCache();
304
- if (isPure) {
305
- this._addToSceneRootNodes();
306
- }
307
- }
308
- /**
309
- * Gets the scene of the node
310
- * @returns a scene
311
- */
312
- getScene() {
313
- return this._scene;
314
- }
315
- /**
316
- * Gets the engine of the node
317
- * @returns a Engine
318
- */
319
- getEngine() {
320
- return this._scene.getEngine();
321
- }
322
- /**
323
- * Attach a behavior to the node
324
- * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
325
- * @param behavior defines the behavior to attach
326
- * @param attachImmediately defines that the behavior must be attached even if the scene is still loading
327
- * @returns the current Node
328
- */
329
- addBehavior(behavior, attachImmediately = false) {
330
- const index = this._behaviors.indexOf(behavior);
331
- if (index !== -1) {
332
- return this;
333
- }
334
- behavior.init();
335
- if (this._scene.isLoading && !attachImmediately) {
336
- // We defer the attach when the scene will be loaded
337
- this._scene.onDataLoadedObservable.addOnce(() => {
338
- // Make sure the behavior has not been removed.
339
- if (this._behaviors.includes(behavior)) {
26
+ let Node = (() => {
27
+ var _a;
28
+ let _name_decorators;
29
+ let _name_initializers = [];
30
+ let _name_extraInitializers = [];
31
+ let _id_decorators;
32
+ let _id_initializers = [];
33
+ let _id_extraInitializers = [];
34
+ let _uniqueId_decorators;
35
+ let _uniqueId_initializers = [];
36
+ let _uniqueId_extraInitializers = [];
37
+ let _state_decorators;
38
+ let _state_initializers = [];
39
+ let _state_extraInitializers = [];
40
+ let _metadata_decorators;
41
+ let _metadata_initializers = [];
42
+ let _metadata_extraInitializers = [];
43
+ return _a = class Node {
44
+ /**
45
+ * Add a new node constructor
46
+ * @param type defines the type name of the node to construct
47
+ * @param constructorFunc defines the constructor function
48
+ */
49
+ static AddNodeConstructor(type, constructorFunc) {
50
+ this._NodeConstructors[type] = constructorFunc;
51
+ }
52
+ /**
53
+ * Returns a node constructor based on type name
54
+ * @param type defines the type name
55
+ * @param name defines the new node name
56
+ * @param scene defines the hosting scene
57
+ * @param options defines optional options to transmit to constructors
58
+ * @returns the new constructor or null
59
+ */
60
+ static Construct(type, name, scene, options) {
61
+ const constructorFunc = this._NodeConstructors[type];
62
+ if (!constructorFunc) {
63
+ return null;
64
+ }
65
+ return constructorFunc(name, scene, options);
66
+ }
67
+ /**
68
+ * Gets or sets the accessibility tag to describe the node for accessibility purpose.
69
+ */
70
+ set accessibilityTag(value) {
71
+ this._accessibilityTag = value;
72
+ this.onAccessibilityTagChangedObservable.notifyObservers(value);
73
+ }
74
+ get accessibilityTag() {
75
+ return this._accessibilityTag;
76
+ }
77
+ /**
78
+ * Gets or sets a boolean used to define if the node must be serialized
79
+ */
80
+ get doNotSerialize() {
81
+ if (this._nodeDataStorage._doNotSerialize) {
82
+ return true;
83
+ }
84
+ if (this._parentNode) {
85
+ return this._parentNode.doNotSerialize;
86
+ }
87
+ return false;
88
+ }
89
+ set doNotSerialize(value) {
90
+ this._nodeDataStorage._doNotSerialize = value;
91
+ }
92
+ /**
93
+ * Gets a boolean indicating if the node has been disposed
94
+ * @returns true if the node was disposed
95
+ */
96
+ isDisposed() {
97
+ return this._nodeDataStorage._isDisposed;
98
+ }
99
+ /**
100
+ * Gets or sets the parent of the node (without keeping the current position in the scene)
101
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/mesh/transforms/parent_pivot/parent
102
+ */
103
+ set parent(parent) {
104
+ if (this._parentNode === parent) {
105
+ return;
106
+ }
107
+ const previousParentNode = this._parentNode;
108
+ const cachedPreviousParentNodeChildren = previousParentNode ? (previousParentNode._children ? previousParentNode._children.slice() : null) : null;
109
+ // Remove self from list of children of parent
110
+ if (this._parentNode && this._parentNode._children !== undefined && this._parentNode._children !== null) {
111
+ const index = this._parentNode._children.indexOf(this);
112
+ if (index !== -1) {
113
+ this._parentNode._children.splice(index, 1);
114
+ }
115
+ if (!parent && !this._nodeDataStorage._isDisposed) {
116
+ this._addToSceneRootNodes();
117
+ }
118
+ }
119
+ // Store new parent
120
+ this._parentNode = parent;
121
+ this._isDirty = true;
122
+ // Add as child to new parent
123
+ if (this._parentNode) {
124
+ if (this._parentNode._children === undefined || this._parentNode._children === null) {
125
+ this._parentNode._children = new Array();
126
+ }
127
+ const cachedChildren = this._parentNode._children.slice();
128
+ this._parentNode._children.push(this);
129
+ this._parentNode.onChildNodesChangedObservable.notifyObservers({
130
+ current: this._parentNode._children,
131
+ cache: cachedChildren,
132
+ });
133
+ if (!previousParentNode) {
134
+ this._removeFromSceneRootNodes();
135
+ }
136
+ }
137
+ if (previousParentNode) {
138
+ previousParentNode.onChildNodesChangedObservable.notifyObservers({
139
+ current: previousParentNode._children,
140
+ cache: cachedPreviousParentNodeChildren,
141
+ });
142
+ }
143
+ // Enabled state
144
+ this._syncParentEnabledState();
145
+ }
146
+ get parent() {
147
+ return this._parentNode;
148
+ }
149
+ /**
150
+ * If set to true, this node, when renderable, will only be visible if its parent(s) are also visible.
151
+ * @default false
152
+ */
153
+ get inheritVisibility() {
154
+ return this._nodeDataStorage._inheritVisibility;
155
+ }
156
+ set inheritVisibility(value) {
157
+ this._nodeDataStorage._inheritVisibility = value;
158
+ }
159
+ /**
160
+ * Gets or sets a boolean indicating whether this node is visible, either this node itself when it is renderable or its renderable child nodes when `inheritVisibility` is true.
161
+ * @default true
162
+ */
163
+ get isVisible() {
164
+ if (!this._isSystemVisible) {
165
+ return false;
166
+ }
167
+ if (this.inheritVisibility && this._parentNode && !this._parentNode.isVisible) {
168
+ return false;
169
+ }
170
+ return this._nodeDataStorage._isVisible;
171
+ }
172
+ set isVisible(value) {
173
+ this._nodeDataStorage._isVisible = value;
174
+ }
175
+ /**
176
+ * @internal
177
+ */
178
+ _serializeAsParent(serializationObject) {
179
+ serializationObject.parentId = this.uniqueId;
180
+ }
181
+ /** @internal */
182
+ _addToSceneRootNodes() {
183
+ if (this._nodeDataStorage._sceneRootNodesIndex === -1) {
184
+ this._nodeDataStorage._sceneRootNodesIndex = this._scene.rootNodes.length;
185
+ this._scene.rootNodes.push(this);
186
+ }
187
+ }
188
+ /** @internal */
189
+ _removeFromSceneRootNodes() {
190
+ if (this._nodeDataStorage._sceneRootNodesIndex !== -1) {
191
+ const rootNodes = this._scene.rootNodes;
192
+ const lastIdx = rootNodes.length - 1;
193
+ rootNodes[this._nodeDataStorage._sceneRootNodesIndex] = rootNodes[lastIdx];
194
+ rootNodes[this._nodeDataStorage._sceneRootNodesIndex]._nodeDataStorage._sceneRootNodesIndex = this._nodeDataStorage._sceneRootNodesIndex;
195
+ this._scene.rootNodes.pop();
196
+ this._nodeDataStorage._sceneRootNodesIndex = -1;
197
+ }
198
+ }
199
+ /**
200
+ * Gets or sets the animation properties override
201
+ */
202
+ get animationPropertiesOverride() {
203
+ if (!this._animationPropertiesOverride) {
204
+ return this._scene.animationPropertiesOverride;
205
+ }
206
+ return this._animationPropertiesOverride;
207
+ }
208
+ set animationPropertiesOverride(value) {
209
+ this._animationPropertiesOverride = value;
210
+ }
211
+ /**
212
+ * Gets a string identifying the name of the class
213
+ * @returns "Node" string
214
+ */
215
+ getClassName() {
216
+ return "Node";
217
+ }
218
+ /**
219
+ * Sets a callback that will be raised when the node will be disposed
220
+ */
221
+ set onDispose(callback) {
222
+ if (this._onDisposeObserver) {
223
+ this.onDisposeObservable.remove(this._onDisposeObserver);
224
+ }
225
+ this._onDisposeObserver = this.onDisposeObservable.add(callback);
226
+ }
227
+ /**
228
+ * An event triggered when the enabled state of the node changes
229
+ */
230
+ get onEnabledStateChangedObservable() {
231
+ return this._nodeDataStorage._onEnabledStateChangedObservable;
232
+ }
233
+ /**
234
+ * An event triggered when the node is cloned
235
+ */
236
+ get onClonedObservable() {
237
+ return this._nodeDataStorage._onClonedObservable;
238
+ }
239
+ /**
240
+ * Creates a new Node
241
+ * @param name the name and id to be given to this node
242
+ * @param scene the scene this node will be added to
243
+ * @param isPure indicates this Node is just a Node, and not a derived class like Mesh or Camera
244
+ */
245
+ constructor(name, scene = null, isPure = true) {
246
+ this._isDirty = false;
247
+ this._nodeDataStorage = new _InternalNodeDataInfo();
248
+ /**
249
+ * Gets or sets the name of the node
250
+ */
251
+ this.name = __runInitializers(this, _name_initializers, void 0);
252
+ /**
253
+ * Gets or sets the id of the node
254
+ */
255
+ this.id = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _id_initializers, void 0));
256
+ /**
257
+ * Gets or sets the unique id of the node
258
+ */
259
+ this.uniqueId = (__runInitializers(this, _id_extraInitializers), __runInitializers(this, _uniqueId_initializers, void 0));
260
+ /**
261
+ * Gets or sets a string used to store user defined state for the node
262
+ */
263
+ this.state = (__runInitializers(this, _uniqueId_extraInitializers), __runInitializers(this, _state_initializers, ""));
264
+ /**
265
+ * Gets or sets an object used to store user defined information for the node
266
+ */
267
+ this.metadata = (__runInitializers(this, _state_extraInitializers), __runInitializers(this, _metadata_initializers, null));
268
+ /** @internal */
269
+ this._internalMetadata = __runInitializers(this, _metadata_extraInitializers);
270
+ /**
271
+ * For internal use only. Please do not use.
272
+ */
273
+ this.reservedDataStore = null;
274
+ this._accessibilityTag = null;
275
+ /**
276
+ * Observable fired when an accessibility tag is changed
277
+ */
278
+ this.onAccessibilityTagChangedObservable = new Observable();
279
+ /**
280
+ * Observable fired when children changed
281
+ */
282
+ this.onChildNodesChangedObservable = new Observable();
283
+ /** @internal */
284
+ this._parentContainer = null;
285
+ /**
286
+ * Gets a list of Animations associated with the node
287
+ */
288
+ this.animations = [];
289
+ this._ranges = {};
290
+ /**
291
+ * Callback raised when the node is ready to be used
292
+ */
293
+ this.onReady = null;
294
+ /** @internal */
295
+ this._currentRenderId = -1;
296
+ this._parentUpdateId = -1;
297
+ /** @internal */
298
+ this._childUpdateId = -1;
299
+ /** @internal */
300
+ this._waitingParentId = null;
301
+ /** @internal */
302
+ this._waitingParentInstanceIndex = null;
303
+ /** @internal */
304
+ this._waitingParsedUniqueId = null;
305
+ /** @internal */
306
+ this._cache = {};
307
+ this._parentNode = null;
308
+ /** @internal */
309
+ this._children = null;
310
+ /** @internal */
311
+ this._worldMatrix = Matrix.Identity();
312
+ /** @internal */
313
+ this._worldMatrixDeterminant = 0;
314
+ /** @internal */
315
+ this._worldMatrixDeterminantIsDirty = true;
316
+ /**
317
+ * Control if the mesh is visible by system define
318
+ */
319
+ this._isSystemVisible = true;
320
+ this._animationPropertiesOverride = null;
321
+ /** @internal */
322
+ this._isNode = true;
323
+ /**
324
+ * An event triggered when the mesh is disposed
325
+ */
326
+ this.onDisposeObservable = new Observable();
327
+ this._onDisposeObserver = null;
328
+ // Behaviors
329
+ this._behaviors = new Array();
330
+ this.name = name;
331
+ this.id = name;
332
+ this._scene = (scene || EngineStore.LastCreatedScene);
333
+ this.uniqueId = this._scene.getUniqueId();
334
+ this._initCache();
335
+ if (isPure) {
336
+ this._addToSceneRootNodes();
337
+ }
338
+ }
339
+ /**
340
+ * Gets the scene of the node
341
+ * @returns a scene
342
+ */
343
+ getScene() {
344
+ return this._scene;
345
+ }
346
+ /**
347
+ * Gets the engine of the node
348
+ * @returns a Engine
349
+ */
350
+ getEngine() {
351
+ return this._scene.getEngine();
352
+ }
353
+ /**
354
+ * Attach a behavior to the node
355
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
356
+ * @param behavior defines the behavior to attach
357
+ * @param attachImmediately defines that the behavior must be attached even if the scene is still loading
358
+ * @returns the current Node
359
+ */
360
+ addBehavior(behavior, attachImmediately = false) {
361
+ const index = this._behaviors.indexOf(behavior);
362
+ if (index !== -1) {
363
+ return this;
364
+ }
365
+ behavior.init();
366
+ if (this._scene.isLoading && !attachImmediately) {
367
+ // We defer the attach when the scene will be loaded
368
+ this._scene.onDataLoadedObservable.addOnce(() => {
369
+ // Make sure the behavior has not been removed.
370
+ if (this._behaviors.includes(behavior)) {
371
+ behavior.attach(this);
372
+ }
373
+ });
374
+ }
375
+ else {
340
376
  behavior.attach(this);
341
377
  }
342
- });
343
- }
344
- else {
345
- behavior.attach(this);
346
- }
347
- this._behaviors.push(behavior);
348
- return this;
349
- }
350
- /**
351
- * Remove an attached behavior
352
- * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
353
- * @param behavior defines the behavior to attach
354
- * @returns the current Node
355
- */
356
- removeBehavior(behavior) {
357
- const index = this._behaviors.indexOf(behavior);
358
- if (index === -1) {
359
- return this;
360
- }
361
- // Remove the behavior from the array before calling detach so that any reentrant
362
- // removeBehavior calls performed during detach (e.g. when a behavior owns and removes
363
- // child behaviors of its own) operate on a consistent array and do not invalidate
364
- // the index used for splicing here. See issue #18537.
365
- this._behaviors.splice(index, 1);
366
- behavior.detach();
367
- return this;
368
- }
369
- /**
370
- * Gets the list of attached behaviors
371
- * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
372
- */
373
- get behaviors() {
374
- return this._behaviors;
375
- }
376
- /**
377
- * Gets an attached behavior by name
378
- * @param name defines the name of the behavior to look for
379
- * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
380
- * @returns null if behavior was not found else the requested behavior
381
- */
382
- getBehaviorByName(name) {
383
- for (const behavior of this._behaviors) {
384
- if (behavior.name === name) {
385
- return behavior;
386
- }
387
- }
388
- return null;
389
- }
390
- /**
391
- * Returns the latest update of the World matrix
392
- * @returns a Matrix
393
- */
394
- getWorldMatrix() {
395
- if (this._currentRenderId !== this._scene.getRenderId()) {
396
- this.computeWorldMatrix();
397
- }
398
- return this._worldMatrix;
399
- }
400
- /** @internal */
401
- _getWorldMatrixDeterminant() {
402
- if (this._worldMatrixDeterminantIsDirty) {
403
- this._worldMatrixDeterminantIsDirty = false;
404
- this._worldMatrixDeterminant = this._worldMatrix.determinant();
405
- }
406
- return this._worldMatrixDeterminant;
407
- }
408
- /**
409
- * Returns directly the latest state of the mesh World matrix.
410
- * A Matrix is returned.
411
- */
412
- get worldMatrixFromCache() {
413
- return this._worldMatrix;
414
- }
415
- // override it in derived class if you add new variables to the cache
416
- // and call the parent class method
417
- /** @internal */
418
- _initCache() {
419
- this._cache = {};
420
- }
421
- /**
422
- * @internal
423
- */
424
- updateCache(force) {
425
- if (!force && this.isSynchronized()) {
426
- return;
427
- }
428
- this._updateCache();
429
- }
430
- /**
431
- * @internal
432
- */
433
- _getActionManagerForTrigger(trigger, _initialCall = true) {
434
- if (!this.parent) {
435
- return null;
436
- }
437
- return this.parent._getActionManagerForTrigger(trigger, false);
438
- }
439
- // override it in derived class if you add new variables to the cache
440
- // and call the parent class method if !ignoreParentClass
441
- /**
442
- * @internal
443
- */
444
- _updateCache(_ignoreParentClass) { }
445
- // override it in derived class if you add new variables to the cache
446
- /** @internal */
447
- _isSynchronized() {
448
- return true;
449
- }
450
- /** @internal */
451
- _markSyncedWithParent() {
452
- if (this._parentNode) {
453
- this._parentUpdateId = this._parentNode._childUpdateId;
454
- }
455
- }
456
- /** @internal */
457
- isSynchronizedWithParent() {
458
- if (!this._parentNode) {
459
- return true;
460
- }
461
- if (this._parentNode._isDirty || this._parentUpdateId !== this._parentNode._childUpdateId) {
462
- return false;
463
- }
464
- return this._parentNode.isSynchronized();
465
- }
466
- /** @internal */
467
- isSynchronized() {
468
- if (this._parentNode && !this.isSynchronizedWithParent()) {
469
- return false;
470
- }
471
- return this._isSynchronized();
472
- }
473
- /**
474
- * Is this node ready to be used/rendered
475
- * @param _completeCheck defines if a complete check (including materials and lights) has to be done (false by default)
476
- * @returns true if the node is ready
477
- */
478
- isReady(_completeCheck = false) {
479
- return this._nodeDataStorage._isReady;
480
- }
481
- /**
482
- * Flag the node as dirty (Forcing it to update everything)
483
- * @param _property helps children apply precise "dirtyfication"
484
- * @returns this node
485
- */
486
- markAsDirty(_property) {
487
- this._currentRenderId = Number.MAX_VALUE;
488
- this._isDirty = true;
489
- return this;
490
- }
491
- /**
492
- * Is this node enabled?
493
- * If the node has a parent, all ancestors will be checked and false will be returned if any are false (not enabled), otherwise will return true
494
- * @param checkAncestors indicates if this method should check the ancestors. The default is to check the ancestors. If set to false, the method will return the value of this node without checking ancestors
495
- * @returns whether this node (and its parent) is enabled
496
- */
497
- isEnabled(checkAncestors = true) {
498
- if (checkAncestors === false) {
499
- return this._nodeDataStorage._isEnabled;
500
- }
501
- if (!this._nodeDataStorage._isEnabled) {
502
- return false;
503
- }
504
- return this._nodeDataStorage._isParentEnabled;
505
- }
506
- /** @internal */
507
- _syncParentEnabledState() {
508
- this._nodeDataStorage._isParentEnabled = this._parentNode ? this._parentNode.isEnabled() : true;
509
- if (this._children) {
510
- for (const c of this._children) {
511
- c._syncParentEnabledState(); // Force children to update accordingly
512
- }
513
- }
514
- }
515
- /**
516
- * Set the enabled state of this node
517
- * @param value defines the new enabled state
518
- */
519
- setEnabled(value) {
520
- if (this._nodeDataStorage._isEnabled === value) {
521
- return;
522
- }
523
- this._nodeDataStorage._isEnabled = value;
524
- this._syncParentEnabledState();
525
- this._nodeDataStorage._onEnabledStateChangedObservable.notifyObservers(value);
526
- }
527
- /**
528
- * Is this node a descendant of the given node?
529
- * The function will iterate up the hierarchy until the ancestor was found or no more parents defined
530
- * @param ancestor defines the parent node to inspect
531
- * @returns a boolean indicating if this node is a descendant of the given node
532
- */
533
- isDescendantOf(ancestor) {
534
- if (this.parent) {
535
- if (this.parent === ancestor) {
378
+ this._behaviors.push(behavior);
379
+ return this;
380
+ }
381
+ /**
382
+ * Remove an attached behavior
383
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
384
+ * @param behavior defines the behavior to attach
385
+ * @returns the current Node
386
+ */
387
+ removeBehavior(behavior) {
388
+ const index = this._behaviors.indexOf(behavior);
389
+ if (index === -1) {
390
+ return this;
391
+ }
392
+ // Remove the behavior from the array before calling detach so that any reentrant
393
+ // removeBehavior calls performed during detach (e.g. when a behavior owns and removes
394
+ // child behaviors of its own) operate on a consistent array and do not invalidate
395
+ // the index used for splicing here. See issue #18537.
396
+ this._behaviors.splice(index, 1);
397
+ behavior.detach();
398
+ return this;
399
+ }
400
+ /**
401
+ * Gets the list of attached behaviors
402
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
403
+ */
404
+ get behaviors() {
405
+ return this._behaviors;
406
+ }
407
+ /**
408
+ * Gets an attached behavior by name
409
+ * @param name defines the name of the behavior to look for
410
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
411
+ * @returns null if behavior was not found else the requested behavior
412
+ */
413
+ getBehaviorByName(name) {
414
+ for (const behavior of this._behaviors) {
415
+ if (behavior.name === name) {
416
+ return behavior;
417
+ }
418
+ }
419
+ return null;
420
+ }
421
+ /**
422
+ * Returns the latest update of the World matrix
423
+ * @returns a Matrix
424
+ */
425
+ getWorldMatrix() {
426
+ if (this._currentRenderId !== this._scene.getRenderId()) {
427
+ this.computeWorldMatrix();
428
+ }
429
+ return this._worldMatrix;
430
+ }
431
+ /** @internal */
432
+ _getWorldMatrixDeterminant() {
433
+ if (this._worldMatrixDeterminantIsDirty) {
434
+ this._worldMatrixDeterminantIsDirty = false;
435
+ this._worldMatrixDeterminant = this._worldMatrix.determinant();
436
+ }
437
+ return this._worldMatrixDeterminant;
438
+ }
439
+ /**
440
+ * Returns directly the latest state of the mesh World matrix.
441
+ * A Matrix is returned.
442
+ */
443
+ get worldMatrixFromCache() {
444
+ return this._worldMatrix;
445
+ }
446
+ // override it in derived class if you add new variables to the cache
447
+ // and call the parent class method
448
+ /** @internal */
449
+ _initCache() {
450
+ this._cache = {};
451
+ }
452
+ /**
453
+ * @internal
454
+ */
455
+ updateCache(force) {
456
+ if (!force && this.isSynchronized()) {
457
+ return;
458
+ }
459
+ this._updateCache();
460
+ }
461
+ /**
462
+ * @internal
463
+ */
464
+ _getActionManagerForTrigger(trigger, _initialCall = true) {
465
+ if (!this.parent) {
466
+ return null;
467
+ }
468
+ return this.parent._getActionManagerForTrigger(trigger, false);
469
+ }
470
+ // override it in derived class if you add new variables to the cache
471
+ // and call the parent class method if !ignoreParentClass
472
+ /**
473
+ * @internal
474
+ */
475
+ _updateCache(_ignoreParentClass) { }
476
+ // override it in derived class if you add new variables to the cache
477
+ /** @internal */
478
+ _isSynchronized() {
536
479
  return true;
537
480
  }
538
- return this.parent.isDescendantOf(ancestor);
539
- }
540
- return false;
541
- }
542
- /**
543
- * @internal
544
- */
545
- _getDescendants(results, directDescendantsOnly = false, predicate) {
546
- if (!this._children) {
547
- return;
548
- }
549
- for (let index = 0; index < this._children.length; index++) {
550
- const item = this._children[index];
551
- if (!predicate || predicate(item)) {
552
- results.push(item);
553
- }
554
- if (!directDescendantsOnly) {
555
- item._getDescendants(results, false, predicate);
556
- }
557
- }
558
- }
559
- /**
560
- * Will return all nodes that have this node as ascendant
561
- * @param directDescendantsOnly defines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered
562
- * @param predicate defines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
563
- * @returns all children nodes of all types
564
- */
565
- getDescendants(directDescendantsOnly, predicate) {
566
- const results = [];
567
- this._getDescendants(results, directDescendantsOnly, predicate);
568
- return results;
569
- }
570
- /**
571
- * Get all child-meshes of this node
572
- * @param directDescendantsOnly defines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered (Default: false)
573
- * @param predicate defines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
574
- * @returns an array of AbstractMesh
575
- */
576
- getChildMeshes(directDescendantsOnly, predicate) {
577
- const results = [];
578
- this._getDescendants(results, directDescendantsOnly, (node) => {
579
- return (!predicate || predicate(node)) && node.cullingStrategy !== undefined;
580
- });
581
- return results;
582
- }
583
- /**
584
- * Get all direct children of this node
585
- * @param predicate defines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
586
- * @param directDescendantsOnly defines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered (Default: true)
587
- * @returns an array of Node
588
- */
589
- getChildren(predicate, directDescendantsOnly = true) {
590
- return this.getDescendants(directDescendantsOnly, predicate);
591
- }
592
- /**
593
- * @internal
594
- */
595
- _setReady(state) {
596
- if (state === this._nodeDataStorage._isReady) {
597
- return;
598
- }
599
- if (!state) {
600
- this._nodeDataStorage._isReady = false;
601
- return;
602
- }
603
- if (this.onReady) {
604
- this.onReady(this);
605
- }
606
- this._nodeDataStorage._isReady = true;
607
- }
608
- /**
609
- * Get an animation by name
610
- * @param name defines the name of the animation to look for
611
- * @returns null if not found else the requested animation
612
- */
613
- getAnimationByName(name) {
614
- for (let i = 0; i < this.animations.length; i++) {
615
- const animation = this.animations[i];
616
- if (animation.name === name) {
617
- return animation;
618
- }
619
- }
620
- return null;
621
- }
622
- /**
623
- * Creates an animation range for this node
624
- * @param name defines the name of the range
625
- * @param from defines the starting key
626
- * @param to defines the end key
627
- */
628
- createAnimationRange(name, from, to) {
629
- // check name not already in use
630
- if (!this._ranges[name]) {
631
- this._ranges[name] = Node._AnimationRangeFactory(name, from, to);
632
- for (let i = 0, nAnimations = this.animations.length; i < nAnimations; i++) {
633
- if (this.animations[i]) {
634
- this.animations[i].createRange(name, from, to);
635
- }
636
- }
637
- }
638
- }
639
- /**
640
- * Delete a specific animation range
641
- * @param name defines the name of the range to delete
642
- * @param deleteFrames defines if animation frames from the range must be deleted as well
643
- */
644
- deleteAnimationRange(name, deleteFrames = true) {
645
- for (let i = 0, nAnimations = this.animations.length; i < nAnimations; i++) {
646
- if (this.animations[i]) {
647
- this.animations[i].deleteRange(name, deleteFrames);
648
- }
649
- }
650
- this._ranges[name] = null; // said much faster than 'delete this._range[name]'
651
- }
652
- /**
653
- * Get an animation range by name
654
- * @param name defines the name of the animation range to look for
655
- * @returns null if not found else the requested animation range
656
- */
657
- getAnimationRange(name) {
658
- return this._ranges[name] || null;
659
- }
660
- /**
661
- * Clone the current node
662
- * @param name Name of the new clone
663
- * @param newParent New parent for the clone
664
- * @param doNotCloneChildren Do not clone children hierarchy
665
- * @returns the new transform node
666
- */
667
- clone(name, newParent, doNotCloneChildren) {
668
- const result = SerializationHelper.Clone(() => new Node(name, this.getScene()), this);
669
- if (newParent) {
670
- result.parent = newParent;
671
- }
672
- if (!doNotCloneChildren) {
673
- // Children
674
- const directDescendants = this.getDescendants(true);
675
- for (let index = 0; index < directDescendants.length; index++) {
676
- const child = directDescendants[index];
677
- child.clone(name + "." + child.name, result);
678
- }
679
- }
680
- return result;
681
- }
682
- /**
683
- * Gets the list of all animation ranges defined on this node
684
- * @returns an array
685
- */
686
- getAnimationRanges() {
687
- const animationRanges = [];
688
- let name;
689
- for (name in this._ranges) {
690
- animationRanges.push(this._ranges[name]);
691
- }
692
- return animationRanges;
693
- }
694
- /**
695
- * Will start the animation sequence
696
- * @param name defines the range frames for animation sequence
697
- * @param loop defines if the animation should loop (false by default)
698
- * @param speedRatio defines the speed factor in which to run the animation (1 by default)
699
- * @param onAnimationEnd defines a function to be executed when the animation ended (undefined by default)
700
- * @returns the object created for this animation. If range does not exist, it will return null
701
- */
702
- beginAnimation(name, loop, speedRatio, onAnimationEnd) {
703
- const range = this.getAnimationRange(name);
704
- if (!range) {
705
- return null;
706
- }
707
- return this._scene.beginAnimation(this, range.from, range.to, loop, speedRatio, onAnimationEnd);
708
- }
709
- /**
710
- * Serialize animation ranges into a JSON compatible object
711
- * @returns serialization object
712
- */
713
- serializeAnimationRanges() {
714
- const serializationRanges = [];
715
- for (const name in this._ranges) {
716
- const localRange = this._ranges[name];
717
- if (!localRange) {
718
- continue;
719
- }
720
- const range = {};
721
- range.name = name;
722
- range.from = localRange.from;
723
- range.to = localRange.to;
724
- serializationRanges.push(range);
725
- }
726
- return serializationRanges;
727
- }
728
- /**
729
- * Computes the world matrix of the node
730
- * @param _force defines if the cache version should be invalidated forcing the world matrix to be created from scratch
731
- * @returns the world matrix
732
- */
733
- computeWorldMatrix(_force) {
734
- if (!this._worldMatrix) {
735
- this._worldMatrix = Matrix.Identity();
736
- }
737
- return this._worldMatrix;
738
- }
739
- getMetadata() {
740
- if (!this.metadata) {
741
- this.metadata = {};
742
- }
743
- return this.metadata;
744
- }
745
- getMetadataByKey(key) {
746
- const metadata = this.getMetadata();
747
- return metadata[key];
748
- }
749
- /**
750
- * Releases resources associated with this node.
751
- * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)
752
- * @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)
753
- */
754
- dispose(doNotRecurse, disposeMaterialAndTextures = false) {
755
- this._nodeDataStorage._isDisposed = true;
756
- if (!doNotRecurse) {
757
- const nodes = this.getDescendants(true);
758
- for (const node of nodes) {
759
- node.dispose(doNotRecurse, disposeMaterialAndTextures);
760
- }
761
- }
762
- if (!this.parent) {
763
- this._removeFromSceneRootNodes();
764
- }
765
- else {
766
- this.parent = null;
767
- }
768
- this.onChildNodesChangedObservable.clear();
769
- // Callback
770
- this.onDisposeObservable.notifyObservers(this);
771
- this.onDisposeObservable.clear();
772
- this.onEnabledStateChangedObservable.clear();
773
- this.onClonedObservable.clear();
774
- // Behaviors
775
- for (const behavior of this._behaviors) {
776
- behavior.detach();
777
- }
778
- this._behaviors.length = 0;
779
- this.metadata = null;
780
- }
781
- /**
782
- * Parse animation range data from a serialization object and store them into a given node
783
- * @param node defines where to store the animation ranges
784
- * @param parsedNode defines the serialization object to read data from
785
- * @param _scene defines the hosting scene
786
- */
787
- static ParseAnimationRanges(node, parsedNode, _scene) {
788
- if (parsedNode.ranges) {
789
- for (let index = 0; index < parsedNode.ranges.length; index++) {
790
- const data = parsedNode.ranges[index];
791
- node.createAnimationRange(data.name, data.from, data.to);
792
- }
793
- }
794
- }
795
- /**
796
- * Return the minimum and maximum world vectors of the entire hierarchy under current node
797
- * @param includeDescendants Include bounding info from descendants as well (true by default)
798
- * @param predicate defines a callback function that can be customize to filter what meshes should be included in the list used to compute the bounding vectors
799
- * @returns the new bounding vectors
800
- */
801
- getHierarchyBoundingVectors(includeDescendants = true, predicate = null) {
802
- return this.getHierarchyBoundingVectorsToRef(includeDescendants, predicate, { min: Vector3.Zero(), max: Vector3.Zero() });
803
- }
804
- /**
805
- * Return the minimum and maximum world vectors of the entire hierarchy under current node
806
- * @param includeDescendants Include bounding info from descendants as well (true by default)
807
- * @param predicate defines a callback function that can be customize to filter what meshes should be included in the list used to compute the bounding vectors
808
- * @param ref defines the ref vectors
809
- * @returns the new bounding vectors
810
- */
811
- getHierarchyBoundingVectorsToRef(includeDescendants = true, predicate = null, ref) {
812
- // Ensures that all world matrix will be recomputed.
813
- this.getScene().incrementRenderId();
814
- this.computeWorldMatrix(true);
815
- const min = ref.min;
816
- const max = ref.max;
817
- const thisAbstractMesh = this;
818
- if (thisAbstractMesh.getBoundingInfo && thisAbstractMesh.subMeshes) {
819
- // If this is an abstract mesh get its bounding info
820
- const boundingInfo = thisAbstractMesh.getBoundingInfo();
821
- min.copyFrom(boundingInfo.boundingBox.minimumWorld);
822
- max.copyFrom(boundingInfo.boundingBox.maximumWorld);
823
- }
824
- else {
825
- min.copyFromFloats(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
826
- max.copyFromFloats(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
827
- }
828
- if (includeDescendants) {
829
- const descendants = this.getDescendants(false);
830
- for (const descendant of descendants) {
831
- const childMesh = descendant;
832
- childMesh.computeWorldMatrix(true);
833
- // Filters meshes based on custom predicate function.
834
- if (predicate && !predicate(childMesh)) {
835
- continue;
836
- }
837
- //make sure we have the needed params to get mix and max
838
- if (!childMesh.getBoundingInfo || childMesh.getTotalVertices() === 0) {
839
- continue;
840
- }
841
- const childBoundingInfo = childMesh.getBoundingInfo();
842
- const boundingBox = childBoundingInfo.boundingBox;
843
- const minBox = boundingBox.minimumWorld;
844
- const maxBox = boundingBox.maximumWorld;
845
- Vector3.CheckExtends(minBox, min, max);
846
- Vector3.CheckExtends(maxBox, min, max);
847
- }
848
- }
849
- return ref;
850
- }
851
- }
852
- /**
853
- * @internal
854
- */
855
- Node._AnimationRangeFactory = (_name, _from, _to) => {
856
- throw _WarnImport("AnimationRange");
857
- };
858
- Node._NodeConstructors = {};
859
- __decorate([
860
- serialize()
861
- ], Node.prototype, "name", void 0);
862
- __decorate([
863
- serialize()
864
- ], Node.prototype, "id", void 0);
865
- __decorate([
866
- serialize()
867
- ], Node.prototype, "uniqueId", void 0);
868
- __decorate([
869
- serialize()
870
- ], Node.prototype, "state", void 0);
871
- __decorate([
872
- serialize()
873
- ], Node.prototype, "metadata", void 0);
481
+ /** @internal */
482
+ _markSyncedWithParent() {
483
+ if (this._parentNode) {
484
+ this._parentUpdateId = this._parentNode._childUpdateId;
485
+ }
486
+ }
487
+ /** @internal */
488
+ isSynchronizedWithParent() {
489
+ if (!this._parentNode) {
490
+ return true;
491
+ }
492
+ if (this._parentNode._isDirty || this._parentUpdateId !== this._parentNode._childUpdateId) {
493
+ return false;
494
+ }
495
+ return this._parentNode.isSynchronized();
496
+ }
497
+ /** @internal */
498
+ isSynchronized() {
499
+ if (this._parentNode && !this.isSynchronizedWithParent()) {
500
+ return false;
501
+ }
502
+ return this._isSynchronized();
503
+ }
504
+ /**
505
+ * Is this node ready to be used/rendered
506
+ * @param _completeCheck defines if a complete check (including materials and lights) has to be done (false by default)
507
+ * @returns true if the node is ready
508
+ */
509
+ isReady(_completeCheck = false) {
510
+ return this._nodeDataStorage._isReady;
511
+ }
512
+ /**
513
+ * Flag the node as dirty (Forcing it to update everything)
514
+ * @param _property helps children apply precise "dirtyfication"
515
+ * @returns this node
516
+ */
517
+ markAsDirty(_property) {
518
+ this._currentRenderId = Number.MAX_VALUE;
519
+ this._isDirty = true;
520
+ return this;
521
+ }
522
+ /**
523
+ * Is this node enabled?
524
+ * If the node has a parent, all ancestors will be checked and false will be returned if any are false (not enabled), otherwise will return true
525
+ * @param checkAncestors indicates if this method should check the ancestors. The default is to check the ancestors. If set to false, the method will return the value of this node without checking ancestors
526
+ * @returns whether this node (and its parent) is enabled
527
+ */
528
+ isEnabled(checkAncestors = true) {
529
+ if (checkAncestors === false) {
530
+ return this._nodeDataStorage._isEnabled;
531
+ }
532
+ if (!this._nodeDataStorage._isEnabled) {
533
+ return false;
534
+ }
535
+ return this._nodeDataStorage._isParentEnabled;
536
+ }
537
+ /** @internal */
538
+ _syncParentEnabledState() {
539
+ this._nodeDataStorage._isParentEnabled = this._parentNode ? this._parentNode.isEnabled() : true;
540
+ if (this._children) {
541
+ for (const c of this._children) {
542
+ c._syncParentEnabledState(); // Force children to update accordingly
543
+ }
544
+ }
545
+ }
546
+ /**
547
+ * Set the enabled state of this node
548
+ * @param value defines the new enabled state
549
+ */
550
+ setEnabled(value) {
551
+ if (this._nodeDataStorage._isEnabled === value) {
552
+ return;
553
+ }
554
+ this._nodeDataStorage._isEnabled = value;
555
+ this._syncParentEnabledState();
556
+ this._nodeDataStorage._onEnabledStateChangedObservable.notifyObservers(value);
557
+ }
558
+ /**
559
+ * Is this node a descendant of the given node?
560
+ * The function will iterate up the hierarchy until the ancestor was found or no more parents defined
561
+ * @param ancestor defines the parent node to inspect
562
+ * @returns a boolean indicating if this node is a descendant of the given node
563
+ */
564
+ isDescendantOf(ancestor) {
565
+ if (this.parent) {
566
+ if (this.parent === ancestor) {
567
+ return true;
568
+ }
569
+ return this.parent.isDescendantOf(ancestor);
570
+ }
571
+ return false;
572
+ }
573
+ /**
574
+ * @internal
575
+ */
576
+ _getDescendants(results, directDescendantsOnly = false, predicate) {
577
+ if (!this._children) {
578
+ return;
579
+ }
580
+ for (let index = 0; index < this._children.length; index++) {
581
+ const item = this._children[index];
582
+ if (!predicate || predicate(item)) {
583
+ results.push(item);
584
+ }
585
+ if (!directDescendantsOnly) {
586
+ item._getDescendants(results, false, predicate);
587
+ }
588
+ }
589
+ }
590
+ /**
591
+ * Will return all nodes that have this node as ascendant
592
+ * @param directDescendantsOnly defines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered
593
+ * @param predicate defines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
594
+ * @returns all children nodes of all types
595
+ */
596
+ getDescendants(directDescendantsOnly, predicate) {
597
+ const results = [];
598
+ this._getDescendants(results, directDescendantsOnly, predicate);
599
+ return results;
600
+ }
601
+ /**
602
+ * Get all child-meshes of this node
603
+ * @param directDescendantsOnly defines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered (Default: false)
604
+ * @param predicate defines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
605
+ * @returns an array of AbstractMesh
606
+ */
607
+ getChildMeshes(directDescendantsOnly, predicate) {
608
+ const results = [];
609
+ this._getDescendants(results, directDescendantsOnly, (node) => {
610
+ return (!predicate || predicate(node)) && node.cullingStrategy !== undefined;
611
+ });
612
+ return results;
613
+ }
614
+ /**
615
+ * Get all direct children of this node
616
+ * @param predicate defines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
617
+ * @param directDescendantsOnly defines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered (Default: true)
618
+ * @returns an array of Node
619
+ */
620
+ getChildren(predicate, directDescendantsOnly = true) {
621
+ return this.getDescendants(directDescendantsOnly, predicate);
622
+ }
623
+ /**
624
+ * @internal
625
+ */
626
+ _setReady(state) {
627
+ if (state === this._nodeDataStorage._isReady) {
628
+ return;
629
+ }
630
+ if (!state) {
631
+ this._nodeDataStorage._isReady = false;
632
+ return;
633
+ }
634
+ if (this.onReady) {
635
+ this.onReady(this);
636
+ }
637
+ this._nodeDataStorage._isReady = true;
638
+ }
639
+ /**
640
+ * Get an animation by name
641
+ * @param name defines the name of the animation to look for
642
+ * @returns null if not found else the requested animation
643
+ */
644
+ getAnimationByName(name) {
645
+ for (let i = 0; i < this.animations.length; i++) {
646
+ const animation = this.animations[i];
647
+ if (animation.name === name) {
648
+ return animation;
649
+ }
650
+ }
651
+ return null;
652
+ }
653
+ /**
654
+ * Creates an animation range for this node
655
+ * @param name defines the name of the range
656
+ * @param from defines the starting key
657
+ * @param to defines the end key
658
+ */
659
+ createAnimationRange(name, from, to) {
660
+ // check name not already in use
661
+ if (!this._ranges[name]) {
662
+ this._ranges[name] = _a._AnimationRangeFactory(name, from, to);
663
+ for (let i = 0, nAnimations = this.animations.length; i < nAnimations; i++) {
664
+ if (this.animations[i]) {
665
+ this.animations[i].createRange(name, from, to);
666
+ }
667
+ }
668
+ }
669
+ }
670
+ /**
671
+ * Delete a specific animation range
672
+ * @param name defines the name of the range to delete
673
+ * @param deleteFrames defines if animation frames from the range must be deleted as well
674
+ */
675
+ deleteAnimationRange(name, deleteFrames = true) {
676
+ for (let i = 0, nAnimations = this.animations.length; i < nAnimations; i++) {
677
+ if (this.animations[i]) {
678
+ this.animations[i].deleteRange(name, deleteFrames);
679
+ }
680
+ }
681
+ this._ranges[name] = null; // said much faster than 'delete this._range[name]'
682
+ }
683
+ /**
684
+ * Get an animation range by name
685
+ * @param name defines the name of the animation range to look for
686
+ * @returns null if not found else the requested animation range
687
+ */
688
+ getAnimationRange(name) {
689
+ return this._ranges[name] || null;
690
+ }
691
+ /**
692
+ * Clone the current node
693
+ * @param name Name of the new clone
694
+ * @param newParent New parent for the clone
695
+ * @param doNotCloneChildren Do not clone children hierarchy
696
+ * @returns the new transform node
697
+ */
698
+ clone(name, newParent, doNotCloneChildren) {
699
+ const result = SerializationHelper.Clone(() => new _a(name, this.getScene()), this);
700
+ if (newParent) {
701
+ result.parent = newParent;
702
+ }
703
+ if (!doNotCloneChildren) {
704
+ // Children
705
+ const directDescendants = this.getDescendants(true);
706
+ for (let index = 0; index < directDescendants.length; index++) {
707
+ const child = directDescendants[index];
708
+ child.clone(name + "." + child.name, result);
709
+ }
710
+ }
711
+ return result;
712
+ }
713
+ /**
714
+ * Gets the list of all animation ranges defined on this node
715
+ * @returns an array
716
+ */
717
+ getAnimationRanges() {
718
+ const animationRanges = [];
719
+ let name;
720
+ for (name in this._ranges) {
721
+ animationRanges.push(this._ranges[name]);
722
+ }
723
+ return animationRanges;
724
+ }
725
+ /**
726
+ * Will start the animation sequence
727
+ * @param name defines the range frames for animation sequence
728
+ * @param loop defines if the animation should loop (false by default)
729
+ * @param speedRatio defines the speed factor in which to run the animation (1 by default)
730
+ * @param onAnimationEnd defines a function to be executed when the animation ended (undefined by default)
731
+ * @returns the object created for this animation. If range does not exist, it will return null
732
+ */
733
+ beginAnimation(name, loop, speedRatio, onAnimationEnd) {
734
+ const range = this.getAnimationRange(name);
735
+ if (!range) {
736
+ return null;
737
+ }
738
+ return this._scene.beginAnimation(this, range.from, range.to, loop, speedRatio, onAnimationEnd);
739
+ }
740
+ /**
741
+ * Serialize animation ranges into a JSON compatible object
742
+ * @returns serialization object
743
+ */
744
+ serializeAnimationRanges() {
745
+ const serializationRanges = [];
746
+ for (const name in this._ranges) {
747
+ const localRange = this._ranges[name];
748
+ if (!localRange) {
749
+ continue;
750
+ }
751
+ const range = {};
752
+ range.name = name;
753
+ range.from = localRange.from;
754
+ range.to = localRange.to;
755
+ serializationRanges.push(range);
756
+ }
757
+ return serializationRanges;
758
+ }
759
+ /**
760
+ * Computes the world matrix of the node
761
+ * @param _force defines if the cache version should be invalidated forcing the world matrix to be created from scratch
762
+ * @returns the world matrix
763
+ */
764
+ computeWorldMatrix(_force) {
765
+ if (!this._worldMatrix) {
766
+ this._worldMatrix = Matrix.Identity();
767
+ }
768
+ return this._worldMatrix;
769
+ }
770
+ getMetadata() {
771
+ if (!this.metadata) {
772
+ this.metadata = {};
773
+ }
774
+ return this.metadata;
775
+ }
776
+ getMetadataByKey(key) {
777
+ const metadata = this.getMetadata();
778
+ return metadata[key];
779
+ }
780
+ /**
781
+ * Releases resources associated with this node.
782
+ * @param doNotRecurse Set to true to not recurse into each children (recurse into each children by default)
783
+ * @param disposeMaterialAndTextures Set to true to also dispose referenced materials and textures (false by default)
784
+ */
785
+ dispose(doNotRecurse, disposeMaterialAndTextures = false) {
786
+ this._nodeDataStorage._isDisposed = true;
787
+ if (!doNotRecurse) {
788
+ const nodes = this.getDescendants(true);
789
+ for (const node of nodes) {
790
+ node.dispose(doNotRecurse, disposeMaterialAndTextures);
791
+ }
792
+ }
793
+ if (!this.parent) {
794
+ this._removeFromSceneRootNodes();
795
+ }
796
+ else {
797
+ this.parent = null;
798
+ }
799
+ this.onChildNodesChangedObservable.clear();
800
+ // Callback
801
+ this.onDisposeObservable.notifyObservers(this);
802
+ this.onDisposeObservable.clear();
803
+ this.onEnabledStateChangedObservable.clear();
804
+ this.onClonedObservable.clear();
805
+ // Behaviors
806
+ for (const behavior of this._behaviors) {
807
+ behavior.detach();
808
+ }
809
+ this._behaviors.length = 0;
810
+ this.metadata = null;
811
+ }
812
+ /**
813
+ * Parse animation range data from a serialization object and store them into a given node
814
+ * @param node defines where to store the animation ranges
815
+ * @param parsedNode defines the serialization object to read data from
816
+ * @param _scene defines the hosting scene
817
+ */
818
+ static ParseAnimationRanges(node, parsedNode, _scene) {
819
+ if (parsedNode.ranges) {
820
+ for (let index = 0; index < parsedNode.ranges.length; index++) {
821
+ const data = parsedNode.ranges[index];
822
+ node.createAnimationRange(data.name, data.from, data.to);
823
+ }
824
+ }
825
+ }
826
+ /**
827
+ * Return the minimum and maximum world vectors of the entire hierarchy under current node
828
+ * @param includeDescendants Include bounding info from descendants as well (true by default)
829
+ * @param predicate defines a callback function that can be customize to filter what meshes should be included in the list used to compute the bounding vectors
830
+ * @returns the new bounding vectors
831
+ */
832
+ getHierarchyBoundingVectors(includeDescendants = true, predicate = null) {
833
+ return this.getHierarchyBoundingVectorsToRef(includeDescendants, predicate, { min: Vector3.Zero(), max: Vector3.Zero() });
834
+ }
835
+ /**
836
+ * Return the minimum and maximum world vectors of the entire hierarchy under current node
837
+ * @param includeDescendants Include bounding info from descendants as well (true by default)
838
+ * @param predicate defines a callback function that can be customize to filter what meshes should be included in the list used to compute the bounding vectors
839
+ * @param ref defines the ref vectors
840
+ * @returns the new bounding vectors
841
+ */
842
+ getHierarchyBoundingVectorsToRef(includeDescendants = true, predicate = null, ref) {
843
+ // Ensures that all world matrix will be recomputed.
844
+ this.getScene().incrementRenderId();
845
+ this.computeWorldMatrix(true);
846
+ const min = ref.min;
847
+ const max = ref.max;
848
+ const thisAbstractMesh = this;
849
+ if (thisAbstractMesh.getBoundingInfo && thisAbstractMesh.subMeshes) {
850
+ // If this is an abstract mesh get its bounding info
851
+ const boundingInfo = thisAbstractMesh.getBoundingInfo();
852
+ min.copyFrom(boundingInfo.boundingBox.minimumWorld);
853
+ max.copyFrom(boundingInfo.boundingBox.maximumWorld);
854
+ }
855
+ else {
856
+ min.copyFromFloats(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
857
+ max.copyFromFloats(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
858
+ }
859
+ if (includeDescendants) {
860
+ const descendants = this.getDescendants(false);
861
+ for (const descendant of descendants) {
862
+ const childMesh = descendant;
863
+ childMesh.computeWorldMatrix(true);
864
+ // Filters meshes based on custom predicate function.
865
+ if (predicate && !predicate(childMesh)) {
866
+ continue;
867
+ }
868
+ //make sure we have the needed params to get mix and max
869
+ if (!childMesh.getBoundingInfo || childMesh.getTotalVertices() === 0) {
870
+ continue;
871
+ }
872
+ const childBoundingInfo = childMesh.getBoundingInfo();
873
+ const boundingBox = childBoundingInfo.boundingBox;
874
+ const minBox = boundingBox.minimumWorld;
875
+ const maxBox = boundingBox.maximumWorld;
876
+ Vector3.CheckExtends(minBox, min, max);
877
+ Vector3.CheckExtends(maxBox, min, max);
878
+ }
879
+ }
880
+ return ref;
881
+ }
882
+ },
883
+ (() => {
884
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
885
+ _name_decorators = [serialize()];
886
+ _id_decorators = [serialize()];
887
+ _uniqueId_decorators = [serialize()];
888
+ _state_decorators = [serialize()];
889
+ _metadata_decorators = [serialize()];
890
+ __esDecorate(null, null, _name_decorators, { kind: "field", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
891
+ __esDecorate(null, null, _id_decorators, { kind: "field", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _id_extraInitializers);
892
+ __esDecorate(null, null, _uniqueId_decorators, { kind: "field", name: "uniqueId", static: false, private: false, access: { has: obj => "uniqueId" in obj, get: obj => obj.uniqueId, set: (obj, value) => { obj.uniqueId = value; } }, metadata: _metadata }, _uniqueId_initializers, _uniqueId_extraInitializers);
893
+ __esDecorate(null, null, _state_decorators, { kind: "field", name: "state", static: false, private: false, access: { has: obj => "state" in obj, get: obj => obj.state, set: (obj, value) => { obj.state = value; } }, metadata: _metadata }, _state_initializers, _state_extraInitializers);
894
+ __esDecorate(null, null, _metadata_decorators, { kind: "field", name: "metadata", static: false, private: false, access: { has: obj => "metadata" in obj, get: obj => obj.metadata, set: (obj, value) => { obj.metadata = value; } }, metadata: _metadata }, _metadata_initializers, _metadata_extraInitializers);
895
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
896
+ })(),
897
+ /**
898
+ * @internal
899
+ */
900
+ _a._AnimationRangeFactory = (_name, _from, _to) => {
901
+ throw _WarnImport("AnimationRange");
902
+ },
903
+ _a._NodeConstructors = {},
904
+ _a;
905
+ })();
906
+ export { Node };
874
907
  //# sourceMappingURL=node.js.map