@babylonjs/core 5.0.0-alpha.61 → 5.0.0-alpha.65

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 (519) hide show
  1. package/Animations/animation.js +42 -2
  2. package/Animations/animation.js.map +1 -1
  3. package/Animations/animationGroup.d.ts +5 -1
  4. package/Animations/animationGroup.js +19 -1
  5. package/Animations/animationGroup.js.map +1 -1
  6. package/Audio/sound.js +15 -1
  7. package/Audio/sound.js.map +1 -1
  8. package/Behaviors/Cameras/autoRotationBehavior.d.ts +5 -0
  9. package/Behaviors/Cameras/autoRotationBehavior.js +7 -0
  10. package/Behaviors/Cameras/autoRotationBehavior.js.map +1 -1
  11. package/Behaviors/Meshes/followBehavior.js +1 -1
  12. package/Behaviors/Meshes/followBehavior.js.map +1 -1
  13. package/Behaviors/Meshes/handConstraintBehavior.js +16 -12
  14. package/Behaviors/Meshes/handConstraintBehavior.js.map +1 -1
  15. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js +1 -1
  16. package/Cameras/VR/vrDeviceOrientationArcRotateCamera.js.map +1 -1
  17. package/Cameras/VR/vrExperienceHelper.d.ts +1 -1
  18. package/Cameras/VR/vrExperienceHelper.js +1 -1
  19. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  20. package/Cameras/camera.js +2 -2
  21. package/Cameras/camera.js.map +1 -1
  22. package/DeviceInput/Implementations/{nativeDeviceInputWrapper.d.ts → nativeDeviceInputSystem.d.ts} +5 -21
  23. package/DeviceInput/Implementations/{nativeDeviceInputWrapper.js → nativeDeviceInputSystem.js} +19 -20
  24. package/DeviceInput/Implementations/nativeDeviceInputSystem.js.map +1 -0
  25. package/DeviceInput/Implementations/webDeviceInputSystem.d.ts +7 -20
  26. package/DeviceInput/Implementations/webDeviceInputSystem.js +79 -71
  27. package/DeviceInput/Implementations/webDeviceInputSystem.js.map +1 -1
  28. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +3 -2
  29. package/DeviceInput/InputDevices/deviceSourceManager.js +5 -1
  30. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  31. package/DeviceInput/Interfaces/inputInterfaces.d.ts +6 -13
  32. package/DeviceInput/Interfaces/inputInterfaces.js.map +1 -1
  33. package/DeviceInput/deviceInputSystem.d.ts +49 -5
  34. package/DeviceInput/deviceInputSystem.js +62 -10
  35. package/DeviceInput/deviceInputSystem.js.map +1 -1
  36. package/DeviceInput/index.d.ts +1 -1
  37. package/DeviceInput/index.js +1 -1
  38. package/DeviceInput/index.js.map +1 -1
  39. package/Engines/Extensions/engine.dynamicTexture.d.ts +2 -1
  40. package/Engines/Extensions/engine.dynamicTexture.js +2 -1
  41. package/Engines/Extensions/engine.dynamicTexture.js.map +1 -1
  42. package/Engines/Extensions/engine.views.d.ts +1 -1
  43. package/Engines/Extensions/engine.views.js +1 -1
  44. package/Engines/Extensions/engine.views.js.map +1 -1
  45. package/Engines/Processors/iShaderProcessor.d.ts +1 -1
  46. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  47. package/Engines/Processors/shaderProcessingOptions.d.ts +5 -0
  48. package/Engines/Processors/shaderProcessingOptions.js.map +1 -1
  49. package/Engines/Processors/shaderProcessor.js +8 -2
  50. package/Engines/Processors/shaderProcessor.js.map +1 -1
  51. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js +3 -11
  52. package/Engines/WebGPU/Extensions/engine.dynamicTexture.js.map +1 -1
  53. package/Engines/WebGPU/Extensions/engine.multiRender.js +19 -9
  54. package/Engines/WebGPU/Extensions/engine.multiRender.js.map +1 -1
  55. package/Engines/WebGPU/Extensions/engine.renderTarget.js +9 -6
  56. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  57. package/Engines/WebGPU/webgpuBufferManager.d.ts +1 -1
  58. package/Engines/WebGPU/webgpuBufferManager.js.map +1 -1
  59. package/Engines/WebGPU/webgpuCacheBindGroups.js +3 -3
  60. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  61. package/Engines/WebGPU/webgpuCacheRenderPipeline.d.ts +4 -1
  62. package/Engines/WebGPU/webgpuCacheRenderPipeline.js +37 -83
  63. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  64. package/Engines/WebGPU/webgpuCacheSampler.js +6 -4
  65. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  66. package/Engines/WebGPU/webgpuClearQuad.d.ts +1 -1
  67. package/Engines/WebGPU/webgpuClearQuad.js +29 -11
  68. package/Engines/WebGPU/webgpuClearQuad.js.map +1 -1
  69. package/Engines/WebGPU/webgpuComputeContext.js +2 -2
  70. package/Engines/WebGPU/webgpuComputeContext.js.map +1 -1
  71. package/Engines/WebGPU/webgpuConstants.d.ts +57 -13
  72. package/Engines/WebGPU/webgpuConstants.js +62 -13
  73. package/Engines/WebGPU/webgpuConstants.js.map +1 -1
  74. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +24 -4
  75. package/Engines/WebGPU/webgpuHardwareTexture.js +12 -2
  76. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  77. package/Engines/WebGPU/webgpuRenderTargetWrapper.d.ts +6 -0
  78. package/Engines/WebGPU/webgpuRenderTargetWrapper.js +12 -0
  79. package/Engines/WebGPU/webgpuRenderTargetWrapper.js.map +1 -0
  80. package/Engines/WebGPU/webgpuShaderProcessingContext.js +2 -0
  81. package/Engines/WebGPU/webgpuShaderProcessingContext.js.map +1 -1
  82. package/Engines/WebGPU/webgpuShaderProcessor.d.ts +2 -0
  83. package/Engines/WebGPU/webgpuShaderProcessor.js +23 -0
  84. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  85. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.d.ts +1 -0
  86. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js +17 -1
  87. package/Engines/WebGPU/webgpuShaderProcessorsGLSL.js.map +1 -1
  88. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.d.ts +1 -2
  89. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js +11 -30
  90. package/Engines/WebGPU/webgpuShaderProcessorsWGSL.js.map +1 -1
  91. package/Engines/WebGPU/webgpuTextureHelper.d.ts +9 -2
  92. package/Engines/WebGPU/webgpuTextureHelper.js +291 -66
  93. package/Engines/WebGPU/webgpuTextureHelper.js.map +1 -1
  94. package/Engines/engine.d.ts +145 -45
  95. package/Engines/engine.js +5 -1
  96. package/Engines/engine.js.map +1 -1
  97. package/Engines/nativeEngine.d.ts +11 -0
  98. package/Engines/nativeEngine.js +78 -18
  99. package/Engines/nativeEngine.js.map +1 -1
  100. package/Engines/renderTargetWrapper.d.ts +1 -1
  101. package/Engines/renderTargetWrapper.js +1 -1
  102. package/Engines/renderTargetWrapper.js.map +1 -1
  103. package/Engines/thinEngine.js +2 -2
  104. package/Engines/thinEngine.js.map +1 -1
  105. package/Engines/webgpuEngine.d.ts +5 -13
  106. package/Engines/webgpuEngine.js +37 -75
  107. package/Engines/webgpuEngine.js.map +1 -1
  108. package/Gizmos/positionGizmo.js +1 -1
  109. package/Gizmos/positionGizmo.js.map +1 -1
  110. package/Inputs/scene.inputManager.js +6 -1
  111. package/Inputs/scene.inputManager.js.map +1 -1
  112. package/Layers/effectLayer.d.ts +4 -0
  113. package/Layers/effectLayer.js +10 -0
  114. package/Layers/effectLayer.js.map +1 -1
  115. package/Layers/glowLayer.d.ts +8 -0
  116. package/Layers/glowLayer.js +7 -3
  117. package/Layers/glowLayer.js.map +1 -1
  118. package/Layers/highlightLayer.js +2 -0
  119. package/Layers/highlightLayer.js.map +1 -1
  120. package/Lights/Shadows/shadowGenerator.js +1 -1
  121. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  122. package/Lights/light.js +4 -1
  123. package/Lights/light.js.map +1 -1
  124. package/Lights/pointLight.js +1 -1
  125. package/Lights/pointLight.js.map +1 -1
  126. package/Lights/spotLight.js +1 -1
  127. package/Lights/spotLight.js.map +1 -1
  128. package/Loading/Plugins/babylonFileLoader.js +10 -7
  129. package/Loading/Plugins/babylonFileLoader.js.map +1 -1
  130. package/Materials/Node/Blocks/Fragment/index.d.ts +1 -0
  131. package/Materials/Node/Blocks/Fragment/index.js +1 -0
  132. package/Materials/Node/Blocks/Fragment/index.js.map +1 -1
  133. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +1 -3
  134. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  135. package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +49 -0
  136. package/Materials/Node/Blocks/Fragment/twirlBlock.js +145 -0
  137. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -0
  138. package/Materials/Node/Blocks/customBlock.d.ts +31 -0
  139. package/Materials/Node/Blocks/customBlock.js +144 -0
  140. package/Materials/Node/Blocks/customBlock.js.map +1 -0
  141. package/Materials/Node/Blocks/index.d.ts +1 -0
  142. package/Materials/Node/Blocks/index.js +1 -0
  143. package/Materials/Node/Blocks/index.js.map +1 -1
  144. package/Materials/Node/nodeMaterial.js +8 -0
  145. package/Materials/Node/nodeMaterial.js.map +1 -1
  146. package/Materials/Node/nodeMaterialBlock.js +1 -1
  147. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  148. package/Materials/PBR/index.d.ts +4 -0
  149. package/Materials/PBR/index.js +4 -0
  150. package/Materials/PBR/index.js.map +1 -1
  151. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +28 -96
  152. package/Materials/PBR/pbrAnisotropicConfiguration.js +50 -111
  153. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  154. package/Materials/PBR/pbrBRDFConfiguration.d.ts +11 -37
  155. package/Materials/PBR/pbrBRDFConfiguration.js +39 -52
  156. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  157. package/Materials/PBR/pbrBaseMaterial.d.ts +15 -74
  158. package/Materials/PBR/pbrBaseMaterial.js +67 -182
  159. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  160. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  161. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +23 -98
  162. package/Materials/PBR/pbrClearCoatConfiguration.js +91 -143
  163. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  164. package/Materials/PBR/pbrSheenConfiguration.d.ts +25 -93
  165. package/Materials/PBR/pbrSheenConfiguration.js +71 -126
  166. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  167. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +28 -114
  168. package/Materials/PBR/pbrSubSurfaceConfiguration.js +150 -211
  169. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  170. package/Materials/Textures/dynamicTexture.d.ts +3 -2
  171. package/Materials/Textures/dynamicTexture.js +5 -3
  172. package/Materials/Textures/dynamicTexture.js.map +1 -1
  173. package/Materials/Textures/multiRenderTarget.js +3 -0
  174. package/Materials/Textures/multiRenderTarget.js.map +1 -1
  175. package/Materials/Textures/renderTargetTexture.js +1 -1
  176. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  177. package/Materials/Textures/thinRenderTargetTexture.js +1 -1
  178. package/Materials/Textures/thinRenderTargetTexture.js.map +1 -1
  179. package/Materials/Textures/thinTexture.d.ts +1 -2
  180. package/Materials/Textures/thinTexture.js +2 -4
  181. package/Materials/Textures/thinTexture.js.map +1 -1
  182. package/Materials/Textures/videoTexture.d.ts +1 -1
  183. package/Materials/Textures/videoTexture.js +1 -1
  184. package/Materials/Textures/videoTexture.js.map +1 -1
  185. package/Materials/effect.d.ts +6 -1
  186. package/Materials/effect.js +4 -1
  187. package/Materials/effect.js.map +1 -1
  188. package/Materials/fresnelParameters.d.ts +1 -1
  189. package/Materials/fresnelParameters.js +1 -1
  190. package/Materials/fresnelParameters.js.map +1 -1
  191. package/Materials/index.d.ts +4 -0
  192. package/Materials/index.js +4 -0
  193. package/Materials/index.js.map +1 -1
  194. package/Materials/material.d.ts +43 -2
  195. package/Materials/material.detailMapConfiguration.d.ts +29 -87
  196. package/Materials/material.detailMapConfiguration.js +50 -106
  197. package/Materials/material.detailMapConfiguration.js.map +1 -1
  198. package/Materials/material.js +99 -8
  199. package/Materials/material.js.map +1 -1
  200. package/Materials/materialDefines.d.ts +16 -0
  201. package/Materials/materialDefines.js +17 -5
  202. package/Materials/materialDefines.js.map +1 -1
  203. package/Materials/materialPluginBase.d.ts +182 -0
  204. package/Materials/materialPluginBase.js +209 -0
  205. package/Materials/materialPluginBase.js.map +1 -0
  206. package/Materials/materialPluginEvent.d.ts +98 -0
  207. package/Materials/materialPluginEvent.js +21 -0
  208. package/Materials/materialPluginEvent.js.map +1 -0
  209. package/Materials/materialPluginFactoryExport.d.ts +40 -0
  210. package/Materials/materialPluginFactoryExport.js +75 -0
  211. package/Materials/materialPluginFactoryExport.js.map +1 -0
  212. package/Materials/materialPluginManager.d.ts +90 -0
  213. package/Materials/materialPluginManager.js +323 -0
  214. package/Materials/materialPluginManager.js.map +1 -0
  215. package/Materials/shaderMaterial.d.ts +1 -1
  216. package/Materials/shaderMaterial.js +13 -1
  217. package/Materials/shaderMaterial.js.map +1 -1
  218. package/Materials/standardMaterial.d.ts +13 -10
  219. package/Materials/standardMaterial.js +45 -51
  220. package/Materials/standardMaterial.js.map +1 -1
  221. package/Materials/uniformBuffer.d.ts +7 -0
  222. package/Materials/uniformBuffer.js +22 -0
  223. package/Materials/uniformBuffer.js.map +1 -1
  224. package/Maths/math.vector.d.ts +12 -8
  225. package/Maths/math.vector.js +22 -14
  226. package/Maths/math.vector.js.map +1 -1
  227. package/Meshes/Builders/capsuleBuilder.d.ts +1 -1
  228. package/Meshes/Builders/capsuleBuilder.js +1 -1
  229. package/Meshes/Builders/capsuleBuilder.js.map +1 -1
  230. package/Meshes/abstractMesh.d.ts +1 -1
  231. package/Meshes/abstractMesh.js +24 -23
  232. package/Meshes/abstractMesh.js.map +1 -1
  233. package/Meshes/geometry.js +2 -2
  234. package/Meshes/geometry.js.map +1 -1
  235. package/Meshes/linesMesh.d.ts +1 -1
  236. package/Meshes/linesMesh.js +3 -2
  237. package/Meshes/linesMesh.js.map +1 -1
  238. package/Meshes/mesh.d.ts +12 -0
  239. package/Meshes/mesh.js +184 -115
  240. package/Meshes/mesh.js.map +1 -1
  241. package/Meshes/mesh.lts.d.ts +8 -8
  242. package/Meshes/mesh.lts.js.map +1 -1
  243. package/Meshes/mesh.vertexData.d.ts +6 -1
  244. package/Meshes/mesh.vertexData.js +295 -114
  245. package/Meshes/mesh.vertexData.js.map +1 -1
  246. package/Meshes/transformNode.js +20 -13
  247. package/Meshes/transformNode.js.map +1 -1
  248. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.d.ts +2 -1
  249. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js +38 -33
  250. package/Misc/PerformanceViewer/performanceViewerCollectionStrategies.js.map +1 -1
  251. package/Misc/PerformanceViewer/performanceViewerCollector.d.ts +29 -4
  252. package/Misc/PerformanceViewer/performanceViewerCollector.js +36 -12
  253. package/Misc/PerformanceViewer/performanceViewerCollector.js.map +1 -1
  254. package/Misc/assetsManager.d.ts +4 -4
  255. package/Misc/assetsManager.js +2 -2
  256. package/Misc/assetsManager.js.map +1 -1
  257. package/Misc/basis.js +1 -0
  258. package/Misc/basis.js.map +1 -1
  259. package/Misc/coroutine.d.ts +41 -0
  260. package/Misc/coroutine.js +136 -0
  261. package/Misc/coroutine.js.map +1 -0
  262. package/Misc/index.d.ts +1 -0
  263. package/Misc/index.js +1 -0
  264. package/Misc/index.js.map +1 -1
  265. package/Misc/interfaces/iPerfViewer.d.ts +4 -0
  266. package/Misc/interfaces/iPerfViewer.js.map +1 -1
  267. package/Misc/observableCoroutine.d.ts +9 -10
  268. package/Misc/observableCoroutine.js +34 -39
  269. package/Misc/observableCoroutine.js.map +1 -1
  270. package/Misc/sceneSerializer.js +1 -0
  271. package/Misc/sceneSerializer.js.map +1 -1
  272. package/Particles/particleSystem.js +3 -0
  273. package/Particles/particleSystem.js.map +1 -1
  274. package/Particles/subEmitter.js +1 -0
  275. package/Particles/subEmitter.js.map +1 -1
  276. package/PostProcesses/screenSpaceReflectionPostProcess.d.ts +1 -0
  277. package/PostProcesses/screenSpaceReflectionPostProcess.js +4 -0
  278. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  279. package/Rendering/depthPeelingRenderer.d.ts +4 -1
  280. package/Rendering/depthPeelingRenderer.js +34 -9
  281. package/Rendering/depthPeelingRenderer.js.map +1 -1
  282. package/Rendering/depthRenderer.js +1 -1
  283. package/Rendering/depthRenderer.js.map +1 -1
  284. package/Rendering/outlineRenderer.js +24 -1
  285. package/Rendering/outlineRenderer.js.map +1 -1
  286. package/Rendering/prePassRenderer.js +7 -7
  287. package/Rendering/prePassRenderer.js.map +1 -1
  288. package/Rendering/renderingGroup.js +5 -1
  289. package/Rendering/renderingGroup.js.map +1 -1
  290. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js +1 -1
  291. package/Shaders/ShadersInclude/defaultFragmentDeclaration.js.map +1 -1
  292. package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
  293. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  294. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -1
  295. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  296. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js +1 -1
  297. package/Shaders/ShadersInclude/pbrFragmentDeclaration.js.map +1 -1
  298. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  299. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  300. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -1
  301. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  302. package/Shaders/anaglyph.fragment.js +1 -1
  303. package/Shaders/anaglyph.fragment.js.map +1 -1
  304. package/Shaders/background.fragment.js +1 -1
  305. package/Shaders/background.fragment.js.map +1 -1
  306. package/Shaders/background.vertex.js +1 -1
  307. package/Shaders/background.vertex.js.map +1 -1
  308. package/Shaders/blackAndWhite.fragment.js +1 -1
  309. package/Shaders/blackAndWhite.fragment.js.map +1 -1
  310. package/Shaders/bloomMerge.fragment.js +1 -1
  311. package/Shaders/bloomMerge.fragment.js.map +1 -1
  312. package/Shaders/blur.fragment.js +1 -1
  313. package/Shaders/blur.fragment.js.map +1 -1
  314. package/Shaders/boundingBoxRenderer.fragment.js +1 -1
  315. package/Shaders/boundingBoxRenderer.fragment.js.map +1 -1
  316. package/Shaders/boundingBoxRenderer.vertex.js +1 -1
  317. package/Shaders/boundingBoxRenderer.vertex.js.map +1 -1
  318. package/Shaders/chromaticAberration.fragment.js +1 -1
  319. package/Shaders/chromaticAberration.fragment.js.map +1 -1
  320. package/Shaders/circleOfConfusion.fragment.js +1 -1
  321. package/Shaders/circleOfConfusion.fragment.js.map +1 -1
  322. package/Shaders/clearQuad.vertex.js +1 -1
  323. package/Shaders/clearQuad.vertex.js.map +1 -1
  324. package/Shaders/color.fragment.js +1 -1
  325. package/Shaders/color.fragment.js.map +1 -1
  326. package/Shaders/color.vertex.js +1 -1
  327. package/Shaders/color.vertex.js.map +1 -1
  328. package/Shaders/colorCorrection.fragment.js +1 -1
  329. package/Shaders/colorCorrection.fragment.js.map +1 -1
  330. package/Shaders/convolution.fragment.js +1 -1
  331. package/Shaders/convolution.fragment.js.map +1 -1
  332. package/Shaders/default.fragment.js +1 -1
  333. package/Shaders/default.fragment.js.map +1 -1
  334. package/Shaders/depth.fragment.js +1 -1
  335. package/Shaders/depth.fragment.js.map +1 -1
  336. package/Shaders/depth.vertex.js +1 -1
  337. package/Shaders/depth.vertex.js.map +1 -1
  338. package/Shaders/depthBoxBlur.fragment.js +1 -1
  339. package/Shaders/depthBoxBlur.fragment.js.map +1 -1
  340. package/Shaders/depthOfField.fragment.js +1 -1
  341. package/Shaders/depthOfField.fragment.js.map +1 -1
  342. package/Shaders/depthOfFieldMerge.fragment.js +1 -1
  343. package/Shaders/depthOfFieldMerge.fragment.js.map +1 -1
  344. package/Shaders/displayPass.fragment.js +1 -1
  345. package/Shaders/displayPass.fragment.js.map +1 -1
  346. package/Shaders/extractHighlights.fragment.js +1 -1
  347. package/Shaders/extractHighlights.fragment.js.map +1 -1
  348. package/Shaders/filter.fragment.js +1 -1
  349. package/Shaders/filter.fragment.js.map +1 -1
  350. package/Shaders/fxaa.vertex.js +1 -1
  351. package/Shaders/fxaa.vertex.js.map +1 -1
  352. package/Shaders/geometry.vertex.js +1 -1
  353. package/Shaders/geometry.vertex.js.map +1 -1
  354. package/Shaders/glowBlurPostProcess.fragment.js +1 -1
  355. package/Shaders/glowBlurPostProcess.fragment.js.map +1 -1
  356. package/Shaders/glowMapGeneration.fragment.js +1 -1
  357. package/Shaders/glowMapGeneration.fragment.js.map +1 -1
  358. package/Shaders/glowMapGeneration.vertex.js +1 -1
  359. package/Shaders/glowMapGeneration.vertex.js.map +1 -1
  360. package/Shaders/glowMapMerge.fragment.js +1 -1
  361. package/Shaders/glowMapMerge.fragment.js.map +1 -1
  362. package/Shaders/glowMapMerge.vertex.js +1 -1
  363. package/Shaders/glowMapMerge.vertex.js.map +1 -1
  364. package/Shaders/grain.fragment.js +1 -1
  365. package/Shaders/grain.fragment.js.map +1 -1
  366. package/Shaders/hdrFiltering.vertex.js +1 -1
  367. package/Shaders/hdrFiltering.vertex.js.map +1 -1
  368. package/Shaders/highlights.fragment.js +1 -1
  369. package/Shaders/highlights.fragment.js.map +1 -1
  370. package/Shaders/imageProcessing.fragment.js +1 -1
  371. package/Shaders/imageProcessing.fragment.js.map +1 -1
  372. package/Shaders/kernelBlur.fragment.js +1 -1
  373. package/Shaders/kernelBlur.fragment.js.map +1 -1
  374. package/Shaders/kernelBlur.vertex.js +1 -1
  375. package/Shaders/kernelBlur.vertex.js.map +1 -1
  376. package/Shaders/layer.fragment.js +1 -1
  377. package/Shaders/layer.fragment.js.map +1 -1
  378. package/Shaders/layer.vertex.js +1 -1
  379. package/Shaders/layer.vertex.js.map +1 -1
  380. package/Shaders/lensFlare.fragment.js +1 -1
  381. package/Shaders/lensFlare.fragment.js.map +1 -1
  382. package/Shaders/lensFlare.vertex.js +1 -1
  383. package/Shaders/lensFlare.vertex.js.map +1 -1
  384. package/Shaders/lensHighlights.fragment.js +1 -1
  385. package/Shaders/lensHighlights.fragment.js.map +1 -1
  386. package/Shaders/line.fragment.js +1 -1
  387. package/Shaders/line.fragment.js.map +1 -1
  388. package/Shaders/line.vertex.js +1 -1
  389. package/Shaders/line.vertex.js.map +1 -1
  390. package/Shaders/minmaxRedux.fragment.js +1 -1
  391. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  392. package/Shaders/motionBlur.fragment.js +1 -1
  393. package/Shaders/motionBlur.fragment.js.map +1 -1
  394. package/Shaders/noise.fragment.js +1 -1
  395. package/Shaders/noise.fragment.js.map +1 -1
  396. package/Shaders/outline.fragment.d.ts +2 -0
  397. package/Shaders/outline.fragment.js +3 -1
  398. package/Shaders/outline.fragment.js.map +1 -1
  399. package/Shaders/outline.vertex.d.ts +2 -0
  400. package/Shaders/outline.vertex.js +3 -1
  401. package/Shaders/outline.vertex.js.map +1 -1
  402. package/Shaders/particles.fragment.js +1 -1
  403. package/Shaders/particles.fragment.js.map +1 -1
  404. package/Shaders/particles.vertex.js +1 -1
  405. package/Shaders/particles.vertex.js.map +1 -1
  406. package/Shaders/pass.fragment.js +1 -1
  407. package/Shaders/pass.fragment.js.map +1 -1
  408. package/Shaders/passCube.fragment.js +1 -1
  409. package/Shaders/passCube.fragment.js.map +1 -1
  410. package/Shaders/pbr.fragment.js +1 -1
  411. package/Shaders/pbr.fragment.js.map +1 -1
  412. package/Shaders/postprocess.vertex.js +1 -1
  413. package/Shaders/postprocess.vertex.js.map +1 -1
  414. package/Shaders/procedural.vertex.js +1 -1
  415. package/Shaders/procedural.vertex.js.map +1 -1
  416. package/Shaders/rgbdDecode.fragment.js +1 -1
  417. package/Shaders/rgbdDecode.fragment.js.map +1 -1
  418. package/Shaders/rgbdEncode.fragment.js +1 -1
  419. package/Shaders/rgbdEncode.fragment.js.map +1 -1
  420. package/Shaders/screenSpaceCurvature.fragment.js +1 -1
  421. package/Shaders/screenSpaceCurvature.fragment.js.map +1 -1
  422. package/Shaders/screenSpaceReflection.fragment.js +1 -1
  423. package/Shaders/screenSpaceReflection.fragment.js.map +1 -1
  424. package/Shaders/shadowMap.fragment.js +1 -1
  425. package/Shaders/shadowMap.fragment.js.map +1 -1
  426. package/Shaders/shadowMap.vertex.js +1 -1
  427. package/Shaders/shadowMap.vertex.js.map +1 -1
  428. package/Shaders/sharpen.fragment.js +1 -1
  429. package/Shaders/sharpen.fragment.js.map +1 -1
  430. package/Shaders/sprites.fragment.js +1 -1
  431. package/Shaders/sprites.fragment.js.map +1 -1
  432. package/Shaders/sprites.vertex.js +1 -1
  433. package/Shaders/sprites.vertex.js.map +1 -1
  434. package/Shaders/ssaoCombine.fragment.js +1 -1
  435. package/Shaders/ssaoCombine.fragment.js.map +1 -1
  436. package/Shaders/standard.fragment.js +1 -1
  437. package/Shaders/standard.fragment.js.map +1 -1
  438. package/Shaders/stereoscopicInterlace.fragment.js +1 -1
  439. package/Shaders/stereoscopicInterlace.fragment.js.map +1 -1
  440. package/Shaders/subSurfaceScattering.fragment.js +1 -1
  441. package/Shaders/subSurfaceScattering.fragment.js.map +1 -1
  442. package/Shaders/tonemap.fragment.js +1 -1
  443. package/Shaders/tonemap.fragment.js.map +1 -1
  444. package/Shaders/volumetricLightScattering.fragment.js +1 -1
  445. package/Shaders/volumetricLightScattering.fragment.js.map +1 -1
  446. package/Shaders/volumetricLightScatteringPass.fragment.js +1 -1
  447. package/Shaders/volumetricLightScatteringPass.fragment.js.map +1 -1
  448. package/Shaders/volumetricLightScatteringPass.vertex.js +1 -1
  449. package/Shaders/volumetricLightScatteringPass.vertex.js.map +1 -1
  450. package/Shaders/vrDistortionCorrection.fragment.js +1 -1
  451. package/Shaders/vrDistortionCorrection.fragment.js.map +1 -1
  452. package/Shaders/vrMultiviewToSingleview.fragment.js +1 -1
  453. package/Shaders/vrMultiviewToSingleview.fragment.js.map +1 -1
  454. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js +1 -1
  455. package/ShadersWGSL/ShadersInclude/meshUboDeclaration.js.map +1 -1
  456. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js +1 -1
  457. package/ShadersWGSL/ShadersInclude/sceneUboDeclaration.js.map +1 -1
  458. package/ShadersWGSL/gpuUpdateParticles.compute.js +1 -1
  459. package/ShadersWGSL/gpuUpdateParticles.compute.js.map +1 -1
  460. package/XR/features/WebXRControllerPointerSelection.d.ts +14 -0
  461. package/XR/features/WebXRControllerPointerSelection.js +55 -21
  462. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  463. package/XR/features/WebXRHandTracking.d.ts +2 -0
  464. package/XR/features/WebXRHandTracking.js +34 -14
  465. package/XR/features/WebXRHandTracking.js.map +1 -1
  466. package/XR/features/WebXRLayers.d.ts +78 -0
  467. package/XR/features/WebXRLayers.js +243 -0
  468. package/XR/features/WebXRLayers.js.map +1 -0
  469. package/XR/features/WebXRPlaneDetector.js +8 -12
  470. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  471. package/XR/features/index.d.ts +1 -0
  472. package/XR/features/index.js +1 -0
  473. package/XR/features/index.js.map +1 -1
  474. package/XR/index.d.ts +1 -0
  475. package/XR/index.js +1 -0
  476. package/XR/index.js.map +1 -1
  477. package/XR/native/index.d.ts +2 -0
  478. package/XR/native/index.js +3 -0
  479. package/XR/native/index.js.map +1 -0
  480. package/XR/native/nativeXRFrame.d.ts +27 -0
  481. package/XR/native/nativeXRFrame.js +81 -0
  482. package/XR/native/nativeXRFrame.js.map +1 -0
  483. package/XR/native/nativeXRRenderTarget.d.ts +44 -0
  484. package/XR/native/nativeXRRenderTarget.js +81 -0
  485. package/XR/native/nativeXRRenderTarget.js.map +1 -0
  486. package/XR/webXRCamera.js +2 -10
  487. package/XR/webXRCamera.js.map +1 -1
  488. package/XR/webXRExperienceHelper.js +15 -13
  489. package/XR/webXRExperienceHelper.js.map +1 -1
  490. package/XR/webXRFeaturesManager.d.ts +4 -0
  491. package/XR/webXRFeaturesManager.js +5 -1
  492. package/XR/webXRFeaturesManager.js.map +1 -1
  493. package/XR/webXRLayerWrapper.d.ts +48 -0
  494. package/XR/webXRLayerWrapper.js +60 -0
  495. package/XR/webXRLayerWrapper.js.map +1 -0
  496. package/XR/webXRManagedOutputCanvas.d.ts +2 -1
  497. package/XR/webXRManagedOutputCanvas.js +36 -29
  498. package/XR/webXRManagedOutputCanvas.js.map +1 -1
  499. package/XR/webXRRenderTargetTextureProvider.d.ts +55 -0
  500. package/XR/webXRRenderTargetTextureProvider.js +63 -0
  501. package/XR/webXRRenderTargetTextureProvider.js.map +1 -0
  502. package/XR/webXRSessionManager.d.ts +30 -7
  503. package/XR/webXRSessionManager.js +62 -64
  504. package/XR/webXRSessionManager.js.map +1 -1
  505. package/XR/webXRTypes.d.ts +1 -1
  506. package/XR/webXRTypes.js.map +1 -1
  507. package/XR/webXRWebGLLayer.d.ts +36 -0
  508. package/XR/webXRWebGLLayer.js +69 -0
  509. package/XR/webXRWebGLLayer.js.map +1 -0
  510. package/abstractScene.d.ts +1 -1
  511. package/abstractScene.js +1 -1
  512. package/abstractScene.js.map +1 -1
  513. package/assetContainer.js +3 -0
  514. package/assetContainer.js.map +1 -1
  515. package/package.json +51 -6
  516. package/scene.d.ts +4 -0
  517. package/scene.js +4 -0
  518. package/scene.js.map +1 -1
  519. package/DeviceInput/Implementations/nativeDeviceInputWrapper.js.map +0 -1
@@ -2,6 +2,7 @@ import { Animation } from "./animation.js";
2
2
  import { Observable } from "../Misc/observable.js";
3
3
  import { EngineStore } from "../Engines/engineStore.js";
4
4
  import "./animatable.js";
5
+ import { Tags } from '../Misc/tags.js';
5
6
  /**
6
7
  * This class defines the direct association between an animation and a target
7
8
  */
@@ -35,7 +36,7 @@ var AnimationGroup = /** @class */ (function () {
35
36
  /**
36
37
  * Instantiates a new Animation Group.
37
38
  * This helps managing several animations at once.
38
- * @see https://doc.babylonjs.com/how_to/group
39
+ * @see https://doc.babylonjs.com/divingDeeper/animation/groupAnimations
39
40
  * @param name Defines the name of the group
40
41
  * @param scene Defines the scene the group belongs to
41
42
  */
@@ -77,6 +78,10 @@ var AnimationGroup = /** @class */ (function () {
77
78
  * This observable will notify when all animations are playing.
78
79
  */
79
80
  this.onAnimationGroupPlayObservable = new Observable();
81
+ /**
82
+ * Gets or sets an object used to store user defined information for the node
83
+ */
84
+ this.metadata = null;
80
85
  this._scene = scene || EngineStore.LastCreatedScene;
81
86
  this.uniqueId = this._scene.getUniqueId();
82
87
  this._scene.addAnimationGroup(this);
@@ -527,6 +532,13 @@ var AnimationGroup = /** @class */ (function () {
527
532
  var targetedAnimation = this.targetedAnimations[targetedAnimationIndex];
528
533
  serializationObject.targetedAnimations[targetedAnimationIndex] = targetedAnimation.serialize();
529
534
  }
535
+ if (Tags && Tags.HasTags(this)) {
536
+ serializationObject.tags = Tags.GetTags(this);
537
+ }
538
+ // Metadata
539
+ if (this.metadata) {
540
+ serializationObject.metadata = this.metadata;
541
+ }
530
542
  return serializationObject;
531
543
  };
532
544
  // Statics
@@ -558,6 +570,12 @@ var AnimationGroup = /** @class */ (function () {
558
570
  if (parsedAnimationGroup.from !== null && parsedAnimationGroup.to !== null) {
559
571
  animationGroup.normalize(parsedAnimationGroup.from, parsedAnimationGroup.to);
560
572
  }
573
+ if (Tags) {
574
+ Tags.AddTagsTo(animationGroup, parsedAnimationGroup.tags);
575
+ }
576
+ if (parsedAnimationGroup.metadata !== undefined) {
577
+ animationGroup.metadata = parsedAnimationGroup.metadata;
578
+ }
561
579
  return animationGroup;
562
580
  };
563
581
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"animationGroup.js","sourceRoot":"","sources":["../../../sourceES6/core/Animations/animationGroup.ts"],"names":[],"mappings":"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","sourcesContent":["import { Animatable } from \"./animatable\";\r\nimport { Animation } from \"./animation\";\r\nimport { IAnimationKey } from \"./animationKey\";\r\n\r\nimport { Scene, IDisposable } from \"../scene\";\r\nimport { Observable } from \"../Misc/observable\";\r\nimport { Nullable } from \"../types\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\nimport \"./animatable\";\r\nimport { AbstractScene } from \"../abstractScene\";\r\n\r\n/**\r\n * This class defines the direct association between an animation and a target\r\n */\r\nexport class TargetedAnimation {\r\n /**\r\n * Animation to perform\r\n */\r\n public animation: Animation;\r\n /**\r\n * Target to animate\r\n */\r\n public target: any;\r\n\r\n /**\r\n * Returns the string \"TargetedAnimation\"\r\n * @returns \"TargetedAnimation\"\r\n */\r\n public getClassName(): string {\r\n return \"TargetedAnimation\";\r\n }\r\n\r\n /**\r\n * Serialize the object\r\n * @returns the JSON object representing the current entity\r\n */\r\n public serialize(): any {\r\n var serializationObject: any = {};\r\n serializationObject.animation = this.animation.serialize();\r\n serializationObject.targetId = this.target.id;\r\n\r\n return serializationObject;\r\n }\r\n}\r\n\r\n/**\r\n * Use this class to create coordinated animations on multiple targets\r\n */\r\nexport class AnimationGroup implements IDisposable {\r\n private _scene: Scene;\r\n\r\n private _targetedAnimations = new Array<TargetedAnimation>();\r\n private _animatables = new Array<Animatable>();\r\n private _from = Number.MAX_VALUE;\r\n private _to = -Number.MAX_VALUE;\r\n private _isStarted: boolean;\r\n private _isPaused: boolean;\r\n private _speedRatio = 1;\r\n private _loopAnimation = false;\r\n private _isAdditive = false;\r\n\r\n /** @hidden */\r\n public _parentContainer: Nullable<AbstractScene> = null;\r\n\r\n /**\r\n * Gets or sets the unique id of the node\r\n */\r\n public uniqueId: number;\r\n\r\n /**\r\n * This observable will notify when one animation have ended\r\n */\r\n public onAnimationEndObservable = new Observable<TargetedAnimation>();\r\n\r\n /**\r\n * Observer raised when one animation loops\r\n */\r\n public onAnimationLoopObservable = new Observable<TargetedAnimation>();\r\n\r\n /**\r\n * Observer raised when all animations have looped\r\n */\r\n public onAnimationGroupLoopObservable = new Observable<AnimationGroup>();\r\n\r\n /**\r\n * This observable will notify when all animations have ended.\r\n */\r\n public onAnimationGroupEndObservable = new Observable<AnimationGroup>();\r\n\r\n /**\r\n * This observable will notify when all animations have paused.\r\n */\r\n public onAnimationGroupPauseObservable = new Observable<AnimationGroup>();\r\n\r\n /**\r\n * This observable will notify when all animations are playing.\r\n */\r\n public onAnimationGroupPlayObservable = new Observable<AnimationGroup>();\r\n\r\n /**\r\n * Gets the first frame\r\n */\r\n public get from(): number {\r\n return this._from;\r\n }\r\n\r\n /**\r\n * Gets the last frame\r\n */\r\n public get to(): number {\r\n return this._to;\r\n }\r\n\r\n /**\r\n * Define if the animations are started\r\n */\r\n public get isStarted(): boolean {\r\n return this._isStarted;\r\n }\r\n\r\n /**\r\n * Gets a value indicating that the current group is playing\r\n */\r\n public get isPlaying(): boolean {\r\n return this._isStarted && !this._isPaused;\r\n }\r\n\r\n /**\r\n * Gets or sets the speed ratio to use for all animations\r\n */\r\n public get speedRatio(): number {\r\n return this._speedRatio;\r\n }\r\n\r\n /**\r\n * Gets or sets the speed ratio to use for all animations\r\n */\r\n public set speedRatio(value: number) {\r\n if (this._speedRatio === value) {\r\n return;\r\n }\r\n\r\n this._speedRatio = value;\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.speedRatio = this._speedRatio;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or sets if all animations should loop or not\r\n */\r\n public get loopAnimation(): boolean {\r\n return this._loopAnimation;\r\n }\r\n\r\n public set loopAnimation(value: boolean) {\r\n if (this._loopAnimation === value) {\r\n return;\r\n }\r\n\r\n this._loopAnimation = value;\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.loopAnimation = this._loopAnimation;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or sets if all animations should be evaluated additively\r\n */\r\n public get isAdditive(): boolean {\r\n return this._isAdditive;\r\n }\r\n\r\n public set isAdditive(value: boolean) {\r\n if (this._isAdditive === value) {\r\n return;\r\n }\r\n\r\n this._isAdditive = value;\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.isAdditive = this._isAdditive;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the targeted animations for this animation group\r\n */\r\n public get targetedAnimations(): Array<TargetedAnimation> {\r\n return this._targetedAnimations;\r\n }\r\n\r\n /**\r\n * returning the list of animatables controlled by this animation group.\r\n */\r\n public get animatables(): Array<Animatable> {\r\n return this._animatables;\r\n }\r\n\r\n /**\r\n * Gets the list of target animations\r\n */\r\n public get children() {\r\n return this._targetedAnimations;\r\n }\r\n\r\n /**\r\n * Instantiates a new Animation Group.\r\n * This helps managing several animations at once.\r\n * @see https://doc.babylonjs.com/how_to/group\r\n * @param name Defines the name of the group\r\n * @param scene Defines the scene the group belongs to\r\n */\r\n public constructor(\r\n /** The name of the animation group */\r\n public name: string,\r\n scene: Nullable<Scene> = null) {\r\n this._scene = scene || EngineStore.LastCreatedScene!;\r\n this.uniqueId = this._scene.getUniqueId();\r\n\r\n this._scene.addAnimationGroup(this);\r\n }\r\n\r\n /**\r\n * Add an animation (with its target) in the group\r\n * @param animation defines the animation we want to add\r\n * @param target defines the target of the animation\r\n * @returns the TargetedAnimation object\r\n */\r\n public addTargetedAnimation(animation: Animation, target: any): TargetedAnimation {\r\n let targetedAnimation = new TargetedAnimation();\r\n targetedAnimation.animation = animation;\r\n targetedAnimation.target = target;\r\n\r\n let keys = animation.getKeys();\r\n if (this._from > keys[0].frame) {\r\n this._from = keys[0].frame;\r\n }\r\n\r\n if (this._to < keys[keys.length - 1].frame) {\r\n this._to = keys[keys.length - 1].frame;\r\n }\r\n\r\n this._targetedAnimations.push(targetedAnimation);\r\n\r\n return targetedAnimation;\r\n }\r\n\r\n /**\r\n * This function will normalize every animation in the group to make sure they all go from beginFrame to endFrame\r\n * It can add constant keys at begin or end\r\n * @param beginFrame defines the new begin frame for all animations or the smallest begin frame of all animations if null (defaults to null)\r\n * @param endFrame defines the new end frame for all animations or the largest end frame of all animations if null (defaults to null)\r\n * @returns the animation group\r\n */\r\n public normalize(beginFrame: Nullable<number> = null, endFrame: Nullable<number> = null): AnimationGroup {\r\n if (beginFrame == null) { beginFrame = this._from; }\r\n if (endFrame == null) { endFrame = this._to; }\r\n\r\n for (var index = 0; index < this._targetedAnimations.length; index++) {\r\n let targetedAnimation = this._targetedAnimations[index];\r\n let keys = targetedAnimation.animation.getKeys();\r\n let startKey = keys[0];\r\n let endKey = keys[keys.length - 1];\r\n\r\n if (startKey.frame > beginFrame) {\r\n let newKey: IAnimationKey = {\r\n frame: beginFrame,\r\n value: startKey.value,\r\n inTangent: startKey.inTangent,\r\n outTangent: startKey.outTangent,\r\n interpolation: startKey.interpolation\r\n };\r\n keys.splice(0, 0, newKey);\r\n }\r\n\r\n if (endKey.frame < endFrame) {\r\n let newKey: IAnimationKey = {\r\n frame: endFrame,\r\n value: endKey.value,\r\n inTangent: endKey.inTangent,\r\n outTangent: endKey.outTangent,\r\n interpolation: endKey.interpolation\r\n };\r\n keys.push(newKey);\r\n }\r\n }\r\n\r\n this._from = beginFrame;\r\n this._to = endFrame;\r\n\r\n return this;\r\n }\r\n\r\n private _animationLoopCount: number;\r\n private _animationLoopFlags: boolean[];\r\n\r\n private _processLoop(animatable: Animatable, targetedAnimation: TargetedAnimation, index: number) {\r\n animatable.onAnimationLoop = () => {\r\n this.onAnimationLoopObservable.notifyObservers(targetedAnimation);\r\n\r\n if (this._animationLoopFlags[index]) {\r\n return;\r\n }\r\n\r\n this._animationLoopFlags[index] = true;\r\n\r\n this._animationLoopCount++;\r\n if (this._animationLoopCount === this._targetedAnimations.length) {\r\n this.onAnimationGroupLoopObservable.notifyObservers(this);\r\n this._animationLoopCount = 0;\r\n this._animationLoopFlags = [];\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Start all animations on given targets\r\n * @param loop defines if animations must loop\r\n * @param speedRatio defines the ratio to apply to animation speed (1 by default)\r\n * @param from defines the from key (optional)\r\n * @param to defines the to key (optional)\r\n * @param isAdditive defines the additive state for the resulting animatables (optional)\r\n * @returns the current animation group\r\n */\r\n public start(loop = false, speedRatio = 1, from?: number, to?: number, isAdditive?: boolean): AnimationGroup {\r\n if (this._isStarted || this._targetedAnimations.length === 0) {\r\n return this;\r\n }\r\n\r\n this._loopAnimation = loop;\r\n\r\n this._animationLoopCount = 0;\r\n this._animationLoopFlags = [];\r\n\r\n for (var index = 0; index < this._targetedAnimations.length; index++) {\r\n const targetedAnimation = this._targetedAnimations[index];\r\n let animatable = this._scene.beginDirectAnimation(\r\n targetedAnimation.target,\r\n [targetedAnimation.animation],\r\n from !== undefined ? from : this._from,\r\n to !== undefined ? to : this._to,\r\n loop,\r\n speedRatio,\r\n undefined,\r\n undefined,\r\n isAdditive !== undefined ? isAdditive : this._isAdditive\r\n );\r\n animatable.onAnimationEnd = () => {\r\n this.onAnimationEndObservable.notifyObservers(targetedAnimation);\r\n this._checkAnimationGroupEnded(animatable);\r\n };\r\n\r\n this._processLoop(animatable, targetedAnimation, index);\r\n this._animatables.push(animatable);\r\n }\r\n\r\n this._speedRatio = speedRatio;\r\n\r\n this._isStarted = true;\r\n this._isPaused = false;\r\n\r\n this.onAnimationGroupPlayObservable.notifyObservers(this);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Pause all animations\r\n * @returns the animation group\r\n */\r\n public pause(): AnimationGroup {\r\n if (!this._isStarted) {\r\n return this;\r\n }\r\n\r\n this._isPaused = true;\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.pause();\r\n }\r\n\r\n this.onAnimationGroupPauseObservable.notifyObservers(this);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Play all animations to initial state\r\n * This function will start() the animations if they were not started or will restart() them if they were paused\r\n * @param loop defines if animations must loop\r\n * @returns the animation group\r\n */\r\n public play(loop?: boolean): AnimationGroup {\r\n // only if all animatables are ready and exist\r\n if (this.isStarted && this._animatables.length === this._targetedAnimations.length) {\r\n if (loop !== undefined) {\r\n this.loopAnimation = loop;\r\n }\r\n this.restart();\r\n } else {\r\n this.stop();\r\n this.start(loop, this._speedRatio);\r\n }\r\n\r\n this._isPaused = false;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Reset all animations to initial state\r\n * @returns the animation group\r\n */\r\n public reset(): AnimationGroup {\r\n if (!this._isStarted) {\r\n this.play();\r\n this.goToFrame(0);\r\n this.stop();\r\n return this;\r\n }\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.reset();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Restart animations from key 0\r\n * @returns the animation group\r\n */\r\n public restart(): AnimationGroup {\r\n if (!this._isStarted) {\r\n return this;\r\n }\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.restart();\r\n }\r\n\r\n this.onAnimationGroupPlayObservable.notifyObservers(this);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Stop all animations\r\n * @returns the animation group\r\n */\r\n public stop(): AnimationGroup {\r\n if (!this._isStarted) {\r\n return this;\r\n }\r\n\r\n var list = this._animatables.slice();\r\n for (var index = 0; index < list.length; index++) {\r\n list[index].stop();\r\n }\r\n\r\n this._isStarted = false;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set animation weight for all animatables\r\n * @param weight defines the weight to use\r\n * @return the animationGroup\r\n * @see https://doc.babylonjs.com/babylon101/animations#animation-weights\r\n */\r\n public setWeightForAllAnimatables(weight: number): AnimationGroup {\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.weight = weight;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Synchronize and normalize all animatables with a source animatable\r\n * @param root defines the root animatable to synchronize with (null to stop synchronizing)\r\n * @return the animationGroup\r\n * @see https://doc.babylonjs.com/babylon101/animations#animation-weights\r\n */\r\n public syncAllAnimationsWith(root: Nullable<Animatable>): AnimationGroup {\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.syncWith(root);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Goes to a specific frame in this animation group\r\n * @param frame the frame number to go to\r\n * @return the animationGroup\r\n */\r\n public goToFrame(frame: number): AnimationGroup {\r\n if (!this._isStarted) {\r\n return this;\r\n }\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.goToFrame(frame);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Dispose all associated resources\r\n */\r\n public dispose(): void {\r\n this._targetedAnimations = [];\r\n this._animatables = [];\r\n\r\n // Remove from scene\r\n var index = this._scene.animationGroups.indexOf(this);\r\n\r\n if (index > -1) {\r\n this._scene.animationGroups.splice(index, 1);\r\n }\r\n\r\n if (this._parentContainer) {\r\n const index = this._parentContainer.animationGroups.indexOf(this);\r\n if (index > -1) {\r\n this._parentContainer.animationGroups.splice(index, 1);\r\n }\r\n this._parentContainer = null;\r\n }\r\n\r\n this.onAnimationEndObservable.clear();\r\n this.onAnimationGroupEndObservable.clear();\r\n this.onAnimationGroupPauseObservable.clear();\r\n this.onAnimationGroupPlayObservable.clear();\r\n this.onAnimationLoopObservable.clear();\r\n this.onAnimationGroupLoopObservable.clear();\r\n }\r\n\r\n private _checkAnimationGroupEnded(animatable: Animatable) {\r\n // animatable should be taken out of the array\r\n let idx = this._animatables.indexOf(animatable);\r\n if (idx > -1) {\r\n this._animatables.splice(idx, 1);\r\n }\r\n\r\n // all animatables were removed? animation group ended!\r\n if (this._animatables.length === 0) {\r\n this._isStarted = false;\r\n this.onAnimationGroupEndObservable.notifyObservers(this);\r\n }\r\n }\r\n\r\n /**\r\n * Clone the current animation group and returns a copy\r\n * @param newName defines the name of the new group\r\n * @param targetConverter defines an optional function used to convert current animation targets to new ones\r\n * @param cloneAnimations defines if the animations should be cloned or referenced\r\n * @returns the new animation group\r\n */\r\n public clone(newName: string, targetConverter?: (oldTarget: any) => any, cloneAnimations = false): AnimationGroup {\r\n let newGroup = new AnimationGroup(newName || this.name, this._scene);\r\n\r\n for (var targetAnimation of this._targetedAnimations) {\r\n newGroup.addTargetedAnimation(cloneAnimations ? targetAnimation.animation.clone() : targetAnimation.animation,\r\n targetConverter ? targetConverter(targetAnimation.target) : targetAnimation.target);\r\n }\r\n\r\n return newGroup;\r\n }\r\n\r\n /**\r\n * Serializes the animationGroup to an object\r\n * @returns Serialized object\r\n */\r\n public serialize(): any {\r\n var serializationObject: any = {};\r\n\r\n serializationObject.name = this.name;\r\n serializationObject.from = this.from;\r\n serializationObject.to = this.to;\r\n serializationObject.targetedAnimations = [];\r\n for (var targetedAnimationIndex = 0; targetedAnimationIndex < this.targetedAnimations.length; targetedAnimationIndex++) {\r\n var targetedAnimation = this.targetedAnimations[targetedAnimationIndex];\r\n serializationObject.targetedAnimations[targetedAnimationIndex] = targetedAnimation.serialize();\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n // Statics\r\n /**\r\n * Returns a new AnimationGroup object parsed from the source provided.\r\n * @param parsedAnimationGroup defines the source\r\n * @param scene defines the scene that will receive the animationGroup\r\n * @returns a new AnimationGroup\r\n */\r\n public static Parse(parsedAnimationGroup: any, scene: Scene): AnimationGroup {\r\n var animationGroup = new AnimationGroup(parsedAnimationGroup.name, scene);\r\n for (var i = 0; i < parsedAnimationGroup.targetedAnimations.length; i++) {\r\n var targetedAnimation = parsedAnimationGroup.targetedAnimations[i];\r\n var animation = Animation.Parse(targetedAnimation.animation);\r\n var id = targetedAnimation.targetId;\r\n if (targetedAnimation.animation.property === \"influence\") { // morph target animation\r\n let morphTarget = scene.getMorphTargetById(id);\r\n if (morphTarget) {\r\n animationGroup.addTargetedAnimation(animation, morphTarget);\r\n }\r\n }\r\n else {\r\n var targetNode = scene.getNodeById(id);\r\n\r\n if (targetNode != null) {\r\n animationGroup.addTargetedAnimation(animation, targetNode);\r\n }\r\n }\r\n }\r\n\r\n if (parsedAnimationGroup.from !== null && parsedAnimationGroup.to !== null) {\r\n animationGroup.normalize(parsedAnimationGroup.from, parsedAnimationGroup.to);\r\n }\r\n\r\n return animationGroup;\r\n }\r\n\r\n /**\r\n * Convert the keyframes for all animations belonging to the group to be relative to a given reference frame.\r\n * @param sourceAnimationGroup defines the AnimationGroup containing animations to convert\r\n * @param referenceFrame defines the frame that keyframes in the range will be relative to\r\n * @param range defines the name of the AnimationRange belonging to the animations in the group to convert\r\n * @param cloneOriginal defines whether or not to clone the group and convert the clone or convert the original group (default is false)\r\n * @param clonedName defines the name of the resulting cloned AnimationGroup if cloneOriginal is true\r\n * @returns a new AnimationGroup if cloneOriginal is true or the original AnimationGroup if cloneOriginal is false\r\n */\r\n public static MakeAnimationAdditive(sourceAnimationGroup: AnimationGroup, referenceFrame = 0, range?: string, cloneOriginal = false, clonedName?: string): AnimationGroup {\r\n let animationGroup = sourceAnimationGroup;\r\n if (cloneOriginal) {\r\n animationGroup = sourceAnimationGroup.clone(clonedName || animationGroup.name);\r\n }\r\n\r\n let targetedAnimations = animationGroup.targetedAnimations;\r\n for (var index = 0; index < targetedAnimations.length; index++) {\r\n let targetedAnimation = targetedAnimations[index];\r\n Animation.MakeAnimationAdditive(targetedAnimation.animation, referenceFrame, range);\r\n }\r\n\r\n animationGroup.isAdditive = true;\r\n\r\n return animationGroup;\r\n }\r\n\r\n /**\r\n * Returns the string \"AnimationGroup\"\r\n * @returns \"AnimationGroup\"\r\n */\r\n public getClassName(): string {\r\n return \"AnimationGroup\";\r\n }\r\n\r\n /**\r\n * Creates a detailed string about the object\r\n * @param fullDetails defines if the output string will support multiple levels of logging within scene loading\r\n * @returns a string representing the object\r\n */\r\n public toString(fullDetails?: boolean): string {\r\n var ret = \"Name: \" + this.name;\r\n ret += \", type: \" + this.getClassName();\r\n if (fullDetails) {\r\n ret += \", from: \" + this._from;\r\n ret += \", to: \" + this._to;\r\n ret += \", isStarted: \" + this._isStarted;\r\n ret += \", speedRatio: \" + this._speedRatio;\r\n ret += \", targetedAnimations length: \" + this._targetedAnimations.length;\r\n ret += \", animatables length: \" + this._animatables;\r\n }\r\n return ret;\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"animationGroup.js","sourceRoot":"","sources":["../../../sourceES6/core/Animations/animationGroup.ts"],"names":[],"mappings":"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","sourcesContent":["import { Animatable } from \"./animatable\";\r\nimport { Animation } from \"./animation\";\r\nimport { IAnimationKey } from \"./animationKey\";\r\n\r\nimport { Scene, IDisposable } from \"../scene\";\r\nimport { Observable } from \"../Misc/observable\";\r\nimport { Nullable } from \"../types\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\n\r\nimport \"./animatable\";\r\nimport { AbstractScene } from \"../abstractScene\";\r\nimport { Tags } from '../Misc/tags';\r\n\r\n/**\r\n * This class defines the direct association between an animation and a target\r\n */\r\nexport class TargetedAnimation {\r\n /**\r\n * Animation to perform\r\n */\r\n public animation: Animation;\r\n /**\r\n * Target to animate\r\n */\r\n public target: any;\r\n\r\n /**\r\n * Returns the string \"TargetedAnimation\"\r\n * @returns \"TargetedAnimation\"\r\n */\r\n public getClassName(): string {\r\n return \"TargetedAnimation\";\r\n }\r\n\r\n /**\r\n * Serialize the object\r\n * @returns the JSON object representing the current entity\r\n */\r\n public serialize(): any {\r\n var serializationObject: any = {};\r\n serializationObject.animation = this.animation.serialize();\r\n serializationObject.targetId = this.target.id;\r\n\r\n return serializationObject;\r\n }\r\n}\r\n\r\n/**\r\n * Use this class to create coordinated animations on multiple targets\r\n */\r\nexport class AnimationGroup implements IDisposable {\r\n private _scene: Scene;\r\n\r\n private _targetedAnimations = new Array<TargetedAnimation>();\r\n private _animatables = new Array<Animatable>();\r\n private _from = Number.MAX_VALUE;\r\n private _to = -Number.MAX_VALUE;\r\n private _isStarted: boolean;\r\n private _isPaused: boolean;\r\n private _speedRatio = 1;\r\n private _loopAnimation = false;\r\n private _isAdditive = false;\r\n\r\n /** @hidden */\r\n public _parentContainer: Nullable<AbstractScene> = null;\r\n\r\n /**\r\n * Gets or sets the unique id of the node\r\n */\r\n public uniqueId: number;\r\n\r\n /**\r\n * This observable will notify when one animation have ended\r\n */\r\n public onAnimationEndObservable = new Observable<TargetedAnimation>();\r\n\r\n /**\r\n * Observer raised when one animation loops\r\n */\r\n public onAnimationLoopObservable = new Observable<TargetedAnimation>();\r\n\r\n /**\r\n * Observer raised when all animations have looped\r\n */\r\n public onAnimationGroupLoopObservable = new Observable<AnimationGroup>();\r\n\r\n /**\r\n * This observable will notify when all animations have ended.\r\n */\r\n public onAnimationGroupEndObservable = new Observable<AnimationGroup>();\r\n\r\n /**\r\n * This observable will notify when all animations have paused.\r\n */\r\n public onAnimationGroupPauseObservable = new Observable<AnimationGroup>();\r\n\r\n /**\r\n * This observable will notify when all animations are playing.\r\n */\r\n public onAnimationGroupPlayObservable = new Observable<AnimationGroup>();\r\n\r\n /**\r\n * Gets or sets an object used to store user defined information for the node\r\n */\r\n public metadata: any = null;\r\n\r\n /**\r\n * Gets the first frame\r\n */\r\n public get from(): number {\r\n return this._from;\r\n }\r\n\r\n /**\r\n * Gets the last frame\r\n */\r\n public get to(): number {\r\n return this._to;\r\n }\r\n\r\n /**\r\n * Define if the animations are started\r\n */\r\n public get isStarted(): boolean {\r\n return this._isStarted;\r\n }\r\n\r\n /**\r\n * Gets a value indicating that the current group is playing\r\n */\r\n public get isPlaying(): boolean {\r\n return this._isStarted && !this._isPaused;\r\n }\r\n\r\n /**\r\n * Gets or sets the speed ratio to use for all animations\r\n */\r\n public get speedRatio(): number {\r\n return this._speedRatio;\r\n }\r\n\r\n /**\r\n * Gets or sets the speed ratio to use for all animations\r\n */\r\n public set speedRatio(value: number) {\r\n if (this._speedRatio === value) {\r\n return;\r\n }\r\n\r\n this._speedRatio = value;\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.speedRatio = this._speedRatio;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or sets if all animations should loop or not\r\n */\r\n public get loopAnimation(): boolean {\r\n return this._loopAnimation;\r\n }\r\n\r\n public set loopAnimation(value: boolean) {\r\n if (this._loopAnimation === value) {\r\n return;\r\n }\r\n\r\n this._loopAnimation = value;\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.loopAnimation = this._loopAnimation;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or sets if all animations should be evaluated additively\r\n */\r\n public get isAdditive(): boolean {\r\n return this._isAdditive;\r\n }\r\n\r\n public set isAdditive(value: boolean) {\r\n if (this._isAdditive === value) {\r\n return;\r\n }\r\n\r\n this._isAdditive = value;\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.isAdditive = this._isAdditive;\r\n }\r\n }\r\n\r\n /**\r\n * Gets the targeted animations for this animation group\r\n */\r\n public get targetedAnimations(): Array<TargetedAnimation> {\r\n return this._targetedAnimations;\r\n }\r\n\r\n /**\r\n * returning the list of animatables controlled by this animation group.\r\n */\r\n public get animatables(): Array<Animatable> {\r\n return this._animatables;\r\n }\r\n\r\n /**\r\n * Gets the list of target animations\r\n */\r\n public get children() {\r\n return this._targetedAnimations;\r\n }\r\n\r\n /**\r\n * Instantiates a new Animation Group.\r\n * This helps managing several animations at once.\r\n * @see https://doc.babylonjs.com/divingDeeper/animation/groupAnimations\r\n * @param name Defines the name of the group\r\n * @param scene Defines the scene the group belongs to\r\n */\r\n public constructor(\r\n /** The name of the animation group */\r\n public name: string,\r\n scene: Nullable<Scene> = null) {\r\n this._scene = scene || EngineStore.LastCreatedScene!;\r\n this.uniqueId = this._scene.getUniqueId();\r\n\r\n this._scene.addAnimationGroup(this);\r\n }\r\n\r\n /**\r\n * Add an animation (with its target) in the group\r\n * @param animation defines the animation we want to add\r\n * @param target defines the target of the animation\r\n * @returns the TargetedAnimation object\r\n */\r\n public addTargetedAnimation(animation: Animation, target: any): TargetedAnimation {\r\n let targetedAnimation = new TargetedAnimation();\r\n targetedAnimation.animation = animation;\r\n targetedAnimation.target = target;\r\n\r\n let keys = animation.getKeys();\r\n if (this._from > keys[0].frame) {\r\n this._from = keys[0].frame;\r\n }\r\n\r\n if (this._to < keys[keys.length - 1].frame) {\r\n this._to = keys[keys.length - 1].frame;\r\n }\r\n\r\n this._targetedAnimations.push(targetedAnimation);\r\n\r\n return targetedAnimation;\r\n }\r\n\r\n /**\r\n * This function will normalize every animation in the group to make sure they all go from beginFrame to endFrame\r\n * It can add constant keys at begin or end\r\n * @param beginFrame defines the new begin frame for all animations or the smallest begin frame of all animations if null (defaults to null)\r\n * @param endFrame defines the new end frame for all animations or the largest end frame of all animations if null (defaults to null)\r\n * @returns the animation group\r\n */\r\n public normalize(beginFrame: Nullable<number> = null, endFrame: Nullable<number> = null): AnimationGroup {\r\n if (beginFrame == null) { beginFrame = this._from; }\r\n if (endFrame == null) { endFrame = this._to; }\r\n\r\n for (var index = 0; index < this._targetedAnimations.length; index++) {\r\n let targetedAnimation = this._targetedAnimations[index];\r\n let keys = targetedAnimation.animation.getKeys();\r\n let startKey = keys[0];\r\n let endKey = keys[keys.length - 1];\r\n\r\n if (startKey.frame > beginFrame) {\r\n let newKey: IAnimationKey = {\r\n frame: beginFrame,\r\n value: startKey.value,\r\n inTangent: startKey.inTangent,\r\n outTangent: startKey.outTangent,\r\n interpolation: startKey.interpolation\r\n };\r\n keys.splice(0, 0, newKey);\r\n }\r\n\r\n if (endKey.frame < endFrame) {\r\n let newKey: IAnimationKey = {\r\n frame: endFrame,\r\n value: endKey.value,\r\n inTangent: endKey.inTangent,\r\n outTangent: endKey.outTangent,\r\n interpolation: endKey.interpolation\r\n };\r\n keys.push(newKey);\r\n }\r\n }\r\n\r\n this._from = beginFrame;\r\n this._to = endFrame;\r\n\r\n return this;\r\n }\r\n\r\n private _animationLoopCount: number;\r\n private _animationLoopFlags: boolean[];\r\n\r\n private _processLoop(animatable: Animatable, targetedAnimation: TargetedAnimation, index: number) {\r\n animatable.onAnimationLoop = () => {\r\n this.onAnimationLoopObservable.notifyObservers(targetedAnimation);\r\n\r\n if (this._animationLoopFlags[index]) {\r\n return;\r\n }\r\n\r\n this._animationLoopFlags[index] = true;\r\n\r\n this._animationLoopCount++;\r\n if (this._animationLoopCount === this._targetedAnimations.length) {\r\n this.onAnimationGroupLoopObservable.notifyObservers(this);\r\n this._animationLoopCount = 0;\r\n this._animationLoopFlags = [];\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Start all animations on given targets\r\n * @param loop defines if animations must loop\r\n * @param speedRatio defines the ratio to apply to animation speed (1 by default)\r\n * @param from defines the from key (optional)\r\n * @param to defines the to key (optional)\r\n * @param isAdditive defines the additive state for the resulting animatables (optional)\r\n * @returns the current animation group\r\n */\r\n public start(loop = false, speedRatio = 1, from?: number, to?: number, isAdditive?: boolean): AnimationGroup {\r\n if (this._isStarted || this._targetedAnimations.length === 0) {\r\n return this;\r\n }\r\n\r\n this._loopAnimation = loop;\r\n\r\n this._animationLoopCount = 0;\r\n this._animationLoopFlags = [];\r\n\r\n for (var index = 0; index < this._targetedAnimations.length; index++) {\r\n const targetedAnimation = this._targetedAnimations[index];\r\n let animatable = this._scene.beginDirectAnimation(\r\n targetedAnimation.target,\r\n [targetedAnimation.animation],\r\n from !== undefined ? from : this._from,\r\n to !== undefined ? to : this._to,\r\n loop,\r\n speedRatio,\r\n undefined,\r\n undefined,\r\n isAdditive !== undefined ? isAdditive : this._isAdditive\r\n );\r\n animatable.onAnimationEnd = () => {\r\n this.onAnimationEndObservable.notifyObservers(targetedAnimation);\r\n this._checkAnimationGroupEnded(animatable);\r\n };\r\n\r\n this._processLoop(animatable, targetedAnimation, index);\r\n this._animatables.push(animatable);\r\n }\r\n\r\n this._speedRatio = speedRatio;\r\n\r\n this._isStarted = true;\r\n this._isPaused = false;\r\n\r\n this.onAnimationGroupPlayObservable.notifyObservers(this);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Pause all animations\r\n * @returns the animation group\r\n */\r\n public pause(): AnimationGroup {\r\n if (!this._isStarted) {\r\n return this;\r\n }\r\n\r\n this._isPaused = true;\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.pause();\r\n }\r\n\r\n this.onAnimationGroupPauseObservable.notifyObservers(this);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Play all animations to initial state\r\n * This function will start() the animations if they were not started or will restart() them if they were paused\r\n * @param loop defines if animations must loop\r\n * @returns the animation group\r\n */\r\n public play(loop?: boolean): AnimationGroup {\r\n // only if all animatables are ready and exist\r\n if (this.isStarted && this._animatables.length === this._targetedAnimations.length) {\r\n if (loop !== undefined) {\r\n this.loopAnimation = loop;\r\n }\r\n this.restart();\r\n } else {\r\n this.stop();\r\n this.start(loop, this._speedRatio);\r\n }\r\n\r\n this._isPaused = false;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Reset all animations to initial state\r\n * @returns the animation group\r\n */\r\n public reset(): AnimationGroup {\r\n if (!this._isStarted) {\r\n this.play();\r\n this.goToFrame(0);\r\n this.stop();\r\n return this;\r\n }\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.reset();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Restart animations from key 0\r\n * @returns the animation group\r\n */\r\n public restart(): AnimationGroup {\r\n if (!this._isStarted) {\r\n return this;\r\n }\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.restart();\r\n }\r\n\r\n this.onAnimationGroupPlayObservable.notifyObservers(this);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Stop all animations\r\n * @returns the animation group\r\n */\r\n public stop(): AnimationGroup {\r\n if (!this._isStarted) {\r\n return this;\r\n }\r\n\r\n var list = this._animatables.slice();\r\n for (var index = 0; index < list.length; index++) {\r\n list[index].stop();\r\n }\r\n\r\n this._isStarted = false;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Set animation weight for all animatables\r\n * @param weight defines the weight to use\r\n * @return the animationGroup\r\n * @see https://doc.babylonjs.com/babylon101/animations#animation-weights\r\n */\r\n public setWeightForAllAnimatables(weight: number): AnimationGroup {\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.weight = weight;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Synchronize and normalize all animatables with a source animatable\r\n * @param root defines the root animatable to synchronize with (null to stop synchronizing)\r\n * @return the animationGroup\r\n * @see https://doc.babylonjs.com/babylon101/animations#animation-weights\r\n */\r\n public syncAllAnimationsWith(root: Nullable<Animatable>): AnimationGroup {\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.syncWith(root);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Goes to a specific frame in this animation group\r\n * @param frame the frame number to go to\r\n * @return the animationGroup\r\n */\r\n public goToFrame(frame: number): AnimationGroup {\r\n if (!this._isStarted) {\r\n return this;\r\n }\r\n\r\n for (var index = 0; index < this._animatables.length; index++) {\r\n let animatable = this._animatables[index];\r\n animatable.goToFrame(frame);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Dispose all associated resources\r\n */\r\n public dispose(): void {\r\n this._targetedAnimations = [];\r\n this._animatables = [];\r\n\r\n // Remove from scene\r\n var index = this._scene.animationGroups.indexOf(this);\r\n\r\n if (index > -1) {\r\n this._scene.animationGroups.splice(index, 1);\r\n }\r\n\r\n if (this._parentContainer) {\r\n const index = this._parentContainer.animationGroups.indexOf(this);\r\n if (index > -1) {\r\n this._parentContainer.animationGroups.splice(index, 1);\r\n }\r\n this._parentContainer = null;\r\n }\r\n\r\n this.onAnimationEndObservable.clear();\r\n this.onAnimationGroupEndObservable.clear();\r\n this.onAnimationGroupPauseObservable.clear();\r\n this.onAnimationGroupPlayObservable.clear();\r\n this.onAnimationLoopObservable.clear();\r\n this.onAnimationGroupLoopObservable.clear();\r\n }\r\n\r\n private _checkAnimationGroupEnded(animatable: Animatable) {\r\n // animatable should be taken out of the array\r\n let idx = this._animatables.indexOf(animatable);\r\n if (idx > -1) {\r\n this._animatables.splice(idx, 1);\r\n }\r\n\r\n // all animatables were removed? animation group ended!\r\n if (this._animatables.length === 0) {\r\n this._isStarted = false;\r\n this.onAnimationGroupEndObservable.notifyObservers(this);\r\n }\r\n }\r\n\r\n /**\r\n * Clone the current animation group and returns a copy\r\n * @param newName defines the name of the new group\r\n * @param targetConverter defines an optional function used to convert current animation targets to new ones\r\n * @param cloneAnimations defines if the animations should be cloned or referenced\r\n * @returns the new animation group\r\n */\r\n public clone(newName: string, targetConverter?: (oldTarget: any) => any, cloneAnimations = false): AnimationGroup {\r\n let newGroup = new AnimationGroup(newName || this.name, this._scene);\r\n\r\n for (var targetAnimation of this._targetedAnimations) {\r\n newGroup.addTargetedAnimation(cloneAnimations ? targetAnimation.animation.clone() : targetAnimation.animation,\r\n targetConverter ? targetConverter(targetAnimation.target) : targetAnimation.target);\r\n }\r\n\r\n return newGroup;\r\n }\r\n\r\n /**\r\n * Serializes the animationGroup to an object\r\n * @returns Serialized object\r\n */\r\n public serialize(): any {\r\n var serializationObject: any = {};\r\n\r\n serializationObject.name = this.name;\r\n serializationObject.from = this.from;\r\n serializationObject.to = this.to;\r\n serializationObject.targetedAnimations = [];\r\n for (var targetedAnimationIndex = 0; targetedAnimationIndex < this.targetedAnimations.length; targetedAnimationIndex++) {\r\n var targetedAnimation = this.targetedAnimations[targetedAnimationIndex];\r\n serializationObject.targetedAnimations[targetedAnimationIndex] = targetedAnimation.serialize();\r\n }\r\n\r\n if (Tags && Tags.HasTags(this)) {\r\n serializationObject.tags = Tags.GetTags(this);\r\n }\r\n\r\n // Metadata\r\n if (this.metadata) {\r\n serializationObject.metadata = this.metadata;\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n // Statics\r\n /**\r\n * Returns a new AnimationGroup object parsed from the source provided.\r\n * @param parsedAnimationGroup defines the source\r\n * @param scene defines the scene that will receive the animationGroup\r\n * @returns a new AnimationGroup\r\n */\r\n public static Parse(parsedAnimationGroup: any, scene: Scene): AnimationGroup {\r\n var animationGroup = new AnimationGroup(parsedAnimationGroup.name, scene);\r\n for (var i = 0; i < parsedAnimationGroup.targetedAnimations.length; i++) {\r\n var targetedAnimation = parsedAnimationGroup.targetedAnimations[i];\r\n var animation = Animation.Parse(targetedAnimation.animation);\r\n var id = targetedAnimation.targetId;\r\n if (targetedAnimation.animation.property === \"influence\") { // morph target animation\r\n let morphTarget = scene.getMorphTargetById(id);\r\n if (morphTarget) {\r\n animationGroup.addTargetedAnimation(animation, morphTarget);\r\n }\r\n }\r\n else {\r\n var targetNode = scene.getNodeById(id);\r\n\r\n if (targetNode != null) {\r\n animationGroup.addTargetedAnimation(animation, targetNode);\r\n }\r\n }\r\n }\r\n\r\n if (parsedAnimationGroup.from !== null && parsedAnimationGroup.to !== null) {\r\n animationGroup.normalize(parsedAnimationGroup.from, parsedAnimationGroup.to);\r\n }\r\n\r\n if (Tags) {\r\n Tags.AddTagsTo(animationGroup, parsedAnimationGroup.tags);\r\n }\r\n\r\n if (parsedAnimationGroup.metadata !== undefined) {\r\n animationGroup.metadata = parsedAnimationGroup.metadata;\r\n }\r\n\r\n return animationGroup;\r\n }\r\n\r\n /**\r\n * Convert the keyframes for all animations belonging to the group to be relative to a given reference frame.\r\n * @param sourceAnimationGroup defines the AnimationGroup containing animations to convert\r\n * @param referenceFrame defines the frame that keyframes in the range will be relative to\r\n * @param range defines the name of the AnimationRange belonging to the animations in the group to convert\r\n * @param cloneOriginal defines whether or not to clone the group and convert the clone or convert the original group (default is false)\r\n * @param clonedName defines the name of the resulting cloned AnimationGroup if cloneOriginal is true\r\n * @returns a new AnimationGroup if cloneOriginal is true or the original AnimationGroup if cloneOriginal is false\r\n */\r\n public static MakeAnimationAdditive(sourceAnimationGroup: AnimationGroup, referenceFrame = 0, range?: string, cloneOriginal = false, clonedName?: string): AnimationGroup {\r\n let animationGroup = sourceAnimationGroup;\r\n if (cloneOriginal) {\r\n animationGroup = sourceAnimationGroup.clone(clonedName || animationGroup.name);\r\n }\r\n\r\n let targetedAnimations = animationGroup.targetedAnimations;\r\n for (var index = 0; index < targetedAnimations.length; index++) {\r\n let targetedAnimation = targetedAnimations[index];\r\n Animation.MakeAnimationAdditive(targetedAnimation.animation, referenceFrame, range);\r\n }\r\n\r\n animationGroup.isAdditive = true;\r\n\r\n return animationGroup;\r\n }\r\n\r\n /**\r\n * Returns the string \"AnimationGroup\"\r\n * @returns \"AnimationGroup\"\r\n */\r\n public getClassName(): string {\r\n return \"AnimationGroup\";\r\n }\r\n\r\n /**\r\n * Creates a detailed string about the object\r\n * @param fullDetails defines if the output string will support multiple levels of logging within scene loading\r\n * @returns a string representing the object\r\n */\r\n public toString(fullDetails?: boolean): string {\r\n var ret = \"Name: \" + this.name;\r\n ret += \", type: \" + this.getClassName();\r\n if (fullDetails) {\r\n ret += \", from: \" + this._from;\r\n ret += \", to: \" + this._to;\r\n ret += \", isStarted: \" + this._isStarted;\r\n ret += \", speedRatio: \" + this._speedRatio;\r\n ret += \", targetedAnimations length: \" + this._targetedAnimations.length;\r\n ret += \", animatables length: \" + this._animatables;\r\n }\r\n return ret;\r\n }\r\n\r\n}\r\n"]}
package/Audio/sound.js CHANGED
@@ -141,6 +141,9 @@ var Sound = /** @class */ (function () {
141
141
  else if (urlOrArrayBuffer instanceof ArrayBuffer) {
142
142
  this._urlType = "ArrayBuffer";
143
143
  }
144
+ else if (urlOrArrayBuffer instanceof HTMLMediaElement) {
145
+ this._urlType = "MediaElement";
146
+ }
144
147
  else if (urlOrArrayBuffer instanceof MediaStream) {
145
148
  this._urlType = "MediaStream";
146
149
  }
@@ -150,6 +153,17 @@ var Sound = /** @class */ (function () {
150
153
  var urls = [];
151
154
  var codecSupportedFound = false;
152
155
  switch (this._urlType) {
156
+ case "MediaElement":
157
+ this._streaming = true;
158
+ this._isReadyToPlay = true;
159
+ this._streamingSource = Engine.audioEngine.audioContext.createMediaElementSource(urlOrArrayBuffer);
160
+ if (this.autoplay) {
161
+ this.play(0, this._offset, this._length);
162
+ }
163
+ if (this._readyToPlayCallback) {
164
+ this._readyToPlayCallback();
165
+ }
166
+ break;
153
167
  case "MediaStream":
154
168
  this._streaming = true;
155
169
  this._isReadyToPlay = true;
@@ -578,7 +592,7 @@ var Sound = /** @class */ (function () {
578
592
  if (newPosition.equals(this._position)) {
579
593
  return;
580
594
  }
581
- this._position = newPosition;
595
+ this._position.copyFrom(newPosition);
582
596
  if (((_a = Engine.audioEngine) === null || _a === void 0 ? void 0 : _a.canUseWebAudio) && this.spatialSound && this._soundPanner && !isNaN(this._position.x) && !isNaN(this._position.y) && !isNaN(this._position.z)) {
583
597
  this._soundPanner.setPosition(this._position.x, this._position.y, this._position.z);
584
598
  }