@onerjs/core 8.30.4 → 8.30.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/Actions/action.d.ts +5 -0
  2. package/Actions/action.js.map +1 -1
  3. package/Actions/actionManager.js +6 -2
  4. package/Actions/actionManager.js.map +1 -1
  5. package/Animations/runtimeAnimation.d.ts +0 -2
  6. package/Animations/runtimeAnimation.js +3 -5
  7. package/Animations/runtimeAnimation.js.map +1 -1
  8. package/Audio/audioSceneComponent.d.ts +9 -5
  9. package/Audio/audioSceneComponent.js +1 -0
  10. package/Audio/audioSceneComponent.js.map +1 -1
  11. package/AudioV2/abstractAudio/abstractSound.js +1 -0
  12. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  13. package/AudioV2/abstractAudio/audioEngineV2.d.ts +10 -0
  14. package/AudioV2/abstractAudio/audioEngineV2.js +29 -0
  15. package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
  16. package/AudioV2/webAudio/webAudioEngine.d.ts +5 -0
  17. package/AudioV2/webAudio/webAudioEngine.js +8 -0
  18. package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
  19. package/AudioV2/webAudio/webAudioStaticSound.js +10 -5
  20. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  21. package/AudioV2/webAudio/webAudioStreamingSound.js +5 -2
  22. package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
  23. package/Cameras/camera.d.ts +4 -0
  24. package/Cameras/camera.js +18 -9
  25. package/Cameras/camera.js.map +1 -1
  26. package/Collisions/gpuPicker.js +0 -1
  27. package/Collisions/gpuPicker.js.map +1 -1
  28. package/Decorators/nodeDecorator.d.ts +3 -1
  29. package/Decorators/nodeDecorator.js +2 -0
  30. package/Decorators/nodeDecorator.js.map +1 -1
  31. package/Engines/Native/nativeInterfaces.d.ts +1 -1
  32. package/Engines/Native/nativeInterfaces.js.map +1 -1
  33. package/Engines/WebGPU/webgpuDrawContext.d.ts +8 -0
  34. package/Engines/WebGPU/webgpuDrawContext.js +8 -0
  35. package/Engines/WebGPU/webgpuDrawContext.js.map +1 -1
  36. package/Engines/abstractEngine.js +2 -2
  37. package/Engines/abstractEngine.js.map +1 -1
  38. package/Engines/nativeEngine.js +12 -13
  39. package/Engines/nativeEngine.js.map +1 -1
  40. package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.d.ts +2 -2
  41. package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js +2 -2
  42. package/FrameGraph/Node/Blocks/PostProcesses/anaglyphPostProcessBlock.js.map +1 -1
  43. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js +1 -1
  44. package/FrameGraph/Node/Blocks/PostProcesses/basePostProcessBlock.js.map +1 -1
  45. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.d.ts +44 -0
  46. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js +152 -0
  47. package/FrameGraph/Node/Blocks/PostProcesses/baseWithPropertiesPostProcessBlock.js.map +1 -0
  48. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.d.ts +2 -2
  49. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js +2 -2
  50. package/FrameGraph/Node/Blocks/PostProcesses/blackAndWhitePostProcessBlock.js.map +1 -1
  51. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js +1 -1
  52. package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -1
  53. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.d.ts +2 -2
  54. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js +2 -2
  55. package/FrameGraph/Node/Blocks/PostProcesses/blurPostProcessBlock.js.map +1 -1
  56. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.d.ts +2 -2
  57. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.js +3 -3
  58. package/FrameGraph/Node/Blocks/PostProcesses/chromaticAberrationPostProcessBlock.js.map +1 -1
  59. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.d.ts +2 -2
  60. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js +2 -2
  61. package/FrameGraph/Node/Blocks/PostProcesses/circleOfConfusionPostProcessBlock.js.map +1 -1
  62. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.d.ts +2 -2
  63. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js +2 -2
  64. package/FrameGraph/Node/Blocks/PostProcesses/colorCorrectionPostProcessBlock.js.map +1 -1
  65. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.d.ts +2 -2
  66. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.js +2 -2
  67. package/FrameGraph/Node/Blocks/PostProcesses/convolutionPostProcessBlock.js.map +1 -1
  68. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.d.ts +2 -2
  69. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js +2 -2
  70. package/FrameGraph/Node/Blocks/PostProcesses/extractHighlightsPostProcessBlock.js.map +1 -1
  71. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.d.ts +2 -2
  72. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js +2 -2
  73. package/FrameGraph/Node/Blocks/PostProcesses/filterPostProcessBlock.js.map +1 -1
  74. package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.d.ts +2 -2
  75. package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.js +2 -2
  76. package/FrameGraph/Node/Blocks/PostProcesses/fxaaPostProcessBlock.js.map +1 -1
  77. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.d.ts +2 -2
  78. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.js +2 -2
  79. package/FrameGraph/Node/Blocks/PostProcesses/grainPostProcessBlock.js.map +1 -1
  80. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.d.ts +2 -2
  81. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js +3 -3
  82. package/FrameGraph/Node/Blocks/PostProcesses/imageProcessingPostProcessBlock.js.map +1 -1
  83. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.d.ts +2 -2
  84. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.js +2 -2
  85. package/FrameGraph/Node/Blocks/PostProcesses/motionBlurPostProcessBlock.js.map +1 -1
  86. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.d.ts +3 -3
  87. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js +3 -3
  88. package/FrameGraph/Node/Blocks/PostProcesses/passPostProcessBlock.js.map +1 -1
  89. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.d.ts +2 -2
  90. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js +2 -2
  91. package/FrameGraph/Node/Blocks/PostProcesses/screenSpaceCurvaturePostProcessBlock.js.map +1 -1
  92. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.d.ts +2 -2
  93. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js +4 -4
  94. package/FrameGraph/Node/Blocks/PostProcesses/sharpenPostProcessBlock.js.map +1 -1
  95. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.d.ts +2 -2
  96. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.js +2 -2
  97. package/FrameGraph/Node/Blocks/PostProcesses/taaPostProcessBlock.js.map +1 -1
  98. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.d.ts +2 -2
  99. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js +2 -2
  100. package/FrameGraph/Node/Blocks/PostProcesses/tonemapPostProcessBlock.js.map +1 -1
  101. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.d.ts +17 -1
  102. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js +70 -0
  103. package/FrameGraph/Node/Blocks/Textures/copyTextureBlock.js.map +1 -1
  104. package/FrameGraph/Node/Blocks/computeShaderBlock.d.ts +42 -0
  105. package/FrameGraph/Node/Blocks/computeShaderBlock.js +74 -0
  106. package/FrameGraph/Node/Blocks/computeShaderBlock.js.map +1 -0
  107. package/FrameGraph/Node/Blocks/executeBlock.d.ts +11 -1
  108. package/FrameGraph/Node/Blocks/executeBlock.js +18 -0
  109. package/FrameGraph/Node/Blocks/executeBlock.js.map +1 -1
  110. package/FrameGraph/Node/Blocks/index.d.ts +1 -0
  111. package/FrameGraph/Node/Blocks/index.js +1 -0
  112. package/FrameGraph/Node/Blocks/index.js.map +1 -1
  113. package/FrameGraph/Node/Blocks/inputBlock.js +2 -0
  114. package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
  115. package/FrameGraph/Node/Blocks/outputBlock.js +1 -0
  116. package/FrameGraph/Node/Blocks/outputBlock.js.map +1 -1
  117. package/FrameGraph/Node/nodeRenderGraph.d.ts +1 -1
  118. package/FrameGraph/Node/nodeRenderGraph.js +7 -3
  119. package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
  120. package/FrameGraph/Node/nodeRenderGraphBlock.js +7 -0
  121. package/FrameGraph/Node/nodeRenderGraphBlock.js.map +1 -1
  122. package/FrameGraph/Passes/pass.d.ts +11 -1
  123. package/FrameGraph/Passes/pass.js +11 -1
  124. package/FrameGraph/Passes/pass.js.map +1 -1
  125. package/FrameGraph/Tasks/Misc/computeShaderTask.d.ts +115 -0
  126. package/FrameGraph/Tasks/Misc/computeShaderTask.js +174 -0
  127. package/FrameGraph/Tasks/Misc/computeShaderTask.js.map +1 -0
  128. package/FrameGraph/Tasks/Misc/executeTask.d.ts +5 -0
  129. package/FrameGraph/Tasks/Misc/executeTask.js +3 -0
  130. package/FrameGraph/Tasks/Misc/executeTask.js.map +1 -1
  131. package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +1 -1
  132. package/FrameGraph/Tasks/PostProcesses/bloomTask.js +1 -1
  133. package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
  134. package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +7 -1
  135. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +8 -2
  136. package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
  137. package/FrameGraph/Tasks/PostProcesses/ssao2Task.d.ts +1 -0
  138. package/FrameGraph/Tasks/PostProcesses/ssao2Task.js +7 -0
  139. package/FrameGraph/Tasks/PostProcesses/ssao2Task.js.map +1 -1
  140. package/FrameGraph/Tasks/PostProcesses/taaTask.d.ts +1 -1
  141. package/FrameGraph/Tasks/PostProcesses/taaTask.js.map +1 -1
  142. package/FrameGraph/Tasks/Rendering/objectRendererTask.d.ts +4 -4
  143. package/FrameGraph/Tasks/Rendering/objectRendererTask.js +3 -3
  144. package/FrameGraph/Tasks/Rendering/objectRendererTask.js.map +1 -1
  145. package/FrameGraph/Tasks/Texture/copyToTextureTask.d.ts +7 -1
  146. package/FrameGraph/Tasks/Texture/copyToTextureTask.js +4 -1
  147. package/FrameGraph/Tasks/Texture/copyToTextureTask.js.map +1 -1
  148. package/FrameGraph/frameGraph.d.ts +1 -1
  149. package/FrameGraph/frameGraph.js +3 -6
  150. package/FrameGraph/frameGraph.js.map +1 -1
  151. package/FrameGraph/frameGraphContext.d.ts +8 -1
  152. package/FrameGraph/frameGraphContext.js +9 -0
  153. package/FrameGraph/frameGraphContext.js.map +1 -1
  154. package/FrameGraph/frameGraphRenderContext.d.ts +4 -2
  155. package/FrameGraph/frameGraphRenderContext.js +11 -5
  156. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  157. package/FrameGraph/frameGraphTask.d.ts +11 -2
  158. package/FrameGraph/frameGraphTask.js +17 -2
  159. package/FrameGraph/frameGraphTask.js.map +1 -1
  160. package/FrameGraph/frameGraphTextureManager.js +2 -2
  161. package/FrameGraph/frameGraphTextureManager.js.map +1 -1
  162. package/FrameGraph/index.d.ts +1 -0
  163. package/FrameGraph/index.js +1 -0
  164. package/FrameGraph/index.js.map +1 -1
  165. package/Lights/directionalLight.js +1 -4
  166. package/Lights/directionalLight.js.map +1 -1
  167. package/Lights/pointLight.js +2 -5
  168. package/Lights/pointLight.js.map +1 -1
  169. package/Materials/Textures/mirrorTexture.js +4 -1
  170. package/Materials/Textures/mirrorTexture.js.map +1 -1
  171. package/Materials/clipPlaneMaterialHelper.js +11 -1
  172. package/Materials/clipPlaneMaterialHelper.js.map +1 -1
  173. package/Materials/floatingOriginMatrixOverrides.d.ts +4 -1
  174. package/Materials/floatingOriginMatrixOverrides.js +14 -2
  175. package/Materials/floatingOriginMatrixOverrides.js.map +1 -1
  176. package/Materials/index.d.ts +1 -0
  177. package/Materials/index.js +1 -0
  178. package/Materials/index.js.map +1 -1
  179. package/Materials/materialHelper.functions.d.ts +8 -0
  180. package/Materials/materialHelper.functions.js +31 -0
  181. package/Materials/materialHelper.functions.js.map +1 -1
  182. package/Materials/shaderMaterial.js +21 -1
  183. package/Materials/shaderMaterial.js.map +1 -1
  184. package/Maths/math.vector.functions.d.ts +55 -16
  185. package/Maths/math.vector.functions.js +68 -10
  186. package/Maths/math.vector.functions.js.map +1 -1
  187. package/Misc/copyTextureToTexture.d.ts +10 -0
  188. package/Misc/copyTextureToTexture.js +15 -0
  189. package/Misc/copyTextureToTexture.js.map +1 -1
  190. package/Misc/decorators.d.ts +1 -1
  191. package/Misc/decorators.js.map +1 -1
  192. package/Misc/dumpTools.d.ts +20 -0
  193. package/Misc/dumpTools.js +60 -49
  194. package/Misc/dumpTools.js.map +1 -1
  195. package/Misc/index.d.ts +1 -2
  196. package/Misc/index.js +1 -2
  197. package/Misc/index.js.map +1 -1
  198. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +7 -7
  199. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -1
  200. package/Particles/Node/Blocks/Emitters/coneShapeBlock.d.ts +57 -0
  201. package/Particles/Node/Blocks/Emitters/coneShapeBlock.js +163 -0
  202. package/Particles/Node/Blocks/Emitters/coneShapeBlock.js.map +1 -0
  203. package/Particles/Node/Blocks/Emitters/createParticleBlock.d.ts +4 -0
  204. package/Particles/Node/Blocks/Emitters/createParticleBlock.js +18 -2
  205. package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -1
  206. package/Particles/Node/Blocks/Emitters/customShapeBlock.js +7 -7
  207. package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -1
  208. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +8 -8
  209. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -1
  210. package/Particles/Node/Blocks/Emitters/index.d.ts +5 -4
  211. package/Particles/Node/Blocks/Emitters/index.js +5 -4
  212. package/Particles/Node/Blocks/Emitters/index.js.map +1 -1
  213. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +9 -9
  214. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
  215. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +6 -6
  216. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -1
  217. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +7 -7
  218. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -1
  219. package/Particles/Node/Blocks/particleInputBlock.js +2 -0
  220. package/Particles/Node/Blocks/particleInputBlock.js.map +1 -1
  221. package/Particles/Node/Blocks/systemBlock.d.ts +33 -1
  222. package/Particles/Node/Blocks/systemBlock.js +82 -3
  223. package/Particles/Node/Blocks/systemBlock.js.map +1 -1
  224. package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +5 -1
  225. package/Particles/Node/Enums/nodeParticleContextualSources.js +4 -0
  226. package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -1
  227. package/Particles/Node/nodeParticleBuildState.d.ts +2 -7
  228. package/Particles/Node/nodeParticleBuildState.js +12 -22
  229. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  230. package/Particles/Node/nodeParticleSystemSet.helper.d.ts +4 -3
  231. package/Particles/Node/nodeParticleSystemSet.helper.js +344 -112
  232. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  233. package/Particles/thinParticleSystem.js +1 -0
  234. package/Particles/thinParticleSystem.js.map +1 -1
  235. package/Physics/physicsRaycastResult.d.ts +3 -0
  236. package/Physics/physicsRaycastResult.js.map +1 -1
  237. package/Physics/v2/IPhysicsEnginePlugin.d.ts +1 -1
  238. package/Physics/v2/IPhysicsEnginePlugin.js.map +1 -1
  239. package/Physics/v2/Plugins/havokPlugin.d.ts +27 -4
  240. package/Physics/v2/Plugins/havokPlugin.js +73 -9
  241. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  242. package/Physics/v2/physicsEngine.d.ts +12 -2
  243. package/Physics/v2/physicsEngine.js +15 -1
  244. package/Physics/v2/physicsEngine.js.map +1 -1
  245. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.d.ts +1 -0
  246. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js +9 -1
  247. package/PostProcesses/RenderPipeline/Pipelines/ssao2RenderingPipeline.js.map +1 -1
  248. package/PostProcesses/thinSSAO2PostProcess.d.ts +1 -0
  249. package/PostProcesses/thinSSAO2PostProcess.js +18 -6
  250. package/PostProcesses/thinSSAO2PostProcess.js.map +1 -1
  251. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +4 -0
  252. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  253. package/Shaders/ShadersInclude/openpbrDirectLighting.js +5 -2
  254. package/Shaders/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  255. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js +1 -1
  256. package/Shaders/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  257. package/Shaders/particles.vertex.js +1 -1
  258. package/Shaders/particles.vertex.js.map +1 -1
  259. package/Shaders/picking.fragment.js +1 -1
  260. package/Shaders/picking.fragment.js.map +1 -1
  261. package/Shaders/picking.vertex.js +1 -1
  262. package/Shaders/picking.vertex.js.map +1 -1
  263. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js +2 -2
  264. package/ShadersWGSL/ShadersInclude/bonesDeclaration.js.map +1 -1
  265. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js +5 -2
  266. package/ShadersWGSL/ShadersInclude/openpbrDirectLighting.js.map +1 -1
  267. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js +2 -2
  268. package/ShadersWGSL/ShadersInclude/openpbrEnvironmentLighting.js.map +1 -1
  269. package/ShadersWGSL/iblVoxelGrid.vertex.js +78 -4
  270. package/ShadersWGSL/iblVoxelGrid.vertex.js.map +1 -1
  271. package/ShadersWGSL/particles.vertex.js +1 -1
  272. package/ShadersWGSL/particles.vertex.js.map +1 -1
  273. package/ShadersWGSL/picking.fragment.js +1 -1
  274. package/ShadersWGSL/picking.fragment.js.map +1 -1
  275. package/ShadersWGSL/picking.vertex.js +1 -1
  276. package/ShadersWGSL/picking.vertex.js.map +1 -1
  277. package/Sprites/spriteRenderer.js +10 -8
  278. package/Sprites/spriteRenderer.js.map +1 -1
  279. package/XR/features/WebXRLightEstimation.d.ts +8 -0
  280. package/XR/features/WebXRLightEstimation.js +6 -1
  281. package/XR/features/WebXRLightEstimation.js.map +1 -1
  282. package/assetContainer.d.ts +1 -1
  283. package/assetContainer.js +1 -1
  284. package/assetContainer.js.map +1 -1
  285. package/package.json +1 -1
  286. package/scene.d.ts +7 -2
  287. package/scene.js +11 -8
  288. package/scene.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"particleInputBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/particleInputBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"../../../Misc/observable\";\r\nimport { GetClass, RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { Matrix, Vector2, Vector3 } from \"../../../Maths/math.vector\";\r\nimport { NodeParticleBlock } from \"../nodeParticleBlock\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../nodeParticleBlockConnectionPoint\";\r\nimport type { NodeParticleBuildState } from \"../nodeParticleBuildState\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { NodeParticleContextualSources } from \"../Enums/nodeParticleContextualSources\";\r\nimport { NodeParticleSystemSources } from \"../Enums/nodeParticleSystemSources\";\r\n\r\n/**\r\n * Block used to expose an input value\r\n */\r\nexport class ParticleInputBlock extends NodeParticleBlock {\r\n private _storedValue: any;\r\n private _valueCallback: () => any;\r\n private _type: NodeParticleBlockConnectionPointTypes = NodeParticleBlockConnectionPointTypes.Undefined;\r\n\r\n /** Gets or set a value used to limit the range of float values */\r\n public min: number = 0;\r\n\r\n /** Gets or set a value used to limit the range of float values */\r\n public max: number = 0;\r\n\r\n /** Gets or sets the group to use to display this block in the Inspector */\r\n public groupInInspector = \"\";\r\n\r\n /**\r\n * Gets or sets a boolean indicating that this input is displayed in the Inspector\r\n */\r\n public displayInInspector = true;\r\n\r\n /** Gets an observable raised when the value is changed */\r\n public onValueChangedObservable = new Observable<ParticleInputBlock>();\r\n\r\n /**\r\n * Gets or sets the connection point type (default is float)\r\n */\r\n public get type(): NodeParticleBlockConnectionPointTypes {\r\n if (this._type === NodeParticleBlockConnectionPointTypes.AutoDetect) {\r\n if (this.value != null) {\r\n if (!isNaN(this.value)) {\r\n this._type = NodeParticleBlockConnectionPointTypes.Float;\r\n return this._type;\r\n }\r\n\r\n switch (this.value.getClassName()) {\r\n case \"Vector2\":\r\n this._type = NodeParticleBlockConnectionPointTypes.Vector2;\r\n return this._type;\r\n case \"Vector3\":\r\n this._type = NodeParticleBlockConnectionPointTypes.Vector3;\r\n return this._type;\r\n case \"Color4\":\r\n this._type = NodeParticleBlockConnectionPointTypes.Color4;\r\n return this._type;\r\n case \"Matrix\":\r\n this._type = NodeParticleBlockConnectionPointTypes.Matrix;\r\n return this._type;\r\n }\r\n }\r\n }\r\n\r\n return this._type;\r\n }\r\n\r\n /** @internal */\r\n private _systemSource: NodeParticleSystemSources = NodeParticleSystemSources.None;\r\n\r\n /**\r\n * Gets a boolean indicating that the current connection point is a system source\r\n */\r\n public get isSystemSource(): boolean {\r\n return this._contextualSource === NodeParticleContextualSources.None && this._systemSource !== NodeParticleSystemSources.None;\r\n }\r\n\r\n /**\r\n * Gets or sets the system source used by this input block\r\n */\r\n public get systemSource(): NodeParticleSystemSources {\r\n return this._systemSource;\r\n }\r\n\r\n public set systemSource(value: NodeParticleSystemSources) {\r\n this._systemSource = value;\r\n\r\n if (value !== NodeParticleSystemSources.None) {\r\n this._contextualSource = NodeParticleContextualSources.None;\r\n this._type = NodeParticleBlockConnectionPointTypes.Float;\r\n\r\n switch (value) {\r\n case NodeParticleSystemSources.Time:\r\n case NodeParticleSystemSources.Delta:\r\n this._type = NodeParticleBlockConnectionPointTypes.Float;\r\n break;\r\n case NodeParticleSystemSources.Emitter:\r\n case NodeParticleSystemSources.CameraPosition:\r\n this._type = NodeParticleBlockConnectionPointTypes.Vector3;\r\n break;\r\n }\r\n\r\n if (this.output) {\r\n this.output.type = this._type;\r\n }\r\n }\r\n }\r\n\r\n private _contextualSource = NodeParticleContextualSources.None;\r\n /**\r\n * Gets a boolean indicating that the current connection point is a contextual value\r\n */\r\n public get isContextual(): boolean {\r\n return this._contextualSource !== NodeParticleContextualSources.None;\r\n }\r\n\r\n /**\r\n * Gets or sets the current contextual value\r\n */\r\n public get contextualValue(): NodeParticleContextualSources {\r\n return this._contextualSource;\r\n }\r\n\r\n public set contextualValue(value: NodeParticleContextualSources) {\r\n this._contextualSource = value;\r\n\r\n if (value !== NodeParticleContextualSources.None) {\r\n this._systemSource = NodeParticleSystemSources.None;\r\n\r\n switch (value) {\r\n case NodeParticleContextualSources.Scale:\r\n this._type = NodeParticleBlockConnectionPointTypes.Vector2;\r\n break;\r\n case NodeParticleContextualSources.Position:\r\n case NodeParticleContextualSources.Direction:\r\n case NodeParticleContextualSources.ScaledDirection:\r\n case NodeParticleContextualSources.InitialDirection:\r\n this._type = NodeParticleBlockConnectionPointTypes.Vector3;\r\n break;\r\n case NodeParticleContextualSources.Color:\r\n case NodeParticleContextualSources.InitialColor:\r\n case NodeParticleContextualSources.ColorDead:\r\n this._type = NodeParticleBlockConnectionPointTypes.Color4;\r\n break;\r\n case NodeParticleContextualSources.Age:\r\n case NodeParticleContextualSources.Lifetime:\r\n case NodeParticleContextualSources.Angle:\r\n case NodeParticleContextualSources.AgeGradient:\r\n this._type = NodeParticleBlockConnectionPointTypes.Float;\r\n break;\r\n case NodeParticleContextualSources.SpriteCellEnd:\r\n case NodeParticleContextualSources.SpriteCellStart:\r\n case NodeParticleContextualSources.SpriteCellIndex:\r\n this._type = NodeParticleBlockConnectionPointTypes.Int;\r\n break;\r\n }\r\n\r\n if (this.output) {\r\n this.output.type = this._type;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new InputBlock\r\n * @param name defines the block name\r\n * @param type defines the type of the input (can be set to NodeParticleBlockConnectionPointTypes.AutoDetect)\r\n */\r\n public constructor(name: string, type: NodeParticleBlockConnectionPointTypes = NodeParticleBlockConnectionPointTypes.AutoDetect) {\r\n super(name);\r\n\r\n this._type = type;\r\n this._isInput = true;\r\n this._storedValue = null;\r\n\r\n this.setDefaultValue();\r\n\r\n this.registerOutput(\"output\", type);\r\n }\r\n\r\n /**\r\n * Gets or sets the value of that point.\r\n * Please note that this value will be ignored if valueCallback is defined\r\n */\r\n public get value(): any {\r\n return this._storedValue;\r\n }\r\n\r\n public set value(value: any) {\r\n if (this.type === NodeParticleBlockConnectionPointTypes.Float) {\r\n if (this.min !== this.max) {\r\n value = Math.max(this.min, value);\r\n value = Math.min(this.max, value);\r\n }\r\n }\r\n\r\n this._storedValue = value;\r\n\r\n this.onValueChangedObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Gets or sets a callback used to get the value of that point.\r\n * Please note that setting this value will force the connection point to ignore the value property\r\n */\r\n public get valueCallback(): () => any {\r\n return this._valueCallback;\r\n }\r\n\r\n public set valueCallback(value: () => any) {\r\n this._valueCallback = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"ParticleInputBlock\";\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeParticleConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Set the input block to its default value (based on its type)\r\n */\r\n public setDefaultValue() {\r\n switch (this.type) {\r\n case NodeParticleBlockConnectionPointTypes.Int:\r\n case NodeParticleBlockConnectionPointTypes.Float:\r\n this.value = 0;\r\n break;\r\n case NodeParticleBlockConnectionPointTypes.Vector2:\r\n this.value = Vector2.Zero();\r\n break;\r\n case NodeParticleBlockConnectionPointTypes.Vector3:\r\n this.value = Vector3.Zero();\r\n break;\r\n case NodeParticleBlockConnectionPointTypes.Color4:\r\n this.value = new Color4(1, 1, 1, 1);\r\n break;\r\n case NodeParticleBlockConnectionPointTypes.Matrix:\r\n this.value = Matrix.Identity();\r\n break;\r\n }\r\n }\r\n\r\n public override _build(state: NodeParticleBuildState) {\r\n super._build(state);\r\n\r\n if (this.isSystemSource) {\r\n this.output._storedValue = null;\r\n this.output._storedFunction = (state) => {\r\n return state.getSystemValue(this._systemSource);\r\n };\r\n } else if (this.isContextual) {\r\n this.output._storedValue = null;\r\n this.output._storedFunction = (state) => {\r\n return state.getContextualValue(this._contextualSource);\r\n };\r\n } else {\r\n this.output._storedValue = this.value;\r\n // As a function to let the user dynamically change the value at runtime\r\n this.output._storedFunction = () => {\r\n return this.value;\r\n };\r\n }\r\n }\r\n\r\n public override dispose() {\r\n this.onValueChangedObservable.clear();\r\n\r\n super.dispose();\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.type = this.type;\r\n serializationObject.contextualValue = this.contextualValue;\r\n serializationObject.systemSource = this.systemSource;\r\n serializationObject.min = this.min;\r\n serializationObject.max = this.max;\r\n serializationObject.groupInInspector = this.groupInInspector;\r\n serializationObject.displayInInspector = this.displayInInspector;\r\n\r\n if (this._storedValue !== null && !this.isContextual && !this.isSystemSource) {\r\n if (this._storedValue.asArray) {\r\n serializationObject.valueType = \"BABYLON.\" + this._storedValue.getClassName();\r\n serializationObject.value = this._storedValue.asArray();\r\n } else {\r\n serializationObject.valueType = \"number\";\r\n serializationObject.value = this._storedValue;\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n\r\n this._type = serializationObject.type;\r\n this.contextualValue = serializationObject.contextualValue;\r\n this.systemSource = serializationObject.systemSource || NodeParticleSystemSources.None;\r\n\r\n this.min = serializationObject.min || 0;\r\n this.max = serializationObject.max || 0;\r\n this.groupInInspector = serializationObject.groupInInspector || \"\";\r\n if (serializationObject.displayInInspector !== undefined) {\r\n this.displayInInspector = serializationObject.displayInInspector;\r\n }\r\n\r\n if (!serializationObject.valueType) {\r\n return;\r\n }\r\n\r\n if (serializationObject.valueType === \"number\") {\r\n this._storedValue = serializationObject.value;\r\n } else {\r\n const valueType = GetClass(serializationObject.valueType);\r\n\r\n if (valueType) {\r\n this._storedValue = valueType.FromArray(serializationObject.value);\r\n }\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleInputBlock\", ParticleInputBlock);\r\n"]}
1
+ {"version":3,"file":"particleInputBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/particleInputBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"../../../Misc/observable\";\r\nimport { GetClass, RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { Matrix, Vector2, Vector3 } from \"../../../Maths/math.vector\";\r\nimport { NodeParticleBlock } from \"../nodeParticleBlock\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../nodeParticleBlockConnectionPoint\";\r\nimport type { NodeParticleBuildState } from \"../nodeParticleBuildState\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { NodeParticleContextualSources } from \"../Enums/nodeParticleContextualSources\";\r\nimport { NodeParticleSystemSources } from \"../Enums/nodeParticleSystemSources\";\r\n\r\n/**\r\n * Block used to expose an input value\r\n */\r\nexport class ParticleInputBlock extends NodeParticleBlock {\r\n private _storedValue: any;\r\n private _valueCallback: () => any;\r\n private _type: NodeParticleBlockConnectionPointTypes = NodeParticleBlockConnectionPointTypes.Undefined;\r\n\r\n /** Gets or set a value used to limit the range of float values */\r\n public min: number = 0;\r\n\r\n /** Gets or set a value used to limit the range of float values */\r\n public max: number = 0;\r\n\r\n /** Gets or sets the group to use to display this block in the Inspector */\r\n public groupInInspector = \"\";\r\n\r\n /**\r\n * Gets or sets a boolean indicating that this input is displayed in the Inspector\r\n */\r\n public displayInInspector = true;\r\n\r\n /** Gets an observable raised when the value is changed */\r\n public onValueChangedObservable = new Observable<ParticleInputBlock>();\r\n\r\n /**\r\n * Gets or sets the connection point type (default is float)\r\n */\r\n public get type(): NodeParticleBlockConnectionPointTypes {\r\n if (this._type === NodeParticleBlockConnectionPointTypes.AutoDetect) {\r\n if (this.value != null) {\r\n if (!isNaN(this.value)) {\r\n this._type = NodeParticleBlockConnectionPointTypes.Float;\r\n return this._type;\r\n }\r\n\r\n switch (this.value.getClassName()) {\r\n case \"Vector2\":\r\n this._type = NodeParticleBlockConnectionPointTypes.Vector2;\r\n return this._type;\r\n case \"Vector3\":\r\n this._type = NodeParticleBlockConnectionPointTypes.Vector3;\r\n return this._type;\r\n case \"Color4\":\r\n this._type = NodeParticleBlockConnectionPointTypes.Color4;\r\n return this._type;\r\n case \"Matrix\":\r\n this._type = NodeParticleBlockConnectionPointTypes.Matrix;\r\n return this._type;\r\n }\r\n }\r\n }\r\n\r\n return this._type;\r\n }\r\n\r\n /** @internal */\r\n private _systemSource: NodeParticleSystemSources = NodeParticleSystemSources.None;\r\n\r\n /**\r\n * Gets a boolean indicating that the current connection point is a system source\r\n */\r\n public get isSystemSource(): boolean {\r\n return this._contextualSource === NodeParticleContextualSources.None && this._systemSource !== NodeParticleSystemSources.None;\r\n }\r\n\r\n /**\r\n * Gets or sets the system source used by this input block\r\n */\r\n public get systemSource(): NodeParticleSystemSources {\r\n return this._systemSource;\r\n }\r\n\r\n public set systemSource(value: NodeParticleSystemSources) {\r\n this._systemSource = value;\r\n\r\n if (value !== NodeParticleSystemSources.None) {\r\n this._contextualSource = NodeParticleContextualSources.None;\r\n this._type = NodeParticleBlockConnectionPointTypes.Float;\r\n\r\n switch (value) {\r\n case NodeParticleSystemSources.Time:\r\n case NodeParticleSystemSources.Delta:\r\n this._type = NodeParticleBlockConnectionPointTypes.Float;\r\n break;\r\n case NodeParticleSystemSources.Emitter:\r\n case NodeParticleSystemSources.CameraPosition:\r\n this._type = NodeParticleBlockConnectionPointTypes.Vector3;\r\n break;\r\n }\r\n\r\n if (this.output) {\r\n this.output.type = this._type;\r\n }\r\n }\r\n }\r\n\r\n private _contextualSource = NodeParticleContextualSources.None;\r\n /**\r\n * Gets a boolean indicating that the current connection point is a contextual value\r\n */\r\n public get isContextual(): boolean {\r\n return this._contextualSource !== NodeParticleContextualSources.None;\r\n }\r\n\r\n /**\r\n * Gets or sets the current contextual value\r\n */\r\n public get contextualValue(): NodeParticleContextualSources {\r\n return this._contextualSource;\r\n }\r\n\r\n public set contextualValue(value: NodeParticleContextualSources) {\r\n this._contextualSource = value;\r\n\r\n if (value !== NodeParticleContextualSources.None) {\r\n this._systemSource = NodeParticleSystemSources.None;\r\n\r\n switch (value) {\r\n case NodeParticleContextualSources.Scale:\r\n this._type = NodeParticleBlockConnectionPointTypes.Vector2;\r\n break;\r\n case NodeParticleContextualSources.Position:\r\n case NodeParticleContextualSources.Direction:\r\n case NodeParticleContextualSources.ScaledDirection:\r\n case NodeParticleContextualSources.InitialDirection:\r\n this._type = NodeParticleBlockConnectionPointTypes.Vector3;\r\n break;\r\n case NodeParticleContextualSources.Color:\r\n case NodeParticleContextualSources.InitialColor:\r\n case NodeParticleContextualSources.ColorDead:\r\n case NodeParticleContextualSources.ColorStep:\r\n case NodeParticleContextualSources.ScaledColorStep:\r\n this._type = NodeParticleBlockConnectionPointTypes.Color4;\r\n break;\r\n case NodeParticleContextualSources.Age:\r\n case NodeParticleContextualSources.Lifetime:\r\n case NodeParticleContextualSources.Angle:\r\n case NodeParticleContextualSources.AgeGradient:\r\n this._type = NodeParticleBlockConnectionPointTypes.Float;\r\n break;\r\n case NodeParticleContextualSources.SpriteCellEnd:\r\n case NodeParticleContextualSources.SpriteCellStart:\r\n case NodeParticleContextualSources.SpriteCellIndex:\r\n this._type = NodeParticleBlockConnectionPointTypes.Int;\r\n break;\r\n }\r\n\r\n if (this.output) {\r\n this.output.type = this._type;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new InputBlock\r\n * @param name defines the block name\r\n * @param type defines the type of the input (can be set to NodeParticleBlockConnectionPointTypes.AutoDetect)\r\n */\r\n public constructor(name: string, type: NodeParticleBlockConnectionPointTypes = NodeParticleBlockConnectionPointTypes.AutoDetect) {\r\n super(name);\r\n\r\n this._type = type;\r\n this._isInput = true;\r\n this._storedValue = null;\r\n\r\n this.setDefaultValue();\r\n\r\n this.registerOutput(\"output\", type);\r\n }\r\n\r\n /**\r\n * Gets or sets the value of that point.\r\n * Please note that this value will be ignored if valueCallback is defined\r\n */\r\n public get value(): any {\r\n return this._storedValue;\r\n }\r\n\r\n public set value(value: any) {\r\n if (this.type === NodeParticleBlockConnectionPointTypes.Float) {\r\n if (this.min !== this.max) {\r\n value = Math.max(this.min, value);\r\n value = Math.min(this.max, value);\r\n }\r\n }\r\n\r\n this._storedValue = value;\r\n\r\n this.onValueChangedObservable.notifyObservers(this);\r\n }\r\n\r\n /**\r\n * Gets or sets a callback used to get the value of that point.\r\n * Please note that setting this value will force the connection point to ignore the value property\r\n */\r\n public get valueCallback(): () => any {\r\n return this._valueCallback;\r\n }\r\n\r\n public set valueCallback(value: () => any) {\r\n this._valueCallback = value;\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"ParticleInputBlock\";\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeParticleConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Set the input block to its default value (based on its type)\r\n */\r\n public setDefaultValue() {\r\n switch (this.type) {\r\n case NodeParticleBlockConnectionPointTypes.Int:\r\n case NodeParticleBlockConnectionPointTypes.Float:\r\n this.value = 0;\r\n break;\r\n case NodeParticleBlockConnectionPointTypes.Vector2:\r\n this.value = Vector2.Zero();\r\n break;\r\n case NodeParticleBlockConnectionPointTypes.Vector3:\r\n this.value = Vector3.Zero();\r\n break;\r\n case NodeParticleBlockConnectionPointTypes.Color4:\r\n this.value = new Color4(1, 1, 1, 1);\r\n break;\r\n case NodeParticleBlockConnectionPointTypes.Matrix:\r\n this.value = Matrix.Identity();\r\n break;\r\n }\r\n }\r\n\r\n public override _build(state: NodeParticleBuildState) {\r\n super._build(state);\r\n\r\n if (this.isSystemSource) {\r\n this.output._storedValue = null;\r\n this.output._storedFunction = (state) => {\r\n return state.getSystemValue(this._systemSource);\r\n };\r\n } else if (this.isContextual) {\r\n this.output._storedValue = null;\r\n this.output._storedFunction = (state) => {\r\n return state.getContextualValue(this._contextualSource);\r\n };\r\n } else {\r\n this.output._storedValue = this.value;\r\n // As a function to let the user dynamically change the value at runtime\r\n this.output._storedFunction = () => {\r\n return this.value;\r\n };\r\n }\r\n }\r\n\r\n public override dispose() {\r\n this.onValueChangedObservable.clear();\r\n\r\n super.dispose();\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.type = this.type;\r\n serializationObject.contextualValue = this.contextualValue;\r\n serializationObject.systemSource = this.systemSource;\r\n serializationObject.min = this.min;\r\n serializationObject.max = this.max;\r\n serializationObject.groupInInspector = this.groupInInspector;\r\n serializationObject.displayInInspector = this.displayInInspector;\r\n\r\n if (this._storedValue !== null && !this.isContextual && !this.isSystemSource) {\r\n if (this._storedValue.asArray) {\r\n serializationObject.valueType = \"BABYLON.\" + this._storedValue.getClassName();\r\n serializationObject.value = this._storedValue.asArray();\r\n } else {\r\n serializationObject.valueType = \"number\";\r\n serializationObject.value = this._storedValue;\r\n }\r\n }\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n\r\n this._type = serializationObject.type;\r\n this.contextualValue = serializationObject.contextualValue;\r\n this.systemSource = serializationObject.systemSource || NodeParticleSystemSources.None;\r\n\r\n this.min = serializationObject.min || 0;\r\n this.max = serializationObject.max || 0;\r\n this.groupInInspector = serializationObject.groupInInspector || \"\";\r\n if (serializationObject.displayInInspector !== undefined) {\r\n this.displayInInspector = serializationObject.displayInInspector;\r\n }\r\n\r\n if (!serializationObject.valueType) {\r\n return;\r\n }\r\n\r\n if (serializationObject.valueType === \"number\") {\r\n this._storedValue = serializationObject.value;\r\n } else {\r\n const valueType = GetClass(serializationObject.valueType);\r\n\r\n if (valueType) {\r\n this._storedValue = valueType.FromArray(serializationObject.value);\r\n }\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleInputBlock\", ParticleInputBlock);\r\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { ParticleSystem } from "../../particleSystem.js";
2
- import { NodeParticleBlock } from "../nodeParticleBlock.js";
3
2
  import type { NodeParticleConnectionPoint } from "../nodeParticleBlockConnectionPoint.js";
4
3
  import type { NodeParticleBuildState } from "../nodeParticleBuildState.js";
4
+ import { NodeParticleBlock } from "../nodeParticleBlock.js";
5
5
  /**
6
6
  * Block used to get a system of particles
7
7
  */
@@ -19,6 +19,10 @@ export declare class SystemBlock extends NodeParticleBlock {
19
19
  * Gets or sets the emit rate
20
20
  */
21
21
  emitRate: number;
22
+ /**
23
+ * Gets or sets the manual emit count
24
+ */
25
+ manualEmitCount: number;
22
26
  /**
23
27
  * Gets or sets the target stop duration for the particle system
24
28
  */
@@ -27,6 +31,30 @@ export declare class SystemBlock extends NodeParticleBlock {
27
31
  * Gets or sets the target stop duration for the particle system
28
32
  */
29
33
  startDelay: number;
34
+ /**
35
+ * Gets or sets the target stop duration for the particle system
36
+ */
37
+ updateSpeed: number;
38
+ /**
39
+ * Gets or sets the number of pre-warm cycles before rendering the particle system
40
+ */
41
+ preWarmCycles: number;
42
+ /**
43
+ * Gets or sets the time step multiplier used for pre-warm
44
+ */
45
+ preWarmStepOffset: number;
46
+ /**
47
+ * Gets or sets a boolean indicating if the system is billboard based
48
+ */
49
+ isBillboardBased: boolean;
50
+ /**
51
+ * Gets or sets a boolean indicating if the system coordinate space is local or global
52
+ */
53
+ isLocal: boolean;
54
+ /**
55
+ * Gets or sets a boolean indicating if the system should be disposed when stopped
56
+ */
57
+ disposeOnStop: boolean;
30
58
  /**
31
59
  * Gets or sets a boolean indicating if the system should not start automatically
32
60
  */
@@ -59,6 +87,10 @@ export declare class SystemBlock extends NodeParticleBlock {
59
87
  * Gets the onEnd input component
60
88
  */
61
89
  get onEnd(): NodeParticleConnectionPoint;
90
+ /**
91
+ * Gets the translationPivot input component
92
+ */
93
+ get translationPivot(): NodeParticleConnectionPoint;
62
94
  /**
63
95
  * Gets the system output component
64
96
  */
@@ -1,10 +1,11 @@
1
1
  import { __decorate } from "../../../tslib.es6.js";
2
- import { RegisterClass } from "../../../Misc/typeStore.js";
3
- import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
4
- import { NodeParticleBlock } from "../nodeParticleBlock.js";
5
2
  import { editableInPropertyPage } from "../../../Decorators/nodeDecorator.js";
3
+ import { RegisterClass } from "../../../Misc/typeStore.js";
4
+ import { Vector2 } from "../../../Maths/math.vector.js";
6
5
  import { BaseParticleSystem } from "../../baseParticleSystem.js";
6
+ import { NodeParticleBlock } from "../nodeParticleBlock.js";
7
7
  import { _TriggerSubEmitter } from "./Triggers/triggerTools.js";
8
+ import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
8
9
  /**
9
10
  * Block used to get a system of particles
10
11
  */
@@ -27,6 +28,10 @@ export class SystemBlock extends NodeParticleBlock {
27
28
  * Gets or sets the emit rate
28
29
  */
29
30
  this.emitRate = 10;
31
+ /**
32
+ * Gets or sets the manual emit count
33
+ */
34
+ this.manualEmitCount = -1;
30
35
  /**
31
36
  * Gets or sets the target stop duration for the particle system
32
37
  */
@@ -35,6 +40,30 @@ export class SystemBlock extends NodeParticleBlock {
35
40
  * Gets or sets the target stop duration for the particle system
36
41
  */
37
42
  this.startDelay = 0;
43
+ /**
44
+ * Gets or sets the target stop duration for the particle system
45
+ */
46
+ this.updateSpeed = 0.0167;
47
+ /**
48
+ * Gets or sets the number of pre-warm cycles before rendering the particle system
49
+ */
50
+ this.preWarmCycles = 0;
51
+ /**
52
+ * Gets or sets the time step multiplier used for pre-warm
53
+ */
54
+ this.preWarmStepOffset = 0;
55
+ /**
56
+ * Gets or sets a boolean indicating if the system is billboard based
57
+ */
58
+ this.isBillboardBased = true;
59
+ /**
60
+ * Gets or sets a boolean indicating if the system coordinate space is local or global
61
+ */
62
+ this.isLocal = false;
63
+ /**
64
+ * Gets or sets a boolean indicating if the system should be disposed when stopped
65
+ */
66
+ this.disposeOnStop = false;
38
67
  /**
39
68
  * Gets or sets a boolean indicating if the system should not start automatically
40
69
  */
@@ -46,6 +75,7 @@ export class SystemBlock extends NodeParticleBlock {
46
75
  this.registerInput("texture", NodeParticleBlockConnectionPointTypes.Texture);
47
76
  this.registerInput("onStart", NodeParticleBlockConnectionPointTypes.System, true);
48
77
  this.registerInput("onEnd", NodeParticleBlockConnectionPointTypes.System, true);
78
+ this.registerInput("translationPivot", NodeParticleBlockConnectionPointTypes.Vector2, true);
49
79
  this.registerOutput("system", NodeParticleBlockConnectionPointTypes.System);
50
80
  }
51
81
  /**
@@ -79,6 +109,12 @@ export class SystemBlock extends NodeParticleBlock {
79
109
  get onEnd() {
80
110
  return this._inputs[3];
81
111
  }
112
+ /**
113
+ * Gets the translationPivot input component
114
+ */
115
+ get translationPivot() {
116
+ return this._inputs[4];
117
+ }
82
118
  /**
83
119
  * Gets the system output component
84
120
  */
@@ -97,10 +133,18 @@ export class SystemBlock extends NodeParticleBlock {
97
133
  const particleSystem = this.particle.getConnectedValue(state);
98
134
  particleSystem.particleTexture = this.texture.getConnectedValue(state);
99
135
  particleSystem.emitRate = this.emitRate;
136
+ particleSystem.manualEmitCount = this.manualEmitCount;
137
+ particleSystem.updateSpeed = this.updateSpeed;
138
+ particleSystem.preWarmCycles = this.preWarmCycles;
139
+ particleSystem.preWarmStepOffset = this.preWarmStepOffset;
100
140
  particleSystem.blendMode = this.blendMode;
101
141
  particleSystem.name = this.name;
102
142
  particleSystem._targetStopDuration = this.targetStopDuration;
103
143
  particleSystem.startDelay = this.startDelay;
144
+ particleSystem.isBillboardBased = this.isBillboardBased;
145
+ particleSystem.translationPivot = this.translationPivot.getConnectedValue(state) || Vector2.Zero();
146
+ particleSystem.isLocal = this.isLocal;
147
+ particleSystem.disposeOnStop = this.disposeOnStop;
104
148
  this.system._storedValue = this;
105
149
  particleSystem.canStart = () => {
106
150
  return !this.doNoStart;
@@ -140,7 +184,14 @@ export class SystemBlock extends NodeParticleBlock {
140
184
  const serializationObject = super.serialize();
141
185
  serializationObject.capacity = this.capacity;
142
186
  serializationObject.emitRate = this.emitRate;
187
+ serializationObject.manualEmitCount = this.manualEmitCount;
143
188
  serializationObject.blendMode = this.blendMode;
189
+ serializationObject.updateSpeed = this.updateSpeed;
190
+ serializationObject.preWarmCycles = this.preWarmCycles;
191
+ serializationObject.preWarmStepOffset = this.preWarmStepOffset;
192
+ serializationObject.isBillboardBased = this.isBillboardBased;
193
+ serializationObject.isLocal = this.isLocal;
194
+ serializationObject.disposeOnStop = this.disposeOnStop;
144
195
  serializationObject.doNoStart = this.doNoStart;
145
196
  serializationObject.targetStopDuration = this.targetStopDuration;
146
197
  serializationObject.startDelay = this.startDelay;
@@ -150,6 +201,13 @@ export class SystemBlock extends NodeParticleBlock {
150
201
  super._deserialize(serializationObject);
151
202
  this.capacity = serializationObject.capacity;
152
203
  this.emitRate = serializationObject.emitRate;
204
+ this.manualEmitCount = serializationObject.manualEmitCount ?? -1;
205
+ this.updateSpeed = serializationObject.updateSpeed ?? 0.0167;
206
+ this.preWarmCycles = serializationObject.preWarmCycles ?? 0;
207
+ this.preWarmStepOffset = serializationObject.preWarmStepOffset ?? 0;
208
+ this.isBillboardBased = serializationObject.isBillboardBased ?? true;
209
+ this.isLocal = serializationObject.isLocal ?? false;
210
+ this.disposeOnStop = serializationObject.disposeOnStop ?? false;
153
211
  this.doNoStart = !!serializationObject.doNoStart;
154
212
  if (serializationObject.blendMode !== undefined) {
155
213
  this.blendMode = serializationObject.blendMode;
@@ -182,12 +240,33 @@ __decorate([
182
240
  __decorate([
183
241
  editableInPropertyPage("Emit rate", 2 /* PropertyTypeForEdition.Int */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: 0 })
184
242
  ], SystemBlock.prototype, "emitRate", void 0);
243
+ __decorate([
244
+ editableInPropertyPage("Manual emit count", 2 /* PropertyTypeForEdition.Int */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: -1 })
245
+ ], SystemBlock.prototype, "manualEmitCount", void 0);
185
246
  __decorate([
186
247
  editableInPropertyPage("Target duration", 1 /* PropertyTypeForEdition.Float */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: 0 })
187
248
  ], SystemBlock.prototype, "targetStopDuration", void 0);
188
249
  __decorate([
189
250
  editableInPropertyPage("Delay start(ms)", 1 /* PropertyTypeForEdition.Float */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: 0 })
190
251
  ], SystemBlock.prototype, "startDelay", void 0);
252
+ __decorate([
253
+ editableInPropertyPage("updateSpeed", 1 /* PropertyTypeForEdition.Float */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: 0, max: 0.1 })
254
+ ], SystemBlock.prototype, "updateSpeed", void 0);
255
+ __decorate([
256
+ editableInPropertyPage("Pre-warm cycles", 1 /* PropertyTypeForEdition.Float */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: 0 })
257
+ ], SystemBlock.prototype, "preWarmCycles", void 0);
258
+ __decorate([
259
+ editableInPropertyPage("Pre-warm step multiplier", 1 /* PropertyTypeForEdition.Float */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: 0 })
260
+ ], SystemBlock.prototype, "preWarmStepOffset", void 0);
261
+ __decorate([
262
+ editableInPropertyPage("Is billboard based", 0 /* PropertyTypeForEdition.Boolean */, "ADVANCED", { embedded: true, notifiers: { rebuild: true } })
263
+ ], SystemBlock.prototype, "isBillboardBased", void 0);
264
+ __decorate([
265
+ editableInPropertyPage("Is local", 0 /* PropertyTypeForEdition.Boolean */, "ADVANCED", { embedded: true, notifiers: { rebuild: true } })
266
+ ], SystemBlock.prototype, "isLocal", void 0);
267
+ __decorate([
268
+ editableInPropertyPage("Dispose on stop", 0 /* PropertyTypeForEdition.Boolean */, "ADVANCED", { embedded: true, notifiers: { rebuild: true } })
269
+ ], SystemBlock.prototype, "disposeOnStop", void 0);
191
270
  __decorate([
192
271
  editableInPropertyPage("Do no start", 0 /* PropertyTypeForEdition.Boolean */, "ADVANCED", { embedded: true, notifiers: { rebuild: true } })
193
272
  ], SystemBlock.prototype, "doNoStart", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"systemBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/systemBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ParticleSystem } from \"core/Particles/particleSystem\";\r\nimport { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport { NodeParticleBlock } from \"../nodeParticleBlock\";\r\nimport type { NodeParticleConnectionPoint } from \"../nodeParticleBlockConnectionPoint\";\r\nimport type { NodeParticleBuildState } from \"../nodeParticleBuildState\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"core/Decorators/nodeDecorator\";\r\nimport { BaseParticleSystem } from \"core/Particles/baseParticleSystem\";\r\nimport { _TriggerSubEmitter } from \"./Triggers/triggerTools\";\r\n\r\n/**\r\n * Block used to get a system of particles\r\n */\r\nexport class SystemBlock extends NodeParticleBlock {\r\n private static _IdCounter = 0;\r\n\r\n /**\r\n * Gets or sets the blend mode for the particle system\r\n */\r\n @editableInPropertyPage(\"Blend mode\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"OneOne\", value: BaseParticleSystem.BLENDMODE_ONEONE },\r\n { label: \"Standard\", value: BaseParticleSystem.BLENDMODE_STANDARD },\r\n { label: \"Add\", value: BaseParticleSystem.BLENDMODE_ADD },\r\n { label: \"Multiply\", value: BaseParticleSystem.BLENDMODE_MULTIPLY },\r\n { label: \"MultiplyAdd\", value: BaseParticleSystem.BLENDMODE_MULTIPLYADD },\r\n ],\r\n })\r\n public blendMode = BaseParticleSystem.BLENDMODE_ONEONE;\r\n\r\n /**\r\n * Gets or sets the epsilon value used for comparison\r\n */\r\n @editableInPropertyPage(\"Capacity\", PropertyTypeForEdition.Int, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0, max: 10000 })\r\n public capacity = 1000;\r\n\r\n /**\r\n * Gets or sets the emit rate\r\n */\r\n @editableInPropertyPage(\"Emit rate\", PropertyTypeForEdition.Int, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0 })\r\n public emitRate = 10;\r\n\r\n /**\r\n * Gets or sets the target stop duration for the particle system\r\n */\r\n @editableInPropertyPage(\"Target duration\", PropertyTypeForEdition.Float, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0 })\r\n public targetStopDuration = 0;\r\n\r\n /**\r\n * Gets or sets the target stop duration for the particle system\r\n */\r\n @editableInPropertyPage(\"Delay start(ms)\", PropertyTypeForEdition.Float, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0 })\r\n public startDelay = 0;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the system should not start automatically\r\n */\r\n @editableInPropertyPage(\"Do no start\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true } })\r\n public doNoStart = false;\r\n\r\n /** @internal */\r\n public _internalId = SystemBlock._IdCounter++;\r\n\r\n /**\r\n * Create a new SystemBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n\r\n this._isSystem = true;\r\n\r\n this.registerInput(\"particle\", NodeParticleBlockConnectionPointTypes.Particle);\r\n this.registerInput(\"texture\", NodeParticleBlockConnectionPointTypes.Texture);\r\n this.registerInput(\"onStart\", NodeParticleBlockConnectionPointTypes.System, true);\r\n this.registerInput(\"onEnd\", NodeParticleBlockConnectionPointTypes.System, true);\r\n this.registerOutput(\"system\", NodeParticleBlockConnectionPointTypes.System);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"SystemBlock\";\r\n }\r\n\r\n /**\r\n * Gets the particle input component\r\n */\r\n public get particle(): NodeParticleConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the texture input component\r\n */\r\n public get texture(): NodeParticleConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the onStart input component\r\n */\r\n public get onStart(): NodeParticleConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the onEnd input component\r\n */\r\n public get onEnd(): NodeParticleConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the system output component\r\n */\r\n public get system(): NodeParticleConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Builds the block and return a functional particle system\r\n * @param state defines the building state\r\n * @returns the built particle system\r\n */\r\n public createSystem(state: NodeParticleBuildState): ParticleSystem {\r\n state.capacity = this.capacity;\r\n state.buildId = this._buildId++;\r\n\r\n this.build(state);\r\n\r\n const particleSystem = this.particle.getConnectedValue(state) as ParticleSystem;\r\n particleSystem.particleTexture = this.texture.getConnectedValue(state);\r\n particleSystem.emitRate = this.emitRate;\r\n particleSystem.blendMode = this.blendMode;\r\n particleSystem.name = this.name;\r\n particleSystem._targetStopDuration = this.targetStopDuration;\r\n particleSystem.startDelay = this.startDelay;\r\n\r\n this.system._storedValue = this;\r\n\r\n particleSystem.canStart = () => {\r\n return !this.doNoStart;\r\n };\r\n\r\n particleSystem.onStartedObservable.add((system) => {\r\n // Triggers\r\n const onStartSystem = this.onStart.getConnectedValue(state);\r\n if (onStartSystem) {\r\n system.onStartedObservable.addOnce(() => {\r\n state.systemContext = particleSystem;\r\n const clone = _TriggerSubEmitter(onStartSystem, state.scene, state.emitterPosition!);\r\n\r\n this.onDisposeObservable.addOnce(() => {\r\n // Clean up the cloned system when the original system is disposed\r\n clone.dispose();\r\n });\r\n });\r\n }\r\n\r\n const onEndSystem = this.onEnd.getConnectedValue(state);\r\n if (onEndSystem) {\r\n system.onStoppedObservable.addOnce(() => {\r\n state.systemContext = particleSystem;\r\n const clone = _TriggerSubEmitter(onEndSystem, state.scene, state.emitterPosition!);\r\n\r\n this.onDisposeObservable.addOnce(() => {\r\n // Clean up the cloned system when the original system is disposed\r\n clone.dispose();\r\n });\r\n });\r\n }\r\n });\r\n\r\n this.onDisposeObservable.addOnce(() => {\r\n particleSystem.dispose();\r\n });\r\n\r\n // Return\r\n return particleSystem;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.capacity = this.capacity;\r\n serializationObject.emitRate = this.emitRate;\r\n serializationObject.blendMode = this.blendMode;\r\n serializationObject.doNoStart = this.doNoStart;\r\n serializationObject.targetStopDuration = this.targetStopDuration;\r\n serializationObject.startDelay = this.startDelay;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n\r\n this.capacity = serializationObject.capacity;\r\n this.emitRate = serializationObject.emitRate;\r\n this.doNoStart = !!serializationObject.doNoStart;\r\n\r\n if (serializationObject.blendMode !== undefined) {\r\n this.blendMode = serializationObject.blendMode;\r\n }\r\n\r\n if (serializationObject.targetStopDuration !== undefined) {\r\n this.targetStopDuration = serializationObject.targetStopDuration;\r\n }\r\n\r\n if (serializationObject.startDelay !== undefined) {\r\n this.startDelay = serializationObject.startDelay;\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SystemBlock\", SystemBlock);\r\n"]}
1
+ {"version":3,"file":"systemBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/systemBlock.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,sBAAsB,EAA0B,6CAAsC;AAC/F,OAAO,EAAE,aAAa,EAAE,mCAA4B;AACpD,OAAO,EAAE,OAAO,EAAE,sCAA+B;AACjD,OAAO,EAAE,kBAAkB,EAAE,oCAA0C;AACvE,OAAO,EAAE,iBAAiB,EAAE,gCAA8C;AAC1E,OAAO,EAAE,kBAAkB,EAAE,mCAAyD;AACtF,OAAO,EAAE,qCAAqC,EAAE,0DAAwE;AAExH;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,iBAAiB;IA8F9C;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;QAhGhB;;WAEG;QAYI,cAAS,GAAG,kBAAkB,CAAC,gBAAgB,CAAC;QAEvD;;WAEG;QAEI,aAAQ,GAAG,IAAI,CAAC;QAEvB;;WAEG;QAEI,aAAQ,GAAG,EAAE,CAAC;QAErB;;WAEG;QAEI,oBAAe,GAAG,CAAC,CAAC,CAAC;QAE5B;;WAEG;QAEI,uBAAkB,GAAG,CAAC,CAAC;QAE9B;;WAEG;QAEI,eAAU,GAAG,CAAC,CAAC;QAEtB;;WAEG;QAEI,gBAAW,GAAG,MAAM,CAAC;QAE5B;;WAEG;QAEI,kBAAa,GAAG,CAAC,CAAC;QAEzB;;WAEG;QAEI,sBAAiB,GAAG,CAAC,CAAC;QAE7B;;WAEG;QAEI,qBAAgB,GAAG,IAAI,CAAC;QAE/B;;WAEG;QAEI,YAAO,GAAG,KAAK,CAAC;QAEvB;;WAEG;QAEI,kBAAa,GAAG,KAAK,CAAC;QAE7B;;WAEG;QAEI,cAAS,GAAG,KAAK,CAAC;QAEzB,gBAAgB;QACT,gBAAW,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC;QAS1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,qCAAqC,CAAC,QAAQ,CAAC,CAAC;QAC/E,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,OAAO,CAAC,CAAC;QAC7E,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,qCAAqC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChF,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,qCAAqC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5F,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,MAAM,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,aAAa,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,KAA6B;QAC7C,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAElB,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAmB,CAAC;QAChF,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACvE,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QACtD,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC9C,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAClD,cAAc,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC1D,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC1C,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAChC,cAAc,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QAC7D,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5C,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACxD,cAAc,CAAC,gBAAgB,GAAI,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,KAAK,CAAa,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAChH,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QACtC,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAElD,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;QAEhC,cAAc,CAAC,QAAQ,GAAG,GAAG,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAC3B,CAAC,CAAC;QAEF,cAAc,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9C,WAAW;YACX,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC5D,IAAI,aAAa,EAAE,CAAC;gBAChB,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE;oBACpC,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC;oBACrC,MAAM,KAAK,GAAG,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,eAAgB,CAAC,CAAC;oBAErF,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE;wBAClC,kEAAkE;wBAClE,KAAK,CAAC,OAAO,EAAE,CAAC;oBACpB,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,WAAW,EAAE,CAAC;gBACd,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE;oBACpC,KAAK,CAAC,aAAa,GAAG,cAAc,CAAC;oBACrC,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,eAAgB,CAAC,CAAC;oBAEnF,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE;wBAClC,kEAAkE;wBAClE,KAAK,CAAC,OAAO,EAAE,CAAC;oBACpB,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE;YAClC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,SAAS;QACT,OAAO,cAAc,CAAC;IAC1B,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7C,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7C,mBAAmB,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC3D,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/C,mBAAmB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACnD,mBAAmB,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACvD,mBAAmB,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC/D,mBAAmB,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7D,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3C,mBAAmB,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACvD,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/C,mBAAmB,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACjE,mBAAmB,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEjD,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB;QACjD,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,mBAAmB,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,WAAW,IAAI,MAAM,CAAC;QAC7D,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,aAAa,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACrE,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,IAAI,KAAK,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,aAAa,IAAI,KAAK,CAAC;QAChE,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC;QAEjD,IAAI,mBAAmB,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;QACnD,CAAC;QAED,IAAI,mBAAmB,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACvD,IAAI,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC;QACrE,CAAC;QAED,IAAI,mBAAmB,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAC/C,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC;QACrD,CAAC;IACL,CAAC;;AAnRc,sBAAU,GAAG,CAAC,AAAJ,CAAK;AAgBvB;IAXN,sBAAsB,CAAC,YAAY,uCAA+B,UAAU,EAAE;QAC3E,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC5B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACL,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,CAAC,gBAAgB,EAAE;YAC/D,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,CAAC,kBAAkB,EAAE;YACnE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC,aAAa,EAAE;YACzD,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,CAAC,kBAAkB,EAAE;YACnE,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,CAAC,qBAAqB,EAAE;SAC5E;KACJ,CAAC;8CACqD;AAMhD;IADN,sBAAsB,CAAC,UAAU,sCAA8B,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;6CAC1H;AAMhB;IADN,sBAAsB,CAAC,WAAW,sCAA8B,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;6CACjH;AAMd;IADN,sBAAsB,CAAC,mBAAmB,sCAA8B,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;oDACnH;AAMrB;IADN,sBAAsB,CAAC,iBAAiB,wCAAgC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;uDAChH;AAMvB;IADN,sBAAsB,CAAC,iBAAiB,wCAAgC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;+CACxH;AAMf;IADN,sBAAsB,CAAC,aAAa,wCAAgC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;gDACxH;AAMrB;IADN,sBAAsB,CAAC,iBAAiB,wCAAgC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;kDACrH;AAMlB;IADN,sBAAsB,CAAC,0BAA0B,wCAAgC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;sDAC1H;AAMtB;IADN,sBAAsB,CAAC,oBAAoB,0CAAkC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;qDAC5G;AAMxB;IADN,sBAAsB,CAAC,UAAU,0CAAkC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;4CAC1G;AAMhB;IADN,sBAAsB,CAAC,iBAAiB,0CAAkC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;kDAC3G;AAMtB;IADN,sBAAsB,CAAC,aAAa,0CAAkC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;8CAC3G;AA8L7B,aAAa,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC","sourcesContent":["import type { ParticleSystem } from \"core/Particles/particleSystem\";\r\nimport type { NodeParticleConnectionPoint } from \"core/Particles/Node/nodeParticleBlockConnectionPoint\";\r\nimport type { NodeParticleBuildState } from \"core/Particles/Node/nodeParticleBuildState\";\r\n\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"core/Decorators/nodeDecorator\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Vector2 } from \"core/Maths/math.vector\";\r\nimport { BaseParticleSystem } from \"core/Particles/baseParticleSystem\";\r\nimport { NodeParticleBlock } from \"core/Particles/Node/nodeParticleBlock\";\r\nimport { _TriggerSubEmitter } from \"core/Particles/Node/Blocks/Triggers/triggerTools\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"core/Particles/Node/Enums/nodeParticleBlockConnectionPointTypes\";\r\n\r\n/**\r\n * Block used to get a system of particles\r\n */\r\nexport class SystemBlock extends NodeParticleBlock {\r\n private static _IdCounter = 0;\r\n\r\n /**\r\n * Gets or sets the blend mode for the particle system\r\n */\r\n @editableInPropertyPage(\"Blend mode\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"OneOne\", value: BaseParticleSystem.BLENDMODE_ONEONE },\r\n { label: \"Standard\", value: BaseParticleSystem.BLENDMODE_STANDARD },\r\n { label: \"Add\", value: BaseParticleSystem.BLENDMODE_ADD },\r\n { label: \"Multiply\", value: BaseParticleSystem.BLENDMODE_MULTIPLY },\r\n { label: \"MultiplyAdd\", value: BaseParticleSystem.BLENDMODE_MULTIPLYADD },\r\n ],\r\n })\r\n public blendMode = BaseParticleSystem.BLENDMODE_ONEONE;\r\n\r\n /**\r\n * Gets or sets the epsilon value used for comparison\r\n */\r\n @editableInPropertyPage(\"Capacity\", PropertyTypeForEdition.Int, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0, max: 10000 })\r\n public capacity = 1000;\r\n\r\n /**\r\n * Gets or sets the emit rate\r\n */\r\n @editableInPropertyPage(\"Emit rate\", PropertyTypeForEdition.Int, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0 })\r\n public emitRate = 10;\r\n\r\n /**\r\n * Gets or sets the manual emit count\r\n */\r\n @editableInPropertyPage(\"Manual emit count\", PropertyTypeForEdition.Int, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: -1 })\r\n public manualEmitCount = -1;\r\n\r\n /**\r\n * Gets or sets the target stop duration for the particle system\r\n */\r\n @editableInPropertyPage(\"Target duration\", PropertyTypeForEdition.Float, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0 })\r\n public targetStopDuration = 0;\r\n\r\n /**\r\n * Gets or sets the target stop duration for the particle system\r\n */\r\n @editableInPropertyPage(\"Delay start(ms)\", PropertyTypeForEdition.Float, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0 })\r\n public startDelay = 0;\r\n\r\n /**\r\n * Gets or sets the target stop duration for the particle system\r\n */\r\n @editableInPropertyPage(\"updateSpeed\", PropertyTypeForEdition.Float, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0, max: 0.1 })\r\n public updateSpeed = 0.0167;\r\n\r\n /**\r\n * Gets or sets the number of pre-warm cycles before rendering the particle system\r\n */\r\n @editableInPropertyPage(\"Pre-warm cycles\", PropertyTypeForEdition.Float, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0 })\r\n public preWarmCycles = 0;\r\n\r\n /**\r\n * Gets or sets the time step multiplier used for pre-warm\r\n */\r\n @editableInPropertyPage(\"Pre-warm step multiplier\", PropertyTypeForEdition.Float, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0 })\r\n public preWarmStepOffset = 0;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the system is billboard based\r\n */\r\n @editableInPropertyPage(\"Is billboard based\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true } })\r\n public isBillboardBased = true;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the system coordinate space is local or global\r\n */\r\n @editableInPropertyPage(\"Is local\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true } })\r\n public isLocal = false;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the system should be disposed when stopped\r\n */\r\n @editableInPropertyPage(\"Dispose on stop\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true } })\r\n public disposeOnStop = false;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the system should not start automatically\r\n */\r\n @editableInPropertyPage(\"Do no start\", PropertyTypeForEdition.Boolean, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true } })\r\n public doNoStart = false;\r\n\r\n /** @internal */\r\n public _internalId = SystemBlock._IdCounter++;\r\n\r\n /**\r\n * Create a new SystemBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n\r\n this._isSystem = true;\r\n\r\n this.registerInput(\"particle\", NodeParticleBlockConnectionPointTypes.Particle);\r\n this.registerInput(\"texture\", NodeParticleBlockConnectionPointTypes.Texture);\r\n this.registerInput(\"onStart\", NodeParticleBlockConnectionPointTypes.System, true);\r\n this.registerInput(\"onEnd\", NodeParticleBlockConnectionPointTypes.System, true);\r\n this.registerInput(\"translationPivot\", NodeParticleBlockConnectionPointTypes.Vector2, true);\r\n this.registerOutput(\"system\", NodeParticleBlockConnectionPointTypes.System);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"SystemBlock\";\r\n }\r\n\r\n /**\r\n * Gets the particle input component\r\n */\r\n public get particle(): NodeParticleConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the texture input component\r\n */\r\n public get texture(): NodeParticleConnectionPoint {\r\n return this._inputs[1];\r\n }\r\n\r\n /**\r\n * Gets the onStart input component\r\n */\r\n public get onStart(): NodeParticleConnectionPoint {\r\n return this._inputs[2];\r\n }\r\n\r\n /**\r\n * Gets the onEnd input component\r\n */\r\n public get onEnd(): NodeParticleConnectionPoint {\r\n return this._inputs[3];\r\n }\r\n\r\n /**\r\n * Gets the translationPivot input component\r\n */\r\n public get translationPivot(): NodeParticleConnectionPoint {\r\n return this._inputs[4];\r\n }\r\n\r\n /**\r\n * Gets the system output component\r\n */\r\n public get system(): NodeParticleConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n /**\r\n * Builds the block and return a functional particle system\r\n * @param state defines the building state\r\n * @returns the built particle system\r\n */\r\n public createSystem(state: NodeParticleBuildState): ParticleSystem {\r\n state.capacity = this.capacity;\r\n state.buildId = this._buildId++;\r\n\r\n this.build(state);\r\n\r\n const particleSystem = this.particle.getConnectedValue(state) as ParticleSystem;\r\n particleSystem.particleTexture = this.texture.getConnectedValue(state);\r\n particleSystem.emitRate = this.emitRate;\r\n particleSystem.manualEmitCount = this.manualEmitCount;\r\n particleSystem.updateSpeed = this.updateSpeed;\r\n particleSystem.preWarmCycles = this.preWarmCycles;\r\n particleSystem.preWarmStepOffset = this.preWarmStepOffset;\r\n particleSystem.blendMode = this.blendMode;\r\n particleSystem.name = this.name;\r\n particleSystem._targetStopDuration = this.targetStopDuration;\r\n particleSystem.startDelay = this.startDelay;\r\n particleSystem.isBillboardBased = this.isBillboardBased;\r\n particleSystem.translationPivot = (this.translationPivot.getConnectedValue(state) as Vector2) || Vector2.Zero();\r\n particleSystem.isLocal = this.isLocal;\r\n particleSystem.disposeOnStop = this.disposeOnStop;\r\n\r\n this.system._storedValue = this;\r\n\r\n particleSystem.canStart = () => {\r\n return !this.doNoStart;\r\n };\r\n\r\n particleSystem.onStartedObservable.add((system) => {\r\n // Triggers\r\n const onStartSystem = this.onStart.getConnectedValue(state);\r\n if (onStartSystem) {\r\n system.onStartedObservable.addOnce(() => {\r\n state.systemContext = particleSystem;\r\n const clone = _TriggerSubEmitter(onStartSystem, state.scene, state.emitterPosition!);\r\n\r\n this.onDisposeObservable.addOnce(() => {\r\n // Clean up the cloned system when the original system is disposed\r\n clone.dispose();\r\n });\r\n });\r\n }\r\n\r\n const onEndSystem = this.onEnd.getConnectedValue(state);\r\n if (onEndSystem) {\r\n system.onStoppedObservable.addOnce(() => {\r\n state.systemContext = particleSystem;\r\n const clone = _TriggerSubEmitter(onEndSystem, state.scene, state.emitterPosition!);\r\n\r\n this.onDisposeObservable.addOnce(() => {\r\n // Clean up the cloned system when the original system is disposed\r\n clone.dispose();\r\n });\r\n });\r\n }\r\n });\r\n\r\n this.onDisposeObservable.addOnce(() => {\r\n particleSystem.dispose();\r\n });\r\n\r\n // Return\r\n return particleSystem;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.capacity = this.capacity;\r\n serializationObject.emitRate = this.emitRate;\r\n serializationObject.manualEmitCount = this.manualEmitCount;\r\n serializationObject.blendMode = this.blendMode;\r\n serializationObject.updateSpeed = this.updateSpeed;\r\n serializationObject.preWarmCycles = this.preWarmCycles;\r\n serializationObject.preWarmStepOffset = this.preWarmStepOffset;\r\n serializationObject.isBillboardBased = this.isBillboardBased;\r\n serializationObject.isLocal = this.isLocal;\r\n serializationObject.disposeOnStop = this.disposeOnStop;\r\n serializationObject.doNoStart = this.doNoStart;\r\n serializationObject.targetStopDuration = this.targetStopDuration;\r\n serializationObject.startDelay = this.startDelay;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n\r\n this.capacity = serializationObject.capacity;\r\n this.emitRate = serializationObject.emitRate;\r\n this.manualEmitCount = serializationObject.manualEmitCount ?? -1;\r\n this.updateSpeed = serializationObject.updateSpeed ?? 0.0167;\r\n this.preWarmCycles = serializationObject.preWarmCycles ?? 0;\r\n this.preWarmStepOffset = serializationObject.preWarmStepOffset ?? 0;\r\n this.isBillboardBased = serializationObject.isBillboardBased ?? true;\r\n this.isLocal = serializationObject.isLocal ?? false;\r\n this.disposeOnStop = serializationObject.disposeOnStop ?? false;\r\n this.doNoStart = !!serializationObject.doNoStart;\r\n\r\n if (serializationObject.blendMode !== undefined) {\r\n this.blendMode = serializationObject.blendMode;\r\n }\r\n\r\n if (serializationObject.targetStopDuration !== undefined) {\r\n this.targetStopDuration = serializationObject.targetStopDuration;\r\n }\r\n\r\n if (serializationObject.startDelay !== undefined) {\r\n this.startDelay = serializationObject.startDelay;\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.SystemBlock\", SystemBlock);\r\n"]}
@@ -33,5 +33,9 @@ export declare enum NodeParticleContextualSources {
33
33
  /** Color Dead*/
34
34
  ColorDead = 20,
35
35
  /** Initial Direction */
36
- InitialDirection = 21
36
+ InitialDirection = 21,
37
+ /** Color Step */
38
+ ColorStep = 22,
39
+ /** Scaled Color Step */
40
+ ScaledColorStep = 23
37
41
  }
@@ -36,5 +36,9 @@ export var NodeParticleContextualSources;
36
36
  NodeParticleContextualSources[NodeParticleContextualSources["ColorDead"] = 20] = "ColorDead";
37
37
  /** Initial Direction */
38
38
  NodeParticleContextualSources[NodeParticleContextualSources["InitialDirection"] = 21] = "InitialDirection";
39
+ /** Color Step */
40
+ NodeParticleContextualSources[NodeParticleContextualSources["ColorStep"] = 22] = "ColorStep";
41
+ /** Scaled Color Step */
42
+ NodeParticleContextualSources[NodeParticleContextualSources["ScaledColorStep"] = 23] = "ScaledColorStep";
39
43
  })(NodeParticleContextualSources || (NodeParticleContextualSources = {}));
40
44
  //# sourceMappingURL=nodeParticleContextualSources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodeParticleContextualSources.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Enums/nodeParticleContextualSources.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD;;GAEG;AACH,MAAM,CAAN,IAAY,6BAiCX;AAjCD,WAAY,6BAA6B;IACrC,WAAW;IACX,iFAAa,CAAA;IACb,eAAe;IACf,yFAAiB,CAAA;IACjB,gBAAgB;IAChB,2FAAkB,CAAA;IAClB,UAAU;IACV,+EAAY,CAAA;IACZ,eAAe;IACf,yFAAiB,CAAA;IACjB,YAAY;IACZ,mFAAc,CAAA;IACd,sBAAsB;IACtB,uGAAwB,CAAA;IACxB,YAAY;IACZ,mFAAc,CAAA;IACd,kBAAkB;IAClB,+FAAoB,CAAA;IACpB,YAAY;IACZ,mFAAc,CAAA;IACd,sBAAsB;IACtB,wGAAwB,CAAA;IACxB,sBAAsB;IACtB,wGAAwB,CAAA;IACxB,oBAAoB;IACpB,oGAAsB,CAAA;IACtB,oBAAoB;IACpB,kGAAqB,CAAA;IACrB,gBAAgB;IAChB,4FAAkB,CAAA;IAClB,wBAAwB;IACxB,0GAAyB,CAAA;AAC7B,CAAC,EAjCW,6BAA6B,KAA7B,6BAA6B,QAiCxC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n/**\r\n * Defines the kind of contextual sources for node particles\r\n */\r\nexport enum NodeParticleContextualSources {\r\n /** None */\r\n None = 0x0000,\r\n /** Position */\r\n Position = 0x0001,\r\n /** Direction */\r\n Direction = 0x0002,\r\n /** Age */\r\n Age = 0x0003,\r\n /** Lifetime */\r\n Lifetime = 0x0004,\r\n /** Color */\r\n Color = 0x0005,\r\n /** ScaledDirection */\r\n ScaledDirection = 0x0006,\r\n /** Scale */\r\n Scale = 0x0007,\r\n /** AgeGradient */\r\n AgeGradient = 0x0008,\r\n /** Angle */\r\n Angle = 0x0009,\r\n /** SpriteCellIndex */\r\n SpriteCellIndex = 0x0010,\r\n /** SpriteCellStart */\r\n SpriteCellStart = 0x0011,\r\n /** SpriteCellEnd */\r\n SpriteCellEnd = 0x0012,\r\n /** Initial Color */\r\n InitialColor = 0x0013,\r\n /** Color Dead*/\r\n ColorDead = 0x0014,\r\n /** Initial Direction */\r\n InitialDirection = 0x0015,\r\n}\r\n"]}
1
+ {"version":3,"file":"nodeParticleContextualSources.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Enums/nodeParticleContextualSources.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD;;GAEG;AACH,MAAM,CAAN,IAAY,6BAqCX;AArCD,WAAY,6BAA6B;IACrC,WAAW;IACX,iFAAa,CAAA;IACb,eAAe;IACf,yFAAiB,CAAA;IACjB,gBAAgB;IAChB,2FAAkB,CAAA;IAClB,UAAU;IACV,+EAAY,CAAA;IACZ,eAAe;IACf,yFAAiB,CAAA;IACjB,YAAY;IACZ,mFAAc,CAAA;IACd,sBAAsB;IACtB,uGAAwB,CAAA;IACxB,YAAY;IACZ,mFAAc,CAAA;IACd,kBAAkB;IAClB,+FAAoB,CAAA;IACpB,YAAY;IACZ,mFAAc,CAAA;IACd,sBAAsB;IACtB,wGAAwB,CAAA;IACxB,sBAAsB;IACtB,wGAAwB,CAAA;IACxB,oBAAoB;IACpB,oGAAsB,CAAA;IACtB,oBAAoB;IACpB,kGAAqB,CAAA;IACrB,gBAAgB;IAChB,4FAAkB,CAAA;IAClB,wBAAwB;IACxB,0GAAyB,CAAA;IACzB,iBAAiB;IACjB,4FAAkB,CAAA;IAClB,wBAAwB;IACxB,wGAAwB,CAAA;AAC5B,CAAC,EArCW,6BAA6B,KAA7B,6BAA6B,QAqCxC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\n/**\r\n * Defines the kind of contextual sources for node particles\r\n */\r\nexport enum NodeParticleContextualSources {\r\n /** None */\r\n None = 0x0000,\r\n /** Position */\r\n Position = 0x0001,\r\n /** Direction */\r\n Direction = 0x0002,\r\n /** Age */\r\n Age = 0x0003,\r\n /** Lifetime */\r\n Lifetime = 0x0004,\r\n /** Color */\r\n Color = 0x0005,\r\n /** ScaledDirection */\r\n ScaledDirection = 0x0006,\r\n /** Scale */\r\n Scale = 0x0007,\r\n /** AgeGradient */\r\n AgeGradient = 0x0008,\r\n /** Angle */\r\n Angle = 0x0009,\r\n /** SpriteCellIndex */\r\n SpriteCellIndex = 0x0010,\r\n /** SpriteCellStart */\r\n SpriteCellStart = 0x0011,\r\n /** SpriteCellEnd */\r\n SpriteCellEnd = 0x0012,\r\n /** Initial Color */\r\n InitialColor = 0x0013,\r\n /** Color Dead*/\r\n ColorDead = 0x0014,\r\n /** Initial Direction */\r\n InitialDirection = 0x0015,\r\n /** Color Step */\r\n ColorStep = 0x0016,\r\n /** Scaled Color Step */\r\n ScaledColorStep = 0x0017,\r\n}\r\n"]}
@@ -8,7 +8,6 @@ import { Vector2, Vector3 } from "../../Maths/math.vector.js";
8
8
  import type { ThinParticleSystem } from "../thinParticleSystem.js";
9
9
  import { Color4 } from "../../Maths/math.color.js";
10
10
  import { NodeParticleSystemSources } from "./Enums/nodeParticleSystemSources.js";
11
- import type { AbstractMesh } from "../../Meshes/abstractMesh.js";
12
11
  /**
13
12
  * Class used to store node based geometry build state
14
13
  */
@@ -64,10 +63,6 @@ export declare class NodeParticleBuildState {
64
63
  * @returns the value associated with the source
65
64
  */
66
65
  getContextualValue(source: NodeParticleContextualSources): number | Color4 | Nullable<Vector3> | Vector2;
67
- /**
68
- * Gets a boolean indicating if the emitter is a transform node (or a simple vector3)
69
- */
70
- get isEmitterTransformNode(): boolean;
71
66
  /**
72
67
  * Gets the emitter world matrix
73
68
  */
@@ -79,11 +74,11 @@ export declare class NodeParticleBuildState {
79
74
  /**
80
75
  * Gets the emitter position
81
76
  */
82
- get emitterPosition(): Vector3 | null;
77
+ get emitterPosition(): Nullable<Vector3>;
83
78
  /**
84
79
  * Gets the value associated with a system source
85
80
  * @param source Source of the system value
86
81
  * @returns the value associated with the source
87
82
  */
88
- getSystemValue(source: NodeParticleSystemSources): number | Nullable<Vector3 | AbstractMesh>;
83
+ getSystemValue(source: NodeParticleSystemSources): number | Nullable<Vector3>;
89
84
  }
@@ -102,21 +102,14 @@ export class NodeParticleBuildState {
102
102
  return this.systemContext.startSpriteCellID;
103
103
  case NodeParticleContextualSources.InitialDirection:
104
104
  return this.particleContext._initialDirection;
105
+ case NodeParticleContextualSources.ColorStep:
106
+ return this.particleContext.colorStep;
107
+ case NodeParticleContextualSources.ScaledColorStep:
108
+ this.particleContext.colorStep.scaleToRef(this.systemContext._scaledUpdateSpeed, this.systemContext._scaledColorStep);
109
+ return this.systemContext._scaledColorStep;
105
110
  }
106
111
  return null;
107
112
  }
108
- /**
109
- * Gets a boolean indicating if the emitter is a transform node (or a simple vector3)
110
- */
111
- get isEmitterTransformNode() {
112
- if (!this.systemContext) {
113
- return false;
114
- }
115
- if (this.systemContext.emitter.position) {
116
- return true;
117
- }
118
- return false;
119
- }
120
113
  /**
121
114
  * Gets the emitter world matrix
122
115
  */
@@ -142,10 +135,13 @@ export class NodeParticleBuildState {
142
135
  if (!this.systemContext) {
143
136
  return null;
144
137
  }
145
- if (this.isEmitterTransformNode) {
146
- return this.systemContext.emitter.absolutePosition;
138
+ if (!this.systemContext.emitter) {
139
+ return null;
140
+ }
141
+ if (this.systemContext.emitter instanceof Vector3) {
142
+ return this.systemContext.emitter;
147
143
  }
148
- return this.systemContext.emitter;
144
+ return this.systemContext.emitter.absolutePosition;
149
145
  }
150
146
  /**
151
147
  * Gets the value associated with a system source
@@ -162,13 +158,7 @@ export class NodeParticleBuildState {
162
158
  case NodeParticleSystemSources.Delta:
163
159
  return this.systemContext._scaledUpdateSpeed;
164
160
  case NodeParticleSystemSources.Emitter:
165
- if (this.isEmitterTransformNode) {
166
- const emitterMesh = this.systemContext.emitter;
167
- return emitterMesh.absolutePosition;
168
- }
169
- else {
170
- return this.systemContext.emitter;
171
- }
161
+ return this.emitterPosition;
172
162
  case NodeParticleSystemSources.CameraPosition:
173
163
  return this.scene.activeCamera?.globalPosition || Vector3.Zero();
174
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nodeParticleBuildState.js","sourceRoot":"","sources":["../../../../../dev/core/src/Particles/Node/nodeParticleBuildState.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"core/scene\";\r\nimport type { NodeParticleConnectionPoint } from \"./nodeParticleBlockConnectionPoint\";\r\nimport { NodeParticleContextualSources } from \"./Enums/nodeParticleContextualSources\";\r\nimport type { Particle } from \"../particle\";\r\nimport type { Nullable } from \"core/types\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"./Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport { Vector2, Vector3 } from \"core/Maths/math.vector\";\r\nimport type { ThinParticleSystem } from \"../thinParticleSystem\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { NodeParticleSystemSources } from \"./Enums/nodeParticleSystemSources\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\n\r\n/**\r\n * Class used to store node based geometry build state\r\n */\r\nexport class NodeParticleBuildState {\r\n /**\r\n * Gets the capactity of the particle system to build\r\n */\r\n public capacity: number;\r\n\r\n /**\r\n * Gets the scene where the particle system is built\r\n */\r\n public scene: Scene;\r\n\r\n /** Gets or sets the build identifier */\r\n public buildId: number;\r\n\r\n /** Gets or sets the list of non connected mandatory inputs */\r\n public notConnectedNonOptionalInputs: NodeParticleConnectionPoint[] = [];\r\n\r\n /** Gets or sets a boolean indicating that verbose mode is on */\r\n public verbose: boolean;\r\n\r\n /**\r\n * Gets or sets the particle context for contextual data\r\n */\r\n public particleContext: Nullable<Particle> = null;\r\n\r\n /**\r\n * Gets or sets the system context for contextual data\r\n */\r\n public systemContext: Nullable<ThinParticleSystem> = null;\r\n\r\n /**\r\n * Gets or sets the index of the gradient to use\r\n */\r\n public gradientIndex: number = 0;\r\n /**\r\n * Gets or sets next gradient in line\r\n */\r\n public nextGradientIndex: number = 0;\r\n /**\r\n * Gets or sets the next gradient value\r\n */\r\n public nextGradientValue: any;\r\n\r\n /**\r\n * Emits errors if any\r\n */\r\n public emitErrors() {\r\n let errorMessage = \"\";\r\n\r\n for (const notConnectedInput of this.notConnectedNonOptionalInputs) {\r\n errorMessage += `input ${notConnectedInput.name} from block ${\r\n notConnectedInput.ownerBlock.name\r\n }[${notConnectedInput.ownerBlock.getClassName()}] is not connected and is not optional.\\n`;\r\n }\r\n\r\n if (errorMessage) {\r\n // eslint-disable-next-line no-throw-literal\r\n throw \"Build of Node Particle System Set failed:\\n\" + errorMessage;\r\n }\r\n }\r\n\r\n /**\r\n * Adapt a value to a target type\r\n * @param source defines the value to adapt\r\n * @param targetType defines the target type\r\n * @returns the adapted value\r\n */\r\n adapt(source: NodeParticleConnectionPoint, targetType: NodeParticleBlockConnectionPointTypes) {\r\n const value = source.getConnectedValue(this) || 0;\r\n\r\n if (source.type === targetType) {\r\n return value;\r\n }\r\n\r\n switch (targetType) {\r\n case NodeParticleBlockConnectionPointTypes.Vector2:\r\n return new Vector2(value, value);\r\n case NodeParticleBlockConnectionPointTypes.Vector3:\r\n return new Vector3(value, value, value);\r\n case NodeParticleBlockConnectionPointTypes.Color4:\r\n return new Color4(value, value, value, value);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the value associated with a contextual source\r\n * @param source Source of the contextual value\r\n * @returns the value associated with the source\r\n */\r\n public getContextualValue(source: NodeParticleContextualSources) {\r\n if (!this.particleContext || !this.systemContext) {\r\n return null;\r\n }\r\n\r\n switch (source) {\r\n case NodeParticleContextualSources.Position:\r\n return this.particleContext.position;\r\n case NodeParticleContextualSources.Direction:\r\n return this.particleContext.direction;\r\n case NodeParticleContextualSources.ScaledDirection:\r\n this.particleContext.direction.scaleToRef(this.systemContext._directionScale, this.systemContext._scaledDirection);\r\n return this.systemContext._scaledDirection;\r\n case NodeParticleContextualSources.Color:\r\n return this.particleContext.color;\r\n case NodeParticleContextualSources.InitialColor:\r\n return this.particleContext.initialColor;\r\n case NodeParticleContextualSources.ColorDead:\r\n return this.particleContext.colorDead;\r\n case NodeParticleContextualSources.Age:\r\n return this.particleContext.age;\r\n case NodeParticleContextualSources.Lifetime:\r\n return this.particleContext.lifeTime;\r\n case NodeParticleContextualSources.Angle:\r\n return this.particleContext.angle;\r\n case NodeParticleContextualSources.Scale:\r\n return this.particleContext.scale;\r\n case NodeParticleContextualSources.AgeGradient:\r\n return this.particleContext.age / this.particleContext.lifeTime;\r\n case NodeParticleContextualSources.SpriteCellEnd:\r\n return this.systemContext.endSpriteCellID;\r\n case NodeParticleContextualSources.SpriteCellIndex:\r\n return this.particleContext.cellIndex;\r\n case NodeParticleContextualSources.SpriteCellStart:\r\n return this.systemContext.startSpriteCellID;\r\n case NodeParticleContextualSources.InitialDirection:\r\n return this.particleContext._initialDirection;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the emitter is a transform node (or a simple vector3)\r\n */\r\n public get isEmitterTransformNode() {\r\n if (!this.systemContext) {\r\n return false;\r\n }\r\n\r\n if ((<AbstractMesh>this.systemContext.emitter).position) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * Gets the emitter world matrix\r\n */\r\n public get emitterWorldMatrix() {\r\n if (!this.systemContext) {\r\n return null;\r\n }\r\n return this.systemContext._emitterWorldMatrix;\r\n }\r\n\r\n /**\r\n * Gets the emitter inverse world matrix\r\n */\r\n public get emitterInverseWorldMatrix() {\r\n if (!this.systemContext) {\r\n return null;\r\n }\r\n return this.systemContext._emitterInverseWorldMatrix;\r\n }\r\n\r\n /**\r\n * Gets the emitter position\r\n */\r\n public get emitterPosition() {\r\n if (!this.systemContext) {\r\n return null;\r\n }\r\n\r\n if (this.isEmitterTransformNode) {\r\n return (<AbstractMesh>this.systemContext.emitter).absolutePosition;\r\n }\r\n\r\n return this.systemContext.emitter as Vector3;\r\n }\r\n\r\n /**\r\n * Gets the value associated with a system source\r\n * @param source Source of the system value\r\n * @returns the value associated with the source\r\n */\r\n public getSystemValue(source: NodeParticleSystemSources) {\r\n if (!this.particleContext || !this.systemContext) {\r\n return null;\r\n }\r\n\r\n switch (source) {\r\n case NodeParticleSystemSources.Time:\r\n return this.systemContext._actualFrame;\r\n case NodeParticleSystemSources.Delta:\r\n return this.systemContext._scaledUpdateSpeed;\r\n case NodeParticleSystemSources.Emitter:\r\n if (this.isEmitterTransformNode) {\r\n const emitterMesh = <AbstractMesh>this.systemContext.emitter;\r\n return emitterMesh.absolutePosition;\r\n } else {\r\n return this.systemContext.emitter;\r\n }\r\n case NodeParticleSystemSources.CameraPosition:\r\n return this.scene.activeCamera?.globalPosition || Vector3.Zero();\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"nodeParticleBuildState.js","sourceRoot":"","sources":["../../../../../dev/core/src/Particles/Node/nodeParticleBuildState.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"core/scene\";\r\nimport type { NodeParticleConnectionPoint } from \"./nodeParticleBlockConnectionPoint\";\r\nimport { NodeParticleContextualSources } from \"./Enums/nodeParticleContextualSources\";\r\nimport type { Particle } from \"../particle\";\r\nimport type { Nullable } from \"core/types\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"./Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport { Vector2, Vector3 } from \"core/Maths/math.vector\";\r\nimport type { ThinParticleSystem } from \"../thinParticleSystem\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { NodeParticleSystemSources } from \"./Enums/nodeParticleSystemSources\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\n\r\n/**\r\n * Class used to store node based geometry build state\r\n */\r\nexport class NodeParticleBuildState {\r\n /**\r\n * Gets the capactity of the particle system to build\r\n */\r\n public capacity: number;\r\n\r\n /**\r\n * Gets the scene where the particle system is built\r\n */\r\n public scene: Scene;\r\n\r\n /** Gets or sets the build identifier */\r\n public buildId: number;\r\n\r\n /** Gets or sets the list of non connected mandatory inputs */\r\n public notConnectedNonOptionalInputs: NodeParticleConnectionPoint[] = [];\r\n\r\n /** Gets or sets a boolean indicating that verbose mode is on */\r\n public verbose: boolean;\r\n\r\n /**\r\n * Gets or sets the particle context for contextual data\r\n */\r\n public particleContext: Nullable<Particle> = null;\r\n\r\n /**\r\n * Gets or sets the system context for contextual data\r\n */\r\n public systemContext: Nullable<ThinParticleSystem> = null;\r\n\r\n /**\r\n * Gets or sets the index of the gradient to use\r\n */\r\n public gradientIndex: number = 0;\r\n /**\r\n * Gets or sets next gradient in line\r\n */\r\n public nextGradientIndex: number = 0;\r\n /**\r\n * Gets or sets the next gradient value\r\n */\r\n public nextGradientValue: any;\r\n\r\n /**\r\n * Emits errors if any\r\n */\r\n public emitErrors() {\r\n let errorMessage = \"\";\r\n\r\n for (const notConnectedInput of this.notConnectedNonOptionalInputs) {\r\n errorMessage += `input ${notConnectedInput.name} from block ${\r\n notConnectedInput.ownerBlock.name\r\n }[${notConnectedInput.ownerBlock.getClassName()}] is not connected and is not optional.\\n`;\r\n }\r\n\r\n if (errorMessage) {\r\n // eslint-disable-next-line no-throw-literal\r\n throw \"Build of Node Particle System Set failed:\\n\" + errorMessage;\r\n }\r\n }\r\n\r\n /**\r\n * Adapt a value to a target type\r\n * @param source defines the value to adapt\r\n * @param targetType defines the target type\r\n * @returns the adapted value\r\n */\r\n adapt(source: NodeParticleConnectionPoint, targetType: NodeParticleBlockConnectionPointTypes) {\r\n const value = source.getConnectedValue(this) || 0;\r\n\r\n if (source.type === targetType) {\r\n return value;\r\n }\r\n\r\n switch (targetType) {\r\n case NodeParticleBlockConnectionPointTypes.Vector2:\r\n return new Vector2(value, value);\r\n case NodeParticleBlockConnectionPointTypes.Vector3:\r\n return new Vector3(value, value, value);\r\n case NodeParticleBlockConnectionPointTypes.Color4:\r\n return new Color4(value, value, value, value);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the value associated with a contextual source\r\n * @param source Source of the contextual value\r\n * @returns the value associated with the source\r\n */\r\n public getContextualValue(source: NodeParticleContextualSources) {\r\n if (!this.particleContext || !this.systemContext) {\r\n return null;\r\n }\r\n\r\n switch (source) {\r\n case NodeParticleContextualSources.Position:\r\n return this.particleContext.position;\r\n case NodeParticleContextualSources.Direction:\r\n return this.particleContext.direction;\r\n case NodeParticleContextualSources.ScaledDirection:\r\n this.particleContext.direction.scaleToRef(this.systemContext._directionScale, this.systemContext._scaledDirection);\r\n return this.systemContext._scaledDirection;\r\n case NodeParticleContextualSources.Color:\r\n return this.particleContext.color;\r\n case NodeParticleContextualSources.InitialColor:\r\n return this.particleContext.initialColor;\r\n case NodeParticleContextualSources.ColorDead:\r\n return this.particleContext.colorDead;\r\n case NodeParticleContextualSources.Age:\r\n return this.particleContext.age;\r\n case NodeParticleContextualSources.Lifetime:\r\n return this.particleContext.lifeTime;\r\n case NodeParticleContextualSources.Angle:\r\n return this.particleContext.angle;\r\n case NodeParticleContextualSources.Scale:\r\n return this.particleContext.scale;\r\n case NodeParticleContextualSources.AgeGradient:\r\n return this.particleContext.age / this.particleContext.lifeTime;\r\n case NodeParticleContextualSources.SpriteCellEnd:\r\n return this.systemContext.endSpriteCellID;\r\n case NodeParticleContextualSources.SpriteCellIndex:\r\n return this.particleContext.cellIndex;\r\n case NodeParticleContextualSources.SpriteCellStart:\r\n return this.systemContext.startSpriteCellID;\r\n case NodeParticleContextualSources.InitialDirection:\r\n return this.particleContext._initialDirection;\r\n case NodeParticleContextualSources.ColorStep:\r\n return this.particleContext.colorStep;\r\n case NodeParticleContextualSources.ScaledColorStep:\r\n this.particleContext.colorStep.scaleToRef(this.systemContext._scaledUpdateSpeed, this.systemContext._scaledColorStep);\r\n return this.systemContext._scaledColorStep;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the emitter world matrix\r\n */\r\n public get emitterWorldMatrix() {\r\n if (!this.systemContext) {\r\n return null;\r\n }\r\n return this.systemContext._emitterWorldMatrix;\r\n }\r\n\r\n /**\r\n * Gets the emitter inverse world matrix\r\n */\r\n public get emitterInverseWorldMatrix() {\r\n if (!this.systemContext) {\r\n return null;\r\n }\r\n return this.systemContext._emitterInverseWorldMatrix;\r\n }\r\n\r\n /**\r\n * Gets the emitter position\r\n */\r\n public get emitterPosition(): Nullable<Vector3> {\r\n if (!this.systemContext) {\r\n return null;\r\n }\r\n\r\n if (!this.systemContext.emitter) {\r\n return null;\r\n }\r\n\r\n if (this.systemContext.emitter instanceof Vector3) {\r\n return this.systemContext.emitter;\r\n }\r\n\r\n return (<AbstractMesh>this.systemContext.emitter).absolutePosition;\r\n }\r\n\r\n /**\r\n * Gets the value associated with a system source\r\n * @param source Source of the system value\r\n * @returns the value associated with the source\r\n */\r\n public getSystemValue(source: NodeParticleSystemSources) {\r\n if (!this.particleContext || !this.systemContext) {\r\n return null;\r\n }\r\n\r\n switch (source) {\r\n case NodeParticleSystemSources.Time:\r\n return this.systemContext._actualFrame;\r\n case NodeParticleSystemSources.Delta:\r\n return this.systemContext._scaledUpdateSpeed;\r\n case NodeParticleSystemSources.Emitter:\r\n return this.emitterPosition;\r\n case NodeParticleSystemSources.CameraPosition:\r\n return this.scene.activeCamera?.globalPosition || Vector3.Zero();\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n"]}
@@ -4,8 +4,9 @@ import { NodeParticleSystemSet } from "./nodeParticleSystemSet.js";
4
4
  /**
5
5
  * Converts a ParticleSystem to a NodeParticleSystemSet.
6
6
  * @param name The name of the node particle system set.
7
- * @param particleSystems The particle systems to convert.
7
+ * @param particleSystemsList The particle systems to convert.
8
8
  * @returns The converted node particle system set or null if conversion failed.
9
- * #0K3AQ2#3627
9
+ * #0K3AQ2#3672
10
+ * #7J0NXA#4
10
11
  */
11
- export declare function ConvertToNodeParticleSystemSetAsync(name: string, particleSystems: ParticleSystem[]): Promise<Nullable<NodeParticleSystemSet>>;
12
+ export declare function ConvertToNodeParticleSystemSetAsync(name: string, particleSystemsList: ParticleSystem[]): Promise<Nullable<NodeParticleSystemSet>>;