@babylonjs/core 5.0.0-alpha.60 → 5.0.0-alpha.64

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 (709) hide show
  1. package/Animations/animation.d.ts +20 -0
  2. package/Animations/animation.js +99 -10
  3. package/Animations/animation.js.map +1 -1
  4. package/Animations/animationGroup.d.ts +5 -1
  5. package/Animations/animationGroup.js +19 -1
  6. package/Animations/animationGroup.js.map +1 -1
  7. package/Animations/animationKey.d.ts +4 -0
  8. package/Animations/animationKey.js +4 -0
  9. package/Animations/animationKey.js.map +1 -1
  10. package/Audio/sound.js +15 -1
  11. package/Audio/sound.js.map +1 -1
  12. package/BakedVertexAnimation/bakedVertexAnimationManager.d.ts +130 -0
  13. package/BakedVertexAnimation/bakedVertexAnimationManager.js +134 -0
  14. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -0
  15. package/BakedVertexAnimation/index.d.ts +2 -0
  16. package/BakedVertexAnimation/index.js +3 -0
  17. package/BakedVertexAnimation/index.js.map +1 -0
  18. package/BakedVertexAnimation/vertexAnimationBaker.d.ts +65 -0
  19. package/BakedVertexAnimation/vertexAnimationBaker.js +155 -0
  20. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -0
  21. package/Behaviors/Cameras/autoRotationBehavior.d.ts +5 -0
  22. package/Behaviors/Cameras/autoRotationBehavior.js +7 -0
  23. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  24. package/Behaviors/Cameras/framingBehavior.d.ts +5 -0
  25. package/Behaviors/Cameras/framingBehavior.js +8 -1
  26. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  27. package/Behaviors/Meshes/followBehavior.js +1 -1
  28. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  29. package/Behaviors/Meshes/handConstraintBehavior.js +16 -12
  30. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  31. package/Bones/bone.d.ts +3 -1
  32. package/Bones/bone.js +4 -1
  33. package/Bones/bone.js.map +1 -1
  34. package/Cameras/Inputs/BaseCameraPointersInput.js +4 -6
  35. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  36. package/Cameras/Inputs/flyCameraMouseInput.js +4 -4
  37. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  38. package/Cameras/Inputs/freeCameraMouseInput.js +4 -4
  39. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  40. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +1 -1
  41. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  42. package/Cameras/VR/vrExperienceHelper.d.ts +1 -1
  43. package/Cameras/VR/vrExperienceHelper.js +1 -1
  44. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  45. package/Cameras/camera.js +8 -2
  46. package/Cameras/camera.js.map +1 -1
  47. package/Cameras/targetCamera.js +1 -1
  48. package/Cameras/targetCamera.js.map +1 -1
  49. package/Culling/boundingBox.d.ts +4 -0
  50. package/Culling/boundingBox.js +8 -0
  51. package/Culling/boundingBox.js.map +1 -1
  52. package/Debug/physicsViewer.js +1 -1
  53. package/Debug/physicsViewer.js.map +1 -1
  54. package/Debug/skeletonViewer.js +2 -2
  55. package/Debug/skeletonViewer.js.map +1 -1
  56. package/DeviceInput/Implementations/{nativeDeviceInputWrapper.d.ts → nativeDeviceInputSystem.d.ts} +11 -22
  57. package/DeviceInput/Implementations/nativeDeviceInputSystem.js +80 -0
  58. package/DeviceInput/Implementations/nativeDeviceInputSystem.js.map +1 -0
  59. package/DeviceInput/Implementations/webDeviceInputSystem.d.ts +7 -20
  60. package/DeviceInput/Implementations/webDeviceInputSystem.js +80 -72
  61. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  62. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +3 -2
  63. package/DeviceInput/InputDevices/deviceSourceManager.js +5 -1
  64. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  65. package/DeviceInput/Interfaces/inputInterfaces.d.ts +6 -13
  66. package/DeviceInput/Interfaces/inputInterfaces.js.map +1 -1
  67. package/DeviceInput/deviceInputSystem.d.ts +49 -5
  68. package/DeviceInput/deviceInputSystem.js +66 -9
  69. package/DeviceInput/deviceInputSystem.js.map +1 -1
  70. package/DeviceInput/index.d.ts +1 -1
  71. package/DeviceInput/index.js +1 -1
  72. package/DeviceInput/index.js.map +1 -1
  73. package/Engines/Extensions/engine.dynamicTexture.d.ts +2 -1
  74. package/Engines/Extensions/engine.dynamicTexture.js +2 -1
  75. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  76. package/Engines/Extensions/engine.multiview.js +17 -6
  77. package/Engines/Extensions/engine.multiview.js.map +1 -1
  78. package/Engines/Extensions/engine.views.d.ts +1 -1
  79. package/Engines/Extensions/engine.views.js +1 -1
  80. package/Engines/Extensions/engine.views.js.map +1 -1
  81. package/Engines/Processors/iShaderProcessor.d.ts +1 -1
  82. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  83. package/Engines/Processors/shaderProcessingOptions.d.ts +5 -0
  84. package/Engines/Processors/shaderProcessingOptions.js.map +1 -1
  85. package/Engines/Processors/shaderProcessor.js +8 -2
  86. package/Engines/Processors/shaderProcessor.js.map +1 -1
  87. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +3 -11
  88. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
  89. package/Engines/WebGPU/Extensions/engine.multiRender.js +0 -4
  90. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  91. package/Engines/WebGPU/Extensions/engine.query.js +19 -3
  92. package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
  93. package/Engines/WebGPU/Extensions/engine.renderTarget.js +0 -4
  94. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  95. package/Engines/WebGPU/webgpuBufferManager.d.ts +1 -1
  96. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  97. package/Engines/WebGPU/webgpuBundleList.d.ts +13 -0
  98. package/Engines/WebGPU/webgpuBundleList.js +27 -0
  99. package/Engines/WebGPU/webgpuBundleList.js.map +1 -1
  100. package/Engines/WebGPU/webgpuCacheBindGroups.js +3 -3
  101. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  102. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +42 -61
  103. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  104. package/Engines/WebGPU/webgpuCacheSampler.js +6 -4
  105. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  106. package/Engines/WebGPU/webgpuClearQuad.js +17 -8
  107. package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
  108. package/Engines/WebGPU/webgpuComputeContext.js +2 -2
  109. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  110. package/Engines/WebGPU/webgpuConstants.d.ts +57 -13
  111. package/Engines/WebGPU/webgpuConstants.js +62 -13
  112. package/Engines/WebGPU/webgpuConstants.js.map +1 -1
  113. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +27 -3
  114. package/Engines/WebGPU/webgpuHardwareTexture.js +12 -2
  115. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  116. package/Engines/WebGPU/webgpuShaderProcessingContext.js +2 -0
  117. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  118. package/Engines/WebGPU/webgpuShaderProcessor.d.ts +2 -0
  119. package/Engines/WebGPU/webgpuShaderProcessor.js +23 -0
  120. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  121. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +1 -0
  122. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +17 -1
  123. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  124. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +7 -2
  125. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +16 -29
  126. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  127. package/Engines/WebGPU/webgpuSnapshotRendering.d.ts +27 -0
  128. package/Engines/WebGPU/webgpuSnapshotRendering.js +107 -0
  129. package/Engines/WebGPU/webgpuSnapshotRendering.js.map +1 -0
  130. package/Engines/WebGPU/webgpuTextureHelper.d.ts +4 -4
  131. package/Engines/WebGPU/webgpuTextureHelper.js +277 -83
  132. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  133. package/Engines/constants.d.ts +2 -0
  134. package/Engines/constants.js +2 -0
  135. package/Engines/constants.js.map +1 -1
  136. package/Engines/engine.d.ts +157 -46
  137. package/Engines/engine.js +38 -1
  138. package/Engines/engine.js.map +1 -1
  139. package/Engines/engineFeatures.d.ts +2 -0
  140. package/Engines/engineFeatures.js.map +1 -1
  141. package/Engines/index.d.ts +1 -0
  142. package/Engines/index.js +1 -0
  143. package/Engines/index.js.map +1 -1
  144. package/Engines/nativeEngine.js +34 -17
  145. package/Engines/nativeEngine.js.map +1 -1
  146. package/Engines/nullEngine.js +1 -0
  147. package/Engines/nullEngine.js.map +1 -1
  148. package/Engines/renderTargetWrapper.d.ts +1 -1
  149. package/Engines/renderTargetWrapper.js +1 -1
  150. package/Engines/renderTargetWrapper.js.map +1 -1
  151. package/Engines/thinEngine.d.ts +0 -11
  152. package/Engines/thinEngine.js +12 -40
  153. package/Engines/thinEngine.js.map +1 -1
  154. package/Engines/webgpuEngine.d.ts +11 -19
  155. package/Engines/webgpuEngine.js +46 -126
  156. package/Engines/webgpuEngine.js.map +1 -1
  157. package/Gizmos/positionGizmo.js +1 -1
  158. package/Gizmos/positionGizmo.js.map +1 -1
  159. package/Helpers/sceneHelpers.d.ts +3 -3
  160. package/Helpers/sceneHelpers.js +1 -2
  161. package/Helpers/sceneHelpers.js.map +1 -1
  162. package/Inputs/scene.inputManager.js +18 -15
  163. package/Inputs/scene.inputManager.js.map +1 -1
  164. package/Layers/effectLayer.d.ts +13 -1
  165. package/Layers/effectLayer.js +115 -65
  166. package/Layers/effectLayer.js.map +1 -1
  167. package/Layers/glowLayer.d.ts +8 -0
  168. package/Layers/glowLayer.js +7 -3
  169. package/Layers/glowLayer.js.map +1 -1
  170. package/Layers/highlightLayer.d.ts +2 -1
  171. package/Layers/highlightLayer.js +8 -3
  172. package/Layers/highlightLayer.js.map +1 -1
  173. package/Lights/Shadows/cascadedShadowGenerator.d.ts +1 -0
  174. package/Lights/Shadows/cascadedShadowGenerator.js +14 -0
  175. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  176. package/Lights/Shadows/shadowGenerator.d.ts +4 -0
  177. package/Lights/Shadows/shadowGenerator.js +31 -3
  178. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  179. package/Lights/light.js +10 -1
  180. package/Lights/light.js.map +1 -1
  181. package/Lights/pointLight.js +1 -1
  182. package/Lights/pointLight.js.map +1 -1
  183. package/Lights/spotLight.js +1 -1
  184. package/Lights/spotLight.js.map +1 -1
  185. package/Loading/Plugins/babylonFileLoader.js +20 -4
  186. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  187. package/Materials/Background/backgroundMaterial.js +1 -0
  188. package/Materials/Background/backgroundMaterial.js.map +1 -1
  189. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +10 -0
  190. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +31 -0
  191. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/Fragment/index.d.ts +2 -0
  193. package/Materials/Node/Blocks/Fragment/index.js +2 -0
  194. package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
  195. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.d.ts +41 -0
  196. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +128 -0
  197. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -0
  198. package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +49 -0
  199. package/Materials/Node/Blocks/Fragment/twirlBlock.js +145 -0
  200. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -0
  201. package/Materials/Node/Blocks/Input/inputBlock.js +1 -1
  202. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  203. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.d.ts +1 -0
  204. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js +15 -0
  205. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  206. package/Materials/Node/Blocks/customBlock.d.ts +31 -0
  207. package/Materials/Node/Blocks/customBlock.js +144 -0
  208. package/Materials/Node/Blocks/customBlock.js.map +1 -0
  209. package/Materials/Node/Blocks/index.d.ts +2 -0
  210. package/Materials/Node/Blocks/index.js +2 -0
  211. package/Materials/Node/Blocks/index.js.map +1 -1
  212. package/Materials/Node/Blocks/vectorMergerBlock.js +4 -4
  213. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  214. package/Materials/Node/Blocks/voronoiNoiseBlock.d.ts +39 -0
  215. package/Materials/Node/Blocks/voronoiNoiseBlock.js +107 -0
  216. package/Materials/Node/Blocks/voronoiNoiseBlock.js.map +1 -0
  217. package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +8 -0
  218. package/Materials/Node/Blocks/worleyNoise3DBlock.js +34 -2
  219. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  220. package/Materials/Node/nodeMaterial.d.ts +1 -0
  221. package/Materials/Node/nodeMaterial.js +10 -0
  222. package/Materials/Node/nodeMaterial.js.map +1 -1
  223. package/Materials/Node/nodeMaterialBlock.js +1 -1
  224. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  225. package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +5 -0
  226. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  227. package/Materials/PBR/index.d.ts +4 -0
  228. package/Materials/PBR/index.js +4 -0
  229. package/Materials/PBR/index.js.map +1 -1
  230. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +28 -96
  231. package/Materials/PBR/pbrAnisotropicConfiguration.js +50 -111
  232. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  233. package/Materials/PBR/pbrBRDFConfiguration.d.ts +11 -37
  234. package/Materials/PBR/pbrBRDFConfiguration.js +39 -52
  235. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  236. package/Materials/PBR/pbrBaseMaterial.d.ts +17 -74
  237. package/Materials/PBR/pbrBaseMaterial.js +75 -183
  238. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  239. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  240. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +23 -98
  241. package/Materials/PBR/pbrClearCoatConfiguration.js +91 -143
  242. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  243. package/Materials/PBR/pbrSheenConfiguration.d.ts +25 -93
  244. package/Materials/PBR/pbrSheenConfiguration.js +71 -126
  245. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  246. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +29 -104
  247. package/Materials/PBR/pbrSubSurfaceConfiguration.js +158 -204
  248. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  249. package/Materials/Textures/dynamicTexture.d.ts +3 -2
  250. package/Materials/Textures/dynamicTexture.js +5 -3
  251. package/Materials/Textures/dynamicTexture.js.map +1 -1
  252. package/Materials/Textures/hdrCubeTexture.d.ts +9 -0
  253. package/Materials/Textures/hdrCubeTexture.js +21 -5
  254. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  255. package/Materials/Textures/mirrorTexture.d.ts +2 -0
  256. package/Materials/Textures/mirrorTexture.js +13 -0
  257. package/Materials/Textures/mirrorTexture.js.map +1 -1
  258. package/Materials/Textures/renderTargetTexture.js +1 -1
  259. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  260. package/Materials/Textures/thinRenderTargetTexture.js +1 -1
  261. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  262. package/Materials/Textures/thinTexture.d.ts +1 -2
  263. package/Materials/Textures/thinTexture.js +2 -4
  264. package/Materials/Textures/thinTexture.js.map +1 -1
  265. package/Materials/Textures/videoTexture.d.ts +1 -1
  266. package/Materials/Textures/videoTexture.js +1 -1
  267. package/Materials/Textures/videoTexture.js.map +1 -1
  268. package/Materials/effect.d.ts +6 -1
  269. package/Materials/effect.js +4 -1
  270. package/Materials/effect.js.map +1 -1
  271. package/Materials/fresnelParameters.d.ts +1 -1
  272. package/Materials/fresnelParameters.js +1 -1
  273. package/Materials/fresnelParameters.js.map +1 -1
  274. package/Materials/imageProcessingConfiguration.d.ts +16 -1
  275. package/Materials/imageProcessingConfiguration.js +31 -0
  276. package/Materials/imageProcessingConfiguration.js.map +1 -1
  277. package/Materials/index.d.ts +4 -0
  278. package/Materials/index.js +4 -0
  279. package/Materials/index.js.map +1 -1
  280. package/Materials/material.d.ts +43 -2
  281. package/Materials/material.detailMapConfiguration.d.ts +29 -87
  282. package/Materials/material.detailMapConfiguration.js +50 -106
  283. package/Materials/material.detailMapConfiguration.js.map +1 -1
  284. package/Materials/material.js +99 -8
  285. package/Materials/material.js.map +1 -1
  286. package/Materials/materialDefines.d.ts +16 -0
  287. package/Materials/materialDefines.js +17 -5
  288. package/Materials/materialDefines.js.map +1 -1
  289. package/Materials/materialHelper.d.ts +15 -1
  290. package/Materials/materialHelper.js +40 -3
  291. package/Materials/materialHelper.js.map +1 -1
  292. package/Materials/materialPluginBase.d.ts +182 -0
  293. package/Materials/materialPluginBase.js +209 -0
  294. package/Materials/materialPluginBase.js.map +1 -0
  295. package/Materials/materialPluginEvent.d.ts +98 -0
  296. package/Materials/materialPluginEvent.js +21 -0
  297. package/Materials/materialPluginEvent.js.map +1 -0
  298. package/Materials/materialPluginFactoryExport.d.ts +40 -0
  299. package/Materials/materialPluginFactoryExport.js +75 -0
  300. package/Materials/materialPluginFactoryExport.js.map +1 -0
  301. package/Materials/materialPluginManager.d.ts +90 -0
  302. package/Materials/materialPluginManager.js +323 -0
  303. package/Materials/materialPluginManager.js.map +1 -0
  304. package/Materials/pushMaterial.d.ts +2 -2
  305. package/Materials/pushMaterial.js +7 -3
  306. package/Materials/pushMaterial.js.map +1 -1
  307. package/Materials/shaderMaterial.d.ts +7 -6
  308. package/Materials/shaderMaterial.js +71 -29
  309. package/Materials/shaderMaterial.js.map +1 -1
  310. package/Materials/shadowDepthWrapper.js +7 -7
  311. package/Materials/shadowDepthWrapper.js.map +1 -1
  312. package/Materials/standardMaterial.d.ts +15 -10
  313. package/Materials/standardMaterial.js +53 -49
  314. package/Materials/standardMaterial.js.map +1 -1
  315. package/Materials/uniformBuffer.js +1 -2
  316. package/Materials/uniformBuffer.js.map +1 -1
  317. package/Maths/math.color.d.ts +20 -0
  318. package/Maths/math.color.js +45 -2
  319. package/Maths/math.color.js.map +1 -1
  320. package/Maths/math.vector.d.ts +14 -9
  321. package/Maths/math.vector.js +36 -17
  322. package/Maths/math.vector.js.map +1 -1
  323. package/Meshes/Builders/boxBuilder.d.ts +1 -1
  324. package/Meshes/Builders/boxBuilder.js +1 -0
  325. package/Meshes/Builders/boxBuilder.js.map +1 -1
  326. package/Meshes/Builders/capsuleBuilder.d.ts +1 -1
  327. package/Meshes/Builders/capsuleBuilder.js +1 -1
  328. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  329. package/Meshes/Builders/cylinderBuilder.d.ts +17 -17
  330. package/Meshes/Builders/cylinderBuilder.js +1 -0
  331. package/Meshes/Builders/cylinderBuilder.js.map +1 -1
  332. package/Meshes/Builders/discBuilder.d.ts +1 -1
  333. package/Meshes/Builders/discBuilder.js +1 -0
  334. package/Meshes/Builders/discBuilder.js.map +1 -1
  335. package/Meshes/Builders/groundBuilder.d.ts +8 -8
  336. package/Meshes/Builders/groundBuilder.js +2 -0
  337. package/Meshes/Builders/groundBuilder.js.map +1 -1
  338. package/Meshes/Builders/hemisphereBuilder.d.ts +4 -4
  339. package/Meshes/Builders/hemisphereBuilder.js +1 -0
  340. package/Meshes/Builders/hemisphereBuilder.js.map +1 -1
  341. package/Meshes/Builders/icoSphereBuilder.d.ts +1 -1
  342. package/Meshes/Builders/icoSphereBuilder.js +1 -0
  343. package/Meshes/Builders/icoSphereBuilder.js.map +1 -1
  344. package/Meshes/Builders/planeBuilder.d.ts +1 -1
  345. package/Meshes/Builders/planeBuilder.js +1 -0
  346. package/Meshes/Builders/planeBuilder.js.map +1 -1
  347. package/Meshes/Builders/polyhedronBuilder.d.ts +1 -1
  348. package/Meshes/Builders/polyhedronBuilder.js +1 -0
  349. package/Meshes/Builders/polyhedronBuilder.js.map +1 -1
  350. package/Meshes/Builders/sphereBuilder.d.ts +1 -1
  351. package/Meshes/Builders/sphereBuilder.js +1 -0
  352. package/Meshes/Builders/sphereBuilder.js.map +1 -1
  353. package/Meshes/Builders/torusBuilder.d.ts +8 -8
  354. package/Meshes/Builders/torusBuilder.js +1 -0
  355. package/Meshes/Builders/torusBuilder.js.map +1 -1
  356. package/Meshes/Builders/torusKnotBuilder.d.ts +11 -11
  357. package/Meshes/Builders/torusKnotBuilder.js +1 -0
  358. package/Meshes/Builders/torusKnotBuilder.js.map +1 -1
  359. package/Meshes/abstractMesh.d.ts +23 -3
  360. package/Meshes/abstractMesh.js +79 -29
  361. package/Meshes/abstractMesh.js.map +1 -1
  362. package/Meshes/geometry.d.ts +3 -0
  363. package/Meshes/geometry.js +15 -7
  364. package/Meshes/geometry.js.map +1 -1
  365. package/Meshes/linesMesh.d.ts +1 -3
  366. package/Meshes/linesMesh.js +5 -36
  367. package/Meshes/linesMesh.js.map +1 -1
  368. package/Meshes/mesh.d.ts +12 -0
  369. package/Meshes/mesh.js +186 -117
  370. package/Meshes/mesh.js.map +1 -1
  371. package/Meshes/mesh.lts.d.ts +8 -8
  372. package/Meshes/mesh.lts.js.map +1 -1
  373. package/Meshes/mesh.vertexData.d.ts +6 -1
  374. package/Meshes/mesh.vertexData.js +295 -114
  375. package/Meshes/mesh.vertexData.js.map +1 -1
  376. package/Meshes/thinInstanceMesh.js +6 -5
  377. package/Meshes/thinInstanceMesh.js.map +1 -1
  378. package/Meshes/transformNode.d.ts +8 -8
  379. package/Meshes/transformNode.js +41 -26
  380. package/Meshes/transformNode.js.map +1 -1
  381. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +2 -1
  382. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +38 -33
  383. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  384. package/Misc/PerformanceViewer/performanceViewerCollector.d.ts +29 -4
  385. package/Misc/PerformanceViewer/performanceViewerCollector.js +36 -12
  386. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  387. package/Misc/assetsManager.d.ts +4 -4
  388. package/Misc/assetsManager.js +2 -2
  389. package/Misc/assetsManager.js.map +1 -1
  390. package/Misc/basis.d.ts +2 -2
  391. package/Misc/basis.js +20 -4
  392. package/Misc/basis.js.map +1 -1
  393. package/Misc/coroutine.d.ts +41 -0
  394. package/Misc/coroutine.js +136 -0
  395. package/Misc/coroutine.js.map +1 -0
  396. package/Misc/index.d.ts +1 -0
  397. package/Misc/index.js +1 -0
  398. package/Misc/index.js.map +1 -1
  399. package/Misc/interfaces/iPerfViewer.d.ts +4 -0
  400. package/Misc/interfaces/iPerfViewer.js.map +1 -1
  401. package/Misc/observableCoroutine.d.ts +9 -10
  402. package/Misc/observableCoroutine.js +34 -39
  403. package/Misc/observableCoroutine.js.map +1 -1
  404. package/Misc/sceneSerializer.js +1 -3
  405. package/Misc/sceneSerializer.js.map +1 -1
  406. package/Misc/tools.d.ts +2 -4
  407. package/Misc/tools.js +6 -10
  408. package/Misc/tools.js.map +1 -1
  409. package/Particles/particleSystem.js +22 -16
  410. package/Particles/particleSystem.js.map +1 -1
  411. package/Particles/solidParticleSystem.js +29 -5
  412. package/Particles/solidParticleSystem.js.map +1 -1
  413. package/Particles/subEmitter.js +1 -0
  414. package/Particles/subEmitter.js.map +1 -1
  415. package/Physics/Plugins/ammoJSPlugin.js +10 -8
  416. package/Physics/Plugins/ammoJSPlugin.js.map +1 -1
  417. package/PostProcesses/imageProcessingPostProcess.js +1 -0
  418. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  419. package/Probes/reflectionProbe.d.ts +2 -0
  420. package/Probes/reflectionProbe.js +21 -0
  421. package/Probes/reflectionProbe.js.map +1 -1
  422. package/Rendering/boundingBoxRenderer.d.ts +3 -0
  423. package/Rendering/boundingBoxRenderer.js +49 -14
  424. package/Rendering/boundingBoxRenderer.js.map +1 -1
  425. package/Rendering/depthPeelingRenderer.d.ts +4 -1
  426. package/Rendering/depthPeelingRenderer.js +34 -9
  427. package/Rendering/depthPeelingRenderer.js.map +1 -1
  428. package/Rendering/depthRenderer.d.ts +1 -1
  429. package/Rendering/depthRenderer.js +2 -2
  430. package/Rendering/depthRenderer.js.map +1 -1
  431. package/Rendering/edgesRenderer.js +3 -1
  432. package/Rendering/edgesRenderer.js.map +1 -1
  433. package/Rendering/geometryBufferRenderer.d.ts +0 -2
  434. package/Rendering/geometryBufferRenderer.js +13 -10
  435. package/Rendering/geometryBufferRenderer.js.map +1 -1
  436. package/Rendering/prePassRenderer.js +6 -6
  437. package/Rendering/prePassRenderer.js.map +1 -1
  438. package/Rendering/renderingGroup.js +5 -1
  439. package/Rendering/renderingGroup.js.map +1 -1
  440. package/Shaders/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  441. package/Shaders/ShadersInclude/bakedVertexAnimation.js +7 -0
  442. package/Shaders/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  443. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  444. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  445. package/Shaders/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  446. package/Shaders/ShadersInclude/bonesDeclaration.js +1 -1
  447. package/Shaders/ShadersInclude/bonesDeclaration.js.map +1 -1
  448. package/Shaders/ShadersInclude/bonesVertex.js +1 -1
  449. package/Shaders/ShadersInclude/bonesVertex.js.map +1 -1
  450. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
  451. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
  452. package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
  453. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  454. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -1
  455. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  456. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js +1 -1
  457. package/Shaders/ShadersInclude/pbrBlockImageProcessing.js.map +1 -1
  458. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
  459. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  460. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  461. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  462. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
  463. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  464. package/Shaders/anaglyph.fragment.js +1 -1
  465. package/Shaders/anaglyph.fragment.js.map +1 -1
  466. package/Shaders/background.fragment.js +1 -1
  467. package/Shaders/background.fragment.js.map +1 -1
  468. package/Shaders/background.vertex.d.ts +2 -0
  469. package/Shaders/background.vertex.js +3 -1
  470. package/Shaders/background.vertex.js.map +1 -1
  471. package/Shaders/blackAndWhite.fragment.js +1 -1
  472. package/Shaders/blackAndWhite.fragment.js.map +1 -1
  473. package/Shaders/bloomMerge.fragment.js +1 -1
  474. package/Shaders/bloomMerge.fragment.js.map +1 -1
  475. package/Shaders/blur.fragment.js +1 -1
  476. package/Shaders/blur.fragment.js.map +1 -1
  477. package/Shaders/boundingBoxRenderer.fragment.js +1 -1
  478. package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
  479. package/Shaders/boundingBoxRenderer.vertex.js +1 -1
  480. package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
  481. package/Shaders/chromaticAberration.fragment.js +1 -1
  482. package/Shaders/chromaticAberration.fragment.js.map +1 -1
  483. package/Shaders/circleOfConfusion.fragment.js +1 -1
  484. package/Shaders/circleOfConfusion.fragment.js.map +1 -1
  485. package/Shaders/clearQuad.vertex.js +1 -1
  486. package/Shaders/clearQuad.vertex.js.map +1 -1
  487. package/Shaders/color.fragment.js +1 -1
  488. package/Shaders/color.fragment.js.map +1 -1
  489. package/Shaders/color.vertex.d.ts +2 -0
  490. package/Shaders/color.vertex.js +3 -1
  491. package/Shaders/color.vertex.js.map +1 -1
  492. package/Shaders/colorCorrection.fragment.js +1 -1
  493. package/Shaders/colorCorrection.fragment.js.map +1 -1
  494. package/Shaders/convolution.fragment.js +1 -1
  495. package/Shaders/convolution.fragment.js.map +1 -1
  496. package/Shaders/default.fragment.js +1 -1
  497. package/Shaders/default.fragment.js.map +1 -1
  498. package/Shaders/default.vertex.d.ts +2 -0
  499. package/Shaders/default.vertex.js +3 -1
  500. package/Shaders/default.vertex.js.map +1 -1
  501. package/Shaders/depth.fragment.js +1 -1
  502. package/Shaders/depth.fragment.js.map +1 -1
  503. package/Shaders/depth.vertex.d.ts +2 -0
  504. package/Shaders/depth.vertex.js +3 -1
  505. package/Shaders/depth.vertex.js.map +1 -1
  506. package/Shaders/depthBoxBlur.fragment.js +1 -1
  507. package/Shaders/depthBoxBlur.fragment.js.map +1 -1
  508. package/Shaders/depthOfField.fragment.js +1 -1
  509. package/Shaders/depthOfField.fragment.js.map +1 -1
  510. package/Shaders/depthOfFieldMerge.fragment.js +1 -1
  511. package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
  512. package/Shaders/displayPass.fragment.js +1 -1
  513. package/Shaders/displayPass.fragment.js.map +1 -1
  514. package/Shaders/extractHighlights.fragment.js +1 -1
  515. package/Shaders/extractHighlights.fragment.js.map +1 -1
  516. package/Shaders/filter.fragment.js +1 -1
  517. package/Shaders/filter.fragment.js.map +1 -1
  518. package/Shaders/fxaa.vertex.js +1 -1
  519. package/Shaders/fxaa.vertex.js.map +1 -1
  520. package/Shaders/geometry.vertex.d.ts +2 -0
  521. package/Shaders/geometry.vertex.js +3 -1
  522. package/Shaders/geometry.vertex.js.map +1 -1
  523. package/Shaders/glowBlurPostProcess.fragment.js +1 -1
  524. package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
  525. package/Shaders/glowMapGeneration.fragment.js +1 -1
  526. package/Shaders/glowMapGeneration.fragment.js.map +1 -1
  527. package/Shaders/glowMapGeneration.vertex.d.ts +2 -0
  528. package/Shaders/glowMapGeneration.vertex.js +3 -1
  529. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  530. package/Shaders/glowMapMerge.fragment.js +1 -1
  531. package/Shaders/glowMapMerge.fragment.js.map +1 -1
  532. package/Shaders/glowMapMerge.vertex.js +1 -1
  533. package/Shaders/glowMapMerge.vertex.js.map +1 -1
  534. package/Shaders/grain.fragment.js +1 -1
  535. package/Shaders/grain.fragment.js.map +1 -1
  536. package/Shaders/hdrFiltering.vertex.js +1 -1
  537. package/Shaders/hdrFiltering.vertex.js.map +1 -1
  538. package/Shaders/highlights.fragment.js +1 -1
  539. package/Shaders/highlights.fragment.js.map +1 -1
  540. package/Shaders/imageProcessing.fragment.js +1 -1
  541. package/Shaders/imageProcessing.fragment.js.map +1 -1
  542. package/Shaders/kernelBlur.fragment.js +1 -1
  543. package/Shaders/kernelBlur.fragment.js.map +1 -1
  544. package/Shaders/kernelBlur.vertex.js +1 -1
  545. package/Shaders/kernelBlur.vertex.js.map +1 -1
  546. package/Shaders/layer.fragment.js +1 -1
  547. package/Shaders/layer.fragment.js.map +1 -1
  548. package/Shaders/layer.vertex.js +1 -1
  549. package/Shaders/layer.vertex.js.map +1 -1
  550. package/Shaders/lensFlare.fragment.js +1 -1
  551. package/Shaders/lensFlare.fragment.js.map +1 -1
  552. package/Shaders/lensFlare.vertex.js +1 -1
  553. package/Shaders/lensFlare.vertex.js.map +1 -1
  554. package/Shaders/lensHighlights.fragment.js +1 -1
  555. package/Shaders/lensHighlights.fragment.js.map +1 -1
  556. package/Shaders/line.fragment.js +1 -1
  557. package/Shaders/line.fragment.js.map +1 -1
  558. package/Shaders/line.vertex.js +1 -1
  559. package/Shaders/line.vertex.js.map +1 -1
  560. package/Shaders/minmaxRedux.fragment.js +1 -1
  561. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  562. package/Shaders/motionBlur.fragment.js +1 -1
  563. package/Shaders/motionBlur.fragment.js.map +1 -1
  564. package/Shaders/noise.fragment.js +1 -1
  565. package/Shaders/noise.fragment.js.map +1 -1
  566. package/Shaders/outline.fragment.js +1 -1
  567. package/Shaders/outline.fragment.js.map +1 -1
  568. package/Shaders/outline.vertex.d.ts +2 -0
  569. package/Shaders/outline.vertex.js +3 -1
  570. package/Shaders/outline.vertex.js.map +1 -1
  571. package/Shaders/particles.fragment.js +1 -1
  572. package/Shaders/particles.fragment.js.map +1 -1
  573. package/Shaders/particles.vertex.js +1 -1
  574. package/Shaders/particles.vertex.js.map +1 -1
  575. package/Shaders/pass.fragment.js +1 -1
  576. package/Shaders/pass.fragment.js.map +1 -1
  577. package/Shaders/passCube.fragment.js +1 -1
  578. package/Shaders/passCube.fragment.js.map +1 -1
  579. package/Shaders/pbr.fragment.js +1 -1
  580. package/Shaders/pbr.fragment.js.map +1 -1
  581. package/Shaders/pbr.vertex.d.ts +2 -0
  582. package/Shaders/pbr.vertex.js +3 -1
  583. package/Shaders/pbr.vertex.js.map +1 -1
  584. package/Shaders/postprocess.vertex.js +1 -1
  585. package/Shaders/postprocess.vertex.js.map +1 -1
  586. package/Shaders/procedural.vertex.js +1 -1
  587. package/Shaders/procedural.vertex.js.map +1 -1
  588. package/Shaders/rgbdDecode.fragment.js +1 -1
  589. package/Shaders/rgbdDecode.fragment.js.map +1 -1
  590. package/Shaders/rgbdEncode.fragment.js +1 -1
  591. package/Shaders/rgbdEncode.fragment.js.map +1 -1
  592. package/Shaders/screenSpaceCurvature.fragment.js +1 -1
  593. package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
  594. package/Shaders/shadowMap.fragment.js +1 -1
  595. package/Shaders/shadowMap.fragment.js.map +1 -1
  596. package/Shaders/shadowMap.vertex.d.ts +2 -0
  597. package/Shaders/shadowMap.vertex.js +3 -1
  598. package/Shaders/shadowMap.vertex.js.map +1 -1
  599. package/Shaders/sharpen.fragment.js +1 -1
  600. package/Shaders/sharpen.fragment.js.map +1 -1
  601. package/Shaders/sprites.fragment.js +1 -1
  602. package/Shaders/sprites.fragment.js.map +1 -1
  603. package/Shaders/sprites.vertex.js +1 -1
  604. package/Shaders/sprites.vertex.js.map +1 -1
  605. package/Shaders/ssaoCombine.fragment.js +1 -1
  606. package/Shaders/ssaoCombine.fragment.js.map +1 -1
  607. package/Shaders/standard.fragment.js +1 -1
  608. package/Shaders/standard.fragment.js.map +1 -1
  609. package/Shaders/stereoscopicInterlace.fragment.js +1 -1
  610. package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
  611. package/Shaders/subSurfaceScattering.fragment.js +1 -1
  612. package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
  613. package/Shaders/tonemap.fragment.js +1 -1
  614. package/Shaders/tonemap.fragment.js.map +1 -1
  615. package/Shaders/volumetricLightScattering.fragment.js +1 -1
  616. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  617. package/Shaders/volumetricLightScatteringPass.fragment.js +1 -1
  618. package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
  619. package/Shaders/volumetricLightScatteringPass.vertex.d.ts +2 -0
  620. package/Shaders/volumetricLightScatteringPass.vertex.js +3 -1
  621. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  622. package/Shaders/vrDistortionCorrection.fragment.js +1 -1
  623. package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
  624. package/Shaders/vrMultiviewToSingleview.fragment.js +1 -1
  625. package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
  626. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.d.ts +5 -0
  627. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js +7 -0
  628. package/ShadersWGSL/ShadersInclude/bakedVertexAnimation.js.map +1 -0
  629. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.d.ts +5 -0
  630. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js +7 -0
  631. package/ShadersWGSL/ShadersInclude/bakedVertexAnimationDeclaration.js.map +1 -0
  632. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +1 -1
  633. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  634. package/ShadersWGSL/ShadersInclude/bonesVertex.js +1 -1
  635. package/ShadersWGSL/ShadersInclude/bonesVertex.js.map +1 -1
  636. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.d.ts +5 -0
  637. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js +7 -0
  638. package/ShadersWGSL/ShadersInclude/clipPlaneFragment.js.map +1 -0
  639. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.d.ts +5 -0
  640. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js +7 -0
  641. package/ShadersWGSL/ShadersInclude/clipPlaneFragmentDeclaration.js.map +1 -0
  642. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.d.ts +5 -0
  643. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js +7 -0
  644. package/ShadersWGSL/ShadersInclude/clipPlaneVertex.js.map +1 -0
  645. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.d.ts +5 -0
  646. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js +7 -0
  647. package/ShadersWGSL/ShadersInclude/clipPlaneVertexDeclaration.js.map +1 -0
  648. package/XR/features/WebXRControllerPointerSelection.d.ts +14 -0
  649. package/XR/features/WebXRControllerPointerSelection.js +55 -21
  650. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  651. package/XR/features/WebXRHandTracking.d.ts +2 -0
  652. package/XR/features/WebXRHandTracking.js +34 -14
  653. package/XR/features/WebXRHandTracking.js.map +1 -1
  654. package/XR/features/WebXRLayers.d.ts +78 -0
  655. package/XR/features/WebXRLayers.js +243 -0
  656. package/XR/features/WebXRLayers.js.map +1 -0
  657. package/XR/features/WebXRNearInteraction.d.ts +1 -0
  658. package/XR/features/WebXRNearInteraction.js +2 -0
  659. package/XR/features/WebXRNearInteraction.js.map +1 -1
  660. package/XR/features/WebXRPlaneDetector.js +8 -12
  661. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  662. package/XR/features/index.d.ts +1 -0
  663. package/XR/features/index.js +1 -0
  664. package/XR/features/index.js.map +1 -1
  665. package/XR/native/index.d.ts +1 -0
  666. package/XR/native/index.js +2 -0
  667. package/XR/native/index.js.map +1 -0
  668. package/XR/native/nativeXRRenderTarget.d.ts +44 -0
  669. package/XR/native/nativeXRRenderTarget.js +81 -0
  670. package/XR/native/nativeXRRenderTarget.js.map +1 -0
  671. package/XR/webXRCamera.js +2 -10
  672. package/XR/webXRCamera.js.map +1 -1
  673. package/XR/webXRExperienceHelper.js +15 -13
  674. package/XR/webXRExperienceHelper.js.map +1 -1
  675. package/XR/webXRFeaturesManager.d.ts +4 -0
  676. package/XR/webXRFeaturesManager.js +5 -1
  677. package/XR/webXRFeaturesManager.js.map +1 -1
  678. package/XR/webXRLayerWrapper.d.ts +48 -0
  679. package/XR/webXRLayerWrapper.js +60 -0
  680. package/XR/webXRLayerWrapper.js.map +1 -0
  681. package/XR/webXRManagedOutputCanvas.d.ts +2 -1
  682. package/XR/webXRManagedOutputCanvas.js +36 -29
  683. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  684. package/XR/webXRRenderTargetTextureProvider.d.ts +55 -0
  685. package/XR/webXRRenderTargetTextureProvider.js +63 -0
  686. package/XR/webXRRenderTargetTextureProvider.js.map +1 -0
  687. package/XR/webXRSessionManager.d.ts +30 -7
  688. package/XR/webXRSessionManager.js +62 -64
  689. package/XR/webXRSessionManager.js.map +1 -1
  690. package/XR/webXRTypes.d.ts +1 -1
  691. package/XR/webXRTypes.js.map +1 -1
  692. package/XR/webXRWebGLLayer.d.ts +36 -0
  693. package/XR/webXRWebGLLayer.js +69 -0
  694. package/XR/webXRWebGLLayer.js.map +1 -0
  695. package/abstractScene.d.ts +1 -1
  696. package/abstractScene.js +1 -1
  697. package/abstractScene.js.map +1 -1
  698. package/index.d.ts +1 -0
  699. package/index.js +1 -0
  700. package/index.js.map +1 -1
  701. package/node.d.ts +30 -1
  702. package/node.js +12 -0
  703. package/node.js.map +1 -1
  704. package/package.json +87 -6
  705. package/scene.d.ts +14 -0
  706. package/scene.js +31 -0
  707. package/scene.js.map +1 -1
  708. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js +0 -66
  709. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js.map +0 -1
@@ -135,13 +135,14 @@ Mesh.prototype.thinInstanceSetBuffer = function (kind, buffer, stride, staticBuf
135
135
  }
136
136
  };
137
137
  Mesh.prototype.thinInstanceBufferUpdated = function (kind) {
138
- var _a;
138
+ var _a, _b, _c;
139
139
  if (kind === "matrix") {
140
- if (this._thinInstanceDataStorage.matrixBuffer) {
141
- this._thinInstanceDataStorage.matrixBuffer.updateDirectly(this._thinInstanceDataStorage.matrixData, 0, this._thinInstanceDataStorage.instancesCount);
142
- }
140
+ (_a = this._thinInstanceDataStorage.matrixBuffer) === null || _a === void 0 ? void 0 : _a.updateDirectly(this._thinInstanceDataStorage.matrixData, 0, this._thinInstanceDataStorage.instancesCount);
143
141
  }
144
- else if ((_a = this._userThinInstanceBuffersStorage) === null || _a === void 0 ? void 0 : _a.vertexBuffers[kind]) {
142
+ else if (kind === "previousMatrix") {
143
+ (_b = this._thinInstanceDataStorage.previousMatrixBuffer) === null || _b === void 0 ? void 0 : _b.updateDirectly(this._thinInstanceDataStorage.previousMatrixData, 0, this._thinInstanceDataStorage.instancesCount);
144
+ }
145
+ else if ((_c = this._userThinInstanceBuffersStorage) === null || _c === void 0 ? void 0 : _c.vertexBuffers[kind]) {
145
146
  this._userThinInstanceBuffersStorage.vertexBuffers[kind].updateDirectly(this._userThinInstanceBuffersStorage.data[kind], 0);
146
147
  }
147
148
  };
@@ -1 +1 @@
1
- {"version":3,"file":"thinInstanceMesh.js","sourceRoot":"","sources":["../../../sourceES6/core/Meshes/thinInstanceMesh.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable, DeepImmutableObject } from \"../types\";\r\nimport { Mesh, _InstancesBatch } from \"../Meshes/mesh\";\r\nimport { VertexBuffer, Buffer } from \"../Buffers/buffer\";\r\nimport { Matrix, Vector3, TmpVectors } from \"../Maths/math.vector\";\r\n\r\ndeclare module \"./mesh\" {\r\n export interface Mesh {\r\n /**\r\n * Gets or sets a boolean defining if we want picking to pick thin instances as well\r\n */\r\n thinInstanceEnablePicking: boolean;\r\n /**\r\n * Creates a new thin instance\r\n * @param matrix the matrix or array of matrices (position, rotation, scale) of the thin instance(s) to create\r\n * @param refresh true to refresh the underlying gpu buffer (default: true). If you do multiple calls to this method in a row, set refresh to true only for the last call to save performance\r\n * @returns the thin instance index number. If you pass an array of matrices, other instance indexes are index+1, index+2, etc\r\n */\r\n thinInstanceAdd(matrix: DeepImmutableObject<Matrix> | Array<DeepImmutableObject<Matrix>>, refresh?: boolean): number;\r\n\r\n /**\r\n * Adds the transformation (matrix) of the current mesh as a thin instance\r\n * @param refresh true to refresh the underlying gpu buffer (default: true). If you do multiple calls to this method in a row, set refresh to true only for the last call to save performance\r\n * @returns the thin instance index number\r\n */\r\n thinInstanceAddSelf(refresh?: boolean): number;\r\n\r\n /**\r\n * Registers a custom attribute to be used with thin instances\r\n * @param kind name of the attribute\r\n * @param stride size in floats of the attribute\r\n */\r\n thinInstanceRegisterAttribute(kind: string, stride: number): void;\r\n\r\n /**\r\n * Sets the matrix of a thin instance\r\n * @param index index of the thin instance\r\n * @param matrix matrix to set\r\n * @param refresh true to refresh the underlying gpu buffer (default: true). If you do multiple calls to this method in a row, set refresh to true only for the last call to save performance\r\n */\r\n thinInstanceSetMatrixAt(index: number, matrix: DeepImmutableObject<Matrix>, refresh?: boolean): void;\r\n\r\n /**\r\n * Sets the value of a custom attribute for a thin instance\r\n * @param kind name of the attribute\r\n * @param index index of the thin instance\r\n * @param value value to set\r\n * @param refresh true to refresh the underlying gpu buffer (default: true). If you do multiple calls to this method in a row, set refresh to true only for the last call to save performance\r\n */\r\n thinInstanceSetAttributeAt(kind: string, index: number, value: Array<number>, refresh?: boolean): void;\r\n\r\n /**\r\n * Gets / sets the number of thin instances to display. Note that you can't set a number higher than what the underlying buffer can handle.\r\n */\r\n thinInstanceCount: number;\r\n\r\n /**\r\n * Sets a buffer to be used with thin instances. This method is a faster way to setup multiple instances than calling thinInstanceAdd repeatedly\r\n * @param kind name of the attribute. Use \"matrix\" to setup the buffer of matrices\r\n * @param buffer buffer to set\r\n * @param stride size in floats of each value of the buffer\r\n * @param staticBuffer indicates that the buffer is static, so that you won't change it after it is set (better performances - false by default)\r\n */\r\n thinInstanceSetBuffer(kind: string, buffer: Nullable<Float32Array>, stride?: number, staticBuffer?: boolean): void;\r\n\r\n /**\r\n * Gets the list of world matrices\r\n * @return an array containing all the world matrices from the thin instances\r\n */\r\n thinInstanceGetWorldMatrices(): Matrix[];\r\n\r\n /**\r\n * Synchronize the gpu buffers with a thin instance buffer. Call this method if you update later on the buffers passed to thinInstanceSetBuffer\r\n * @param kind name of the attribute to update. Use \"matrix\" to update the buffer of matrices\r\n */\r\n thinInstanceBufferUpdated(kind: string): void;\r\n\r\n /**\r\n * Applies a partial update to a buffer directly on the GPU\r\n * Note that the buffer located on the CPU is NOT updated! It's up to you to update it (or not) with the same data you pass to this method\r\n * @param kind name of the attribute to update. Use \"matrix\" to update the buffer of matrices\r\n * @param data the data to set in the GPU buffer\r\n * @param offset the offset in the GPU buffer where to update the data\r\n */\r\n thinInstancePartialBufferUpdate(kind: string, data: Float32Array, offset: number): void;\r\n\r\n /**\r\n * Refreshes the bounding info, taking into account all the thin instances defined\r\n * @param forceRefreshParentInfo true to force recomputing the mesh bounding info and use it to compute the aggregated bounding info\r\n * @param applySkeleton defines whether to apply the skeleton before computing the bounding info\r\n * @param applyMorph defines whether to apply the morph target before computing the bounding info\r\n */\r\n thinInstanceRefreshBoundingInfo(forceRefreshParentInfo?: boolean, applySkeleton?: boolean, applyMorph?: boolean): void;\r\n\r\n /** @hidden */\r\n _thinInstanceInitializeUserStorage(): void;\r\n\r\n /** @hidden */\r\n _thinInstanceUpdateBufferSize(kind: string, numInstances?: number): void;\r\n\r\n /** @hidden */\r\n _thinInstanceCreateMatrixBuffer(kind: string, buffer: Nullable<Float32Array>, staticBuffer: boolean): Buffer;\r\n\r\n /** @hidden */\r\n _userThinInstanceBuffersStorage: {\r\n data: { [key: string]: Float32Array };\r\n sizes: { [key: string]: number };\r\n vertexBuffers: { [key: string]: Nullable<VertexBuffer> };\r\n strides: { [key: string]: number };\r\n };\r\n }\r\n}\r\n\r\nMesh.prototype.thinInstanceAdd = function (matrix: DeepImmutableObject<Matrix> | Array<DeepImmutableObject<Matrix>>, refresh: boolean = true): number {\r\n this._thinInstanceUpdateBufferSize(\"matrix\", Array.isArray(matrix) ? matrix.length : 1);\r\n\r\n const index = this._thinInstanceDataStorage.instancesCount;\r\n\r\n if (Array.isArray(matrix)) {\r\n for (let i = 0; i < matrix.length; ++i) {\r\n this.thinInstanceSetMatrixAt(this._thinInstanceDataStorage.instancesCount++, matrix[i], (i === matrix.length - 1) && refresh);\r\n }\r\n } else {\r\n this.thinInstanceSetMatrixAt(this._thinInstanceDataStorage.instancesCount++, matrix, refresh);\r\n }\r\n\r\n return index;\r\n};\r\n\r\nMesh.prototype.thinInstanceAddSelf = function (refresh: boolean = true): number {\r\n return this.thinInstanceAdd(Matrix.IdentityReadOnly, refresh);\r\n};\r\n\r\nMesh.prototype.thinInstanceRegisterAttribute = function (kind: string, stride: number): void {\r\n this.removeVerticesData(kind);\r\n\r\n this._thinInstanceInitializeUserStorage();\r\n\r\n this._userThinInstanceBuffersStorage.strides[kind] = stride;\r\n this._userThinInstanceBuffersStorage.sizes[kind] = stride * Math.max(32, this._thinInstanceDataStorage.instancesCount); // Initial size\r\n this._userThinInstanceBuffersStorage.data[kind] = new Float32Array(this._userThinInstanceBuffersStorage.sizes[kind]);\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind] = new VertexBuffer(this.getEngine(), this._userThinInstanceBuffersStorage.data[kind], kind, true, false, stride, true);\r\n\r\n this.setVerticesBuffer(this._userThinInstanceBuffersStorage.vertexBuffers[kind]!);\r\n};\r\n\r\nMesh.prototype.thinInstanceSetMatrixAt = function (index: number, matrix: DeepImmutableObject<Matrix>, refresh: boolean = true): boolean {\r\n if (!this._thinInstanceDataStorage.matrixData || index >= this._thinInstanceDataStorage.instancesCount) {\r\n return false;\r\n }\r\n\r\n const matrixData = this._thinInstanceDataStorage.matrixData;\r\n\r\n matrix.copyToArray(matrixData, index * 16);\r\n\r\n if (this._thinInstanceDataStorage.worldMatrices) {\r\n this._thinInstanceDataStorage.worldMatrices[index] = matrix as Matrix;\r\n }\r\n\r\n if (refresh) {\r\n this.thinInstanceBufferUpdated(\"matrix\");\r\n\r\n if (!this.doNotSyncBoundingInfo) {\r\n this.thinInstanceRefreshBoundingInfo(false);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nMesh.prototype.thinInstanceSetAttributeAt = function (kind: string, index: number, value: Array<number>, refresh: boolean = true): boolean {\r\n if (!this._userThinInstanceBuffersStorage || !this._userThinInstanceBuffersStorage.data[kind] || index >= this._thinInstanceDataStorage.instancesCount) {\r\n return false;\r\n }\r\n\r\n this._thinInstanceUpdateBufferSize(kind, 0); // make sur the buffer for the kind attribute is big enough\r\n\r\n this._userThinInstanceBuffersStorage.data[kind].set(value, index * this._userThinInstanceBuffersStorage.strides[kind]);\r\n\r\n if (refresh) {\r\n this.thinInstanceBufferUpdated(kind);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nObject.defineProperty(Mesh.prototype, \"thinInstanceCount\", {\r\n get: function (this: Mesh) {\r\n return this._thinInstanceDataStorage.instancesCount;\r\n },\r\n set: function (this: Mesh, value: number) {\r\n const numMaxInstances = (this._thinInstanceDataStorage.matrixData?.length ?? 0) / 16;\r\n\r\n if (value <= numMaxInstances) {\r\n this._thinInstanceDataStorage.instancesCount = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n});\r\n\r\nMesh.prototype._thinInstanceCreateMatrixBuffer = function (kind: string, buffer: Float32Array, staticBuffer: boolean = false): Buffer {\r\n const matrixBuffer = new Buffer(this.getEngine(), buffer, !staticBuffer, 16, false, true);\r\n\r\n for (let i = 0; i < 4; i++) {\r\n this.setVerticesBuffer(matrixBuffer.createVertexBuffer(kind + i, i * 4, 4));\r\n }\r\n\r\n return matrixBuffer;\r\n};\r\n\r\nMesh.prototype.thinInstanceSetBuffer = function (kind: string, buffer: Nullable<Float32Array>, stride: number = 0, staticBuffer: boolean = false): void {\r\n stride = stride || 16;\r\n\r\n if (kind === \"matrix\") {\r\n this._thinInstanceDataStorage.matrixBuffer?.dispose();\r\n this._thinInstanceDataStorage.matrixBuffer = null;\r\n this._thinInstanceDataStorage.matrixBufferSize = buffer ? buffer.length : 32 * stride;\r\n this._thinInstanceDataStorage.matrixData = buffer;\r\n this._thinInstanceDataStorage.worldMatrices = null;\r\n\r\n if (buffer !== null) {\r\n this._thinInstanceDataStorage.instancesCount = buffer.length / stride;\r\n this._thinInstanceDataStorage.matrixBuffer = this._thinInstanceCreateMatrixBuffer(\"world\", buffer, staticBuffer);\r\n\r\n if (!this.doNotSyncBoundingInfo) {\r\n this.thinInstanceRefreshBoundingInfo(false);\r\n }\r\n } else {\r\n this._thinInstanceDataStorage.instancesCount = 0;\r\n if (!this.doNotSyncBoundingInfo) {\r\n // mesh has no more thin instances, so need to recompute the bounding box because it's the regular mesh that will now be displayed\r\n this.refreshBoundingInfo();\r\n }\r\n }\r\n } else if (kind === \"previousMatrix\") {\r\n this._thinInstanceDataStorage.previousMatrixBuffer?.dispose();\r\n this._thinInstanceDataStorage.previousMatrixBuffer = null;\r\n this._thinInstanceDataStorage.previousMatrixData = buffer;\r\n if (buffer !== null) {\r\n this._thinInstanceDataStorage.previousMatrixBuffer = this._thinInstanceCreateMatrixBuffer(\"previousWorld\", buffer, staticBuffer);\r\n }\r\n } else {\r\n if (buffer === null) {\r\n if (this._userThinInstanceBuffersStorage?.data[kind]) {\r\n this.removeVerticesData(kind);\r\n delete this._userThinInstanceBuffersStorage.data[kind];\r\n delete this._userThinInstanceBuffersStorage.strides[kind];\r\n delete this._userThinInstanceBuffersStorage.sizes[kind];\r\n delete this._userThinInstanceBuffersStorage.vertexBuffers[kind];\r\n }\r\n } else {\r\n this._thinInstanceInitializeUserStorage();\r\n\r\n this._userThinInstanceBuffersStorage.data[kind] = buffer;\r\n this._userThinInstanceBuffersStorage.strides[kind] = stride;\r\n this._userThinInstanceBuffersStorage.sizes[kind] = buffer.length;\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind] = new VertexBuffer(this.getEngine(), buffer, kind, !staticBuffer, false, stride, true);\r\n\r\n this.setVerticesBuffer(this._userThinInstanceBuffersStorage.vertexBuffers[kind]!);\r\n }\r\n }\r\n};\r\n\r\nMesh.prototype.thinInstanceBufferUpdated = function (kind: string): void {\r\n if (kind === \"matrix\") {\r\n if (this._thinInstanceDataStorage.matrixBuffer) {\r\n this._thinInstanceDataStorage.matrixBuffer!.updateDirectly(this._thinInstanceDataStorage.matrixData!, 0, this._thinInstanceDataStorage.instancesCount);\r\n }\r\n } else if (this._userThinInstanceBuffersStorage?.vertexBuffers[kind]) {\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind]!.updateDirectly(this._userThinInstanceBuffersStorage.data[kind], 0);\r\n }\r\n};\r\n\r\nMesh.prototype.thinInstancePartialBufferUpdate = function (kind: string, data: Float32Array, offset: number): void {\r\n if (kind === \"matrix\") {\r\n if (this._thinInstanceDataStorage.matrixBuffer) {\r\n this._thinInstanceDataStorage.matrixBuffer.updateDirectly(data, offset);\r\n }\r\n } else if (this._userThinInstanceBuffersStorage?.vertexBuffers[kind]) {\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind]!.updateDirectly(data, offset);\r\n }\r\n};\r\n\r\nMesh.prototype.thinInstanceGetWorldMatrices = function (): Matrix[] {\r\n if (!this._thinInstanceDataStorage.matrixData || !this._thinInstanceDataStorage.matrixBuffer) {\r\n return [];\r\n }\r\n const matrixData = this._thinInstanceDataStorage.matrixData;\r\n\r\n if (!this._thinInstanceDataStorage.worldMatrices) {\r\n this._thinInstanceDataStorage.worldMatrices = new Array<Matrix>();\r\n\r\n for (let i = 0; i < this._thinInstanceDataStorage.instancesCount; ++i) {\r\n this._thinInstanceDataStorage.worldMatrices[i] = Matrix.FromArray(matrixData, i * 16);\r\n }\r\n }\r\n\r\n return this._thinInstanceDataStorage.worldMatrices;\r\n};\r\n\r\nMesh.prototype.thinInstanceRefreshBoundingInfo = function (forceRefreshParentInfo: boolean = false, applySkeleton: boolean = false, applyMorph: boolean = false) {\r\n if (!this._thinInstanceDataStorage.matrixData || !this._thinInstanceDataStorage.matrixBuffer) {\r\n return;\r\n }\r\n\r\n const vectors = this._thinInstanceDataStorage.boundingVectors;\r\n\r\n if (forceRefreshParentInfo) {\r\n vectors.length = 0;\r\n this.refreshBoundingInfo(applySkeleton, applyMorph);\r\n }\r\n\r\n const boundingInfo = this.getBoundingInfo();\r\n const matrixData = this._thinInstanceDataStorage.matrixData;\r\n\r\n if (vectors.length === 0) {\r\n for (let v = 0; v < boundingInfo.boundingBox.vectors.length; ++v) {\r\n vectors.push(boundingInfo.boundingBox.vectors[v].clone());\r\n }\r\n }\r\n\r\n TmpVectors.Vector3[0].setAll(Number.POSITIVE_INFINITY); // min\r\n TmpVectors.Vector3[1].setAll(Number.NEGATIVE_INFINITY); // max\r\n\r\n for (let i = 0; i < this._thinInstanceDataStorage.instancesCount; ++i) {\r\n Matrix.FromArrayToRef(matrixData, i * 16, TmpVectors.Matrix[0]);\r\n\r\n for (let v = 0; v < vectors.length; ++v) {\r\n Vector3.TransformCoordinatesToRef(vectors[v], TmpVectors.Matrix[0], TmpVectors.Vector3[2]);\r\n TmpVectors.Vector3[0].minimizeInPlace(TmpVectors.Vector3[2]);\r\n TmpVectors.Vector3[1].maximizeInPlace(TmpVectors.Vector3[2]);\r\n }\r\n }\r\n\r\n boundingInfo.reConstruct(TmpVectors.Vector3[0], TmpVectors.Vector3[1]);\r\n\r\n this._updateBoundingInfo();\r\n};\r\n\r\nMesh.prototype._thinInstanceUpdateBufferSize = function (kind: string, numInstances: number = 1) {\r\n const kindIsMatrix = kind === \"matrix\";\r\n\r\n if (!kindIsMatrix && (!this._userThinInstanceBuffersStorage || !this._userThinInstanceBuffersStorage.strides[kind])) {\r\n return;\r\n }\r\n\r\n const stride = kindIsMatrix ? 16 : this._userThinInstanceBuffersStorage.strides[kind];\r\n const currentSize = kindIsMatrix ? this._thinInstanceDataStorage.matrixBufferSize : this._userThinInstanceBuffersStorage.sizes[kind];\r\n let data = kindIsMatrix ? this._thinInstanceDataStorage.matrixData : this._userThinInstanceBuffersStorage.data[kind];\r\n\r\n const bufferSize = (this._thinInstanceDataStorage.instancesCount + numInstances) * stride;\r\n\r\n let newSize = currentSize;\r\n\r\n while (newSize < bufferSize) {\r\n newSize *= 2;\r\n }\r\n\r\n if (!data || currentSize != newSize) {\r\n if (!data) {\r\n data = new Float32Array(newSize);\r\n } else {\r\n const newData = new Float32Array(newSize);\r\n newData.set(data, 0);\r\n data = newData;\r\n }\r\n\r\n if (kindIsMatrix) {\r\n this._thinInstanceDataStorage.matrixBuffer?.dispose();\r\n this._thinInstanceDataStorage.matrixBuffer = this._thinInstanceCreateMatrixBuffer(\"world\", data, false);\r\n this._thinInstanceDataStorage.matrixData = data;\r\n this._thinInstanceDataStorage.matrixBufferSize = newSize;\r\n if (this._scene.needsPreviousWorldMatrices && !this._thinInstanceDataStorage.previousMatrixData) {\r\n this._thinInstanceDataStorage.previousMatrixBuffer?.dispose();\r\n this._thinInstanceDataStorage.previousMatrixBuffer = this._thinInstanceCreateMatrixBuffer(\"previousWorld\", data, false);\r\n }\r\n } else {\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind]?.dispose();\r\n\r\n this._userThinInstanceBuffersStorage.data[kind] = data;\r\n this._userThinInstanceBuffersStorage.sizes[kind] = newSize;\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind] = new VertexBuffer(this.getEngine(), data, kind, true, false, stride, true);\r\n\r\n this.setVerticesBuffer(this._userThinInstanceBuffersStorage.vertexBuffers[kind]!);\r\n }\r\n }\r\n};\r\n\r\nMesh.prototype._thinInstanceInitializeUserStorage = function () {\r\n if (!this._userThinInstanceBuffersStorage) {\r\n this._userThinInstanceBuffersStorage = {\r\n data: {},\r\n sizes: {},\r\n vertexBuffers: {},\r\n strides: {},\r\n };\r\n }\r\n};\r\n\r\nMesh.prototype._disposeThinInstanceSpecificData = function () {\r\n if (this._thinInstanceDataStorage?.matrixBuffer) {\r\n this._thinInstanceDataStorage.matrixBuffer.dispose();\r\n this._thinInstanceDataStorage.matrixBuffer = null;\r\n }\r\n};\r\n"]}
1
+ {"version":3,"file":"thinInstanceMesh.js","sourceRoot":"","sources":["../../../sourceES6/core/Meshes/thinInstanceMesh.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable, DeepImmutableObject } from \"../types\";\r\nimport { Mesh, _InstancesBatch } from \"../Meshes/mesh\";\r\nimport { VertexBuffer, Buffer } from \"../Buffers/buffer\";\r\nimport { Matrix, Vector3, TmpVectors } from \"../Maths/math.vector\";\r\n\r\ndeclare module \"./mesh\" {\r\n export interface Mesh {\r\n /**\r\n * Gets or sets a boolean defining if we want picking to pick thin instances as well\r\n */\r\n thinInstanceEnablePicking: boolean;\r\n /**\r\n * Creates a new thin instance\r\n * @param matrix the matrix or array of matrices (position, rotation, scale) of the thin instance(s) to create\r\n * @param refresh true to refresh the underlying gpu buffer (default: true). If you do multiple calls to this method in a row, set refresh to true only for the last call to save performance\r\n * @returns the thin instance index number. If you pass an array of matrices, other instance indexes are index+1, index+2, etc\r\n */\r\n thinInstanceAdd(matrix: DeepImmutableObject<Matrix> | Array<DeepImmutableObject<Matrix>>, refresh?: boolean): number;\r\n\r\n /**\r\n * Adds the transformation (matrix) of the current mesh as a thin instance\r\n * @param refresh true to refresh the underlying gpu buffer (default: true). If you do multiple calls to this method in a row, set refresh to true only for the last call to save performance\r\n * @returns the thin instance index number\r\n */\r\n thinInstanceAddSelf(refresh?: boolean): number;\r\n\r\n /**\r\n * Registers a custom attribute to be used with thin instances\r\n * @param kind name of the attribute\r\n * @param stride size in floats of the attribute\r\n */\r\n thinInstanceRegisterAttribute(kind: string, stride: number): void;\r\n\r\n /**\r\n * Sets the matrix of a thin instance\r\n * @param index index of the thin instance\r\n * @param matrix matrix to set\r\n * @param refresh true to refresh the underlying gpu buffer (default: true). If you do multiple calls to this method in a row, set refresh to true only for the last call to save performance\r\n */\r\n thinInstanceSetMatrixAt(index: number, matrix: DeepImmutableObject<Matrix>, refresh?: boolean): void;\r\n\r\n /**\r\n * Sets the value of a custom attribute for a thin instance\r\n * @param kind name of the attribute\r\n * @param index index of the thin instance\r\n * @param value value to set\r\n * @param refresh true to refresh the underlying gpu buffer (default: true). If you do multiple calls to this method in a row, set refresh to true only for the last call to save performance\r\n */\r\n thinInstanceSetAttributeAt(kind: string, index: number, value: Array<number>, refresh?: boolean): void;\r\n\r\n /**\r\n * Gets / sets the number of thin instances to display. Note that you can't set a number higher than what the underlying buffer can handle.\r\n */\r\n thinInstanceCount: number;\r\n\r\n /**\r\n * Sets a buffer to be used with thin instances. This method is a faster way to setup multiple instances than calling thinInstanceAdd repeatedly\r\n * @param kind name of the attribute. Use \"matrix\" to setup the buffer of matrices\r\n * @param buffer buffer to set\r\n * @param stride size in floats of each value of the buffer\r\n * @param staticBuffer indicates that the buffer is static, so that you won't change it after it is set (better performances - false by default)\r\n */\r\n thinInstanceSetBuffer(kind: string, buffer: Nullable<Float32Array>, stride?: number, staticBuffer?: boolean): void;\r\n\r\n /**\r\n * Gets the list of world matrices\r\n * @return an array containing all the world matrices from the thin instances\r\n */\r\n thinInstanceGetWorldMatrices(): Matrix[];\r\n\r\n /**\r\n * Synchronize the gpu buffers with a thin instance buffer. Call this method if you update later on the buffers passed to thinInstanceSetBuffer\r\n * @param kind name of the attribute to update. Use \"matrix\" to update the buffer of matrices\r\n */\r\n thinInstanceBufferUpdated(kind: string): void;\r\n\r\n /**\r\n * Applies a partial update to a buffer directly on the GPU\r\n * Note that the buffer located on the CPU is NOT updated! It's up to you to update it (or not) with the same data you pass to this method\r\n * @param kind name of the attribute to update. Use \"matrix\" to update the buffer of matrices\r\n * @param data the data to set in the GPU buffer\r\n * @param offset the offset in the GPU buffer where to update the data\r\n */\r\n thinInstancePartialBufferUpdate(kind: string, data: Float32Array, offset: number): void;\r\n\r\n /**\r\n * Refreshes the bounding info, taking into account all the thin instances defined\r\n * @param forceRefreshParentInfo true to force recomputing the mesh bounding info and use it to compute the aggregated bounding info\r\n * @param applySkeleton defines whether to apply the skeleton before computing the bounding info\r\n * @param applyMorph defines whether to apply the morph target before computing the bounding info\r\n */\r\n thinInstanceRefreshBoundingInfo(forceRefreshParentInfo?: boolean, applySkeleton?: boolean, applyMorph?: boolean): void;\r\n\r\n /** @hidden */\r\n _thinInstanceInitializeUserStorage(): void;\r\n\r\n /** @hidden */\r\n _thinInstanceUpdateBufferSize(kind: string, numInstances?: number): void;\r\n\r\n /** @hidden */\r\n _thinInstanceCreateMatrixBuffer(kind: string, buffer: Nullable<Float32Array>, staticBuffer: boolean): Buffer;\r\n\r\n /** @hidden */\r\n _userThinInstanceBuffersStorage: {\r\n data: { [key: string]: Float32Array };\r\n sizes: { [key: string]: number };\r\n vertexBuffers: { [key: string]: Nullable<VertexBuffer> };\r\n strides: { [key: string]: number };\r\n };\r\n }\r\n}\r\n\r\nMesh.prototype.thinInstanceAdd = function (matrix: DeepImmutableObject<Matrix> | Array<DeepImmutableObject<Matrix>>, refresh: boolean = true): number {\r\n this._thinInstanceUpdateBufferSize(\"matrix\", Array.isArray(matrix) ? matrix.length : 1);\r\n\r\n const index = this._thinInstanceDataStorage.instancesCount;\r\n\r\n if (Array.isArray(matrix)) {\r\n for (let i = 0; i < matrix.length; ++i) {\r\n this.thinInstanceSetMatrixAt(this._thinInstanceDataStorage.instancesCount++, matrix[i], (i === matrix.length - 1) && refresh);\r\n }\r\n } else {\r\n this.thinInstanceSetMatrixAt(this._thinInstanceDataStorage.instancesCount++, matrix, refresh);\r\n }\r\n\r\n return index;\r\n};\r\n\r\nMesh.prototype.thinInstanceAddSelf = function (refresh: boolean = true): number {\r\n return this.thinInstanceAdd(Matrix.IdentityReadOnly, refresh);\r\n};\r\n\r\nMesh.prototype.thinInstanceRegisterAttribute = function (kind: string, stride: number): void {\r\n this.removeVerticesData(kind);\r\n\r\n this._thinInstanceInitializeUserStorage();\r\n\r\n this._userThinInstanceBuffersStorage.strides[kind] = stride;\r\n this._userThinInstanceBuffersStorage.sizes[kind] = stride * Math.max(32, this._thinInstanceDataStorage.instancesCount); // Initial size\r\n this._userThinInstanceBuffersStorage.data[kind] = new Float32Array(this._userThinInstanceBuffersStorage.sizes[kind]);\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind] = new VertexBuffer(this.getEngine(), this._userThinInstanceBuffersStorage.data[kind], kind, true, false, stride, true);\r\n\r\n this.setVerticesBuffer(this._userThinInstanceBuffersStorage.vertexBuffers[kind]!);\r\n};\r\n\r\nMesh.prototype.thinInstanceSetMatrixAt = function (index: number, matrix: DeepImmutableObject<Matrix>, refresh: boolean = true): boolean {\r\n if (!this._thinInstanceDataStorage.matrixData || index >= this._thinInstanceDataStorage.instancesCount) {\r\n return false;\r\n }\r\n\r\n const matrixData = this._thinInstanceDataStorage.matrixData;\r\n\r\n matrix.copyToArray(matrixData, index * 16);\r\n\r\n if (this._thinInstanceDataStorage.worldMatrices) {\r\n this._thinInstanceDataStorage.worldMatrices[index] = matrix as Matrix;\r\n }\r\n\r\n if (refresh) {\r\n this.thinInstanceBufferUpdated(\"matrix\");\r\n\r\n if (!this.doNotSyncBoundingInfo) {\r\n this.thinInstanceRefreshBoundingInfo(false);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nMesh.prototype.thinInstanceSetAttributeAt = function (kind: string, index: number, value: Array<number>, refresh: boolean = true): boolean {\r\n if (!this._userThinInstanceBuffersStorage || !this._userThinInstanceBuffersStorage.data[kind] || index >= this._thinInstanceDataStorage.instancesCount) {\r\n return false;\r\n }\r\n\r\n this._thinInstanceUpdateBufferSize(kind, 0); // make sur the buffer for the kind attribute is big enough\r\n\r\n this._userThinInstanceBuffersStorage.data[kind].set(value, index * this._userThinInstanceBuffersStorage.strides[kind]);\r\n\r\n if (refresh) {\r\n this.thinInstanceBufferUpdated(kind);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nObject.defineProperty(Mesh.prototype, \"thinInstanceCount\", {\r\n get: function (this: Mesh) {\r\n return this._thinInstanceDataStorage.instancesCount;\r\n },\r\n set: function (this: Mesh, value: number) {\r\n const numMaxInstances = (this._thinInstanceDataStorage.matrixData?.length ?? 0) / 16;\r\n\r\n if (value <= numMaxInstances) {\r\n this._thinInstanceDataStorage.instancesCount = value;\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n});\r\n\r\nMesh.prototype._thinInstanceCreateMatrixBuffer = function (kind: string, buffer: Float32Array, staticBuffer: boolean = false): Buffer {\r\n const matrixBuffer = new Buffer(this.getEngine(), buffer, !staticBuffer, 16, false, true);\r\n\r\n for (let i = 0; i < 4; i++) {\r\n this.setVerticesBuffer(matrixBuffer.createVertexBuffer(kind + i, i * 4, 4));\r\n }\r\n\r\n return matrixBuffer;\r\n};\r\n\r\nMesh.prototype.thinInstanceSetBuffer = function (kind: string, buffer: Nullable<Float32Array>, stride: number = 0, staticBuffer: boolean = false): void {\r\n stride = stride || 16;\r\n\r\n if (kind === \"matrix\") {\r\n this._thinInstanceDataStorage.matrixBuffer?.dispose();\r\n this._thinInstanceDataStorage.matrixBuffer = null;\r\n this._thinInstanceDataStorage.matrixBufferSize = buffer ? buffer.length : 32 * stride;\r\n this._thinInstanceDataStorage.matrixData = buffer;\r\n this._thinInstanceDataStorage.worldMatrices = null;\r\n\r\n if (buffer !== null) {\r\n this._thinInstanceDataStorage.instancesCount = buffer.length / stride;\r\n this._thinInstanceDataStorage.matrixBuffer = this._thinInstanceCreateMatrixBuffer(\"world\", buffer, staticBuffer);\r\n\r\n if (!this.doNotSyncBoundingInfo) {\r\n this.thinInstanceRefreshBoundingInfo(false);\r\n }\r\n } else {\r\n this._thinInstanceDataStorage.instancesCount = 0;\r\n if (!this.doNotSyncBoundingInfo) {\r\n // mesh has no more thin instances, so need to recompute the bounding box because it's the regular mesh that will now be displayed\r\n this.refreshBoundingInfo();\r\n }\r\n }\r\n } else if (kind === \"previousMatrix\") {\r\n this._thinInstanceDataStorage.previousMatrixBuffer?.dispose();\r\n this._thinInstanceDataStorage.previousMatrixBuffer = null;\r\n this._thinInstanceDataStorage.previousMatrixData = buffer;\r\n if (buffer !== null) {\r\n this._thinInstanceDataStorage.previousMatrixBuffer = this._thinInstanceCreateMatrixBuffer(\"previousWorld\", buffer, staticBuffer);\r\n }\r\n } else {\r\n if (buffer === null) {\r\n if (this._userThinInstanceBuffersStorage?.data[kind]) {\r\n this.removeVerticesData(kind);\r\n delete this._userThinInstanceBuffersStorage.data[kind];\r\n delete this._userThinInstanceBuffersStorage.strides[kind];\r\n delete this._userThinInstanceBuffersStorage.sizes[kind];\r\n delete this._userThinInstanceBuffersStorage.vertexBuffers[kind];\r\n }\r\n } else {\r\n this._thinInstanceInitializeUserStorage();\r\n\r\n this._userThinInstanceBuffersStorage.data[kind] = buffer;\r\n this._userThinInstanceBuffersStorage.strides[kind] = stride;\r\n this._userThinInstanceBuffersStorage.sizes[kind] = buffer.length;\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind] = new VertexBuffer(this.getEngine(), buffer, kind, !staticBuffer, false, stride, true);\r\n\r\n this.setVerticesBuffer(this._userThinInstanceBuffersStorage.vertexBuffers[kind]!);\r\n }\r\n }\r\n};\r\n\r\nMesh.prototype.thinInstanceBufferUpdated = function (kind: string): void {\r\n if (kind === \"matrix\") {\r\n this._thinInstanceDataStorage.matrixBuffer?.updateDirectly(this._thinInstanceDataStorage.matrixData!, 0, this._thinInstanceDataStorage.instancesCount);\r\n } else if (kind === \"previousMatrix\") {\r\n this._thinInstanceDataStorage.previousMatrixBuffer?.updateDirectly(this._thinInstanceDataStorage.previousMatrixData!, 0, this._thinInstanceDataStorage.instancesCount);\r\n } else if (this._userThinInstanceBuffersStorage?.vertexBuffers[kind]) {\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind]!.updateDirectly(this._userThinInstanceBuffersStorage.data[kind], 0);\r\n }\r\n};\r\n\r\nMesh.prototype.thinInstancePartialBufferUpdate = function (kind: string, data: Float32Array, offset: number): void {\r\n if (kind === \"matrix\") {\r\n if (this._thinInstanceDataStorage.matrixBuffer) {\r\n this._thinInstanceDataStorage.matrixBuffer.updateDirectly(data, offset);\r\n }\r\n } else if (this._userThinInstanceBuffersStorage?.vertexBuffers[kind]) {\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind]!.updateDirectly(data, offset);\r\n }\r\n};\r\n\r\nMesh.prototype.thinInstanceGetWorldMatrices = function (): Matrix[] {\r\n if (!this._thinInstanceDataStorage.matrixData || !this._thinInstanceDataStorage.matrixBuffer) {\r\n return [];\r\n }\r\n const matrixData = this._thinInstanceDataStorage.matrixData;\r\n\r\n if (!this._thinInstanceDataStorage.worldMatrices) {\r\n this._thinInstanceDataStorage.worldMatrices = new Array<Matrix>();\r\n\r\n for (let i = 0; i < this._thinInstanceDataStorage.instancesCount; ++i) {\r\n this._thinInstanceDataStorage.worldMatrices[i] = Matrix.FromArray(matrixData, i * 16);\r\n }\r\n }\r\n\r\n return this._thinInstanceDataStorage.worldMatrices;\r\n};\r\n\r\nMesh.prototype.thinInstanceRefreshBoundingInfo = function (forceRefreshParentInfo: boolean = false, applySkeleton: boolean = false, applyMorph: boolean = false) {\r\n if (!this._thinInstanceDataStorage.matrixData || !this._thinInstanceDataStorage.matrixBuffer) {\r\n return;\r\n }\r\n\r\n const vectors = this._thinInstanceDataStorage.boundingVectors;\r\n\r\n if (forceRefreshParentInfo) {\r\n vectors.length = 0;\r\n this.refreshBoundingInfo(applySkeleton, applyMorph);\r\n }\r\n\r\n const boundingInfo = this.getBoundingInfo();\r\n const matrixData = this._thinInstanceDataStorage.matrixData;\r\n\r\n if (vectors.length === 0) {\r\n for (let v = 0; v < boundingInfo.boundingBox.vectors.length; ++v) {\r\n vectors.push(boundingInfo.boundingBox.vectors[v].clone());\r\n }\r\n }\r\n\r\n TmpVectors.Vector3[0].setAll(Number.POSITIVE_INFINITY); // min\r\n TmpVectors.Vector3[1].setAll(Number.NEGATIVE_INFINITY); // max\r\n\r\n for (let i = 0; i < this._thinInstanceDataStorage.instancesCount; ++i) {\r\n Matrix.FromArrayToRef(matrixData, i * 16, TmpVectors.Matrix[0]);\r\n\r\n for (let v = 0; v < vectors.length; ++v) {\r\n Vector3.TransformCoordinatesToRef(vectors[v], TmpVectors.Matrix[0], TmpVectors.Vector3[2]);\r\n TmpVectors.Vector3[0].minimizeInPlace(TmpVectors.Vector3[2]);\r\n TmpVectors.Vector3[1].maximizeInPlace(TmpVectors.Vector3[2]);\r\n }\r\n }\r\n\r\n boundingInfo.reConstruct(TmpVectors.Vector3[0], TmpVectors.Vector3[1]);\r\n\r\n this._updateBoundingInfo();\r\n};\r\n\r\nMesh.prototype._thinInstanceUpdateBufferSize = function (kind: string, numInstances: number = 1) {\r\n const kindIsMatrix = kind === \"matrix\";\r\n\r\n if (!kindIsMatrix && (!this._userThinInstanceBuffersStorage || !this._userThinInstanceBuffersStorage.strides[kind])) {\r\n return;\r\n }\r\n\r\n const stride = kindIsMatrix ? 16 : this._userThinInstanceBuffersStorage.strides[kind];\r\n const currentSize = kindIsMatrix ? this._thinInstanceDataStorage.matrixBufferSize : this._userThinInstanceBuffersStorage.sizes[kind];\r\n let data = kindIsMatrix ? this._thinInstanceDataStorage.matrixData : this._userThinInstanceBuffersStorage.data[kind];\r\n\r\n const bufferSize = (this._thinInstanceDataStorage.instancesCount + numInstances) * stride;\r\n\r\n let newSize = currentSize;\r\n\r\n while (newSize < bufferSize) {\r\n newSize *= 2;\r\n }\r\n\r\n if (!data || currentSize != newSize) {\r\n if (!data) {\r\n data = new Float32Array(newSize);\r\n } else {\r\n const newData = new Float32Array(newSize);\r\n newData.set(data, 0);\r\n data = newData;\r\n }\r\n\r\n if (kindIsMatrix) {\r\n this._thinInstanceDataStorage.matrixBuffer?.dispose();\r\n this._thinInstanceDataStorage.matrixBuffer = this._thinInstanceCreateMatrixBuffer(\"world\", data, false);\r\n this._thinInstanceDataStorage.matrixData = data;\r\n this._thinInstanceDataStorage.matrixBufferSize = newSize;\r\n if (this._scene.needsPreviousWorldMatrices && !this._thinInstanceDataStorage.previousMatrixData) {\r\n this._thinInstanceDataStorage.previousMatrixBuffer?.dispose();\r\n this._thinInstanceDataStorage.previousMatrixBuffer = this._thinInstanceCreateMatrixBuffer(\"previousWorld\", data, false);\r\n }\r\n } else {\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind]?.dispose();\r\n\r\n this._userThinInstanceBuffersStorage.data[kind] = data;\r\n this._userThinInstanceBuffersStorage.sizes[kind] = newSize;\r\n this._userThinInstanceBuffersStorage.vertexBuffers[kind] = new VertexBuffer(this.getEngine(), data, kind, true, false, stride, true);\r\n\r\n this.setVerticesBuffer(this._userThinInstanceBuffersStorage.vertexBuffers[kind]!);\r\n }\r\n }\r\n};\r\n\r\nMesh.prototype._thinInstanceInitializeUserStorage = function () {\r\n if (!this._userThinInstanceBuffersStorage) {\r\n this._userThinInstanceBuffersStorage = {\r\n data: {},\r\n sizes: {},\r\n vertexBuffers: {},\r\n strides: {},\r\n };\r\n }\r\n};\r\n\r\nMesh.prototype._disposeThinInstanceSpecificData = function () {\r\n if (this._thinInstanceDataStorage?.matrixBuffer) {\r\n this._thinInstanceDataStorage.matrixBuffer.dispose();\r\n this._thinInstanceDataStorage.matrixBuffer = null;\r\n }\r\n};\r\n"]}
@@ -49,7 +49,6 @@ export declare class TransformNode extends Node {
49
49
  private _rotation;
50
50
  private _rotationQuaternion;
51
51
  protected _scaling: Vector3;
52
- protected _isDirty: boolean;
53
52
  private _transformToBoneReferal;
54
53
  private _currentParentWhenAttachingToBone;
55
54
  private _isAbsoluteSynced;
@@ -173,12 +172,6 @@ export declare class TransformNode extends Node {
173
172
  _isSynchronized(): boolean;
174
173
  /** @hidden */
175
174
  _initCache(): void;
176
- /**
177
- * Flag the transform node as dirty (Forcing it to update everything)
178
- * @param property if set to "rotation" the objects rotationQuaternion will be set to null
179
- * @returns this transform node
180
- */
181
- markAsDirty(property: string): TransformNode;
182
175
  /**
183
176
  * Returns the current mesh absolute position.
184
177
  * Returns a Vector3.
@@ -332,14 +325,21 @@ export declare class TransformNode extends Node {
332
325
  * @returns this TransformNode.
333
326
  */
334
327
  getAbsolutePivotPointToRef(result: Vector3): TransformNode;
328
+ /**
329
+ * Flag the transform node as dirty (Forcing it to update everything)
330
+ * @param property if set to "rotation" the objects rotationQuaternion will be set to null
331
+ * @returns this node
332
+ */
333
+ markAsDirty(property?: string): Node;
335
334
  /**
336
335
  * Defines the passed node as the parent of the current node.
337
336
  * The node will remain exactly where it is and its position / rotation will be updated accordingly
338
337
  * @see https://doc.babylonjs.com/how_to/parenting
339
338
  * @param node the node ot set as the parent
339
+ * @param preserveScalingSign if true, keep scaling sign of child. Otherwise, scaling sign might change.
340
340
  * @returns this TransformNode.
341
341
  */
342
- setParent(node: Nullable<Node>): TransformNode;
342
+ setParent(node: Nullable<Node>, preserveScalingSign?: boolean): TransformNode;
343
343
  private _nonUniformScaling;
344
344
  /**
345
345
  * True if the scaling property of this object is non uniform eg. (1,2,1)
@@ -24,7 +24,6 @@ var TransformNode = /** @class */ (function (_super) {
24
24
  _this._rotation = Vector3.Zero();
25
25
  _this._rotationQuaternion = null;
26
26
  _this._scaling = Vector3.One();
27
- _this._isDirty = false;
28
27
  _this._transformToBoneReferal = null;
29
28
  _this._isAbsoluteSynced = false;
30
29
  _this._billboardMode = TransformNode.BILLBOARDMODE_NONE;
@@ -287,16 +286,6 @@ var TransformNode = /** @class */ (function (_super) {
287
286
  cache.billboardMode = -1;
288
287
  cache.infiniteDistance = false;
289
288
  };
290
- /**
291
- * Flag the transform node as dirty (Forcing it to update everything)
292
- * @param property if set to "rotation" the objects rotationQuaternion will be set to null
293
- * @returns this transform node
294
- */
295
- TransformNode.prototype.markAsDirty = function (property) {
296
- this._currentRenderId = Number.MAX_VALUE;
297
- this._isDirty = true;
298
- return this;
299
- };
300
289
  Object.defineProperty(TransformNode.prototype, "absolutePosition", {
301
290
  /**
302
291
  * Returns the current mesh absolute position.
@@ -670,33 +659,58 @@ var TransformNode = /** @class */ (function (_super) {
670
659
  Vector3.TransformCoordinatesToRef(result, this.getWorldMatrix(), result);
671
660
  return this;
672
661
  };
662
+ /**
663
+ * Flag the transform node as dirty (Forcing it to update everything)
664
+ * @param property if set to "rotation" the objects rotationQuaternion will be set to null
665
+ * @returns this node
666
+ */
667
+ TransformNode.prototype.markAsDirty = function (property) {
668
+ // We need to explicitly update the children
669
+ // as the scene.evaluateActiveMeshes will not poll the transform nodes
670
+ if (this._children) {
671
+ for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
672
+ var child = _a[_i];
673
+ child.markAsDirty(property);
674
+ }
675
+ }
676
+ return _super.prototype.markAsDirty.call(this, property);
677
+ };
673
678
  /**
674
679
  * Defines the passed node as the parent of the current node.
675
680
  * The node will remain exactly where it is and its position / rotation will be updated accordingly
676
681
  * @see https://doc.babylonjs.com/how_to/parenting
677
682
  * @param node the node ot set as the parent
683
+ * @param preserveScalingSign if true, keep scaling sign of child. Otherwise, scaling sign might change.
678
684
  * @returns this TransformNode.
679
685
  */
680
- TransformNode.prototype.setParent = function (node) {
686
+ TransformNode.prototype.setParent = function (node, preserveScalingSign) {
687
+ if (preserveScalingSign === void 0) { preserveScalingSign = false; }
681
688
  if (!node && !this.parent) {
682
689
  return this;
683
690
  }
684
691
  var quatRotation = TmpVectors.Quaternion[0];
685
692
  var position = TmpVectors.Vector3[0];
686
693
  var scale = TmpVectors.Vector3[1];
687
- if (!node) {
688
- this.computeWorldMatrix(true);
689
- this.getWorldMatrix().decompose(scale, quatRotation, position);
694
+ var invParentMatrix = TmpVectors.Matrix[1];
695
+ Matrix.IdentityToRef(invParentMatrix);
696
+ var composedMatrix = TmpVectors.Matrix[0];
697
+ this.computeWorldMatrix(true);
698
+ var currentRotation = this.rotationQuaternion;
699
+ if (!currentRotation) {
700
+ currentRotation = TransformNode._TmpRotation;
701
+ Quaternion.RotationYawPitchRollToRef(this._rotation.y, this._rotation.x, this._rotation.z, currentRotation);
690
702
  }
691
- else {
692
- var diffMatrix = TmpVectors.Matrix[0];
693
- var invParentMatrix = TmpVectors.Matrix[1];
694
- this.computeWorldMatrix(true);
695
- node.computeWorldMatrix(true);
696
- node.getWorldMatrix().invertToRef(invParentMatrix);
697
- this.getWorldMatrix().multiplyToRef(invParentMatrix, diffMatrix);
698
- diffMatrix.decompose(scale, quatRotation, position);
703
+ // current global transformation without pivot
704
+ Matrix.ComposeToRef(this.scaling, currentRotation, this.position, composedMatrix);
705
+ if (this.parent) {
706
+ composedMatrix.multiplyToRef(this.parent.computeWorldMatrix(true), composedMatrix);
707
+ }
708
+ // is a node was set, calculate the difference between this and the node
709
+ if (node) {
710
+ node.computeWorldMatrix(true).invertToRef(invParentMatrix);
711
+ composedMatrix.multiplyToRef(invParentMatrix, composedMatrix);
699
712
  }
713
+ composedMatrix.decompose(scale, quatRotation, position, preserveScalingSign ? this : undefined);
700
714
  if (this.rotationQuaternion) {
701
715
  this.rotationQuaternion.copyFrom(quatRotation);
702
716
  }
@@ -929,7 +943,7 @@ var TransformNode = /** @class */ (function (_super) {
929
943
  cache.billboardMode = this.billboardMode;
930
944
  cache.infiniteDistance = this.infiniteDistance;
931
945
  this._currentRenderId = currentRenderId;
932
- this._childUpdateId++;
946
+ this._childUpdateId += 1;
933
947
  this._isDirty = false;
934
948
  this._position._isDirty = false;
935
949
  this._rotation._isDirty = false;
@@ -1190,15 +1204,16 @@ var TransformNode = /** @class */ (function (_super) {
1190
1204
  TransformNode.prototype.serialize = function (currentSerializationObject) {
1191
1205
  var serializationObject = SerializationHelper.Serialize(this, currentSerializationObject);
1192
1206
  serializationObject.type = this.getClassName();
1207
+ serializationObject.uniqueId = this.uniqueId;
1193
1208
  // Parent
1194
1209
  if (this.parent) {
1195
- serializationObject.parentId = this.parent.id;
1210
+ serializationObject.parentId = this.parent.uniqueId;
1196
1211
  }
1197
1212
  serializationObject.localMatrix = this.getPivotMatrix().asArray();
1198
1213
  serializationObject.isEnabled = this.isEnabled();
1199
1214
  // Parent
1200
1215
  if (this.parent) {
1201
- serializationObject.parentId = this.parent.id;
1216
+ serializationObject.parentId = this.parent.uniqueId;
1202
1217
  }
1203
1218
  return serializationObject;
1204
1219
  };