@babylonjs/core 8.11.0 → 8.12.1

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 (391) hide show
  1. package/Cameras/arcRotateCamera.js +8 -0
  2. package/Cameras/arcRotateCamera.js.map +1 -1
  3. package/Cameras/targetCamera.js +2 -0
  4. package/Cameras/targetCamera.js.map +1 -1
  5. package/Collisions/gpuPicker.d.ts +4 -0
  6. package/Collisions/gpuPicker.js +6 -0
  7. package/Collisions/gpuPicker.js.map +1 -1
  8. package/Engines/abstractEngine.js +2 -2
  9. package/Engines/abstractEngine.js.map +1 -1
  10. package/Engines/constants.d.ts +4 -0
  11. package/Engines/constants.js +4 -0
  12. package/Engines/constants.js.map +1 -1
  13. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.d.ts +1 -0
  14. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +2 -0
  15. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  16. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.d.ts +6 -1
  17. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js +29 -0
  18. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -1
  19. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +6 -0
  20. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +36 -9
  21. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
  22. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js +1 -0
  23. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -1
  24. package/FrameGraph/Node/Blocks/inputBlock.js +1 -0
  25. package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
  26. package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +2 -0
  27. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +2 -0
  28. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
  29. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +23 -0
  30. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +126 -21
  31. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  32. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +5 -0
  33. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +4 -0
  34. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  35. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +2 -4
  36. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +4 -17
  37. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
  38. package/FrameGraph/frameGraph.js +1 -1
  39. package/FrameGraph/frameGraph.js.map +1 -1
  40. package/FrameGraph/frameGraphContext.d.ts +30 -0
  41. package/FrameGraph/frameGraphContext.js +47 -0
  42. package/FrameGraph/frameGraphContext.js.map +1 -1
  43. package/FrameGraph/frameGraphRenderContext.d.ts +1 -4
  44. package/FrameGraph/frameGraphRenderContext.js +2 -5
  45. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  46. package/Lights/Shadows/cascadedShadowGenerator.d.ts +0 -1
  47. package/Lights/Shadows/cascadedShadowGenerator.js +0 -12
  48. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  49. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +1 -1
  50. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +4 -1
  51. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  52. package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +2 -3
  53. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +1 -1
  54. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  55. package/Materials/Node/Blocks/Dual/fogBlock.d.ts +1 -1
  56. package/Materials/Node/Blocks/Dual/fogBlock.js +4 -1
  57. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  58. package/Materials/Node/Blocks/Dual/lightBlock.d.ts +1 -1
  59. package/Materials/Node/Blocks/Dual/lightBlock.js +2 -2
  60. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  61. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +1 -2
  62. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +1 -1
  63. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  64. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js +3 -4
  65. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js.map +1 -1
  66. package/Materials/Node/Blocks/Dual/textureBlock.d.ts +2 -3
  67. package/Materials/Node/Blocks/Dual/textureBlock.js +2 -2
  68. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  69. package/Materials/Node/Blocks/Fragment/TBNBlock.d.ts +1 -1
  70. package/Materials/Node/Blocks/Fragment/TBNBlock.js +4 -1
  71. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  72. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +2 -2
  73. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  74. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +1 -2
  75. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +1 -1
  76. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  77. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +2 -2
  78. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  79. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +1 -2
  80. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  81. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.d.ts +1 -1
  82. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +1 -1
  83. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  84. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.d.ts +1 -2
  85. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +1 -1
  86. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  87. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +2 -2
  88. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  89. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.d.ts +3 -3
  90. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.js +6 -3
  91. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.js.map +1 -1
  92. package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +1 -2
  93. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -4
  94. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  95. package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +1 -2
  96. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +1 -2
  97. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  98. package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +2 -3
  99. package/Materials/Node/Blocks/PBR/iridescenceBlock.js +1 -2
  100. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  101. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +1 -1
  102. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +5 -2
  103. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  104. package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +1 -2
  105. package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -2
  106. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  107. package/Materials/Node/Blocks/PBR/refractionBlock.d.ts +1 -2
  108. package/Materials/Node/Blocks/PBR/refractionBlock.js +1 -2
  109. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  110. package/Materials/Node/Blocks/PBR/sheenBlock.d.ts +2 -3
  111. package/Materials/Node/Blocks/PBR/sheenBlock.js +1 -2
  112. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  113. package/Materials/Node/Blocks/PBR/subSurfaceBlock.d.ts +2 -3
  114. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -2
  115. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  116. package/Materials/Node/Blocks/Particle/particleTextureBlock.d.ts +1 -2
  117. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +1 -1
  118. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  119. package/Materials/Node/Blocks/Vertex/bonesBlock.d.ts +2 -2
  120. package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
  121. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  122. package/Materials/Node/Blocks/Vertex/instancesBlock.d.ts +1 -1
  123. package/Materials/Node/Blocks/Vertex/instancesBlock.js +1 -1
  124. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  125. package/Materials/Node/Blocks/Vertex/lightInformationBlock.d.ts +1 -2
  126. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +1 -1
  127. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  128. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.d.ts +2 -2
  129. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +8 -2
  130. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  131. package/Materials/Node/Blocks/transformBlock.d.ts +3 -3
  132. package/Materials/Node/Blocks/transformBlock.js +4 -5
  133. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  134. package/Materials/Node/Blocks/triPlanarBlock.d.ts +1 -3
  135. package/Materials/Node/Blocks/triPlanarBlock.js +1 -1
  136. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  137. package/Materials/Node/nodeMaterial.d.ts +1 -1
  138. package/Materials/Node/nodeMaterial.js +28 -42
  139. package/Materials/Node/nodeMaterial.js.map +1 -1
  140. package/Materials/Node/nodeMaterialBlock.d.ts +8 -12
  141. package/Materials/Node/nodeMaterialBlock.js +10 -12
  142. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  143. package/Materials/Node/nodeMaterialBuildState.js +3 -1
  144. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  145. package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +7 -3
  146. package/Materials/Node/nodeMaterialBuildStateSharedData.js +17 -6
  147. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  148. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -0
  149. package/Materials/PBR/pbrBaseMaterial.js +11 -0
  150. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  151. package/Materials/Textures/Loaders/exrTextureLoader.d.ts +10 -0
  152. package/Materials/Textures/Loaders/exrTextureLoader.js +28 -1
  153. package/Materials/Textures/Loaders/exrTextureLoader.js.map +1 -1
  154. package/Materials/materialHelper.functions.js +1 -1
  155. package/Materials/materialHelper.functions.js.map +1 -1
  156. package/Materials/materialHelper.geometryrendering.js +7 -0
  157. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  158. package/Materials/standardMaterial.d.ts +2 -0
  159. package/Materials/standardMaterial.js +11 -0
  160. package/Materials/standardMaterial.js.map +1 -1
  161. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.d.ts +7 -0
  162. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js +11 -5
  163. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  164. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.d.ts +6 -0
  165. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js +42 -4
  166. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
  167. package/Meshes/Node/Blocks/geometryOptimizeBlock.js +8 -0
  168. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
  169. package/Misc/environmentTextureTools.js +1 -1
  170. package/Misc/environmentTextureTools.js.map +1 -1
  171. package/Misc/minMaxReducer.d.ts +8 -6
  172. package/Misc/minMaxReducer.js +57 -90
  173. package/Misc/minMaxReducer.js.map +1 -1
  174. package/Misc/observable.d.ts +1 -1
  175. package/Misc/observable.js.map +1 -1
  176. package/Misc/thinMinMaxReducer.d.ts +47 -0
  177. package/Misc/thinMinMaxReducer.js +148 -0
  178. package/Misc/thinMinMaxReducer.js.map +1 -0
  179. package/Particles/EmitterTypes/customParticleEmitter.d.ts +5 -0
  180. package/Particles/EmitterTypes/customParticleEmitter.js +9 -1
  181. package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
  182. package/Particles/IParticleSystem.d.ts +8 -0
  183. package/Particles/IParticleSystem.js.map +1 -1
  184. package/Particles/Node/Blocks/Conditions/particleConditionBlock.d.ts +75 -0
  185. package/Particles/Node/Blocks/Conditions/particleConditionBlock.js +179 -0
  186. package/Particles/Node/Blocks/Conditions/particleConditionBlock.js.map +1 -0
  187. package/Particles/Node/Blocks/Emitters/boxShapeBlock.d.ts +47 -0
  188. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +107 -0
  189. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -0
  190. package/Particles/Node/Blocks/Emitters/createParticleBlock.d.ts +46 -0
  191. package/Particles/Node/Blocks/Emitters/createParticleBlock.js +97 -0
  192. package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -0
  193. package/Particles/Node/Blocks/Emitters/customShapeBlock.d.ts +39 -0
  194. package/Particles/Node/Blocks/Emitters/customShapeBlock.js +84 -0
  195. package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -0
  196. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.d.ts +48 -0
  197. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +120 -0
  198. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -0
  199. package/Particles/Node/Blocks/Emitters/index.d.ts +7 -0
  200. package/Particles/Node/Blocks/Emitters/index.js +8 -0
  201. package/Particles/Node/Blocks/Emitters/index.js.map +1 -0
  202. package/Particles/Node/Blocks/Emitters/pointShapeBlock.d.ts +39 -0
  203. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +86 -0
  204. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -0
  205. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.d.ts +53 -0
  206. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.js +111 -0
  207. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.js.map +1 -0
  208. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.d.ts +43 -0
  209. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +108 -0
  210. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -0
  211. package/Particles/Node/Blocks/Teleport/particleTeleportInBlock.d.ts +48 -0
  212. package/Particles/Node/Blocks/Teleport/particleTeleportInBlock.js +100 -0
  213. package/Particles/Node/Blocks/Teleport/particleTeleportInBlock.js.map +1 -0
  214. package/Particles/Node/Blocks/Teleport/particleTeleportOutBlock.d.ts +47 -0
  215. package/Particles/Node/Blocks/Teleport/particleTeleportOutBlock.js +82 -0
  216. package/Particles/Node/Blocks/Teleport/particleTeleportOutBlock.js.map +1 -0
  217. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.d.ts +48 -0
  218. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.js +133 -0
  219. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.js.map +1 -0
  220. package/Particles/Node/Blocks/Triggers/triggerTools.d.ts +9 -0
  221. package/Particles/Node/Blocks/Triggers/triggerTools.js +16 -0
  222. package/Particles/Node/Blocks/Triggers/triggerTools.js.map +1 -0
  223. package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.d.ts +31 -0
  224. package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js +64 -0
  225. package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js.map +1 -0
  226. package/Particles/Node/Blocks/Update/basicSpriteUpdateBlock.d.ts +31 -0
  227. package/Particles/Node/Blocks/Update/basicSpriteUpdateBlock.js +63 -0
  228. package/Particles/Node/Blocks/Update/basicSpriteUpdateBlock.js.map +1 -0
  229. package/Particles/Node/Blocks/Update/updateAngleBlock.d.ts +35 -0
  230. package/Particles/Node/Blocks/Update/updateAngleBlock.js +73 -0
  231. package/Particles/Node/Blocks/Update/updateAngleBlock.js.map +1 -0
  232. package/Particles/Node/Blocks/Update/updateColorBlock.d.ts +35 -0
  233. package/Particles/Node/Blocks/Update/updateColorBlock.js +73 -0
  234. package/Particles/Node/Blocks/Update/updateColorBlock.js.map +1 -0
  235. package/Particles/Node/Blocks/Update/updateDirectionBlock.d.ts +35 -0
  236. package/Particles/Node/Blocks/Update/updateDirectionBlock.js +73 -0
  237. package/Particles/Node/Blocks/Update/updateDirectionBlock.js.map +1 -0
  238. package/Particles/Node/Blocks/Update/updateFlowMapBlock.d.ts +41 -0
  239. package/Particles/Node/Blocks/Update/updateFlowMapBlock.js +102 -0
  240. package/Particles/Node/Blocks/Update/updateFlowMapBlock.js.map +1 -0
  241. package/Particles/Node/Blocks/Update/updatePositionBlock.d.ts +35 -0
  242. package/Particles/Node/Blocks/Update/updatePositionBlock.js +73 -0
  243. package/Particles/Node/Blocks/Update/updatePositionBlock.js.map +1 -0
  244. package/Particles/Node/Blocks/Update/updateScaleBlock.d.ts +35 -0
  245. package/Particles/Node/Blocks/Update/updateScaleBlock.js +73 -0
  246. package/Particles/Node/Blocks/Update/updateScaleBlock.js.map +1 -0
  247. package/Particles/Node/Blocks/Update/updateSpriteCellIndexBlock.d.ts +35 -0
  248. package/Particles/Node/Blocks/Update/updateSpriteCellIndexBlock.js +74 -0
  249. package/Particles/Node/Blocks/Update/updateSpriteCellIndexBlock.js.map +1 -0
  250. package/Particles/Node/Blocks/index.d.ts +27 -0
  251. package/Particles/Node/Blocks/index.js +29 -0
  252. package/Particles/Node/Blocks/index.js.map +1 -0
  253. package/Particles/Node/Blocks/particleConverterBlock.d.ts +85 -0
  254. package/Particles/Node/Blocks/particleConverterBlock.js +267 -0
  255. package/Particles/Node/Blocks/particleConverterBlock.js.map +1 -0
  256. package/Particles/Node/Blocks/particleDebugBlock.d.ts +37 -0
  257. package/Particles/Node/Blocks/particleDebugBlock.js +109 -0
  258. package/Particles/Node/Blocks/particleDebugBlock.js.map +1 -0
  259. package/Particles/Node/Blocks/particleElbowBlock.d.ts +27 -0
  260. package/Particles/Node/Blocks/particleElbowBlock.js +47 -0
  261. package/Particles/Node/Blocks/particleElbowBlock.js.map +1 -0
  262. package/Particles/Node/Blocks/particleGradientBlock.d.ts +28 -0
  263. package/Particles/Node/Blocks/particleGradientBlock.js +118 -0
  264. package/Particles/Node/Blocks/particleGradientBlock.js.map +1 -0
  265. package/Particles/Node/Blocks/particleGradientValueBlock.d.ts +32 -0
  266. package/Particles/Node/Blocks/particleGradientValueBlock.js +79 -0
  267. package/Particles/Node/Blocks/particleGradientValueBlock.js.map +1 -0
  268. package/Particles/Node/Blocks/particleInputBlock.d.ts +87 -0
  269. package/Particles/Node/Blocks/particleInputBlock.js +279 -0
  270. package/Particles/Node/Blocks/particleInputBlock.js.map +1 -0
  271. package/Particles/Node/Blocks/particleLerpBlock.d.ts +34 -0
  272. package/Particles/Node/Blocks/particleLerpBlock.js +92 -0
  273. package/Particles/Node/Blocks/particleLerpBlock.js.map +1 -0
  274. package/Particles/Node/Blocks/particleMathBlock.d.ts +64 -0
  275. package/Particles/Node/Blocks/particleMathBlock.js +321 -0
  276. package/Particles/Node/Blocks/particleMathBlock.js.map +1 -0
  277. package/Particles/Node/Blocks/particleRandomBlock.d.ts +52 -0
  278. package/Particles/Node/Blocks/particleRandomBlock.js +161 -0
  279. package/Particles/Node/Blocks/particleRandomBlock.js.map +1 -0
  280. package/Particles/Node/Blocks/particleSourceTextureBlock.d.ts +65 -0
  281. package/Particles/Node/Blocks/particleSourceTextureBlock.js +173 -0
  282. package/Particles/Node/Blocks/particleSourceTextureBlock.js.map +1 -0
  283. package/Particles/Node/Blocks/particleTrigonometryBlock.d.ts +80 -0
  284. package/Particles/Node/Blocks/particleTrigonometryBlock.js +272 -0
  285. package/Particles/Node/Blocks/particleTrigonometryBlock.js.map +1 -0
  286. package/Particles/Node/Blocks/randomRangeBlock.d.ts +45 -0
  287. package/Particles/Node/Blocks/randomRangeBlock.js +151 -0
  288. package/Particles/Node/Blocks/randomRangeBlock.js.map +1 -0
  289. package/Particles/Node/Blocks/systemBlock.d.ts +71 -0
  290. package/Particles/Node/Blocks/systemBlock.js +193 -0
  291. package/Particles/Node/Blocks/systemBlock.js.map +1 -0
  292. package/Particles/Node/Enums/nodeParticleBlockConnectionPointTypes.d.ts +39 -0
  293. package/Particles/Node/Enums/nodeParticleBlockConnectionPointTypes.js +41 -0
  294. package/Particles/Node/Enums/nodeParticleBlockConnectionPointTypes.js.map +1 -0
  295. package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +31 -0
  296. package/Particles/Node/Enums/nodeParticleContextualSources.js +34 -0
  297. package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -0
  298. package/Particles/Node/Enums/nodeParticleSystemSources.d.ts +13 -0
  299. package/Particles/Node/Enums/nodeParticleSystemSources.js +15 -0
  300. package/Particles/Node/Enums/nodeParticleSystemSources.js.map +1 -0
  301. package/Particles/Node/index.d.ts +8 -0
  302. package/Particles/Node/index.js +10 -0
  303. package/Particles/Node/index.js.map +1 -0
  304. package/Particles/Node/nodeParticleBlock.d.ts +154 -0
  305. package/Particles/Node/nodeParticleBlock.js +355 -0
  306. package/Particles/Node/nodeParticleBlock.js.map +1 -0
  307. package/Particles/Node/nodeParticleBlockConnectionPoint.d.ts +188 -0
  308. package/Particles/Node/nodeParticleBlockConnectionPoint.js +337 -0
  309. package/Particles/Node/nodeParticleBlockConnectionPoint.js.map +1 -0
  310. package/Particles/Node/nodeParticleBuildState.d.ts +89 -0
  311. package/Particles/Node/nodeParticleBuildState.js +170 -0
  312. package/Particles/Node/nodeParticleBuildState.js.map +1 -0
  313. package/Particles/Node/nodeParticleSystemSet.d.ts +121 -0
  314. package/Particles/Node/nodeParticleSystemSet.js +383 -0
  315. package/Particles/Node/nodeParticleSystemSet.js.map +1 -0
  316. package/Particles/Queue/executionQueue.d.ts +2 -0
  317. package/Particles/Queue/executionQueue.js +10 -0
  318. package/Particles/Queue/executionQueue.js.map +1 -1
  319. package/Particles/baseParticleSystem.d.ts +6 -1
  320. package/Particles/baseParticleSystem.js +7 -0
  321. package/Particles/baseParticleSystem.js.map +1 -1
  322. package/Particles/flowMap.d.ts +7 -0
  323. package/Particles/flowMap.js +32 -0
  324. package/Particles/flowMap.js.map +1 -1
  325. package/Particles/gpuParticleSystem.d.ts +4 -0
  326. package/Particles/gpuParticleSystem.js +4 -0
  327. package/Particles/gpuParticleSystem.js.map +1 -1
  328. package/Particles/index.d.ts +1 -0
  329. package/Particles/index.js +1 -0
  330. package/Particles/index.js.map +1 -1
  331. package/Particles/particleSystem.d.ts +12 -0
  332. package/Particles/particleSystem.js +22 -1
  333. package/Particles/particleSystem.js.map +1 -1
  334. package/Particles/thinParticleSystem.d.ts +32 -11
  335. package/Particles/thinParticleSystem.js +62 -36
  336. package/Particles/thinParticleSystem.js.map +1 -1
  337. package/PostProcesses/postProcessManager.d.ts +2 -1
  338. package/PostProcesses/postProcessManager.js +3 -2
  339. package/PostProcesses/postProcessManager.js.map +1 -1
  340. package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
  341. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  342. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -0
  343. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  344. package/Shaders/ShadersInclude/lightFragment.js +5 -2
  345. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  346. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +3 -0
  347. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  348. package/Shaders/ShadersInclude/pbrBlockPrePass.js +3 -0
  349. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  350. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
  351. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  352. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  353. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  354. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -0
  355. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  356. package/Shaders/ShadersInclude/prePassDeclaration.js +3 -0
  357. package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
  358. package/Shaders/ShadersInclude/prePassVertex.js +3 -0
  359. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  360. package/Shaders/ShadersInclude/prePassVertexDeclaration.js +3 -0
  361. package/Shaders/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  362. package/Shaders/default.fragment.js +3 -0
  363. package/Shaders/default.fragment.js.map +1 -1
  364. package/Shaders/minmaxRedux.fragment.js +13 -5
  365. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  366. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js +1 -1
  367. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  368. package/ShadersWGSL/ShadersInclude/lightFragment.js +5 -2
  369. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  370. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +3 -0
  371. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  372. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +3 -0
  373. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  374. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
  375. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  376. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +1 -1
  377. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  378. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +3 -0
  379. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
  380. package/ShadersWGSL/ShadersInclude/prePassVertex.js +3 -0
  381. package/ShadersWGSL/ShadersInclude/prePassVertex.js.map +1 -1
  382. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js +3 -0
  383. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  384. package/ShadersWGSL/default.fragment.js +3 -0
  385. package/ShadersWGSL/default.fragment.js.map +1 -1
  386. package/ShadersWGSL/minmaxRedux.fragment.js +14 -6
  387. package/ShadersWGSL/minmaxRedux.fragment.js.map +1 -1
  388. package/package.json +1 -1
  389. package/scene.d.ts +5 -0
  390. package/scene.js +8 -0
  391. package/scene.js.map +1 -1
@@ -0,0 +1,383 @@
1
+ import { __decorate } from "../../tslib.es6.js";
2
+ import { serialize } from "../../Misc/decorators.js";
3
+ import { ParticleSystemSet } from "../particleSystemSet.js";
4
+ import { SystemBlock } from "./Blocks/systemBlock.js";
5
+ import { NodeParticleBuildState } from "./nodeParticleBuildState.js";
6
+ import { SerializationHelper } from "../../Misc/decorators.serialization.js";
7
+ import { Observable } from "../../Misc/observable.js";
8
+ import { GetClass } from "../../Misc/typeStore.js";
9
+ import { WebRequest } from "../../Misc/webRequest.js";
10
+
11
+ import { Tools } from "../../Misc/tools.js";
12
+ import { AbstractEngine } from "../../Engines/abstractEngine.js";
13
+ import { ParticleInputBlock } from "./Blocks/particleInputBlock.js";
14
+ import { ParticleTextureSourceBlock } from "./Blocks/particleSourceTextureBlock.js";
15
+ import { NodeParticleContextualSources } from "./Enums/nodeParticleContextualSources.js";
16
+ import { UpdatePositionBlock } from "./Blocks/Update/updatePositionBlock.js";
17
+ import { ParticleMathBlock, ParticleMathBlockOperations } from "./Blocks/particleMathBlock.js";
18
+ import { BoxShapeBlock } from "./Blocks/Emitters/boxShapeBlock.js";
19
+ import { CreateParticleBlock } from "./Blocks/Emitters/createParticleBlock.js";
20
+ /**
21
+ * Defines a set of particle systems defined as a node graph.
22
+ * @experimental This API is experimental and may change in future releases.
23
+ * NPE: #K6F1ZB
24
+ * PG: #ZT509U
25
+ */
26
+ export class NodeParticleSystemSet {
27
+ /**
28
+ * Gets the system blocks
29
+ */
30
+ get systemBlocks() {
31
+ return this._systemBlocks;
32
+ }
33
+ /**
34
+ * Gets the list of input blocks attached to this material
35
+ * @returns an array of InputBlocks
36
+ */
37
+ get inputBlocks() {
38
+ const blocks = [];
39
+ for (const block of this.attachedBlocks) {
40
+ if (block.isInput) {
41
+ blocks.push(block);
42
+ }
43
+ }
44
+ return blocks;
45
+ }
46
+ /**
47
+ * Creates a new set
48
+ * @param name defines the name of the set
49
+ */
50
+ constructor(name) {
51
+ this._systemBlocks = [];
52
+ this._buildId = 0;
53
+ /**
54
+ * Gets an array of blocks that needs to be serialized even if they are not yet connected
55
+ */
56
+ this.attachedBlocks = [];
57
+ /**
58
+ * Gets or sets data used by visual editor
59
+ * @see https://npe.babylonjs.com
60
+ */
61
+ this.editorData = null;
62
+ /**
63
+ * Observable raised when the particle set is built
64
+ */
65
+ this.onBuildObservable = new Observable();
66
+ this.name = name;
67
+ }
68
+ /**
69
+ * Gets the current class name of the geometry e.g. "NodeParticleSystemSet"
70
+ * @returns the class name
71
+ */
72
+ getClassName() {
73
+ return "NodeParticleSystemSet";
74
+ }
75
+ _initializeBlock(node, autoConfigure = true) {
76
+ if (this.attachedBlocks.indexOf(node) === -1) {
77
+ this.attachedBlocks.push(node);
78
+ }
79
+ for (const input of node.inputs) {
80
+ const connectedPoint = input.connectedPoint;
81
+ if (connectedPoint) {
82
+ const block = connectedPoint.ownerBlock;
83
+ if (block !== node) {
84
+ this._initializeBlock(block, autoConfigure);
85
+ }
86
+ }
87
+ }
88
+ }
89
+ /**
90
+ * Builds the particle system set from the defined blocks.
91
+ * @param scene defines the hosting scene
92
+ * @param verbose defines whether to log detailed information during the build process (false by default)
93
+ * @returns a promise that resolves to the built particle system set
94
+ */
95
+ async buildAsync(scene, verbose = false) {
96
+ return await new Promise((resolve) => {
97
+ const output = new ParticleSystemSet();
98
+ // Initialize all blocks
99
+ for (const block of this._systemBlocks) {
100
+ this._initializeBlock(block);
101
+ }
102
+ // Build the blocks
103
+ for (const block of this.systemBlocks) {
104
+ const state = new NodeParticleBuildState();
105
+ state.buildId = this._buildId++;
106
+ state.scene = scene;
107
+ state.verbose = verbose;
108
+ const system = block.createSystem(state);
109
+ // Errors
110
+ state.emitErrors();
111
+ output.systems.push(system);
112
+ }
113
+ this.onBuildObservable.notifyObservers(this);
114
+ resolve(output);
115
+ });
116
+ }
117
+ /**
118
+ * Clear the current geometry
119
+ */
120
+ clear() {
121
+ this.attachedBlocks.length = 0;
122
+ this._systemBlocks.length = 0;
123
+ }
124
+ /**
125
+ * Clear the current set and restore it to a default state
126
+ */
127
+ setToDefault() {
128
+ this.clear();
129
+ this.editorData = null;
130
+ // Main system
131
+ const system = new SystemBlock("Particle system");
132
+ // Update position
133
+ const updatePositionBlock = new UpdatePositionBlock("Update position");
134
+ updatePositionBlock.output.connectTo(system.particle);
135
+ // Contextual inputs
136
+ const positionBlock = new ParticleInputBlock("Position");
137
+ positionBlock.contextualValue = NodeParticleContextualSources.Position;
138
+ const directionBlock = new ParticleInputBlock("Scaled direction");
139
+ directionBlock.contextualValue = NodeParticleContextualSources.ScaledDirection;
140
+ // Add
141
+ const addBlock = new ParticleMathBlock("Add");
142
+ addBlock.operation = ParticleMathBlockOperations.Add;
143
+ positionBlock.output.connectTo(addBlock.left);
144
+ directionBlock.output.connectTo(addBlock.right);
145
+ addBlock.output.connectTo(updatePositionBlock.position);
146
+ // Create particle
147
+ const createParticleBlock = new CreateParticleBlock("Create particle");
148
+ // Shape
149
+ const emitterShape = new BoxShapeBlock("Box shape");
150
+ createParticleBlock.particle.connectTo(emitterShape.particle);
151
+ emitterShape.output.connectTo(updatePositionBlock.particle);
152
+ // Texture
153
+ const textureBlock = new ParticleTextureSourceBlock("Texture");
154
+ textureBlock.texture.connectTo(system.texture);
155
+ textureBlock.url = "https://assets.babylonjs.com/textures/flare.png";
156
+ this._systemBlocks.push(system);
157
+ }
158
+ /**
159
+ * Remove a block from the current system set
160
+ * @param block defines the block to remove
161
+ */
162
+ removeBlock(block) {
163
+ const attachedBlockIndex = this.attachedBlocks.indexOf(block);
164
+ if (attachedBlockIndex > -1) {
165
+ this.attachedBlocks.splice(attachedBlockIndex, 1);
166
+ }
167
+ if (block.isSystem) {
168
+ const index = this._systemBlocks.indexOf(block);
169
+ if (index > -1) {
170
+ this._systemBlocks.splice(index, 1);
171
+ }
172
+ }
173
+ }
174
+ /**
175
+ * Clear the current graph and load a new one from a serialization object
176
+ * @param source defines the JSON representation of the particle set
177
+ * @param merge defines whether or not the source must be merged or replace the current content
178
+ */
179
+ parseSerializedObject(source, merge = false) {
180
+ if (!merge) {
181
+ this.clear();
182
+ }
183
+ const map = {};
184
+ // Create blocks
185
+ for (const parsedBlock of source.blocks) {
186
+ const blockType = GetClass(parsedBlock.customType);
187
+ if (blockType) {
188
+ const block = new blockType();
189
+ block._deserialize(parsedBlock);
190
+ map[parsedBlock.id] = block;
191
+ this.attachedBlocks.push(block);
192
+ if (block.isSystem) {
193
+ this._systemBlocks.push(block);
194
+ }
195
+ }
196
+ }
197
+ // Reconnect teleportation
198
+ for (const block of this.attachedBlocks) {
199
+ if (block.isTeleportOut) {
200
+ const teleportOut = block;
201
+ const id = teleportOut._tempEntryPointUniqueId;
202
+ if (id) {
203
+ const source = map[id];
204
+ if (source) {
205
+ source.attachToEndpoint(teleportOut);
206
+ }
207
+ }
208
+ }
209
+ }
210
+ // Connections - Starts with input blocks only (except if in "merge" mode where we scan all blocks)
211
+ for (let blockIndex = 0; blockIndex < source.blocks.length; blockIndex++) {
212
+ const parsedBlock = source.blocks[blockIndex];
213
+ const block = map[parsedBlock.id];
214
+ if (!block) {
215
+ continue;
216
+ }
217
+ if (block.inputs.length && parsedBlock.inputs.some((i) => i.targetConnectionName) && !merge) {
218
+ continue;
219
+ }
220
+ this._restoreConnections(block, source, map);
221
+ }
222
+ // UI related info
223
+ if (source.locations || (source.editorData && source.editorData.locations)) {
224
+ const locations = source.locations || source.editorData.locations;
225
+ for (const location of locations) {
226
+ if (map[location.blockId]) {
227
+ location.blockId = map[location.blockId].uniqueId;
228
+ }
229
+ }
230
+ if (merge && this.editorData && this.editorData.locations) {
231
+ locations.concat(this.editorData.locations);
232
+ }
233
+ if (source.locations) {
234
+ this.editorData = {
235
+ locations: locations,
236
+ };
237
+ }
238
+ else {
239
+ this.editorData = source.editorData;
240
+ this.editorData.locations = locations;
241
+ }
242
+ const blockMap = [];
243
+ for (const key in map) {
244
+ blockMap[key] = map[key].uniqueId;
245
+ }
246
+ this.editorData.map = blockMap;
247
+ }
248
+ this.comment = source.comment;
249
+ }
250
+ _restoreConnections(block, source, map) {
251
+ for (const outputPoint of block.outputs) {
252
+ for (const candidate of source.blocks) {
253
+ const target = map[candidate.id];
254
+ if (!target) {
255
+ continue;
256
+ }
257
+ for (const input of candidate.inputs) {
258
+ if (map[input.targetBlockId] === block && input.targetConnectionName === outputPoint.name) {
259
+ const inputPoint = target.getInputByName(input.inputName);
260
+ if (!inputPoint || inputPoint.isConnected) {
261
+ continue;
262
+ }
263
+ outputPoint.connectTo(inputPoint, true);
264
+ this._restoreConnections(target, source, map);
265
+ continue;
266
+ }
267
+ }
268
+ }
269
+ }
270
+ }
271
+ /**
272
+ * Serializes this geometry in a JSON representation
273
+ * @param selectedBlocks defines the list of blocks to save (if null the whole geometry will be saved)
274
+ * @returns the serialized geometry object
275
+ */
276
+ serialize(selectedBlocks) {
277
+ const serializationObject = selectedBlocks ? {} : SerializationHelper.Serialize(this);
278
+ serializationObject.editorData = JSON.parse(JSON.stringify(this.editorData)); // Copy
279
+ let blocks = [];
280
+ if (selectedBlocks) {
281
+ blocks = selectedBlocks;
282
+ }
283
+ else {
284
+ serializationObject.customType = "BABYLON.NodeParticleSystemSet";
285
+ }
286
+ // Blocks
287
+ serializationObject.blocks = [];
288
+ for (const block of blocks) {
289
+ serializationObject.blocks.push(block.serialize());
290
+ }
291
+ if (!selectedBlocks) {
292
+ for (const block of this.attachedBlocks) {
293
+ if (blocks.indexOf(block) !== -1) {
294
+ continue;
295
+ }
296
+ serializationObject.blocks.push(block.serialize());
297
+ }
298
+ }
299
+ return serializationObject;
300
+ }
301
+ /**
302
+ * Disposes the resources
303
+ */
304
+ dispose() {
305
+ for (const block of this.attachedBlocks) {
306
+ block.dispose();
307
+ }
308
+ this.attachedBlocks.length = 0;
309
+ this.onBuildObservable.clear();
310
+ }
311
+ /**
312
+ * Creates a new node particle set set to default basic configuration
313
+ * @param name defines the name of the particle set
314
+ * @returns a new NodeParticleSystemSet
315
+ */
316
+ static CreateDefault(name) {
317
+ const nodeParticleSet = new NodeParticleSystemSet(name);
318
+ nodeParticleSet.setToDefault();
319
+ return nodeParticleSet;
320
+ }
321
+ /**
322
+ * Creates a node particle set from parsed data
323
+ * @param source defines the JSON representation of the particle set
324
+ * @returns a new node particle set
325
+ */
326
+ static Parse(source) {
327
+ const nodeParticleSet = SerializationHelper.Parse(() => new NodeParticleSystemSet(source.name), source, null);
328
+ nodeParticleSet.parseSerializedObject(source);
329
+ return nodeParticleSet;
330
+ }
331
+ /**
332
+ * Creates a node particle set from a snippet saved by the node geometry editor
333
+ * @param snippetId defines the snippet to load
334
+ * @param nodeParticleSet defines a node particle set to update (instead of creating a new one)
335
+ * @returns a promise that will resolve to the new node geometry
336
+ */
337
+ // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax
338
+ static ParseFromSnippetAsync(snippetId, nodeParticleSet) {
339
+ if (snippetId === "_BLANK") {
340
+ return Promise.resolve(NodeParticleSystemSet.CreateDefault("blank"));
341
+ }
342
+ return new Promise((resolve, reject) => {
343
+ const request = new WebRequest();
344
+ request.addEventListener("readystatechange", () => {
345
+ if (request.readyState == 4) {
346
+ if (request.status == 200) {
347
+ const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);
348
+ const serializationObject = JSON.parse(snippet.nodeParticle);
349
+ if (!nodeParticleSet) {
350
+ nodeParticleSet = SerializationHelper.Parse(() => new NodeParticleSystemSet(snippetId), serializationObject, null);
351
+ }
352
+ nodeParticleSet.parseSerializedObject(serializationObject);
353
+ nodeParticleSet.snippetId = snippetId;
354
+ try {
355
+ resolve(nodeParticleSet);
356
+ }
357
+ catch (err) {
358
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
359
+ reject(err);
360
+ }
361
+ }
362
+ else {
363
+ // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
364
+ reject("Unable to load the snippet " + snippetId);
365
+ }
366
+ }
367
+ });
368
+ request.open("GET", this.SnippetUrl + "/" + snippetId.replace(/#/g, "/"));
369
+ request.send();
370
+ });
371
+ }
372
+ }
373
+ /** Define the Url to load node editor script */
374
+ NodeParticleSystemSet.EditorURL = `${Tools._DefaultCdnUrl}/v${AbstractEngine.Version}/nodeParticleEditor/babylon.nodeParticleEditor.js`;
375
+ /** Define the Url to load snippets */
376
+ NodeParticleSystemSet.SnippetUrl = `https://snippet.babylonjs.com`;
377
+ __decorate([
378
+ serialize()
379
+ ], NodeParticleSystemSet.prototype, "name", void 0);
380
+ __decorate([
381
+ serialize("comment")
382
+ ], NodeParticleSystemSet.prototype, "comment", void 0);
383
+ //# sourceMappingURL=nodeParticleSystemSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeParticleSystemSet.js","sourceRoot":"","sources":["../../../../../dev/core/src/Particles/Node/nodeParticleSystemSet.ts"],"names":[],"mappings":"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","sourcesContent":["import { serialize } from \"core/Misc/decorators\";\r\nimport { ParticleSystemSet } from \"../particleSystemSet\";\r\nimport { SystemBlock } from \"./Blocks/systemBlock\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { NodeParticleBuildState } from \"./nodeParticleBuildState\";\r\nimport type { NodeParticleBlock } from \"./nodeParticleBlock\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { GetClass } from \"core/Misc/typeStore\";\r\nimport { WebRequest } from \"core/Misc/webRequest\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { Tools } from \"core/Misc/tools\";\r\nimport { AbstractEngine } from \"core/Engines/abstractEngine\";\r\nimport { ParticleInputBlock } from \"./Blocks/particleInputBlock\";\r\nimport { ParticleTextureSourceBlock } from \"./Blocks/particleSourceTextureBlock\";\r\nimport { NodeParticleContextualSources } from \"./Enums/nodeParticleContextualSources\";\r\nimport { UpdatePositionBlock } from \"./Blocks/Update/updatePositionBlock\";\r\nimport { ParticleMathBlock, ParticleMathBlockOperations } from \"./Blocks/particleMathBlock\";\r\nimport type { ParticleTeleportOutBlock } from \"./Blocks/Teleport/particleTeleportOutBlock\";\r\nimport type { ParticleTeleportInBlock } from \"./Blocks/Teleport/particleTeleportInBlock\";\r\nimport { BoxShapeBlock } from \"./Blocks/Emitters/boxShapeBlock\";\r\nimport { CreateParticleBlock } from \"./Blocks/Emitters/createParticleBlock\";\r\n\r\n/**\r\n * Defines a set of particle systems defined as a node graph.\r\n * @experimental This API is experimental and may change in future releases.\r\n * NPE: #K6F1ZB\r\n * PG: #ZT509U\r\n */\r\nexport class NodeParticleSystemSet {\r\n private _systemBlocks: SystemBlock[] = [];\r\n private _buildId: number = 0;\r\n\r\n /** Define the Url to load node editor script */\r\n public static EditorURL = `${Tools._DefaultCdnUrl}/v${AbstractEngine.Version}/nodeParticleEditor/babylon.nodeParticleEditor.js`;\r\n\r\n /** Define the Url to load snippets */\r\n public static SnippetUrl = Constants.SnippetUrl;\r\n\r\n /**\r\n * Snippet ID if the material was created from the snippet server\r\n */\r\n public snippetId: string;\r\n\r\n /**\r\n * Gets an array of blocks that needs to be serialized even if they are not yet connected\r\n */\r\n public attachedBlocks: NodeParticleBlock[] = [];\r\n\r\n /**\r\n * Gets or sets data used by visual editor\r\n * @see https://npe.babylonjs.com\r\n */\r\n public editorData: any = null;\r\n\r\n /**\r\n * Observable raised when the particle set is built\r\n */\r\n public onBuildObservable = new Observable<NodeParticleSystemSet>();\r\n\r\n /**\r\n * The name of the set\r\n */\r\n @serialize()\r\n public name: string;\r\n\r\n /**\r\n * A free comment about the set\r\n */\r\n @serialize(\"comment\")\r\n public comment: string;\r\n\r\n /**\r\n * Gets the system blocks\r\n */\r\n public get systemBlocks(): SystemBlock[] {\r\n return this._systemBlocks;\r\n }\r\n\r\n /**\r\n * Gets the list of input blocks attached to this material\r\n * @returns an array of InputBlocks\r\n */\r\n public get inputBlocks() {\r\n const blocks: ParticleInputBlock[] = [];\r\n for (const block of this.attachedBlocks) {\r\n if (block.isInput) {\r\n blocks.push(block as ParticleInputBlock);\r\n }\r\n }\r\n\r\n return blocks;\r\n }\r\n\r\n /**\r\n * Creates a new set\r\n * @param name defines the name of the set\r\n */\r\n public constructor(name: string) {\r\n this.name = name;\r\n }\r\n\r\n /**\r\n * Gets the current class name of the geometry e.g. \"NodeParticleSystemSet\"\r\n * @returns the class name\r\n */\r\n public getClassName(): string {\r\n return \"NodeParticleSystemSet\";\r\n }\r\n\r\n private _initializeBlock(node: NodeParticleBlock, autoConfigure = true) {\r\n if (this.attachedBlocks.indexOf(node) === -1) {\r\n this.attachedBlocks.push(node);\r\n }\r\n\r\n for (const input of node.inputs) {\r\n const connectedPoint = input.connectedPoint;\r\n if (connectedPoint) {\r\n const block = connectedPoint.ownerBlock;\r\n if (block !== node) {\r\n this._initializeBlock(block, autoConfigure);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Builds the particle system set from the defined blocks.\r\n * @param scene defines the hosting scene\r\n * @param verbose defines whether to log detailed information during the build process (false by default)\r\n * @returns a promise that resolves to the built particle system set\r\n */\r\n public async buildAsync(scene: Scene, verbose = false): Promise<ParticleSystemSet> {\r\n return await new Promise<ParticleSystemSet>((resolve) => {\r\n const output = new ParticleSystemSet();\r\n\r\n // Initialize all blocks\r\n for (const block of this._systemBlocks) {\r\n this._initializeBlock(block);\r\n }\r\n\r\n // Build the blocks\r\n for (const block of this.systemBlocks) {\r\n const state = new NodeParticleBuildState();\r\n state.buildId = this._buildId++;\r\n state.scene = scene;\r\n state.verbose = verbose;\r\n\r\n const system = block.createSystem(state);\r\n\r\n // Errors\r\n state.emitErrors();\r\n\r\n output.systems.push(system);\r\n }\r\n\r\n this.onBuildObservable.notifyObservers(this);\r\n\r\n resolve(output);\r\n });\r\n }\r\n\r\n /**\r\n * Clear the current geometry\r\n */\r\n public clear() {\r\n this.attachedBlocks.length = 0;\r\n this._systemBlocks.length = 0;\r\n }\r\n\r\n /**\r\n * Clear the current set and restore it to a default state\r\n */\r\n public setToDefault() {\r\n this.clear();\r\n\r\n this.editorData = null;\r\n\r\n // Main system\r\n const system = new SystemBlock(\"Particle system\");\r\n\r\n // Update position\r\n const updatePositionBlock = new UpdatePositionBlock(\"Update position\");\r\n updatePositionBlock.output.connectTo(system.particle);\r\n\r\n // Contextual inputs\r\n const positionBlock = new ParticleInputBlock(\"Position\");\r\n positionBlock.contextualValue = NodeParticleContextualSources.Position;\r\n const directionBlock = new ParticleInputBlock(\"Scaled direction\");\r\n directionBlock.contextualValue = NodeParticleContextualSources.ScaledDirection;\r\n\r\n // Add\r\n const addBlock = new ParticleMathBlock(\"Add\");\r\n addBlock.operation = ParticleMathBlockOperations.Add;\r\n positionBlock.output.connectTo(addBlock.left);\r\n directionBlock.output.connectTo(addBlock.right);\r\n addBlock.output.connectTo(updatePositionBlock.position);\r\n\r\n // Create particle\r\n const createParticleBlock = new CreateParticleBlock(\"Create particle\");\r\n\r\n // Shape\r\n const emitterShape = new BoxShapeBlock(\"Box shape\");\r\n createParticleBlock.particle.connectTo(emitterShape.particle);\r\n emitterShape.output.connectTo(updatePositionBlock.particle);\r\n\r\n // Texture\r\n const textureBlock = new ParticleTextureSourceBlock(\"Texture\");\r\n textureBlock.texture.connectTo(system.texture);\r\n textureBlock.url = \"https://assets.babylonjs.com/textures/flare.png\";\r\n\r\n this._systemBlocks.push(system);\r\n }\r\n\r\n /**\r\n * Remove a block from the current system set\r\n * @param block defines the block to remove\r\n */\r\n public removeBlock(block: NodeParticleBlock) {\r\n const attachedBlockIndex = this.attachedBlocks.indexOf(block);\r\n if (attachedBlockIndex > -1) {\r\n this.attachedBlocks.splice(attachedBlockIndex, 1);\r\n }\r\n\r\n if (block.isSystem) {\r\n const index = this._systemBlocks.indexOf(block as SystemBlock);\r\n if (index > -1) {\r\n this._systemBlocks.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Clear the current graph and load a new one from a serialization object\r\n * @param source defines the JSON representation of the particle set\r\n * @param merge defines whether or not the source must be merged or replace the current content\r\n */\r\n public parseSerializedObject(source: any, merge = false) {\r\n if (!merge) {\r\n this.clear();\r\n }\r\n\r\n const map: { [key: number]: NodeParticleBlock } = {};\r\n\r\n // Create blocks\r\n for (const parsedBlock of source.blocks) {\r\n const blockType = GetClass(parsedBlock.customType);\r\n if (blockType) {\r\n const block: NodeParticleBlock = new blockType();\r\n block._deserialize(parsedBlock);\r\n map[parsedBlock.id] = block;\r\n\r\n this.attachedBlocks.push(block);\r\n\r\n if (block.isSystem) {\r\n this._systemBlocks.push(block as SystemBlock);\r\n }\r\n }\r\n }\r\n\r\n // Reconnect teleportation\r\n for (const block of this.attachedBlocks) {\r\n if (block.isTeleportOut) {\r\n const teleportOut = block as ParticleTeleportOutBlock;\r\n const id = teleportOut._tempEntryPointUniqueId;\r\n if (id) {\r\n const source = map[id] as ParticleTeleportInBlock;\r\n if (source) {\r\n source.attachToEndpoint(teleportOut);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Connections - Starts with input blocks only (except if in \"merge\" mode where we scan all blocks)\r\n for (let blockIndex = 0; blockIndex < source.blocks.length; blockIndex++) {\r\n const parsedBlock = source.blocks[blockIndex];\r\n const block = map[parsedBlock.id];\r\n\r\n if (!block) {\r\n continue;\r\n }\r\n\r\n if (block.inputs.length && parsedBlock.inputs.some((i: any) => i.targetConnectionName) && !merge) {\r\n continue;\r\n }\r\n this._restoreConnections(block, source, map);\r\n }\r\n\r\n // UI related info\r\n if (source.locations || (source.editorData && source.editorData.locations)) {\r\n const locations: {\r\n blockId: number;\r\n x: number;\r\n y: number;\r\n isCollapsed: boolean;\r\n }[] = source.locations || source.editorData.locations;\r\n\r\n for (const location of locations) {\r\n if (map[location.blockId]) {\r\n location.blockId = map[location.blockId].uniqueId;\r\n }\r\n }\r\n\r\n if (merge && this.editorData && this.editorData.locations) {\r\n locations.concat(this.editorData.locations);\r\n }\r\n\r\n if (source.locations) {\r\n this.editorData = {\r\n locations: locations,\r\n };\r\n } else {\r\n this.editorData = source.editorData;\r\n this.editorData.locations = locations;\r\n }\r\n\r\n const blockMap: number[] = [];\r\n\r\n for (const key in map) {\r\n blockMap[key] = map[key].uniqueId;\r\n }\r\n\r\n this.editorData.map = blockMap;\r\n }\r\n\r\n this.comment = source.comment;\r\n }\r\n\r\n private _restoreConnections(block: NodeParticleBlock, source: any, map: { [key: number]: NodeParticleBlock }) {\r\n for (const outputPoint of block.outputs) {\r\n for (const candidate of source.blocks) {\r\n const target = map[candidate.id];\r\n\r\n if (!target) {\r\n continue;\r\n }\r\n\r\n for (const input of candidate.inputs) {\r\n if (map[input.targetBlockId] === block && input.targetConnectionName === outputPoint.name) {\r\n const inputPoint = target.getInputByName(input.inputName);\r\n if (!inputPoint || inputPoint.isConnected) {\r\n continue;\r\n }\r\n\r\n outputPoint.connectTo(inputPoint, true);\r\n this._restoreConnections(target, source, map);\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Serializes this geometry in a JSON representation\r\n * @param selectedBlocks defines the list of blocks to save (if null the whole geometry will be saved)\r\n * @returns the serialized geometry object\r\n */\r\n public serialize(selectedBlocks?: NodeParticleBlock[]): any {\r\n const serializationObject = selectedBlocks ? {} : SerializationHelper.Serialize(this);\r\n serializationObject.editorData = JSON.parse(JSON.stringify(this.editorData)); // Copy\r\n\r\n let blocks: NodeParticleBlock[] = [];\r\n\r\n if (selectedBlocks) {\r\n blocks = selectedBlocks;\r\n } else {\r\n serializationObject.customType = \"BABYLON.NodeParticleSystemSet\";\r\n }\r\n\r\n // Blocks\r\n serializationObject.blocks = [];\r\n\r\n for (const block of blocks) {\r\n serializationObject.blocks.push(block.serialize());\r\n }\r\n\r\n if (!selectedBlocks) {\r\n for (const block of this.attachedBlocks) {\r\n if (blocks.indexOf(block) !== -1) {\r\n continue;\r\n }\r\n serializationObject.blocks.push(block.serialize());\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n /**\r\n * Disposes the resources\r\n */\r\n public dispose(): void {\r\n for (const block of this.attachedBlocks) {\r\n block.dispose();\r\n }\r\n\r\n this.attachedBlocks.length = 0;\r\n this.onBuildObservable.clear();\r\n }\r\n\r\n /**\r\n * Creates a new node particle set set to default basic configuration\r\n * @param name defines the name of the particle set\r\n * @returns a new NodeParticleSystemSet\r\n */\r\n public static CreateDefault(name: string) {\r\n const nodeParticleSet = new NodeParticleSystemSet(name);\r\n\r\n nodeParticleSet.setToDefault();\r\n\r\n return nodeParticleSet;\r\n }\r\n\r\n /**\r\n * Creates a node particle set from parsed data\r\n * @param source defines the JSON representation of the particle set\r\n * @returns a new node particle set\r\n */\r\n public static Parse(source: any): NodeParticleSystemSet {\r\n const nodeParticleSet = SerializationHelper.Parse(() => new NodeParticleSystemSet(source.name), source, null);\r\n\r\n nodeParticleSet.parseSerializedObject(source);\r\n\r\n return nodeParticleSet;\r\n }\r\n\r\n /**\r\n * Creates a node particle set from a snippet saved by the node geometry editor\r\n * @param snippetId defines the snippet to load\r\n * @param nodeParticleSet defines a node particle set to update (instead of creating a new one)\r\n * @returns a promise that will resolve to the new node geometry\r\n */\r\n // eslint-disable-next-line @typescript-eslint/promise-function-async, no-restricted-syntax\r\n public static ParseFromSnippetAsync(snippetId: string, nodeParticleSet?: NodeParticleSystemSet): Promise<NodeParticleSystemSet> {\r\n if (snippetId === \"_BLANK\") {\r\n return Promise.resolve(NodeParticleSystemSet.CreateDefault(\"blank\"));\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const request = new WebRequest();\r\n request.addEventListener(\"readystatechange\", () => {\r\n if (request.readyState == 4) {\r\n if (request.status == 200) {\r\n const snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\r\n const serializationObject = JSON.parse(snippet.nodeParticle);\r\n\r\n if (!nodeParticleSet) {\r\n nodeParticleSet = SerializationHelper.Parse(() => new NodeParticleSystemSet(snippetId), serializationObject, null);\r\n }\r\n\r\n nodeParticleSet.parseSerializedObject(serializationObject);\r\n nodeParticleSet.snippetId = snippetId;\r\n\r\n try {\r\n resolve(nodeParticleSet);\r\n } catch (err) {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(err);\r\n }\r\n } else {\r\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\r\n reject(\"Unable to load the snippet \" + snippetId);\r\n }\r\n }\r\n });\r\n\r\n request.open(\"GET\", this.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\r\n request.send();\r\n });\r\n }\r\n}\r\n"]}
@@ -15,4 +15,6 @@ export declare function _ConnectBefore(newOne: _IExecutionQueueItem, activeOne:
15
15
  /** @internal */
16
16
  export declare function _ConnectAfter(newOne: _IExecutionQueueItem, activeOne: _IExecutionQueueItem): void;
17
17
  /** @internal */
18
+ export declare function _ConnectAtTheEnd(newOne: _IExecutionQueueItem, root: _IExecutionQueueItem): void;
19
+ /** @internal */
18
20
  export declare function _RemoveFromQueue(item: _IExecutionQueueItem): void;
@@ -17,6 +17,16 @@ export function _ConnectAfter(newOne, activeOne) {
17
17
  activeOne.nextItem = newOne;
18
18
  }
19
19
  /** @internal */
20
+ export function _ConnectAtTheEnd(newOne, root) {
21
+ let activeOne = root;
22
+ while (activeOne.nextItem) {
23
+ activeOne = activeOne.nextItem;
24
+ }
25
+ newOne.previousItem = activeOne;
26
+ newOne.nextItem = activeOne.nextItem;
27
+ activeOne.nextItem = newOne;
28
+ }
29
+ /** @internal */
20
30
  export function _RemoveFromQueue(item) {
21
31
  if (item.previousItem) {
22
32
  item.previousItem.nextItem = item.nextItem;
@@ -1 +1 @@
1
- {"version":3,"file":"executionQueue.js","sourceRoot":"","sources":["../../../../../dev/core/src/Particles/Queue/executionQueue.ts"],"names":[],"mappings":"AAcA,gBAAgB;AAChB,MAAM,UAAU,cAAc,CAAC,MAA4B,EAAE,SAA+B;IACxF,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;IAC7C,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QACzB,SAAS,CAAC,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC7C,CAAC;IACD,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC;AACpC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,aAAa,CAAC,MAA4B,EAAE,SAA+B;IACvF,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IACrC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACrB,SAAS,CAAC,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC;IAC7C,CAAC;IACD,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC;AAChC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACvD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACnD,CAAC;AACL,CAAC","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { Particle } from \"../particle\";\r\nimport type { ThinParticleSystem } from \"../thinParticleSystem\";\r\n\r\n/** @internal */\r\nexport interface _IExecutionQueueItem {\r\n /** @internal */\r\n process: (particle: Particle, system: ThinParticleSystem) => void;\r\n /** @internal */\r\n previousItem: Nullable<_IExecutionQueueItem>;\r\n /** @internal */\r\n nextItem: Nullable<_IExecutionQueueItem>;\r\n}\r\n\r\n/** @internal */\r\nexport function _ConnectBefore(newOne: _IExecutionQueueItem, activeOne: _IExecutionQueueItem) {\r\n newOne.previousItem = activeOne.previousItem;\r\n newOne.nextItem = activeOne;\r\n if (activeOne.previousItem) {\r\n activeOne.previousItem.nextItem = newOne;\r\n }\r\n activeOne.previousItem = newOne;\r\n}\r\n\r\n/** @internal */\r\nexport function _ConnectAfter(newOne: _IExecutionQueueItem, activeOne: _IExecutionQueueItem) {\r\n newOne.previousItem = activeOne;\r\n newOne.nextItem = activeOne.nextItem;\r\n if (activeOne.nextItem) {\r\n activeOne.nextItem.previousItem = newOne;\r\n }\r\n activeOne.nextItem = newOne;\r\n}\r\n\r\n/** @internal */\r\nexport function _RemoveFromQueue(item: _IExecutionQueueItem) {\r\n if (item.previousItem) {\r\n item.previousItem.nextItem = item.nextItem;\r\n }\r\n if (item.nextItem) {\r\n item.nextItem.previousItem = item.previousItem;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"executionQueue.js","sourceRoot":"","sources":["../../../../../dev/core/src/Particles/Queue/executionQueue.ts"],"names":[],"mappings":"AAcA,gBAAgB;AAChB,MAAM,UAAU,cAAc,CAAC,MAA4B,EAAE,SAA+B;IACxF,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;IAC7C,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QACzB,SAAS,CAAC,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC7C,CAAC;IACD,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC;AACpC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,aAAa,CAAC,MAA4B,EAAE,SAA+B;IACvF,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IACrC,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACrB,SAAS,CAAC,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC;IAC7C,CAAC;IACD,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC;AAChC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,MAA4B,EAAE,IAA0B;IACrF,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxB,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC;IACnC,CAAC;IACD,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IACrC,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC;AAChC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACvD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/C,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACnD,CAAC;AACL,CAAC","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { Particle } from \"../particle\";\r\nimport type { ThinParticleSystem } from \"../thinParticleSystem\";\r\n\r\n/** @internal */\r\nexport interface _IExecutionQueueItem {\r\n /** @internal */\r\n process: (particle: Particle, system: ThinParticleSystem) => void;\r\n /** @internal */\r\n previousItem: Nullable<_IExecutionQueueItem>;\r\n /** @internal */\r\n nextItem: Nullable<_IExecutionQueueItem>;\r\n}\r\n\r\n/** @internal */\r\nexport function _ConnectBefore(newOne: _IExecutionQueueItem, activeOne: _IExecutionQueueItem) {\r\n newOne.previousItem = activeOne.previousItem;\r\n newOne.nextItem = activeOne;\r\n if (activeOne.previousItem) {\r\n activeOne.previousItem.nextItem = newOne;\r\n }\r\n activeOne.previousItem = newOne;\r\n}\r\n\r\n/** @internal */\r\nexport function _ConnectAfter(newOne: _IExecutionQueueItem, activeOne: _IExecutionQueueItem) {\r\n newOne.previousItem = activeOne;\r\n newOne.nextItem = activeOne.nextItem;\r\n if (activeOne.nextItem) {\r\n activeOne.nextItem.previousItem = newOne;\r\n }\r\n activeOne.nextItem = newOne;\r\n}\r\n\r\n/** @internal */\r\nexport function _ConnectAtTheEnd(newOne: _IExecutionQueueItem, root: _IExecutionQueueItem) {\r\n let activeOne = root;\r\n while (activeOne.nextItem) {\r\n activeOne = activeOne.nextItem;\r\n }\r\n newOne.previousItem = activeOne;\r\n newOne.nextItem = activeOne.nextItem;\r\n activeOne.nextItem = newOne;\r\n}\r\n\r\n/** @internal */\r\nexport function _RemoveFromQueue(item: _IExecutionQueueItem) {\r\n if (item.previousItem) {\r\n item.previousItem.nextItem = item.nextItem;\r\n }\r\n if (item.nextItem) {\r\n item.nextItem.previousItem = item.previousItem;\r\n }\r\n}\r\n"]}
@@ -93,7 +93,8 @@ export declare class BaseParticleSystem implements IClipPlanesHolder {
93
93
  * The overall motion speed (0.01 is default update speed, faster updates = faster animation)
94
94
  */
95
95
  updateSpeed: number;
96
- protected _targetStopDuration: number;
96
+ /** @internal */
97
+ _targetStopDuration: number;
97
98
  /**
98
99
  * The amount of time the particle system is running (depends of the overall update speed).
99
100
  */
@@ -185,6 +186,10 @@ export declare class BaseParticleSystem implements IClipPlanesHolder {
185
186
  _wasDispatched: boolean;
186
187
  protected _rootUrl: string;
187
188
  protected _noiseTexture: Nullable<ProceduralTexture>;
189
+ /**
190
+ * Returns true if the particle system was generated by a node particle system set
191
+ */
192
+ get isNodeGenerated(): boolean;
188
193
  /**
189
194
  * Gets or sets a texture used to add random noise to particle positions
190
195
  */
@@ -23,6 +23,12 @@ export class BaseParticleSystem {
23
23
  }
24
24
  this._targetStopDuration = value;
25
25
  }
26
+ /**
27
+ * Returns true if the particle system was generated by a node particle system set
28
+ */
29
+ get isNodeGenerated() {
30
+ return false;
31
+ }
26
32
  /**
27
33
  * Gets or sets a texture used to add random noise to particle positions
28
34
  */
@@ -364,6 +370,7 @@ export class BaseParticleSystem {
364
370
  * The overall motion speed (0.01 is default update speed, faster updates = faster animation)
365
371
  */
366
372
  this.updateSpeed = 0.01;
373
+ /** @internal */
367
374
  this._targetStopDuration = 0;
368
375
  /**
369
376
  * Specifies whether the particle system will be disposed once it reaches the end of the animation.