@babylonjs/core 6.8.0 → 6.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/Actions/abstractActionManager.js.map +1 -1
  2. package/Actions/action.d.ts +4 -5
  3. package/Actions/action.js.map +1 -1
  4. package/Actions/condition.d.ts +1 -2
  5. package/Actions/condition.js.map +1 -1
  6. package/Actions/directActions.d.ts +1 -2
  7. package/Actions/directActions.js.map +1 -1
  8. package/Animations/animatable.interface.d.ts +1 -2
  9. package/Animations/animatable.interface.js.map +1 -1
  10. package/Animations/animation.d.ts +3 -4
  11. package/Animations/animation.js.map +1 -1
  12. package/Animations/animationGroup.d.ts +5 -0
  13. package/Animations/animationGroup.js +12 -0
  14. package/Animations/animationGroup.js.map +1 -1
  15. package/Animations/easing.js.map +1 -1
  16. package/Animations/runtimeAnimation.d.ts +1 -2
  17. package/Animations/runtimeAnimation.js.map +1 -1
  18. package/Audio/audioSceneComponent.js.map +1 -1
  19. package/Audio/sound.js.map +1 -1
  20. package/BakedVertexAnimation/bakedVertexAnimationManager.js.map +1 -1
  21. package/Behaviors/Cameras/bouncingBehavior.js.map +1 -1
  22. package/Behaviors/Cameras/framingBehavior.js.map +1 -1
  23. package/Behaviors/Meshes/fadeInOutBehavior.js.map +1 -1
  24. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  25. package/Bones/bone.d.ts +3 -3
  26. package/Bones/bone.js.map +1 -1
  27. package/Bones/boneIKController.js.map +1 -1
  28. package/Bones/boneLookController.js.map +1 -1
  29. package/Buffers/dataBuffer.js.map +1 -1
  30. package/Cameras/Inputs/BaseCameraMouseWheelInput.js.map +1 -1
  31. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  32. package/Cameras/Inputs/arcRotateCameraGamepadInput.js.map +1 -1
  33. package/Cameras/Inputs/arcRotateCameraKeyboardMoveInput.js.map +1 -1
  34. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  35. package/Cameras/Inputs/arcRotateCameraPointersInput.js.map +1 -1
  36. package/Cameras/Inputs/flyCameraKeyboardInput.js.map +1 -1
  37. package/Cameras/Inputs/flyCameraMouseInput.js.map +1 -1
  38. package/Cameras/Inputs/followCameraKeyboardMoveInput.js.map +1 -1
  39. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  40. package/Cameras/Inputs/followCameraPointersInput.js.map +1 -1
  41. package/Cameras/Inputs/freeCameraGamepadInput.js.map +1 -1
  42. package/Cameras/Inputs/freeCameraKeyboardMoveInput.js.map +1 -1
  43. package/Cameras/Inputs/freeCameraMouseInput.js.map +1 -1
  44. package/Cameras/Inputs/freeCameraTouchInput.js.map +1 -1
  45. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  46. package/Cameras/arcRotateCamera.d.ts +1 -2
  47. package/Cameras/arcRotateCamera.js.map +1 -1
  48. package/Cameras/camera.d.ts +6 -7
  49. package/Cameras/camera.js.map +1 -1
  50. package/Cameras/flyCamera.js.map +1 -1
  51. package/Cameras/followCamera.js.map +1 -1
  52. package/Cameras/freeCamera.js.map +1 -1
  53. package/Cameras/targetCamera.js.map +1 -1
  54. package/Collisions/collider.js.map +1 -1
  55. package/Collisions/meshCollisionData.d.ts +1 -2
  56. package/Collisions/meshCollisionData.js.map +1 -1
  57. package/Collisions/pickingInfo.d.ts +1 -2
  58. package/Collisions/pickingInfo.js.map +1 -1
  59. package/Compute/computeEffect.d.ts +1 -2
  60. package/Compute/computeEffect.js.map +1 -1
  61. package/Compute/computeShader.js +1 -5
  62. package/Compute/computeShader.js.map +1 -1
  63. package/Culling/Octrees/octree.js.map +1 -1
  64. package/Culling/Octrees/octreeSceneComponent.d.ts +1 -2
  65. package/Culling/Octrees/octreeSceneComponent.js.map +1 -1
  66. package/Culling/boundingBox.d.ts +1 -2
  67. package/Culling/boundingBox.js.map +1 -1
  68. package/Culling/boundingInfo.d.ts +1 -2
  69. package/Culling/boundingInfo.js.map +1 -1
  70. package/Culling/boundingSphere.js.map +1 -1
  71. package/Culling/ray.js.map +1 -1
  72. package/Debug/debugLayer.js +1 -9
  73. package/Debug/debugLayer.js.map +1 -1
  74. package/Debug/skeletonViewer.js.map +1 -1
  75. package/Engines/Extensions/engine.cubeTexture.js +1 -6
  76. package/Engines/Extensions/engine.cubeTexture.js.map +1 -1
  77. package/Engines/Extensions/engine.multiRender.js.map +1 -1
  78. package/Engines/Extensions/engine.renderTarget.js +1 -6
  79. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  80. package/Engines/Extensions/engine.renderTargetCube.js +1 -9
  81. package/Engines/Extensions/engine.renderTargetCube.js.map +1 -1
  82. package/Engines/Extensions/engine.storageBuffer.d.ts +1 -2
  83. package/Engines/Extensions/engine.storageBuffer.js.map +1 -1
  84. package/Engines/Extensions/engine.textureSampler.d.ts +1 -2
  85. package/Engines/Extensions/engine.textureSampler.js.map +1 -1
  86. package/Engines/Extensions/engine.webVR.js +1 -5
  87. package/Engines/Extensions/engine.webVR.js.map +1 -1
  88. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js +3 -0
  89. package/Engines/Processors/Expressions/Operators/shaderDefineArithmeticOperator.js.map +1 -1
  90. package/Engines/Processors/iShaderProcessor.d.ts +1 -2
  91. package/Engines/Processors/iShaderProcessor.js.map +1 -1
  92. package/Engines/Processors/shaderCodeInliner.js.map +1 -1
  93. package/Engines/Processors/shaderProcessor.d.ts +5 -6
  94. package/Engines/Processors/shaderProcessor.js +10 -3
  95. package/Engines/Processors/shaderProcessor.js.map +1 -1
  96. package/Engines/WebGL/webGLShaderProcessors.d.ts +1 -2
  97. package/Engines/WebGL/webGLShaderProcessors.js.map +1 -1
  98. package/Engines/WebGPU/Extensions/engine.cubeTexture.js +1 -7
  99. package/Engines/WebGPU/Extensions/engine.cubeTexture.js.map +1 -1
  100. package/Engines/WebGPU/Extensions/engine.query.js.map +1 -1
  101. package/Engines/WebGPU/Extensions/engine.rawTexture.js.map +1 -1
  102. package/Engines/WebGPU/Extensions/engine.renderTarget.js +1 -8
  103. package/Engines/WebGPU/Extensions/engine.renderTarget.js.map +1 -1
  104. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js +1 -10
  105. package/Engines/WebGPU/Extensions/engine.renderTargetCube.js.map +1 -1
  106. package/Engines/WebGPU/Extensions/engine.storageBuffer.d.ts +1 -2
  107. package/Engines/WebGPU/Extensions/engine.storageBuffer.js.map +1 -1
  108. package/Engines/WebGPU/Extensions/engine.textureSampler.d.ts +1 -2
  109. package/Engines/WebGPU/Extensions/engine.textureSampler.js.map +1 -1
  110. package/Engines/WebGPU/webgpuCacheBindGroups.js.map +1 -1
  111. package/Engines/WebGPU/webgpuCacheRenderPipeline.js.map +1 -1
  112. package/Engines/WebGPU/webgpuCacheSampler.js +1 -6
  113. package/Engines/WebGPU/webgpuCacheSampler.js.map +1 -1
  114. package/Engines/WebGPU/webgpuHardwareTexture.d.ts +1 -2
  115. package/Engines/WebGPU/webgpuHardwareTexture.js.map +1 -1
  116. package/Engines/WebGPU/webgpuShaderProcessor.js.map +1 -1
  117. package/Engines/WebGPU/webgpuTintWASM.js +1 -4
  118. package/Engines/WebGPU/webgpuTintWASM.js.map +1 -1
  119. package/Engines/engine.d.ts +3 -3
  120. package/Engines/engine.js.map +1 -1
  121. package/Engines/engineStore.d.ts +4 -5
  122. package/Engines/engineStore.js.map +1 -1
  123. package/Engines/nativeEngine.js.map +1 -1
  124. package/Engines/nullEngine.js +1 -9
  125. package/Engines/nullEngine.js.map +1 -1
  126. package/Engines/thinEngine.js +3 -2
  127. package/Engines/thinEngine.js.map +1 -1
  128. package/Engines/webgpuEngine.d.ts +1 -2
  129. package/Engines/webgpuEngine.js +3 -14
  130. package/Engines/webgpuEngine.js.map +1 -1
  131. package/Events/pointerEvents.d.ts +1 -2
  132. package/Events/pointerEvents.js.map +1 -1
  133. package/Gamepads/Controllers/gearVRController.js.map +1 -1
  134. package/Gamepads/Controllers/oculusTouchController.js.map +1 -1
  135. package/Gamepads/Controllers/poseEnabledController.js.map +1 -1
  136. package/Gamepads/Controllers/windowsMotionController.js.map +1 -1
  137. package/Gamepads/gamepad.js.map +1 -1
  138. package/Gizmos/cameraGizmo.js.map +1 -1
  139. package/Gizmos/gizmo.js.map +1 -1
  140. package/Gizmos/lightGizmo.js.map +1 -1
  141. package/Gizmos/planeRotationGizmo.js.map +1 -1
  142. package/Helpers/environmentHelper.js +2 -8
  143. package/Helpers/environmentHelper.js.map +1 -1
  144. package/Helpers/textureDome.js.map +1 -1
  145. package/Inputs/scene.inputManager.d.ts +1 -2
  146. package/Inputs/scene.inputManager.js +4 -1
  147. package/Inputs/scene.inputManager.js.map +1 -1
  148. package/Layers/effectLayer.js +1 -8
  149. package/Layers/effectLayer.js.map +1 -1
  150. package/Layers/glowLayer.js +1 -12
  151. package/Layers/glowLayer.js.map +1 -1
  152. package/Layers/highlightLayer.js +1 -11
  153. package/Layers/highlightLayer.js.map +1 -1
  154. package/Legacy/legacy.js +1 -1
  155. package/Legacy/legacy.js.map +1 -1
  156. package/LensFlares/lensFlareSystem.js.map +1 -1
  157. package/Lights/Shadows/shadowGenerator.js +1 -4
  158. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  159. package/Lights/directionalLight.js.map +1 -1
  160. package/Lights/hemisphericLight.js.map +1 -1
  161. package/Lights/light.js.map +1 -1
  162. package/Lights/spotLight.js.map +1 -1
  163. package/Loading/loadingScreen.js.map +1 -1
  164. package/Materials/Background/backgroundMaterial.js.map +1 -1
  165. package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +2 -3
  166. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  167. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  168. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  169. package/Materials/Node/Blocks/Dual/sceneDepthBlock.d.ts +2 -3
  170. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  171. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +3 -4
  172. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  173. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  175. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  176. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  178. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  179. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  180. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  181. package/Materials/Node/Blocks/Particle/particleTextureBlock.d.ts +1 -2
  182. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  183. package/Materials/Node/Blocks/Vertex/vertexOutputBlock.js.map +1 -1
  184. package/Materials/Node/Blocks/addBlock.js +2 -0
  185. package/Materials/Node/Blocks/addBlock.js.map +1 -1
  186. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  187. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  188. package/Materials/Node/Blocks/customBlock.d.ts +1 -0
  189. package/Materials/Node/Blocks/customBlock.js +18 -2
  190. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  191. package/Materials/Node/Blocks/divideBlock.js +2 -0
  192. package/Materials/Node/Blocks/divideBlock.js.map +1 -1
  193. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  194. package/Materials/Node/Blocks/multiplyBlock.js +2 -0
  195. package/Materials/Node/Blocks/multiplyBlock.js.map +1 -1
  196. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  197. package/Materials/Node/Blocks/subtractBlock.js +2 -0
  198. package/Materials/Node/Blocks/subtractBlock.js.map +1 -1
  199. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  200. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  201. package/Materials/Node/nodeMaterial.js +2 -8
  202. package/Materials/Node/nodeMaterial.js.map +1 -1
  203. package/Materials/Node/nodeMaterialDecorator.d.ts +2 -3
  204. package/Materials/Node/nodeMaterialDecorator.js.map +1 -1
  205. package/Materials/PBR/pbrAnisotropicConfiguration.d.ts +3 -4
  206. package/Materials/PBR/pbrAnisotropicConfiguration.js.map +1 -1
  207. package/Materials/PBR/pbrBRDFConfiguration.js.map +1 -1
  208. package/Materials/PBR/pbrBaseMaterial.js +1 -5
  209. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  210. package/Materials/PBR/pbrBaseSimpleMaterial.js.map +1 -1
  211. package/Materials/PBR/pbrClearCoatConfiguration.d.ts +3 -4
  212. package/Materials/PBR/pbrClearCoatConfiguration.js.map +1 -1
  213. package/Materials/PBR/pbrIridescenceConfiguration.d.ts +3 -4
  214. package/Materials/PBR/pbrIridescenceConfiguration.js.map +1 -1
  215. package/Materials/PBR/pbrMaterial.d.ts +2 -1
  216. package/Materials/PBR/pbrMaterial.js +6 -13
  217. package/Materials/PBR/pbrMaterial.js.map +1 -1
  218. package/Materials/PBR/pbrMetallicRoughnessMaterial.js.map +1 -1
  219. package/Materials/PBR/pbrSheenConfiguration.d.ts +3 -4
  220. package/Materials/PBR/pbrSheenConfiguration.js.map +1 -1
  221. package/Materials/PBR/pbrSpecularGlossinessMaterial.js.map +1 -1
  222. package/Materials/PBR/pbrSubSurfaceConfiguration.d.ts +3 -4
  223. package/Materials/PBR/pbrSubSurfaceConfiguration.js.map +1 -1
  224. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  225. package/Materials/Textures/baseTexture.d.ts +2 -1
  226. package/Materials/Textures/baseTexture.js.map +1 -1
  227. package/Materials/Textures/cubeTexture.js.map +1 -1
  228. package/Materials/Textures/equiRectangularCubeTexture.js.map +1 -1
  229. package/Materials/Textures/hdrCubeTexture.js.map +1 -1
  230. package/Materials/Textures/htmlElementTexture.d.ts +2 -3
  231. package/Materials/Textures/htmlElementTexture.js +1 -4
  232. package/Materials/Textures/htmlElementTexture.js.map +1 -1
  233. package/Materials/Textures/internalTexture.d.ts +3 -4
  234. package/Materials/Textures/internalTexture.js.map +1 -1
  235. package/Materials/Textures/rawTexture.d.ts +1 -2
  236. package/Materials/Textures/rawTexture.js.map +1 -1
  237. package/Materials/Textures/rawTexture2DArray.d.ts +1 -2
  238. package/Materials/Textures/rawTexture2DArray.js.map +1 -1
  239. package/Materials/Textures/renderTargetTexture.d.ts +1 -2
  240. package/Materials/Textures/renderTargetTexture.js.map +1 -1
  241. package/Materials/Textures/texture.d.ts +4 -5
  242. package/Materials/Textures/texture.js.map +1 -1
  243. package/Materials/Textures/videoTexture.js +9 -22
  244. package/Materials/Textures/videoTexture.js.map +1 -1
  245. package/Materials/colorCurves.js.map +1 -1
  246. package/Materials/drawWrapper.d.ts +3 -4
  247. package/Materials/drawWrapper.js.map +1 -1
  248. package/Materials/effect.d.ts +5 -6
  249. package/Materials/effect.js.map +1 -1
  250. package/Materials/effectFallbacks.d.ts +2 -3
  251. package/Materials/effectFallbacks.js.map +1 -1
  252. package/Materials/greasedLinePluginMaterial.d.ts +307 -0
  253. package/Materials/greasedLinePluginMaterial.js +553 -0
  254. package/Materials/greasedLinePluginMaterial.js.map +1 -0
  255. package/Materials/iEffectFallbacks.d.ts +1 -2
  256. package/Materials/iEffectFallbacks.js.map +1 -1
  257. package/Materials/imageProcessingConfiguration.d.ts +2 -3
  258. package/Materials/imageProcessingConfiguration.js.map +1 -1
  259. package/Materials/index.d.ts +1 -0
  260. package/Materials/index.js +1 -0
  261. package/Materials/index.js.map +1 -1
  262. package/Materials/material.d.ts +6 -4
  263. package/Materials/material.decalMapConfiguration.js.map +1 -1
  264. package/Materials/material.detailMapConfiguration.d.ts +4 -5
  265. package/Materials/material.detailMapConfiguration.js.map +1 -1
  266. package/Materials/material.js +40 -5
  267. package/Materials/material.js.map +1 -1
  268. package/Materials/materialPluginBase.d.ts +13 -14
  269. package/Materials/materialPluginBase.js +2 -2
  270. package/Materials/materialPluginBase.js.map +1 -1
  271. package/Materials/materialPluginEvent.d.ts +8 -9
  272. package/Materials/materialPluginEvent.js.map +1 -1
  273. package/Materials/materialPluginFactoryExport.d.ts +1 -2
  274. package/Materials/materialPluginFactoryExport.js.map +1 -1
  275. package/Materials/materialPluginManager.d.ts +6 -6
  276. package/Materials/materialPluginManager.js +3 -1
  277. package/Materials/materialPluginManager.js.map +1 -1
  278. package/Materials/materialStencilState.d.ts +1 -2
  279. package/Materials/materialStencilState.js.map +1 -1
  280. package/Materials/shaderMaterial.d.ts +4 -5
  281. package/Materials/shaderMaterial.js +6 -19
  282. package/Materials/shaderMaterial.js.map +1 -1
  283. package/Materials/standardMaterial.d.ts +2 -1
  284. package/Materials/standardMaterial.js +4 -1
  285. package/Materials/standardMaterial.js.map +1 -1
  286. package/Materials/uniformBuffer.js.map +1 -1
  287. package/Maths/math.vector.d.ts +2 -1
  288. package/Maths/math.vector.js +3 -2
  289. package/Maths/math.vector.js.map +1 -1
  290. package/Meshes/Builders/decalBuilder.js +4 -4
  291. package/Meshes/Builders/decalBuilder.js.map +1 -1
  292. package/Meshes/Builders/greasedLineBuilder.d.ts +105 -0
  293. package/Meshes/Builders/greasedLineBuilder.js +330 -0
  294. package/Meshes/Builders/greasedLineBuilder.js.map +1 -0
  295. package/Meshes/Builders/index.d.ts +1 -0
  296. package/Meshes/Builders/index.js +1 -0
  297. package/Meshes/Builders/index.js.map +1 -1
  298. package/Meshes/Builders/linesBuilder.d.ts +1 -2
  299. package/Meshes/Builders/linesBuilder.js.map +1 -1
  300. package/Meshes/Builders/textBuilder.d.ts +34 -0
  301. package/Meshes/Builders/textBuilder.js +10 -2
  302. package/Meshes/Builders/textBuilder.js.map +1 -1
  303. package/Meshes/abstractMesh.d.ts +6 -6
  304. package/Meshes/abstractMesh.js +3 -2
  305. package/Meshes/abstractMesh.js.map +1 -1
  306. package/Meshes/geometry.d.ts +1 -2
  307. package/Meshes/geometry.js.map +1 -1
  308. package/Meshes/greasedLineMesh.d.ts +189 -0
  309. package/Meshes/greasedLineMesh.js +437 -0
  310. package/Meshes/greasedLineMesh.js.map +1 -0
  311. package/Meshes/index.d.ts +1 -0
  312. package/Meshes/index.js +1 -0
  313. package/Meshes/index.js.map +1 -1
  314. package/Meshes/mesh.d.ts +10 -6
  315. package/Meshes/mesh.js +20 -10
  316. package/Meshes/mesh.js.map +1 -1
  317. package/Meshes/mesh.vertexData.d.ts +2 -3
  318. package/Meshes/mesh.vertexData.js.map +1 -1
  319. package/Meshes/meshUVSpaceRenderer.js +1 -8
  320. package/Meshes/meshUVSpaceRenderer.js.map +1 -1
  321. package/Meshes/subMesh.d.ts +7 -8
  322. package/Meshes/subMesh.js.map +1 -1
  323. package/Meshes/transformNode.js.map +1 -1
  324. package/Misc/basis.js.map +1 -1
  325. package/Misc/copyTools.d.ts +1 -2
  326. package/Misc/copyTools.js.map +1 -1
  327. package/Misc/decorators.d.ts +5 -6
  328. package/Misc/decorators.js.map +1 -1
  329. package/Misc/deepCopier.js +7 -1
  330. package/Misc/deepCopier.js.map +1 -1
  331. package/Misc/dumpTools.d.ts +4 -3
  332. package/Misc/dumpTools.js +5 -4
  333. package/Misc/dumpTools.js.map +1 -1
  334. package/Misc/environmentTextureTools.js +1 -1
  335. package/Misc/environmentTextureTools.js.map +1 -1
  336. package/Misc/fileTools.js +10 -10
  337. package/Misc/fileTools.js.map +1 -1
  338. package/Misc/greasedLineTools.d.ts +153 -0
  339. package/Misc/greasedLineTools.js +299 -0
  340. package/Misc/greasedLineTools.js.map +1 -0
  341. package/Misc/index.d.ts +1 -0
  342. package/Misc/index.js +1 -0
  343. package/Misc/index.js.map +1 -1
  344. package/Misc/khronosTextureContainer.js.map +1 -1
  345. package/Misc/rgbdTextureTools.d.ts +3 -4
  346. package/Misc/rgbdTextureTools.js.map +1 -1
  347. package/Misc/sceneOptimizer.js.map +1 -1
  348. package/Misc/screenshotTools.d.ts +16 -7
  349. package/Misc/screenshotTools.js +23 -13
  350. package/Misc/screenshotTools.js.map +1 -1
  351. package/Misc/smartArray.js.map +1 -1
  352. package/Misc/tools.d.ts +21 -9
  353. package/Misc/tools.js +21 -9
  354. package/Misc/tools.js.map +1 -1
  355. package/Misc/videoRecorder.js +1 -4
  356. package/Misc/videoRecorder.js.map +1 -1
  357. package/Misc/virtualJoystick.js +1 -4
  358. package/Misc/virtualJoystick.js.map +1 -1
  359. package/Misc/webRequest.js.map +1 -1
  360. package/Morph/morphTarget.d.ts +2 -1
  361. package/Morph/morphTarget.js.map +1 -1
  362. package/Morph/morphTargetManager.js.map +1 -1
  363. package/Offline/database.js.map +1 -1
  364. package/Particles/EmitterTypes/IParticleEmitterType.d.ts +1 -2
  365. package/Particles/EmitterTypes/IParticleEmitterType.js.map +1 -1
  366. package/Particles/IParticleSystem.d.ts +2 -3
  367. package/Particles/IParticleSystem.js.map +1 -1
  368. package/Particles/baseParticleSystem.js.map +1 -1
  369. package/Particles/gpuParticleSystem.d.ts +1 -2
  370. package/Particles/gpuParticleSystem.js +2 -6
  371. package/Particles/gpuParticleSystem.js.map +1 -1
  372. package/Particles/particle.js.map +1 -1
  373. package/Particles/particleSystem.d.ts +1 -2
  374. package/Particles/particleSystem.js +1 -1
  375. package/Particles/particleSystem.js.map +1 -1
  376. package/Particles/particleSystemSet.js.map +1 -1
  377. package/Particles/subEmitter.d.ts +2 -3
  378. package/Particles/subEmitter.js.map +1 -1
  379. package/Particles/webgl2ParticleSystem.js.map +1 -1
  380. package/Physics/physicsHelper.js +4 -4
  381. package/Physics/physicsHelper.js.map +1 -1
  382. package/Physics/physicsRaycastResult.d.ts +3 -1
  383. package/Physics/physicsRaycastResult.js +10 -1
  384. package/Physics/physicsRaycastResult.js.map +1 -1
  385. package/Physics/v1/Plugins/ammoJSPlugin.js.map +1 -1
  386. package/Physics/v1/physicsImpostor.js.map +1 -1
  387. package/Physics/v2/IPhysicsEnginePlugin.d.ts +10 -0
  388. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  389. package/Physics/v2/Plugins/havokPlugin.d.ts +3 -2
  390. package/Physics/v2/Plugins/havokPlugin.js +9 -6
  391. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  392. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.d.ts +1 -2
  393. package/PostProcesses/RenderPipeline/Pipelines/defaultRenderingPipeline.js.map +1 -1
  394. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  395. package/PostProcesses/RenderPipeline/Pipelines/ssaoRenderingPipeline.js.map +1 -1
  396. package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
  397. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.d.ts +1 -2
  398. package/PostProcesses/RenderPipeline/Pipelines/standardRenderingPipeline.js.map +1 -1
  399. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.d.ts +1 -2
  400. package/PostProcesses/RenderPipeline/postProcessRenderPipeline.js.map +1 -1
  401. package/PostProcesses/blackAndWhitePostProcess.d.ts +1 -2
  402. package/PostProcesses/blackAndWhitePostProcess.js.map +1 -1
  403. package/PostProcesses/bloomMergePostProcess.js.map +1 -1
  404. package/PostProcesses/blurPostProcess.d.ts +1 -2
  405. package/PostProcesses/blurPostProcess.js.map +1 -1
  406. package/PostProcesses/chromaticAberrationPostProcess.d.ts +1 -2
  407. package/PostProcesses/chromaticAberrationPostProcess.js.map +1 -1
  408. package/PostProcesses/circleOfConfusionPostProcess.js.map +1 -1
  409. package/PostProcesses/colorCorrectionPostProcess.d.ts +1 -2
  410. package/PostProcesses/colorCorrectionPostProcess.js.map +1 -1
  411. package/PostProcesses/convolutionPostProcess.d.ts +1 -2
  412. package/PostProcesses/convolutionPostProcess.js.map +1 -1
  413. package/PostProcesses/depthOfFieldBlurPostProcess.js.map +1 -1
  414. package/PostProcesses/displayPassPostProcess.d.ts +1 -2
  415. package/PostProcesses/displayPassPostProcess.js.map +1 -1
  416. package/PostProcesses/extractHighlightsPostProcess.js.map +1 -1
  417. package/PostProcesses/filterPostProcess.d.ts +1 -2
  418. package/PostProcesses/filterPostProcess.js.map +1 -1
  419. package/PostProcesses/fxaaPostProcess.d.ts +1 -2
  420. package/PostProcesses/fxaaPostProcess.js.map +1 -1
  421. package/PostProcesses/grainPostProcess.d.ts +1 -2
  422. package/PostProcesses/grainPostProcess.js.map +1 -1
  423. package/PostProcesses/imageProcessingPostProcess.js.map +1 -1
  424. package/PostProcesses/motionBlurPostProcess.d.ts +2 -3
  425. package/PostProcesses/motionBlurPostProcess.js.map +1 -1
  426. package/PostProcesses/passPostProcess.d.ts +1 -2
  427. package/PostProcesses/passPostProcess.js.map +1 -1
  428. package/PostProcesses/postProcess.d.ts +6 -6
  429. package/PostProcesses/postProcess.js.map +1 -1
  430. package/PostProcesses/postProcessManager.d.ts +1 -2
  431. package/PostProcesses/postProcessManager.js.map +1 -1
  432. package/PostProcesses/refractionPostProcess.d.ts +1 -2
  433. package/PostProcesses/refractionPostProcess.js.map +1 -1
  434. package/PostProcesses/screenSpaceCurvaturePostProcess.d.ts +2 -3
  435. package/PostProcesses/screenSpaceCurvaturePostProcess.js.map +1 -1
  436. package/PostProcesses/screenSpaceReflectionPostProcess.d.ts +2 -3
  437. package/PostProcesses/screenSpaceReflectionPostProcess.js.map +1 -1
  438. package/PostProcesses/sharpenPostProcess.d.ts +2 -3
  439. package/PostProcesses/sharpenPostProcess.js.map +1 -1
  440. package/PostProcesses/tonemapPostProcess.d.ts +1 -2
  441. package/PostProcesses/tonemapPostProcess.js.map +1 -1
  442. package/PostProcesses/volumetricLightScatteringPostProcess.d.ts +1 -2
  443. package/PostProcesses/volumetricLightScatteringPostProcess.js.map +1 -1
  444. package/Probes/reflectionProbe.js.map +1 -1
  445. package/Rendering/depthPeelingRenderer.js.map +1 -1
  446. package/Rendering/depthRenderer.d.ts +2 -3
  447. package/Rendering/depthRenderer.js.map +1 -1
  448. package/Rendering/geometryBufferRenderer.js +2 -2
  449. package/Rendering/geometryBufferRenderer.js.map +1 -1
  450. package/Rendering/outlineRenderer.js.map +1 -1
  451. package/Rendering/prePassRenderer.js.map +1 -1
  452. package/Rendering/renderingGroup.js.map +1 -1
  453. package/Rendering/renderingManager.d.ts +5 -6
  454. package/Rendering/renderingManager.js.map +1 -1
  455. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  456. package/Rendering/utilityLayerRenderer.js.map +1 -1
  457. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js +4 -2
  458. package/Shaders/ShadersInclude/pbrBlockAlbedoOpacity.js.map +1 -1
  459. package/Shaders/ShadersInclude/pbrDebug.js +3 -1
  460. package/Shaders/ShadersInclude/pbrDebug.js.map +1 -1
  461. package/Sprites/sprite.d.ts +1 -2
  462. package/Sprites/sprite.js.map +1 -1
  463. package/Sprites/spriteManager.d.ts +1 -2
  464. package/Sprites/spriteManager.js.map +1 -1
  465. package/Sprites/spriteRenderer.d.ts +2 -3
  466. package/Sprites/spriteRenderer.js.map +1 -1
  467. package/XR/features/WebXRAnchorSystem.js.map +1 -1
  468. package/XR/features/WebXRBackgroundRemover.js.map +1 -1
  469. package/XR/features/WebXRControllerMovement.js.map +1 -1
  470. package/XR/features/WebXRControllerPhysics.js +4 -13
  471. package/XR/features/WebXRControllerPhysics.js.map +1 -1
  472. package/XR/features/WebXRControllerPointerSelection.js.map +1 -1
  473. package/XR/features/WebXRControllerTeleportation.js.map +1 -1
  474. package/XR/features/WebXRDOMOverlay.js.map +1 -1
  475. package/XR/features/WebXRDepthSensing.js.map +1 -1
  476. package/XR/features/WebXREyeTracking.js.map +1 -1
  477. package/XR/features/WebXRFeaturePointSystem.js.map +1 -1
  478. package/XR/features/WebXRHandTracking.js +2 -8
  479. package/XR/features/WebXRHandTracking.js.map +1 -1
  480. package/XR/features/WebXRHitTest.js.map +1 -1
  481. package/XR/features/WebXRHitTestLegacy.js.map +1 -1
  482. package/XR/features/WebXRImageTracking.js.map +1 -1
  483. package/XR/features/WebXRLayers.js +2 -2
  484. package/XR/features/WebXRLayers.js.map +1 -1
  485. package/XR/features/WebXRLightEstimation.js.map +1 -1
  486. package/XR/features/WebXRMeshDetector.js.map +1 -1
  487. package/XR/features/WebXRNearInteraction.js.map +1 -1
  488. package/XR/features/WebXRPlaneDetector.js.map +1 -1
  489. package/XR/features/WebXRSpaceWarp.js.map +1 -1
  490. package/XR/motionController/webXRAbstractMotionController.js +1 -4
  491. package/XR/motionController/webXRAbstractMotionController.js.map +1 -1
  492. package/XR/motionController/webXRControllerComponent.js.map +1 -1
  493. package/XR/motionController/webXRGenericMotionController.js.map +1 -1
  494. package/XR/motionController/webXRHTCViveMotionController.js.map +1 -1
  495. package/XR/motionController/webXRMicrosoftMixedRealityController.js.map +1 -1
  496. package/XR/motionController/webXROculusTouchMotionController.js.map +1 -1
  497. package/XR/webXRCamera.js.map +1 -1
  498. package/XR/webXRDefaultExperience.js +6 -28
  499. package/XR/webXRDefaultExperience.js.map +1 -1
  500. package/XR/webXRExperienceHelper.js +1 -0
  501. package/XR/webXRExperienceHelper.js.map +1 -1
  502. package/XR/webXRFeaturesManager.js +1 -4
  503. package/XR/webXRFeaturesManager.js.map +1 -1
  504. package/XR/webXRInput.js +1 -6
  505. package/XR/webXRInput.js.map +1 -1
  506. package/abstractScene.d.ts +3 -3
  507. package/abstractScene.js.map +1 -1
  508. package/assetContainer.js +1 -4
  509. package/assetContainer.js.map +1 -1
  510. package/node.d.ts +6 -7
  511. package/node.js.map +1 -1
  512. package/package.json +2 -4
  513. package/scene.d.ts +49 -50
  514. package/scene.js +4 -10
  515. package/scene.js.map +1 -1
  516. package/sceneComponent.d.ts +6 -7
  517. package/sceneComponent.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"particleSystemSet.js","sourceRoot":"","sources":["../../../../lts/core/generated/Particles/particleSystemSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,uDAAuD;AACvD,MAAM,uCAAuC;CAI5C;AAED;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAA9B;QAQY,wBAAmB,GAAG,IAAI,CAAC;QAEnC;;WAEG;QACI,YAAO,GAAG,IAAI,KAAK,EAAmB,CAAC;IAsJlD,CAAC;IApJG;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,IAAW,WAAW,CAAC,KAAuC;QAC1D,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE;YAC/C,IAAK,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE;gBAC5C,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE,CAAC;aACjD;YACD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;SACpC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;SAC1B;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACI,kBAAkB,CAAC,OAA8D,EAAE,gBAAwB,EAAE,KAAY;QAC5H,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE;YAC/C,IAAK,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE;gBAC5C,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE,CAAC;aACjD;SACJ;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,uBAAuB,GAAG;YAC3B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,OAAO;YAChB,gBAAgB,EAAE,gBAAgB;SACrC,CAAC;QAEF,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACrH,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAEhD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QACtE,QAAQ,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QACvC,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEhC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC;SAChC;QAED,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,OAAsB;QAC/B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,OAAO,EAAE;gBACT,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;aAC5B;YACD,MAAM,CAAC,KAAK,EAAE,CAAC;SAClB;IACL,CAAC;IAED;;OAEG;IACI,OAAO;QACV,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAK,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE;gBAC5C,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE,CAAC;aACjD;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC5B;IACL,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,gBAAgB,GAAG,KAAK;QACrC,MAAM,MAAM,GAAQ,EAAE,CAAC;QAEvB,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;SAC3D;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC;SACjD;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,CAAC,IAAS,EAAE,KAAY,EAAE,GAAG,GAAG,KAAK,EAAE,QAAiB;QACvE,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElD,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,gBAAgB,CAAC;QAE9C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;SAC7J;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACrC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACvB,KAAK,QAAQ;oBACT,MAAM,CAAC,kBAAkB,CACrB;wBACI,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;qBACzC,EACD,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAC7B,KAAK,CACR,CAAC;oBACF,MAAM;aACb;SACJ;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;;AAjKD;;GAEG;AACW,+BAAa,GAAG,wCAAwC,CAAC","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Color3 } from \"../Maths/math.color\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { CreateSphere } from \"../Meshes/Builders/sphereBuilder\";\r\nimport type { IParticleSystem } from \"./IParticleSystem\";\r\nimport { GPUParticleSystem } from \"./gpuParticleSystem\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { ParticleSystem } from \"../Particles/particleSystem\";\r\nimport type { Scene, IDisposable } from \"../scene\";\r\nimport { StandardMaterial } from \"../Materials/standardMaterial\";\r\nimport type { Vector3 } from \"../Maths/math.vector\";\r\n\r\n/** Internal class used to store shapes for emitters */\r\nclass ParticleSystemSetEmitterCreationOptions {\r\n public kind: string;\r\n public options: any;\r\n public renderingGroupId: number;\r\n}\r\n\r\n/**\r\n * Represents a set of particle systems working together to create a specific effect\r\n */\r\nexport class ParticleSystemSet implements IDisposable {\r\n /**\r\n * Gets or sets base Assets URL\r\n */\r\n public static BaseAssetsUrl = \"https://assets.babylonjs.com/particles\";\r\n\r\n private _emitterCreationOptions: ParticleSystemSetEmitterCreationOptions;\r\n private _emitterNode: Nullable<AbstractMesh | Vector3>;\r\n private _emitterNodeIsOwned = true;\r\n\r\n /**\r\n * Gets the particle system list\r\n */\r\n public systems = new Array<IParticleSystem>();\r\n\r\n /**\r\n * Gets or sets the emitter node used with this set\r\n */\r\n public get emitterNode(): Nullable<AbstractMesh | Vector3> {\r\n return this._emitterNode;\r\n }\r\n\r\n public set emitterNode(value: Nullable<AbstractMesh | Vector3>) {\r\n if (this._emitterNodeIsOwned && this._emitterNode) {\r\n if ((this._emitterNode as AbstractMesh).dispose) {\r\n (this._emitterNode as AbstractMesh).dispose();\r\n }\r\n this._emitterNodeIsOwned = false;\r\n }\r\n\r\n for (const system of this.systems) {\r\n system.emitter = value;\r\n }\r\n\r\n this._emitterNode = value;\r\n }\r\n\r\n /**\r\n * Creates a new emitter mesh as a sphere\r\n * @param options defines the options used to create the sphere\r\n * @param options.diameter\r\n * @param options.segments\r\n * @param options.color\r\n * @param renderingGroupId defines the renderingGroupId to use for the sphere\r\n * @param scene defines the hosting scene\r\n */\r\n public setEmitterAsSphere(options: { diameter: number; segments: number; color: Color3 }, renderingGroupId: number, scene: Scene) {\r\n if (this._emitterNodeIsOwned && this._emitterNode) {\r\n if ((this._emitterNode as AbstractMesh).dispose) {\r\n (this._emitterNode as AbstractMesh).dispose();\r\n }\r\n }\r\n\r\n this._emitterNodeIsOwned = true;\r\n\r\n this._emitterCreationOptions = {\r\n kind: \"Sphere\",\r\n options: options,\r\n renderingGroupId: renderingGroupId,\r\n };\r\n\r\n const emitterMesh = CreateSphere(\"emitterSphere\", { diameter: options.diameter, segments: options.segments }, scene);\r\n emitterMesh.renderingGroupId = renderingGroupId;\r\n\r\n const material = new StandardMaterial(\"emitterSphereMaterial\", scene);\r\n material.emissiveColor = options.color;\r\n emitterMesh.material = material;\r\n\r\n for (const system of this.systems) {\r\n system.emitter = emitterMesh;\r\n }\r\n\r\n this._emitterNode = emitterMesh;\r\n }\r\n\r\n /**\r\n * Starts all particle systems of the set\r\n * @param emitter defines an optional mesh to use as emitter for the particle systems\r\n */\r\n public start(emitter?: AbstractMesh): void {\r\n for (const system of this.systems) {\r\n if (emitter) {\r\n system.emitter = emitter;\r\n }\r\n system.start();\r\n }\r\n }\r\n\r\n /**\r\n * Release all associated resources\r\n */\r\n public dispose(): void {\r\n for (const system of this.systems) {\r\n system.dispose();\r\n }\r\n\r\n this.systems.length = 0;\r\n\r\n if (this._emitterNode) {\r\n if ((this._emitterNode as AbstractMesh).dispose) {\r\n (this._emitterNode as AbstractMesh).dispose();\r\n }\r\n this._emitterNode = null;\r\n }\r\n }\r\n\r\n /**\r\n * Serialize the set into a JSON compatible object\r\n * @param serializeTexture defines if the texture must be serialized as well\r\n * @returns a JSON compatible representation of the set\r\n */\r\n public serialize(serializeTexture = false): any {\r\n const result: any = {};\r\n\r\n result.systems = [];\r\n for (const system of this.systems) {\r\n result.systems.push(system.serialize(serializeTexture));\r\n }\r\n\r\n if (this._emitterNode) {\r\n result.emitter = this._emitterCreationOptions;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Parse a new ParticleSystemSet from a serialized source\r\n * @param data defines a JSON compatible representation of the set\r\n * @param scene defines the hosting scene\r\n * @param gpu defines if we want GPU particles or CPU particles\r\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\r\n * @returns a new ParticleSystemSet\r\n */\r\n public static Parse(data: any, scene: Scene, gpu = false, capacity?: number): ParticleSystemSet {\r\n const result = new ParticleSystemSet();\r\n const rootUrl = this.BaseAssetsUrl + \"/textures/\";\r\n\r\n scene = scene || EngineStore.LastCreatedScene;\r\n\r\n for (const system of data.systems) {\r\n result.systems.push(gpu ? GPUParticleSystem.Parse(system, scene, rootUrl, true, capacity) : ParticleSystem.Parse(system, scene, rootUrl, true, capacity));\r\n }\r\n\r\n if (data.emitter) {\r\n const options = data.emitter.options;\r\n switch (data.emitter.kind) {\r\n case \"Sphere\":\r\n result.setEmitterAsSphere(\r\n {\r\n diameter: options.diameter,\r\n segments: options.segments,\r\n color: Color3.FromArray(options.color),\r\n },\r\n data.emitter.renderingGroupId,\r\n scene\r\n );\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"particleSystemSet.js","sourceRoot":"","sources":["../../../../lts/core/generated/Particles/particleSystemSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,uDAAuD;AACvD,MAAM,uCAAuC;CAI5C;AAED;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAA9B;QAQY,wBAAmB,GAAG,IAAI,CAAC;QAEnC;;WAEG;QACI,YAAO,GAAG,IAAI,KAAK,EAAmB,CAAC;IAsJlD,CAAC;IApJG;;OAEG;IACH,IAAW,WAAW;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,IAAW,WAAW,CAAC,KAAuC;QAC1D,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE;YAC/C,IAAK,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE;gBAC5C,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE,CAAC;aACjD;YACD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;SACpC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;SAC1B;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACI,kBAAkB,CAAC,OAA8D,EAAE,gBAAwB,EAAE,KAAY;QAC5H,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,YAAY,EAAE;YAC/C,IAAK,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE;gBAC5C,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE,CAAC;aACjD;SACJ;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,uBAAuB,GAAG;YAC3B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,OAAO;YAChB,gBAAgB,EAAE,gBAAgB;SACrC,CAAC;QAEF,MAAM,WAAW,GAAG,YAAY,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACrH,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAEhD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QACtE,QAAQ,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QACvC,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEhC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,CAAC,OAAO,GAAG,WAAW,CAAC;SAChC;QAED,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,OAAsB;QAC/B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,OAAO,EAAE;gBACT,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;aAC5B;YACD,MAAM,CAAC,KAAK,EAAE,CAAC;SAClB;IACL,CAAC;IAED;;OAEG;IACI,OAAO;QACV,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,CAAC,OAAO,EAAE,CAAC;SACpB;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAExB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,IAAK,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE;gBAC5C,IAAI,CAAC,YAA6B,CAAC,OAAO,EAAE,CAAC;aACjD;YACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC5B;IACL,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,gBAAgB,GAAG,KAAK;QACrC,MAAM,MAAM,GAAQ,EAAE,CAAC;QAEvB,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;SAC3D;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,CAAC;SACjD;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,KAAK,CAAC,IAAS,EAAE,KAAY,EAAE,GAAG,GAAG,KAAK,EAAE,QAAiB;QACvE,MAAM,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAElD,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,gBAAgB,CAAC;QAE9C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;SAC7J;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACrC,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACvB,KAAK,QAAQ;oBACT,MAAM,CAAC,kBAAkB,CACrB;wBACI,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;qBACzC,EACD,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAC7B,KAAK,CACR,CAAC;oBACF,MAAM;aACb;SACJ;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;;AAjKD;;GAEG;AACW,+BAAa,GAAG,wCAAwC,AAA3C,CAA4C","sourcesContent":["import type { Nullable } from \"../types\";\r\nimport { Color3 } from \"../Maths/math.color\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport { CreateSphere } from \"../Meshes/Builders/sphereBuilder\";\r\nimport type { IParticleSystem } from \"./IParticleSystem\";\r\nimport { GPUParticleSystem } from \"./gpuParticleSystem\";\r\nimport { EngineStore } from \"../Engines/engineStore\";\r\nimport { ParticleSystem } from \"../Particles/particleSystem\";\r\nimport type { Scene, IDisposable } from \"../scene\";\r\nimport { StandardMaterial } from \"../Materials/standardMaterial\";\r\nimport type { Vector3 } from \"../Maths/math.vector\";\r\n\r\n/** Internal class used to store shapes for emitters */\r\nclass ParticleSystemSetEmitterCreationOptions {\r\n public kind: string;\r\n public options: any;\r\n public renderingGroupId: number;\r\n}\r\n\r\n/**\r\n * Represents a set of particle systems working together to create a specific effect\r\n */\r\nexport class ParticleSystemSet implements IDisposable {\r\n /**\r\n * Gets or sets base Assets URL\r\n */\r\n public static BaseAssetsUrl = \"https://assets.babylonjs.com/particles\";\r\n\r\n private _emitterCreationOptions: ParticleSystemSetEmitterCreationOptions;\r\n private _emitterNode: Nullable<AbstractMesh | Vector3>;\r\n private _emitterNodeIsOwned = true;\r\n\r\n /**\r\n * Gets the particle system list\r\n */\r\n public systems = new Array<IParticleSystem>();\r\n\r\n /**\r\n * Gets or sets the emitter node used with this set\r\n */\r\n public get emitterNode(): Nullable<AbstractMesh | Vector3> {\r\n return this._emitterNode;\r\n }\r\n\r\n public set emitterNode(value: Nullable<AbstractMesh | Vector3>) {\r\n if (this._emitterNodeIsOwned && this._emitterNode) {\r\n if ((this._emitterNode as AbstractMesh).dispose) {\r\n (this._emitterNode as AbstractMesh).dispose();\r\n }\r\n this._emitterNodeIsOwned = false;\r\n }\r\n\r\n for (const system of this.systems) {\r\n system.emitter = value;\r\n }\r\n\r\n this._emitterNode = value;\r\n }\r\n\r\n /**\r\n * Creates a new emitter mesh as a sphere\r\n * @param options defines the options used to create the sphere\r\n * @param options.diameter\r\n * @param options.segments\r\n * @param options.color\r\n * @param renderingGroupId defines the renderingGroupId to use for the sphere\r\n * @param scene defines the hosting scene\r\n */\r\n public setEmitterAsSphere(options: { diameter: number; segments: number; color: Color3 }, renderingGroupId: number, scene: Scene) {\r\n if (this._emitterNodeIsOwned && this._emitterNode) {\r\n if ((this._emitterNode as AbstractMesh).dispose) {\r\n (this._emitterNode as AbstractMesh).dispose();\r\n }\r\n }\r\n\r\n this._emitterNodeIsOwned = true;\r\n\r\n this._emitterCreationOptions = {\r\n kind: \"Sphere\",\r\n options: options,\r\n renderingGroupId: renderingGroupId,\r\n };\r\n\r\n const emitterMesh = CreateSphere(\"emitterSphere\", { diameter: options.diameter, segments: options.segments }, scene);\r\n emitterMesh.renderingGroupId = renderingGroupId;\r\n\r\n const material = new StandardMaterial(\"emitterSphereMaterial\", scene);\r\n material.emissiveColor = options.color;\r\n emitterMesh.material = material;\r\n\r\n for (const system of this.systems) {\r\n system.emitter = emitterMesh;\r\n }\r\n\r\n this._emitterNode = emitterMesh;\r\n }\r\n\r\n /**\r\n * Starts all particle systems of the set\r\n * @param emitter defines an optional mesh to use as emitter for the particle systems\r\n */\r\n public start(emitter?: AbstractMesh): void {\r\n for (const system of this.systems) {\r\n if (emitter) {\r\n system.emitter = emitter;\r\n }\r\n system.start();\r\n }\r\n }\r\n\r\n /**\r\n * Release all associated resources\r\n */\r\n public dispose(): void {\r\n for (const system of this.systems) {\r\n system.dispose();\r\n }\r\n\r\n this.systems.length = 0;\r\n\r\n if (this._emitterNode) {\r\n if ((this._emitterNode as AbstractMesh).dispose) {\r\n (this._emitterNode as AbstractMesh).dispose();\r\n }\r\n this._emitterNode = null;\r\n }\r\n }\r\n\r\n /**\r\n * Serialize the set into a JSON compatible object\r\n * @param serializeTexture defines if the texture must be serialized as well\r\n * @returns a JSON compatible representation of the set\r\n */\r\n public serialize(serializeTexture = false): any {\r\n const result: any = {};\r\n\r\n result.systems = [];\r\n for (const system of this.systems) {\r\n result.systems.push(system.serialize(serializeTexture));\r\n }\r\n\r\n if (this._emitterNode) {\r\n result.emitter = this._emitterCreationOptions;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Parse a new ParticleSystemSet from a serialized source\r\n * @param data defines a JSON compatible representation of the set\r\n * @param scene defines the hosting scene\r\n * @param gpu defines if we want GPU particles or CPU particles\r\n * @param capacity defines the system capacity (if null or undefined the sotred capacity will be used)\r\n * @returns a new ParticleSystemSet\r\n */\r\n public static Parse(data: any, scene: Scene, gpu = false, capacity?: number): ParticleSystemSet {\r\n const result = new ParticleSystemSet();\r\n const rootUrl = this.BaseAssetsUrl + \"/textures/\";\r\n\r\n scene = scene || EngineStore.LastCreatedScene;\r\n\r\n for (const system of data.systems) {\r\n result.systems.push(gpu ? GPUParticleSystem.Parse(system, scene, rootUrl, true, capacity) : ParticleSystem.Parse(system, scene, rootUrl, true, capacity));\r\n }\r\n\r\n if (data.emitter) {\r\n const options = data.emitter.options;\r\n switch (data.emitter.kind) {\r\n case \"Sphere\":\r\n result.setEmitterAsSphere(\r\n {\r\n diameter: options.diameter,\r\n segments: options.segments,\r\n color: Color3.FromArray(options.color),\r\n },\r\n data.emitter.renderingGroupId,\r\n scene\r\n );\r\n break;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { ThinEngine } from "../Engines/thinEngine";
2
- declare type Scene = import("../scene").Scene;
3
- declare type ParticleSystem = import("../Particles/particleSystem").ParticleSystem;
2
+ import type { Scene } from "../scene";
3
+ import type { ParticleSystem } from "../Particles/particleSystem";
4
4
  /**
5
5
  * Type of sub emitter
6
6
  */
@@ -70,4 +70,3 @@ export declare class SubEmitter {
70
70
  /** Release associated resources */
71
71
  dispose(): void;
72
72
  }
73
- export {};
@@ -1 +1 @@
1
- {"version":3,"file":"subEmitter.js","sourceRoot":"","sources":["../../../../lts/core/generated/Particles/subEmitter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector3 } from \"../Maths/math.vector\";\r\nimport { _WarnImport } from \"../Misc/devTools\";\r\nimport type { ThinEngine } from \"../Engines/thinEngine\";\r\nimport { GetClass } from \"../Misc/typeStore\";\r\n\r\ndeclare type Scene = import(\"../scene\").Scene;\r\ndeclare type AbstractMesh = import(\"../Meshes/abstractMesh\").AbstractMesh;\r\ndeclare type ParticleSystem = import(\"../Particles/particleSystem\").ParticleSystem;\r\n\r\n/**\r\n * Type of sub emitter\r\n */\r\nexport enum SubEmitterType {\r\n /**\r\n * Attached to the particle over it's lifetime\r\n */\r\n ATTACHED,\r\n /**\r\n * Created when the particle dies\r\n */\r\n END,\r\n}\r\n\r\n/**\r\n * Sub emitter class used to emit particles from an existing particle\r\n */\r\nexport class SubEmitter {\r\n /**\r\n * Type of the submitter (Default: END)\r\n */\r\n public type = SubEmitterType.END;\r\n /**\r\n * If the particle should inherit the direction from the particle it's attached to. (+Y will face the direction the particle is moving) (Default: false)\r\n * Note: This only is supported when using an emitter of type Mesh\r\n */\r\n public inheritDirection = false;\r\n /**\r\n * How much of the attached particles speed should be added to the sub emitted particle (default: 0)\r\n */\r\n public inheritedVelocityAmount = 0;\r\n\r\n /**\r\n * Creates a sub emitter\r\n * @param particleSystem the particle system to be used by the sub emitter\r\n */\r\n constructor(\r\n /**\r\n * the particle system to be used by the sub emitter\r\n */\r\n public particleSystem: ParticleSystem\r\n ) {\r\n // Create mesh as emitter to support rotation\r\n if (!particleSystem.emitter || !(<AbstractMesh>particleSystem.emitter).dispose) {\r\n const internalClass = GetClass(\"BABYLON.AbstractMesh\");\r\n particleSystem.emitter = new internalClass(\"SubemitterSystemEmitter\", particleSystem.getScene());\r\n particleSystem._disposeEmitterOnDispose = true;\r\n }\r\n }\r\n /**\r\n * Clones the sub emitter\r\n * @returns the cloned sub emitter\r\n */\r\n public clone(): SubEmitter {\r\n // Clone particle system\r\n let emitter = this.particleSystem.emitter;\r\n if (!emitter) {\r\n emitter = new Vector3();\r\n } else if (emitter instanceof Vector3) {\r\n emitter = emitter.clone();\r\n } else if (emitter.getClassName().indexOf(\"Mesh\") !== -1) {\r\n const internalClass = GetClass(\"BABYLON.Mesh\");\r\n emitter = new internalClass(\"\", emitter.getScene());\r\n (emitter! as any).isVisible = false;\r\n }\r\n const clone = new SubEmitter(this.particleSystem.clone(this.particleSystem.name, emitter));\r\n\r\n // Clone properties\r\n clone.particleSystem.name += \"Clone\";\r\n clone.type = this.type;\r\n clone.inheritDirection = this.inheritDirection;\r\n clone.inheritedVelocityAmount = this.inheritedVelocityAmount;\r\n\r\n clone.particleSystem._disposeEmitterOnDispose = true;\r\n clone.particleSystem.disposeOnStop = true;\r\n return clone;\r\n }\r\n\r\n /**\r\n * Serialize current object to a JSON object\r\n * @param serializeTexture defines if the texture must be serialized as well\r\n * @returns the serialized object\r\n */\r\n public serialize(serializeTexture: boolean = false): any {\r\n const serializationObject: any = {};\r\n\r\n serializationObject.type = this.type;\r\n serializationObject.inheritDirection = this.inheritDirection;\r\n serializationObject.inheritedVelocityAmount = this.inheritedVelocityAmount;\r\n serializationObject.particleSystem = this.particleSystem.serialize(serializeTexture);\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public static _ParseParticleSystem(system: any, sceneOrEngine: Scene | ThinEngine, rootUrl: string, doNotStart = false): ParticleSystem {\r\n throw _WarnImport(\"ParseParticle\");\r\n }\r\n\r\n /**\r\n * Creates a new SubEmitter from a serialized JSON version\r\n * @param serializationObject defines the JSON object to read from\r\n * @param sceneOrEngine defines the hosting scene or the hosting engine\r\n * @param rootUrl defines the rootUrl for data loading\r\n * @returns a new SubEmitter\r\n */\r\n public static Parse(serializationObject: any, sceneOrEngine: Scene | ThinEngine, rootUrl: string): SubEmitter {\r\n const system = serializationObject.particleSystem;\r\n const subEmitter = new SubEmitter(SubEmitter._ParseParticleSystem(system, sceneOrEngine, rootUrl, true));\r\n subEmitter.type = serializationObject.type;\r\n subEmitter.inheritDirection = serializationObject.inheritDirection;\r\n subEmitter.inheritedVelocityAmount = serializationObject.inheritedVelocityAmount;\r\n subEmitter.particleSystem._isSubEmitter = true;\r\n\r\n return subEmitter;\r\n }\r\n\r\n /** Release associated resources */\r\n public dispose() {\r\n this.particleSystem.dispose();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"subEmitter.js","sourceRoot":"","sources":["../../../../lts/core/generated/Particles/subEmitter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector3 } from \"../Maths/math.vector\";\r\nimport { _WarnImport } from \"../Misc/devTools\";\r\nimport type { ThinEngine } from \"../Engines/thinEngine\";\r\nimport { GetClass } from \"../Misc/typeStore\";\r\n\r\nimport type { Scene } from \"../scene\";\r\nimport type { AbstractMesh } from \"../Meshes/abstractMesh\";\r\nimport type { ParticleSystem } from \"../Particles/particleSystem\";\r\n\r\n/**\r\n * Type of sub emitter\r\n */\r\nexport enum SubEmitterType {\r\n /**\r\n * Attached to the particle over it's lifetime\r\n */\r\n ATTACHED,\r\n /**\r\n * Created when the particle dies\r\n */\r\n END,\r\n}\r\n\r\n/**\r\n * Sub emitter class used to emit particles from an existing particle\r\n */\r\nexport class SubEmitter {\r\n /**\r\n * Type of the submitter (Default: END)\r\n */\r\n public type = SubEmitterType.END;\r\n /**\r\n * If the particle should inherit the direction from the particle it's attached to. (+Y will face the direction the particle is moving) (Default: false)\r\n * Note: This only is supported when using an emitter of type Mesh\r\n */\r\n public inheritDirection = false;\r\n /**\r\n * How much of the attached particles speed should be added to the sub emitted particle (default: 0)\r\n */\r\n public inheritedVelocityAmount = 0;\r\n\r\n /**\r\n * Creates a sub emitter\r\n * @param particleSystem the particle system to be used by the sub emitter\r\n */\r\n constructor(\r\n /**\r\n * the particle system to be used by the sub emitter\r\n */\r\n public particleSystem: ParticleSystem\r\n ) {\r\n // Create mesh as emitter to support rotation\r\n if (!particleSystem.emitter || !(<AbstractMesh>particleSystem.emitter).dispose) {\r\n const internalClass = GetClass(\"BABYLON.AbstractMesh\");\r\n particleSystem.emitter = new internalClass(\"SubemitterSystemEmitter\", particleSystem.getScene());\r\n particleSystem._disposeEmitterOnDispose = true;\r\n }\r\n }\r\n /**\r\n * Clones the sub emitter\r\n * @returns the cloned sub emitter\r\n */\r\n public clone(): SubEmitter {\r\n // Clone particle system\r\n let emitter = this.particleSystem.emitter;\r\n if (!emitter) {\r\n emitter = new Vector3();\r\n } else if (emitter instanceof Vector3) {\r\n emitter = emitter.clone();\r\n } else if (emitter.getClassName().indexOf(\"Mesh\") !== -1) {\r\n const internalClass = GetClass(\"BABYLON.Mesh\");\r\n emitter = new internalClass(\"\", emitter.getScene());\r\n (emitter! as any).isVisible = false;\r\n }\r\n const clone = new SubEmitter(this.particleSystem.clone(this.particleSystem.name, emitter));\r\n\r\n // Clone properties\r\n clone.particleSystem.name += \"Clone\";\r\n clone.type = this.type;\r\n clone.inheritDirection = this.inheritDirection;\r\n clone.inheritedVelocityAmount = this.inheritedVelocityAmount;\r\n\r\n clone.particleSystem._disposeEmitterOnDispose = true;\r\n clone.particleSystem.disposeOnStop = true;\r\n return clone;\r\n }\r\n\r\n /**\r\n * Serialize current object to a JSON object\r\n * @param serializeTexture defines if the texture must be serialized as well\r\n * @returns the serialized object\r\n */\r\n public serialize(serializeTexture: boolean = false): any {\r\n const serializationObject: any = {};\r\n\r\n serializationObject.type = this.type;\r\n serializationObject.inheritDirection = this.inheritDirection;\r\n serializationObject.inheritedVelocityAmount = this.inheritedVelocityAmount;\r\n serializationObject.particleSystem = this.particleSystem.serialize(serializeTexture);\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public static _ParseParticleSystem(system: any, sceneOrEngine: Scene | ThinEngine, rootUrl: string, doNotStart = false): ParticleSystem {\r\n throw _WarnImport(\"ParseParticle\");\r\n }\r\n\r\n /**\r\n * Creates a new SubEmitter from a serialized JSON version\r\n * @param serializationObject defines the JSON object to read from\r\n * @param sceneOrEngine defines the hosting scene or the hosting engine\r\n * @param rootUrl defines the rootUrl for data loading\r\n * @returns a new SubEmitter\r\n */\r\n public static Parse(serializationObject: any, sceneOrEngine: Scene | ThinEngine, rootUrl: string): SubEmitter {\r\n const system = serializationObject.particleSystem;\r\n const subEmitter = new SubEmitter(SubEmitter._ParseParticleSystem(system, sceneOrEngine, rootUrl, true));\r\n subEmitter.type = serializationObject.type;\r\n subEmitter.inheritDirection = serializationObject.inheritDirection;\r\n subEmitter.inheritedVelocityAmount = serializationObject.inheritedVelocityAmount;\r\n subEmitter.particleSystem._isSubEmitter = true;\r\n\r\n return subEmitter;\r\n }\r\n\r\n /** Release associated resources */\r\n public dispose() {\r\n this.particleSystem.dispose();\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"webgl2ParticleSystem.js","sourceRoot":"","sources":["../../../../lts/core/generated/Particles/webgl2ParticleSystem.ts"],"names":[],"mappings":"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","sourcesContent":["import type { VertexBuffer, Buffer } from \"../Buffers/buffer\";\r\nimport type { ThinEngine } from \"../Engines/thinEngine\";\r\nimport type { IEffectCreationOptions } from \"../Materials/effect\";\r\nimport { Effect } from \"../Materials/effect\";\r\nimport type { IGPUParticleSystemPlatform } from \"./IGPUParticleSystemPlatform\";\r\n\r\nimport { CustomParticleEmitter } from \"./EmitterTypes/customParticleEmitter\";\r\nimport type { GPUParticleSystem } from \"./gpuParticleSystem\";\r\nimport type { DataArray } from \"../types\";\r\nimport type { DataBuffer } from \"../Buffers/dataBuffer\";\r\nimport { UniformBufferEffectCommonAccessor } from \"../Materials/uniformBufferEffectCommonAccessor\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport \"../Shaders/gpuUpdateParticles.fragment\";\r\nimport \"../Shaders/gpuUpdateParticles.vertex\";\r\n\r\ndeclare type Engine = import(\"../Engines/engine\").Engine;\r\n\r\n/** @internal */\r\nexport class WebGL2ParticleSystem implements IGPUParticleSystemPlatform {\r\n private _parent: GPUParticleSystem;\r\n private _engine: ThinEngine;\r\n private _updateEffect: Effect;\r\n private _updateEffectOptions: IEffectCreationOptions;\r\n private _renderVAO: WebGLVertexArrayObject[] = [];\r\n private _updateVAO: WebGLVertexArrayObject[] = [];\r\n\r\n public readonly alignDataInBuffer = false;\r\n\r\n constructor(parent: GPUParticleSystem, engine: ThinEngine) {\r\n this._parent = parent;\r\n this._engine = engine;\r\n\r\n this._updateEffectOptions = {\r\n attributes: [\r\n \"position\",\r\n \"initialPosition\",\r\n \"age\",\r\n \"life\",\r\n \"seed\",\r\n \"size\",\r\n \"color\",\r\n \"direction\",\r\n \"initialDirection\",\r\n \"angle\",\r\n \"cellIndex\",\r\n \"cellStartOffset\",\r\n \"noiseCoordinates1\",\r\n \"noiseCoordinates2\",\r\n ],\r\n uniformsNames: [\r\n \"currentCount\",\r\n \"timeDelta\",\r\n \"emitterWM\",\r\n \"lifeTime\",\r\n \"color1\",\r\n \"color2\",\r\n \"sizeRange\",\r\n \"scaleRange\",\r\n \"gravity\",\r\n \"emitPower\",\r\n \"direction1\",\r\n \"direction2\",\r\n \"minEmitBox\",\r\n \"maxEmitBox\",\r\n \"radius\",\r\n \"directionRandomizer\",\r\n \"height\",\r\n \"coneAngle\",\r\n \"stopFactor\",\r\n \"angleRange\",\r\n \"radiusRange\",\r\n \"cellInfos\",\r\n \"noiseStrength\",\r\n \"limitVelocityDamping\",\r\n ],\r\n uniformBuffersNames: [],\r\n samplers: [\r\n \"randomSampler\",\r\n \"randomSampler2\",\r\n \"sizeGradientSampler\",\r\n \"angularSpeedGradientSampler\",\r\n \"velocityGradientSampler\",\r\n \"limitVelocityGradientSampler\",\r\n \"noiseSampler\",\r\n \"dragGradientSampler\",\r\n ],\r\n defines: \"\",\r\n fallbacks: null,\r\n onCompiled: null,\r\n onError: null,\r\n indexParameters: null,\r\n maxSimultaneousLights: 0,\r\n transformFeedbackVaryings: [],\r\n };\r\n }\r\n\r\n public isUpdateBufferCreated(): boolean {\r\n return !!this._updateEffect;\r\n }\r\n\r\n public isUpdateBufferReady(): boolean {\r\n return this._updateEffect?.isReady() ?? false;\r\n }\r\n\r\n public createUpdateBuffer(defines: string): UniformBufferEffectCommonAccessor {\r\n this._updateEffectOptions.transformFeedbackVaryings = [\"outPosition\"];\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outAge\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outSize\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outLife\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outSeed\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outDirection\");\r\n\r\n if (this._parent.particleEmitterType instanceof CustomParticleEmitter) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outInitialPosition\");\r\n }\r\n\r\n if (!this._parent._colorGradientsTexture) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outColor\");\r\n }\r\n\r\n if (!this._parent._isBillboardBased) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outInitialDirection\");\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outNoiseCoordinates1\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outNoiseCoordinates2\");\r\n }\r\n\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outAngle\");\r\n\r\n if (this._parent.isAnimationSheetEnabled) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outCellIndex\");\r\n if (this._parent.spriteRandomStartCell) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outCellStartOffset\");\r\n }\r\n }\r\n\r\n this._updateEffectOptions.defines = defines;\r\n this._updateEffect = new Effect(\"gpuUpdateParticles\", this._updateEffectOptions, this._engine);\r\n\r\n return new UniformBufferEffectCommonAccessor(this._updateEffect);\r\n }\r\n\r\n public createVertexBuffers(updateBuffer: Buffer, renderVertexBuffers: { [key: string]: VertexBuffer }): void {\r\n this._updateVAO.push(this._createUpdateVAO(updateBuffer));\r\n\r\n this._renderVAO.push(this._engine.recordVertexArrayObject(renderVertexBuffers, null, this._parent._getWrapper(this._parent.blendMode).effect!));\r\n this._engine.bindArrayBuffer(null);\r\n }\r\n\r\n public createParticleBuffer(data: number[]): DataArray | DataBuffer {\r\n return data;\r\n }\r\n\r\n public bindDrawBuffers(index: number): void {\r\n this._engine.bindVertexArrayObject(this._renderVAO[index], null);\r\n }\r\n\r\n public preUpdateParticleBuffer(): void {\r\n const engine = this._engine as Engine;\r\n\r\n this._engine.enableEffect(this._updateEffect);\r\n\r\n if (!engine.setState) {\r\n throw new Error(\"GPU particles cannot work without a full Engine. ThinEngine is not supported\");\r\n }\r\n }\r\n\r\n public updateParticleBuffer(index: number, targetBuffer: Buffer, currentActiveCount: number): void {\r\n this._updateEffect.setTexture(\"randomSampler\", this._parent._randomTexture);\r\n this._updateEffect.setTexture(\"randomSampler2\", this._parent._randomTexture2);\r\n\r\n if (this._parent._sizeGradientsTexture) {\r\n this._updateEffect.setTexture(\"sizeGradientSampler\", this._parent._sizeGradientsTexture);\r\n }\r\n\r\n if (this._parent._angularSpeedGradientsTexture) {\r\n this._updateEffect.setTexture(\"angularSpeedGradientSampler\", this._parent._angularSpeedGradientsTexture);\r\n }\r\n\r\n if (this._parent._velocityGradientsTexture) {\r\n this._updateEffect.setTexture(\"velocityGradientSampler\", this._parent._velocityGradientsTexture);\r\n }\r\n\r\n if (this._parent._limitVelocityGradientsTexture) {\r\n this._updateEffect.setTexture(\"limitVelocityGradientSampler\", this._parent._limitVelocityGradientsTexture);\r\n }\r\n\r\n if (this._parent._dragGradientsTexture) {\r\n this._updateEffect.setTexture(\"dragGradientSampler\", this._parent._dragGradientsTexture);\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n this._updateEffect.setTexture(\"noiseSampler\", this._parent.noiseTexture);\r\n }\r\n\r\n // Bind source VAO\r\n this._engine.bindVertexArrayObject(this._updateVAO[index], null);\r\n\r\n // Update\r\n const engine = this._engine as Engine;\r\n\r\n engine.bindTransformFeedbackBuffer(targetBuffer.getBuffer());\r\n engine.setRasterizerState(false);\r\n engine.beginTransformFeedback(true);\r\n engine.drawArraysType(Constants.MATERIAL_PointListDrawMode, 0, currentActiveCount);\r\n engine.endTransformFeedback();\r\n engine.setRasterizerState(true);\r\n engine.bindTransformFeedbackBuffer(null);\r\n }\r\n\r\n public releaseBuffers(): void {}\r\n\r\n public releaseVertexBuffers(): void {\r\n for (let index = 0; index < this._updateVAO.length; index++) {\r\n this._engine.releaseVertexArrayObject(this._updateVAO[index]);\r\n }\r\n this._updateVAO.length = 0;\r\n\r\n for (let index = 0; index < this._renderVAO.length; index++) {\r\n this._engine.releaseVertexArrayObject(this._renderVAO[index]);\r\n }\r\n this._renderVAO.length = 0;\r\n }\r\n\r\n private _createUpdateVAO(source: Buffer): WebGLVertexArrayObject {\r\n const updateVertexBuffers: { [key: string]: VertexBuffer } = {};\r\n updateVertexBuffers[\"position\"] = source.createVertexBuffer(\"position\", 0, 3);\r\n\r\n let offset = 3;\r\n updateVertexBuffers[\"age\"] = source.createVertexBuffer(\"age\", offset, 1);\r\n offset += 1;\r\n updateVertexBuffers[\"size\"] = source.createVertexBuffer(\"size\", offset, 3);\r\n offset += 3;\r\n updateVertexBuffers[\"life\"] = source.createVertexBuffer(\"life\", offset, 1);\r\n offset += 1;\r\n updateVertexBuffers[\"seed\"] = source.createVertexBuffer(\"seed\", offset, 4);\r\n offset += 4;\r\n updateVertexBuffers[\"direction\"] = source.createVertexBuffer(\"direction\", offset, 3);\r\n offset += 3;\r\n\r\n if (this._parent.particleEmitterType instanceof CustomParticleEmitter) {\r\n updateVertexBuffers[\"initialPosition\"] = source.createVertexBuffer(\"initialPosition\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (!this._parent._colorGradientsTexture) {\r\n updateVertexBuffers[\"color\"] = source.createVertexBuffer(\"color\", offset, 4);\r\n offset += 4;\r\n }\r\n\r\n if (!this._parent._isBillboardBased) {\r\n updateVertexBuffers[\"initialDirection\"] = source.createVertexBuffer(\"initialDirection\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n updateVertexBuffers[\"noiseCoordinates1\"] = source.createVertexBuffer(\"noiseCoordinates1\", offset, 3);\r\n offset += 3;\r\n updateVertexBuffers[\"noiseCoordinates2\"] = source.createVertexBuffer(\"noiseCoordinates2\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (this._parent._angularSpeedGradientsTexture) {\r\n updateVertexBuffers[\"angle\"] = source.createVertexBuffer(\"angle\", offset, 1);\r\n offset += 1;\r\n } else {\r\n updateVertexBuffers[\"angle\"] = source.createVertexBuffer(\"angle\", offset, 2);\r\n offset += 2;\r\n }\r\n\r\n if (this._parent._isAnimationSheetEnabled) {\r\n updateVertexBuffers[\"cellIndex\"] = source.createVertexBuffer(\"cellIndex\", offset, 1);\r\n offset += 1;\r\n if (this._parent.spriteRandomStartCell) {\r\n updateVertexBuffers[\"cellStartOffset\"] = source.createVertexBuffer(\"cellStartOffset\", offset, 1);\r\n offset += 1;\r\n }\r\n }\r\n\r\n const vao = this._engine.recordVertexArrayObject(updateVertexBuffers, null, this._updateEffect);\r\n this._engine.bindArrayBuffer(null);\r\n\r\n return vao;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.WebGL2ParticleSystem\", WebGL2ParticleSystem);\r\n"]}
1
+ {"version":3,"file":"webgl2ParticleSystem.js","sourceRoot":"","sources":["../../../../lts/core/generated/Particles/webgl2ParticleSystem.ts"],"names":[],"mappings":"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","sourcesContent":["import type { VertexBuffer, Buffer } from \"../Buffers/buffer\";\r\nimport type { ThinEngine } from \"../Engines/thinEngine\";\r\nimport type { IEffectCreationOptions } from \"../Materials/effect\";\r\nimport { Effect } from \"../Materials/effect\";\r\nimport type { IGPUParticleSystemPlatform } from \"./IGPUParticleSystemPlatform\";\r\n\r\nimport { CustomParticleEmitter } from \"./EmitterTypes/customParticleEmitter\";\r\nimport type { GPUParticleSystem } from \"./gpuParticleSystem\";\r\nimport type { DataArray } from \"../types\";\r\nimport type { DataBuffer } from \"../Buffers/dataBuffer\";\r\nimport { UniformBufferEffectCommonAccessor } from \"../Materials/uniformBufferEffectCommonAccessor\";\r\nimport { Constants } from \"../Engines/constants\";\r\nimport { RegisterClass } from \"../Misc/typeStore\";\r\n\r\nimport \"../Shaders/gpuUpdateParticles.fragment\";\r\nimport \"../Shaders/gpuUpdateParticles.vertex\";\r\n\r\nimport type { Engine } from \"../Engines/engine\";\r\n\r\n/** @internal */\r\nexport class WebGL2ParticleSystem implements IGPUParticleSystemPlatform {\r\n private _parent: GPUParticleSystem;\r\n private _engine: ThinEngine;\r\n private _updateEffect: Effect;\r\n private _updateEffectOptions: IEffectCreationOptions;\r\n private _renderVAO: WebGLVertexArrayObject[] = [];\r\n private _updateVAO: WebGLVertexArrayObject[] = [];\r\n\r\n public readonly alignDataInBuffer = false;\r\n\r\n constructor(parent: GPUParticleSystem, engine: ThinEngine) {\r\n this._parent = parent;\r\n this._engine = engine;\r\n\r\n this._updateEffectOptions = {\r\n attributes: [\r\n \"position\",\r\n \"initialPosition\",\r\n \"age\",\r\n \"life\",\r\n \"seed\",\r\n \"size\",\r\n \"color\",\r\n \"direction\",\r\n \"initialDirection\",\r\n \"angle\",\r\n \"cellIndex\",\r\n \"cellStartOffset\",\r\n \"noiseCoordinates1\",\r\n \"noiseCoordinates2\",\r\n ],\r\n uniformsNames: [\r\n \"currentCount\",\r\n \"timeDelta\",\r\n \"emitterWM\",\r\n \"lifeTime\",\r\n \"color1\",\r\n \"color2\",\r\n \"sizeRange\",\r\n \"scaleRange\",\r\n \"gravity\",\r\n \"emitPower\",\r\n \"direction1\",\r\n \"direction2\",\r\n \"minEmitBox\",\r\n \"maxEmitBox\",\r\n \"radius\",\r\n \"directionRandomizer\",\r\n \"height\",\r\n \"coneAngle\",\r\n \"stopFactor\",\r\n \"angleRange\",\r\n \"radiusRange\",\r\n \"cellInfos\",\r\n \"noiseStrength\",\r\n \"limitVelocityDamping\",\r\n ],\r\n uniformBuffersNames: [],\r\n samplers: [\r\n \"randomSampler\",\r\n \"randomSampler2\",\r\n \"sizeGradientSampler\",\r\n \"angularSpeedGradientSampler\",\r\n \"velocityGradientSampler\",\r\n \"limitVelocityGradientSampler\",\r\n \"noiseSampler\",\r\n \"dragGradientSampler\",\r\n ],\r\n defines: \"\",\r\n fallbacks: null,\r\n onCompiled: null,\r\n onError: null,\r\n indexParameters: null,\r\n maxSimultaneousLights: 0,\r\n transformFeedbackVaryings: [],\r\n };\r\n }\r\n\r\n public isUpdateBufferCreated(): boolean {\r\n return !!this._updateEffect;\r\n }\r\n\r\n public isUpdateBufferReady(): boolean {\r\n return this._updateEffect?.isReady() ?? false;\r\n }\r\n\r\n public createUpdateBuffer(defines: string): UniformBufferEffectCommonAccessor {\r\n this._updateEffectOptions.transformFeedbackVaryings = [\"outPosition\"];\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outAge\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outSize\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outLife\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outSeed\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outDirection\");\r\n\r\n if (this._parent.particleEmitterType instanceof CustomParticleEmitter) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outInitialPosition\");\r\n }\r\n\r\n if (!this._parent._colorGradientsTexture) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outColor\");\r\n }\r\n\r\n if (!this._parent._isBillboardBased) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outInitialDirection\");\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outNoiseCoordinates1\");\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outNoiseCoordinates2\");\r\n }\r\n\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outAngle\");\r\n\r\n if (this._parent.isAnimationSheetEnabled) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outCellIndex\");\r\n if (this._parent.spriteRandomStartCell) {\r\n this._updateEffectOptions.transformFeedbackVaryings.push(\"outCellStartOffset\");\r\n }\r\n }\r\n\r\n this._updateEffectOptions.defines = defines;\r\n this._updateEffect = new Effect(\"gpuUpdateParticles\", this._updateEffectOptions, this._engine);\r\n\r\n return new UniformBufferEffectCommonAccessor(this._updateEffect);\r\n }\r\n\r\n public createVertexBuffers(updateBuffer: Buffer, renderVertexBuffers: { [key: string]: VertexBuffer }): void {\r\n this._updateVAO.push(this._createUpdateVAO(updateBuffer));\r\n\r\n this._renderVAO.push(this._engine.recordVertexArrayObject(renderVertexBuffers, null, this._parent._getWrapper(this._parent.blendMode).effect!));\r\n this._engine.bindArrayBuffer(null);\r\n }\r\n\r\n public createParticleBuffer(data: number[]): DataArray | DataBuffer {\r\n return data;\r\n }\r\n\r\n public bindDrawBuffers(index: number): void {\r\n this._engine.bindVertexArrayObject(this._renderVAO[index], null);\r\n }\r\n\r\n public preUpdateParticleBuffer(): void {\r\n const engine = this._engine as Engine;\r\n\r\n this._engine.enableEffect(this._updateEffect);\r\n\r\n if (!engine.setState) {\r\n throw new Error(\"GPU particles cannot work without a full Engine. ThinEngine is not supported\");\r\n }\r\n }\r\n\r\n public updateParticleBuffer(index: number, targetBuffer: Buffer, currentActiveCount: number): void {\r\n this._updateEffect.setTexture(\"randomSampler\", this._parent._randomTexture);\r\n this._updateEffect.setTexture(\"randomSampler2\", this._parent._randomTexture2);\r\n\r\n if (this._parent._sizeGradientsTexture) {\r\n this._updateEffect.setTexture(\"sizeGradientSampler\", this._parent._sizeGradientsTexture);\r\n }\r\n\r\n if (this._parent._angularSpeedGradientsTexture) {\r\n this._updateEffect.setTexture(\"angularSpeedGradientSampler\", this._parent._angularSpeedGradientsTexture);\r\n }\r\n\r\n if (this._parent._velocityGradientsTexture) {\r\n this._updateEffect.setTexture(\"velocityGradientSampler\", this._parent._velocityGradientsTexture);\r\n }\r\n\r\n if (this._parent._limitVelocityGradientsTexture) {\r\n this._updateEffect.setTexture(\"limitVelocityGradientSampler\", this._parent._limitVelocityGradientsTexture);\r\n }\r\n\r\n if (this._parent._dragGradientsTexture) {\r\n this._updateEffect.setTexture(\"dragGradientSampler\", this._parent._dragGradientsTexture);\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n this._updateEffect.setTexture(\"noiseSampler\", this._parent.noiseTexture);\r\n }\r\n\r\n // Bind source VAO\r\n this._engine.bindVertexArrayObject(this._updateVAO[index], null);\r\n\r\n // Update\r\n const engine = this._engine as Engine;\r\n\r\n engine.bindTransformFeedbackBuffer(targetBuffer.getBuffer());\r\n engine.setRasterizerState(false);\r\n engine.beginTransformFeedback(true);\r\n engine.drawArraysType(Constants.MATERIAL_PointListDrawMode, 0, currentActiveCount);\r\n engine.endTransformFeedback();\r\n engine.setRasterizerState(true);\r\n engine.bindTransformFeedbackBuffer(null);\r\n }\r\n\r\n public releaseBuffers(): void {}\r\n\r\n public releaseVertexBuffers(): void {\r\n for (let index = 0; index < this._updateVAO.length; index++) {\r\n this._engine.releaseVertexArrayObject(this._updateVAO[index]);\r\n }\r\n this._updateVAO.length = 0;\r\n\r\n for (let index = 0; index < this._renderVAO.length; index++) {\r\n this._engine.releaseVertexArrayObject(this._renderVAO[index]);\r\n }\r\n this._renderVAO.length = 0;\r\n }\r\n\r\n private _createUpdateVAO(source: Buffer): WebGLVertexArrayObject {\r\n const updateVertexBuffers: { [key: string]: VertexBuffer } = {};\r\n updateVertexBuffers[\"position\"] = source.createVertexBuffer(\"position\", 0, 3);\r\n\r\n let offset = 3;\r\n updateVertexBuffers[\"age\"] = source.createVertexBuffer(\"age\", offset, 1);\r\n offset += 1;\r\n updateVertexBuffers[\"size\"] = source.createVertexBuffer(\"size\", offset, 3);\r\n offset += 3;\r\n updateVertexBuffers[\"life\"] = source.createVertexBuffer(\"life\", offset, 1);\r\n offset += 1;\r\n updateVertexBuffers[\"seed\"] = source.createVertexBuffer(\"seed\", offset, 4);\r\n offset += 4;\r\n updateVertexBuffers[\"direction\"] = source.createVertexBuffer(\"direction\", offset, 3);\r\n offset += 3;\r\n\r\n if (this._parent.particleEmitterType instanceof CustomParticleEmitter) {\r\n updateVertexBuffers[\"initialPosition\"] = source.createVertexBuffer(\"initialPosition\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (!this._parent._colorGradientsTexture) {\r\n updateVertexBuffers[\"color\"] = source.createVertexBuffer(\"color\", offset, 4);\r\n offset += 4;\r\n }\r\n\r\n if (!this._parent._isBillboardBased) {\r\n updateVertexBuffers[\"initialDirection\"] = source.createVertexBuffer(\"initialDirection\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (this._parent.noiseTexture) {\r\n updateVertexBuffers[\"noiseCoordinates1\"] = source.createVertexBuffer(\"noiseCoordinates1\", offset, 3);\r\n offset += 3;\r\n updateVertexBuffers[\"noiseCoordinates2\"] = source.createVertexBuffer(\"noiseCoordinates2\", offset, 3);\r\n offset += 3;\r\n }\r\n\r\n if (this._parent._angularSpeedGradientsTexture) {\r\n updateVertexBuffers[\"angle\"] = source.createVertexBuffer(\"angle\", offset, 1);\r\n offset += 1;\r\n } else {\r\n updateVertexBuffers[\"angle\"] = source.createVertexBuffer(\"angle\", offset, 2);\r\n offset += 2;\r\n }\r\n\r\n if (this._parent._isAnimationSheetEnabled) {\r\n updateVertexBuffers[\"cellIndex\"] = source.createVertexBuffer(\"cellIndex\", offset, 1);\r\n offset += 1;\r\n if (this._parent.spriteRandomStartCell) {\r\n updateVertexBuffers[\"cellStartOffset\"] = source.createVertexBuffer(\"cellStartOffset\", offset, 1);\r\n offset += 1;\r\n }\r\n }\r\n\r\n const vao = this._engine.recordVertexArrayObject(updateVertexBuffers, null, this._updateEffect);\r\n this._engine.bindArrayBuffer(null);\r\n\r\n return vao;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.WebGL2ParticleSystem\", WebGL2ParticleSystem);\r\n"]}
@@ -313,7 +313,7 @@ class PhysicsRadialExplosionEvent {
313
313
  this._scene = _scene;
314
314
  this._options = _options;
315
315
  this._dataFetched = false; // check if the data has been fetched. If not, do cleanup
316
- this._options = { ...new PhysicsRadialExplosionEventOptions(), ...this._options };
316
+ this._options = Object.assign(Object.assign({}, new PhysicsRadialExplosionEventOptions()), this._options);
317
317
  }
318
318
  /**
319
319
  * Returns the data related to the radial explosion event (sphere).
@@ -453,7 +453,7 @@ class PhysicsGravitationalFieldEvent {
453
453
  this._origin = _origin;
454
454
  this._options = _options;
455
455
  this._dataFetched = false; // check if the has been fetched the data. If not, do cleanup
456
- this._options = { ...new PhysicsRadialExplosionEventOptions(), ...this._options };
456
+ this._options = Object.assign(Object.assign({}, new PhysicsRadialExplosionEventOptions()), this._options);
457
457
  this._tickCallback = this._tick.bind(this);
458
458
  this._options.strength = this._options.strength * -1;
459
459
  }
@@ -532,7 +532,7 @@ class PhysicsUpdraftEvent {
532
532
  this._cylinderPosition = Vector3.Zero(); // to keep the cylinders position, because normally the origin is in the center and not on the bottom
533
533
  this._dataFetched = false; // check if the has been fetched the data. If not, do cleanup
534
534
  this._physicsEngine = this._scene.getPhysicsEngine();
535
- this._options = { ...new PhysicsUpdraftEventOptions(), ...this._options };
535
+ this._options = Object.assign(Object.assign({}, new PhysicsUpdraftEventOptions()), this._options);
536
536
  this._origin.addToRef(new Vector3(0, this._options.height / 2, 0), this._cylinderPosition);
537
537
  this._origin.addToRef(new Vector3(0, this._options.height, 0), this._originTop);
538
538
  if (this._options.updraftMode === PhysicsUpdraftMode.Perpendicular) {
@@ -685,7 +685,7 @@ class PhysicsVortexEvent {
685
685
  this._cylinderPosition = Vector3.Zero(); // to keep the cylinders position, because normally the origin is in the center and not on the bottom
686
686
  this._dataFetched = false; // check if the has been fetched the data. If not, do cleanup
687
687
  this._physicsEngine = this._scene.getPhysicsEngine();
688
- this._options = { ...new PhysicsVortexEventOptions(), ...this._options };
688
+ this._options = Object.assign(Object.assign({}, new PhysicsVortexEventOptions()), this._options);
689
689
  this._origin.addToRef(new Vector3(0, this._options.height / 2, 0), this._cylinderPosition);
690
690
  this._origin.addToRef(new Vector3(0, this._options.height, 0), this._originTop);
691
691
  this._tickCallback = this._tick.bind(this);