@babylonjs/core 8.11.0 → 8.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/Cameras/arcRotateCamera.js +8 -0
  2. package/Cameras/arcRotateCamera.js.map +1 -1
  3. package/Cameras/targetCamera.js +2 -0
  4. package/Cameras/targetCamera.js.map +1 -1
  5. package/Collisions/gpuPicker.d.ts +4 -0
  6. package/Collisions/gpuPicker.js +6 -0
  7. package/Collisions/gpuPicker.js.map +1 -1
  8. package/Engines/abstractEngine.js +2 -2
  9. package/Engines/abstractEngine.js.map +1 -1
  10. package/Engines/constants.d.ts +4 -0
  11. package/Engines/constants.js +4 -0
  12. package/Engines/constants.js.map +1 -1
  13. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.d.ts +1 -0
  14. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js +2 -0
  15. package/FrameGraph/Node/Blocks/Rendering/baseShadowGeneratorBlock.js.map +1 -1
  16. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.d.ts +6 -1
  17. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js +29 -0
  18. package/FrameGraph/Node/Blocks/Rendering/csmShadowGeneratorBlock.js.map +1 -1
  19. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +6 -0
  20. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +36 -9
  21. package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
  22. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js +1 -0
  23. package/FrameGraph/Node/Blocks/Rendering/shadowGeneratorBlock.js.map +1 -1
  24. package/FrameGraph/Node/Blocks/inputBlock.js +1 -0
  25. package/FrameGraph/Node/Blocks/inputBlock.js.map +1 -1
  26. package/FrameGraph/Node/Types/nodeRenderGraphTypes.d.ts +2 -0
  27. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js +2 -0
  28. package/FrameGraph/Node/Types/nodeRenderGraphTypes.js.map +1 -1
  29. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.d.ts +23 -0
  30. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js +126 -21
  31. package/FrameGraph/Tasks/Rendering/csmShadowGeneratorTask.js.map +1 -1
  32. package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +5 -0
  33. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +4 -0
  34. package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
  35. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.d.ts +2 -4
  36. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js +4 -17
  37. package/FrameGraph/Tasks/Rendering/shadowGeneratorTask.js.map +1 -1
  38. package/FrameGraph/frameGraph.js +1 -1
  39. package/FrameGraph/frameGraph.js.map +1 -1
  40. package/FrameGraph/frameGraphContext.d.ts +30 -0
  41. package/FrameGraph/frameGraphContext.js +47 -0
  42. package/FrameGraph/frameGraphContext.js.map +1 -1
  43. package/FrameGraph/frameGraphRenderContext.d.ts +1 -4
  44. package/FrameGraph/frameGraphRenderContext.js +2 -5
  45. package/FrameGraph/frameGraphRenderContext.js.map +1 -1
  46. package/Lights/Shadows/cascadedShadowGenerator.d.ts +0 -1
  47. package/Lights/Shadows/cascadedShadowGenerator.js +0 -12
  48. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  49. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +1 -1
  50. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +4 -1
  51. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  52. package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +2 -3
  53. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +1 -1
  54. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  55. package/Materials/Node/Blocks/Dual/fogBlock.d.ts +1 -1
  56. package/Materials/Node/Blocks/Dual/fogBlock.js +4 -1
  57. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  58. package/Materials/Node/Blocks/Dual/lightBlock.d.ts +1 -1
  59. package/Materials/Node/Blocks/Dual/lightBlock.js +2 -2
  60. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  61. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +1 -2
  62. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +1 -1
  63. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  64. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js +3 -4
  65. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js.map +1 -1
  66. package/Materials/Node/Blocks/Dual/textureBlock.d.ts +2 -3
  67. package/Materials/Node/Blocks/Dual/textureBlock.js +2 -2
  68. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  69. package/Materials/Node/Blocks/Fragment/TBNBlock.d.ts +1 -1
  70. package/Materials/Node/Blocks/Fragment/TBNBlock.js +4 -1
  71. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  72. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js +2 -2
  73. package/Materials/Node/Blocks/Fragment/fragCoordBlock.js.map +1 -1
  74. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +1 -2
  75. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +1 -1
  76. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  77. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js +2 -2
  78. package/Materials/Node/Blocks/Fragment/frontFacingBlock.js.map +1 -1
  79. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +1 -2
  80. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  81. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.d.ts +1 -1
  82. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +1 -1
  83. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  84. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.d.ts +1 -2
  85. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +1 -1
  86. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  87. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +2 -2
  88. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  89. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.d.ts +3 -3
  90. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.js +6 -3
  91. package/Materials/Node/Blocks/GaussianSplatting/gaussianSplattingBlock.js.map +1 -1
  92. package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +1 -2
  93. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +2 -4
  94. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  95. package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +1 -2
  96. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +1 -2
  97. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  98. package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +2 -3
  99. package/Materials/Node/Blocks/PBR/iridescenceBlock.js +1 -2
  100. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  101. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +1 -1
  102. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +5 -2
  103. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  104. package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +1 -2
  105. package/Materials/Node/Blocks/PBR/reflectionBlock.js +2 -2
  106. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  107. package/Materials/Node/Blocks/PBR/refractionBlock.d.ts +1 -2
  108. package/Materials/Node/Blocks/PBR/refractionBlock.js +1 -2
  109. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  110. package/Materials/Node/Blocks/PBR/sheenBlock.d.ts +2 -3
  111. package/Materials/Node/Blocks/PBR/sheenBlock.js +1 -2
  112. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  113. package/Materials/Node/Blocks/PBR/subSurfaceBlock.d.ts +2 -3
  114. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +1 -2
  115. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  116. package/Materials/Node/Blocks/Particle/particleTextureBlock.d.ts +1 -2
  117. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +1 -1
  118. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  119. package/Materials/Node/Blocks/Vertex/bonesBlock.d.ts +2 -2
  120. package/Materials/Node/Blocks/Vertex/bonesBlock.js +3 -3
  121. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  122. package/Materials/Node/Blocks/Vertex/instancesBlock.d.ts +1 -1
  123. package/Materials/Node/Blocks/Vertex/instancesBlock.js +1 -1
  124. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  125. package/Materials/Node/Blocks/Vertex/lightInformationBlock.d.ts +1 -2
  126. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +1 -1
  127. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  128. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.d.ts +2 -2
  129. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +8 -2
  130. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  131. package/Materials/Node/Blocks/transformBlock.d.ts +3 -3
  132. package/Materials/Node/Blocks/transformBlock.js +4 -5
  133. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  134. package/Materials/Node/Blocks/triPlanarBlock.d.ts +1 -3
  135. package/Materials/Node/Blocks/triPlanarBlock.js +1 -1
  136. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  137. package/Materials/Node/nodeMaterial.d.ts +1 -1
  138. package/Materials/Node/nodeMaterial.js +28 -42
  139. package/Materials/Node/nodeMaterial.js.map +1 -1
  140. package/Materials/Node/nodeMaterialBlock.d.ts +8 -12
  141. package/Materials/Node/nodeMaterialBlock.js +10 -12
  142. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  143. package/Materials/Node/nodeMaterialBuildState.js +3 -1
  144. package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
  145. package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +7 -3
  146. package/Materials/Node/nodeMaterialBuildStateSharedData.js +17 -6
  147. package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
  148. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -0
  149. package/Materials/PBR/pbrBaseMaterial.js +11 -0
  150. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  151. package/Materials/Textures/Loaders/exrTextureLoader.d.ts +10 -0
  152. package/Materials/Textures/Loaders/exrTextureLoader.js +28 -1
  153. package/Materials/Textures/Loaders/exrTextureLoader.js.map +1 -1
  154. package/Materials/materialHelper.functions.js +1 -1
  155. package/Materials/materialHelper.functions.js.map +1 -1
  156. package/Materials/materialHelper.geometryrendering.js +7 -0
  157. package/Materials/materialHelper.geometryrendering.js.map +1 -1
  158. package/Materials/standardMaterial.d.ts +2 -0
  159. package/Materials/standardMaterial.js +11 -0
  160. package/Materials/standardMaterial.js.map +1 -1
  161. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.d.ts +7 -0
  162. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js +11 -5
  163. package/Meshes/Node/Blocks/Textures/geometryTextureBlock.js.map +1 -1
  164. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.d.ts +6 -0
  165. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js +42 -4
  166. package/Meshes/Node/Blocks/Textures/geometryTextureFetchBlock.js.map +1 -1
  167. package/Meshes/Node/Blocks/geometryOptimizeBlock.js +8 -0
  168. package/Meshes/Node/Blocks/geometryOptimizeBlock.js.map +1 -1
  169. package/Misc/environmentTextureTools.js +1 -1
  170. package/Misc/environmentTextureTools.js.map +1 -1
  171. package/Misc/minMaxReducer.d.ts +8 -6
  172. package/Misc/minMaxReducer.js +57 -90
  173. package/Misc/minMaxReducer.js.map +1 -1
  174. package/Misc/thinMinMaxReducer.d.ts +47 -0
  175. package/Misc/thinMinMaxReducer.js +148 -0
  176. package/Misc/thinMinMaxReducer.js.map +1 -0
  177. package/Particles/EmitterTypes/customParticleEmitter.d.ts +5 -0
  178. package/Particles/EmitterTypes/customParticleEmitter.js +9 -1
  179. package/Particles/EmitterTypes/customParticleEmitter.js.map +1 -1
  180. package/Particles/IParticleSystem.d.ts +4 -0
  181. package/Particles/IParticleSystem.js.map +1 -1
  182. package/Particles/Node/Blocks/Conditions/particleConditionBlock.d.ts +75 -0
  183. package/Particles/Node/Blocks/Conditions/particleConditionBlock.js +179 -0
  184. package/Particles/Node/Blocks/Conditions/particleConditionBlock.js.map +1 -0
  185. package/Particles/Node/Blocks/Emitters/boxShapeBlock.d.ts +47 -0
  186. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +107 -0
  187. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -0
  188. package/Particles/Node/Blocks/Emitters/createParticleBlock.d.ts +46 -0
  189. package/Particles/Node/Blocks/Emitters/createParticleBlock.js +97 -0
  190. package/Particles/Node/Blocks/Emitters/createParticleBlock.js.map +1 -0
  191. package/Particles/Node/Blocks/Emitters/customShapeBlock.d.ts +39 -0
  192. package/Particles/Node/Blocks/Emitters/customShapeBlock.js +84 -0
  193. package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -0
  194. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.d.ts +48 -0
  195. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +120 -0
  196. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -0
  197. package/Particles/Node/Blocks/Emitters/index.d.ts +7 -0
  198. package/Particles/Node/Blocks/Emitters/index.js +8 -0
  199. package/Particles/Node/Blocks/Emitters/index.js.map +1 -0
  200. package/Particles/Node/Blocks/Emitters/pointShapeBlock.d.ts +39 -0
  201. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +86 -0
  202. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -0
  203. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.d.ts +53 -0
  204. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.js +111 -0
  205. package/Particles/Node/Blocks/Emitters/setupSpriteSheetBlock.js.map +1 -0
  206. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.d.ts +43 -0
  207. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +108 -0
  208. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -0
  209. package/Particles/Node/Blocks/Teleport/particleTeleportInBlock.d.ts +48 -0
  210. package/Particles/Node/Blocks/Teleport/particleTeleportInBlock.js +100 -0
  211. package/Particles/Node/Blocks/Teleport/particleTeleportInBlock.js.map +1 -0
  212. package/Particles/Node/Blocks/Teleport/particleTeleportOutBlock.d.ts +47 -0
  213. package/Particles/Node/Blocks/Teleport/particleTeleportOutBlock.js +82 -0
  214. package/Particles/Node/Blocks/Teleport/particleTeleportOutBlock.js.map +1 -0
  215. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.d.ts +48 -0
  216. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.js +133 -0
  217. package/Particles/Node/Blocks/Triggers/particleTriggerBlock.js.map +1 -0
  218. package/Particles/Node/Blocks/Triggers/triggerTools.d.ts +9 -0
  219. package/Particles/Node/Blocks/Triggers/triggerTools.js +16 -0
  220. package/Particles/Node/Blocks/Triggers/triggerTools.js.map +1 -0
  221. package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.d.ts +31 -0
  222. package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js +64 -0
  223. package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js.map +1 -0
  224. package/Particles/Node/Blocks/Update/basicSpriteUpdateBlock.d.ts +31 -0
  225. package/Particles/Node/Blocks/Update/basicSpriteUpdateBlock.js +63 -0
  226. package/Particles/Node/Blocks/Update/basicSpriteUpdateBlock.js.map +1 -0
  227. package/Particles/Node/Blocks/Update/updateAngleBlock.d.ts +35 -0
  228. package/Particles/Node/Blocks/Update/updateAngleBlock.js +73 -0
  229. package/Particles/Node/Blocks/Update/updateAngleBlock.js.map +1 -0
  230. package/Particles/Node/Blocks/Update/updateColorBlock.d.ts +35 -0
  231. package/Particles/Node/Blocks/Update/updateColorBlock.js +73 -0
  232. package/Particles/Node/Blocks/Update/updateColorBlock.js.map +1 -0
  233. package/Particles/Node/Blocks/Update/updateDirectionBlock.d.ts +35 -0
  234. package/Particles/Node/Blocks/Update/updateDirectionBlock.js +73 -0
  235. package/Particles/Node/Blocks/Update/updateDirectionBlock.js.map +1 -0
  236. package/Particles/Node/Blocks/Update/updateFlowMapBlock.d.ts +41 -0
  237. package/Particles/Node/Blocks/Update/updateFlowMapBlock.js +102 -0
  238. package/Particles/Node/Blocks/Update/updateFlowMapBlock.js.map +1 -0
  239. package/Particles/Node/Blocks/Update/updatePositionBlock.d.ts +35 -0
  240. package/Particles/Node/Blocks/Update/updatePositionBlock.js +73 -0
  241. package/Particles/Node/Blocks/Update/updatePositionBlock.js.map +1 -0
  242. package/Particles/Node/Blocks/Update/updateScaleBlock.d.ts +35 -0
  243. package/Particles/Node/Blocks/Update/updateScaleBlock.js +73 -0
  244. package/Particles/Node/Blocks/Update/updateScaleBlock.js.map +1 -0
  245. package/Particles/Node/Blocks/Update/updateSpriteCellIndexBlock.d.ts +35 -0
  246. package/Particles/Node/Blocks/Update/updateSpriteCellIndexBlock.js +74 -0
  247. package/Particles/Node/Blocks/Update/updateSpriteCellIndexBlock.js.map +1 -0
  248. package/Particles/Node/Blocks/index.d.ts +27 -0
  249. package/Particles/Node/Blocks/index.js +29 -0
  250. package/Particles/Node/Blocks/index.js.map +1 -0
  251. package/Particles/Node/Blocks/particleConverterBlock.d.ts +85 -0
  252. package/Particles/Node/Blocks/particleConverterBlock.js +267 -0
  253. package/Particles/Node/Blocks/particleConverterBlock.js.map +1 -0
  254. package/Particles/Node/Blocks/particleDebugBlock.d.ts +37 -0
  255. package/Particles/Node/Blocks/particleDebugBlock.js +109 -0
  256. package/Particles/Node/Blocks/particleDebugBlock.js.map +1 -0
  257. package/Particles/Node/Blocks/particleElbowBlock.d.ts +27 -0
  258. package/Particles/Node/Blocks/particleElbowBlock.js +47 -0
  259. package/Particles/Node/Blocks/particleElbowBlock.js.map +1 -0
  260. package/Particles/Node/Blocks/particleGradientBlock.d.ts +28 -0
  261. package/Particles/Node/Blocks/particleGradientBlock.js +118 -0
  262. package/Particles/Node/Blocks/particleGradientBlock.js.map +1 -0
  263. package/Particles/Node/Blocks/particleGradientValueBlock.d.ts +32 -0
  264. package/Particles/Node/Blocks/particleGradientValueBlock.js +79 -0
  265. package/Particles/Node/Blocks/particleGradientValueBlock.js.map +1 -0
  266. package/Particles/Node/Blocks/particleInputBlock.d.ts +87 -0
  267. package/Particles/Node/Blocks/particleInputBlock.js +279 -0
  268. package/Particles/Node/Blocks/particleInputBlock.js.map +1 -0
  269. package/Particles/Node/Blocks/particleLerpBlock.d.ts +34 -0
  270. package/Particles/Node/Blocks/particleLerpBlock.js +92 -0
  271. package/Particles/Node/Blocks/particleLerpBlock.js.map +1 -0
  272. package/Particles/Node/Blocks/particleMathBlock.d.ts +64 -0
  273. package/Particles/Node/Blocks/particleMathBlock.js +321 -0
  274. package/Particles/Node/Blocks/particleMathBlock.js.map +1 -0
  275. package/Particles/Node/Blocks/particleRandomBlock.d.ts +52 -0
  276. package/Particles/Node/Blocks/particleRandomBlock.js +161 -0
  277. package/Particles/Node/Blocks/particleRandomBlock.js.map +1 -0
  278. package/Particles/Node/Blocks/particleSourceTextureBlock.d.ts +65 -0
  279. package/Particles/Node/Blocks/particleSourceTextureBlock.js +173 -0
  280. package/Particles/Node/Blocks/particleSourceTextureBlock.js.map +1 -0
  281. package/Particles/Node/Blocks/particleTrigonometryBlock.d.ts +80 -0
  282. package/Particles/Node/Blocks/particleTrigonometryBlock.js +272 -0
  283. package/Particles/Node/Blocks/particleTrigonometryBlock.js.map +1 -0
  284. package/Particles/Node/Blocks/randomRangeBlock.d.ts +45 -0
  285. package/Particles/Node/Blocks/randomRangeBlock.js +151 -0
  286. package/Particles/Node/Blocks/randomRangeBlock.js.map +1 -0
  287. package/Particles/Node/Blocks/systemBlock.d.ts +71 -0
  288. package/Particles/Node/Blocks/systemBlock.js +193 -0
  289. package/Particles/Node/Blocks/systemBlock.js.map +1 -0
  290. package/Particles/Node/Enums/nodeParticleBlockConnectionPointTypes.d.ts +39 -0
  291. package/Particles/Node/Enums/nodeParticleBlockConnectionPointTypes.js +41 -0
  292. package/Particles/Node/Enums/nodeParticleBlockConnectionPointTypes.js.map +1 -0
  293. package/Particles/Node/Enums/nodeParticleContextualSources.d.ts +31 -0
  294. package/Particles/Node/Enums/nodeParticleContextualSources.js +34 -0
  295. package/Particles/Node/Enums/nodeParticleContextualSources.js.map +1 -0
  296. package/Particles/Node/Enums/nodeParticleSystemSources.d.ts +13 -0
  297. package/Particles/Node/Enums/nodeParticleSystemSources.js +15 -0
  298. package/Particles/Node/Enums/nodeParticleSystemSources.js.map +1 -0
  299. package/Particles/Node/index.d.ts +8 -0
  300. package/Particles/Node/index.js +10 -0
  301. package/Particles/Node/index.js.map +1 -0
  302. package/Particles/Node/nodeParticleBlock.d.ts +154 -0
  303. package/Particles/Node/nodeParticleBlock.js +355 -0
  304. package/Particles/Node/nodeParticleBlock.js.map +1 -0
  305. package/Particles/Node/nodeParticleBlockConnectionPoint.d.ts +188 -0
  306. package/Particles/Node/nodeParticleBlockConnectionPoint.js +337 -0
  307. package/Particles/Node/nodeParticleBlockConnectionPoint.js.map +1 -0
  308. package/Particles/Node/nodeParticleBuildState.d.ts +89 -0
  309. package/Particles/Node/nodeParticleBuildState.js +170 -0
  310. package/Particles/Node/nodeParticleBuildState.js.map +1 -0
  311. package/Particles/Node/nodeParticleSystemSet.d.ts +120 -0
  312. package/Particles/Node/nodeParticleSystemSet.js +382 -0
  313. package/Particles/Node/nodeParticleSystemSet.js.map +1 -0
  314. package/Particles/Queue/executionQueue.d.ts +2 -0
  315. package/Particles/Queue/executionQueue.js +10 -0
  316. package/Particles/Queue/executionQueue.js.map +1 -1
  317. package/Particles/baseParticleSystem.d.ts +2 -1
  318. package/Particles/baseParticleSystem.js +1 -0
  319. package/Particles/baseParticleSystem.js.map +1 -1
  320. package/Particles/flowMap.d.ts +7 -0
  321. package/Particles/flowMap.js +32 -0
  322. package/Particles/flowMap.js.map +1 -1
  323. package/Particles/gpuParticleSystem.d.ts +4 -0
  324. package/Particles/gpuParticleSystem.js +4 -0
  325. package/Particles/gpuParticleSystem.js.map +1 -1
  326. package/Particles/index.d.ts +1 -0
  327. package/Particles/index.js +1 -0
  328. package/Particles/index.js.map +1 -1
  329. package/Particles/particleSystem.d.ts +12 -0
  330. package/Particles/particleSystem.js +22 -1
  331. package/Particles/particleSystem.js.map +1 -1
  332. package/Particles/thinParticleSystem.d.ts +32 -11
  333. package/Particles/thinParticleSystem.js +62 -36
  334. package/Particles/thinParticleSystem.js.map +1 -1
  335. package/PostProcesses/postProcessManager.d.ts +2 -1
  336. package/PostProcesses/postProcessManager.js +3 -2
  337. package/PostProcesses/postProcessManager.js.map +1 -1
  338. package/Shaders/ShadersInclude/defaultUboDeclaration.js +1 -1
  339. package/Shaders/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  340. package/Shaders/ShadersInclude/defaultVertexDeclaration.js +1 -0
  341. package/Shaders/ShadersInclude/defaultVertexDeclaration.js.map +1 -1
  342. package/Shaders/ShadersInclude/lightFragment.js +5 -2
  343. package/Shaders/ShadersInclude/lightFragment.js.map +1 -1
  344. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js +3 -0
  345. package/Shaders/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  346. package/Shaders/ShadersInclude/pbrBlockPrePass.js +3 -0
  347. package/Shaders/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  348. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
  349. package/Shaders/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  350. package/Shaders/ShadersInclude/pbrUboDeclaration.js +1 -1
  351. package/Shaders/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  352. package/Shaders/ShadersInclude/pbrVertexDeclaration.js +1 -0
  353. package/Shaders/ShadersInclude/pbrVertexDeclaration.js.map +1 -1
  354. package/Shaders/ShadersInclude/prePassDeclaration.js +3 -0
  355. package/Shaders/ShadersInclude/prePassDeclaration.js.map +1 -1
  356. package/Shaders/ShadersInclude/prePassVertex.js +3 -0
  357. package/Shaders/ShadersInclude/prePassVertex.js.map +1 -1
  358. package/Shaders/ShadersInclude/prePassVertexDeclaration.js +3 -0
  359. package/Shaders/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  360. package/Shaders/default.fragment.js +3 -0
  361. package/Shaders/default.fragment.js.map +1 -1
  362. package/Shaders/minmaxRedux.fragment.js +13 -5
  363. package/Shaders/minmaxRedux.fragment.js.map +1 -1
  364. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js +1 -1
  365. package/ShadersWGSL/ShadersInclude/defaultUboDeclaration.js.map +1 -1
  366. package/ShadersWGSL/ShadersInclude/lightFragment.js +5 -2
  367. package/ShadersWGSL/ShadersInclude/lightFragment.js.map +1 -1
  368. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js +3 -0
  369. package/ShadersWGSL/ShadersInclude/morphTargetsVertexDeclaration.js.map +1 -1
  370. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js +3 -0
  371. package/ShadersWGSL/ShadersInclude/pbrBlockPrePass.js.map +1 -1
  372. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js +1 -1
  373. package/ShadersWGSL/ShadersInclude/pbrDirectLightingFunctions.js.map +1 -1
  374. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js +1 -1
  375. package/ShadersWGSL/ShadersInclude/pbrUboDeclaration.js.map +1 -1
  376. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js +3 -0
  377. package/ShadersWGSL/ShadersInclude/prePassDeclaration.js.map +1 -1
  378. package/ShadersWGSL/ShadersInclude/prePassVertex.js +3 -0
  379. package/ShadersWGSL/ShadersInclude/prePassVertex.js.map +1 -1
  380. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js +3 -0
  381. package/ShadersWGSL/ShadersInclude/prePassVertexDeclaration.js.map +1 -1
  382. package/ShadersWGSL/default.fragment.js +3 -0
  383. package/ShadersWGSL/default.fragment.js.map +1 -1
  384. package/ShadersWGSL/minmaxRedux.fragment.js +14 -6
  385. package/ShadersWGSL/minmaxRedux.fragment.js.map +1 -1
  386. package/package.json +1 -1
  387. package/scene.d.ts +5 -0
  388. package/scene.js +8 -0
  389. package/scene.js.map +1 -1
@@ -0,0 +1,118 @@
1
+ import { RegisterClass } from "../../../Misc/typeStore.js";
2
+ import { NodeParticleBlock } from "../nodeParticleBlock.js";
3
+ import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
4
+ import { Lerp } from "../../../Maths/math.scalar.functions.js";
5
+ import { Color4 } from "../../../Maths/math.color.js";
6
+ import { Vector2, Vector3 } from "../../../Maths/math.vector.js";
7
+ /**
8
+ * Block used to define a list of gradient entries
9
+ */
10
+ export class ParticleGradientBlock extends NodeParticleBlock {
11
+ /**
12
+ * Creates a new ParticleGradientBlock
13
+ * @param name defines the block name
14
+ */
15
+ constructor(name) {
16
+ super(name);
17
+ this._entryCount = 1;
18
+ this.registerInput("gradient", NodeParticleBlockConnectionPointTypes.Float, true, 1, 0, 1);
19
+ this.registerInput("value0", NodeParticleBlockConnectionPointTypes.AutoDetect);
20
+ this.registerOutput("output", NodeParticleBlockConnectionPointTypes.BasedOnInput);
21
+ this._outputs[0]._typeConnectionSource = this._inputs[1];
22
+ this._outputs[0]._typeConnectionSourceTranslation = (type) => {
23
+ switch (type) {
24
+ case NodeParticleBlockConnectionPointTypes.FloatGradient:
25
+ return NodeParticleBlockConnectionPointTypes.Float;
26
+ case NodeParticleBlockConnectionPointTypes.Vector2Gradient:
27
+ return NodeParticleBlockConnectionPointTypes.Vector2;
28
+ case NodeParticleBlockConnectionPointTypes.Vector3Gradient:
29
+ return NodeParticleBlockConnectionPointTypes.Vector3;
30
+ case NodeParticleBlockConnectionPointTypes.Color4Gradient:
31
+ return NodeParticleBlockConnectionPointTypes.Color4;
32
+ }
33
+ return type;
34
+ };
35
+ this._inputs[1].addExcludedConnectionPointFromAllowedTypes(NodeParticleBlockConnectionPointTypes.FloatGradient |
36
+ NodeParticleBlockConnectionPointTypes.Vector2Gradient |
37
+ NodeParticleBlockConnectionPointTypes.Vector3Gradient |
38
+ NodeParticleBlockConnectionPointTypes.Color4Gradient);
39
+ this._manageExtendedInputs(1);
40
+ }
41
+ _manageExtendedInputs(index) {
42
+ this._inputs[index].onConnectionObservable.add(() => {
43
+ if (this._entryCount > index) {
44
+ return;
45
+ }
46
+ this._entryCount++;
47
+ this.registerInput("value" + (this._entryCount - 1), NodeParticleBlockConnectionPointTypes.AutoDetect, true);
48
+ this._linkConnectionTypes(1, this._entryCount);
49
+ this._manageExtendedInputs(this._entryCount);
50
+ });
51
+ }
52
+ /**
53
+ * Gets the current class name
54
+ * @returns the class name
55
+ */
56
+ getClassName() {
57
+ return "ParticleGradientBlock";
58
+ }
59
+ /**
60
+ * Gets the gradient operand input component
61
+ */
62
+ get gradient() {
63
+ return this._inputs[0];
64
+ }
65
+ /**
66
+ * Gets the output component
67
+ */
68
+ get output() {
69
+ return this._outputs[0];
70
+ }
71
+ _build() {
72
+ // Building the list of entries in order
73
+ const entries = [];
74
+ for (let i = 1; i < this._inputs.length; i++) {
75
+ if (this._inputs[i].isConnected) {
76
+ entries.push(this._inputs[i].connectedPoint?.ownerBlock);
77
+ }
78
+ }
79
+ entries.sort((a, b) => {
80
+ return a.reference - b.reference;
81
+ });
82
+ this.output._storedFunction = (state) => {
83
+ const gradient = this.gradient.getConnectedValue(state);
84
+ if (entries.length === 1) {
85
+ return entries[0].value.getConnectedValue(state);
86
+ }
87
+ // Go down the entries list in reverse order
88
+ let nextEntry = null;
89
+ for (let i = entries.length - 1; i >= 0; i--) {
90
+ const entry = entries[i];
91
+ if (entry.reference <= gradient) {
92
+ const currentValue = entry.value.getConnectedValue(state);
93
+ if (nextEntry) {
94
+ const nextValue = nextEntry.value.getConnectedValue(state);
95
+ const nextReference = nextEntry.reference;
96
+ const currentReference = entry.reference;
97
+ const scale = Math.max(0, Math.min(1, (gradient - currentReference) / (nextReference - currentReference)));
98
+ switch (this.output.type) {
99
+ case NodeParticleBlockConnectionPointTypes.Float:
100
+ return Lerp(currentValue, nextValue, scale);
101
+ case NodeParticleBlockConnectionPointTypes.Vector2:
102
+ return Vector2.Lerp(currentValue, nextValue, scale);
103
+ case NodeParticleBlockConnectionPointTypes.Vector3:
104
+ return Vector3.Lerp(currentValue, nextValue, scale);
105
+ case NodeParticleBlockConnectionPointTypes.Color4:
106
+ return Color4.Lerp(currentValue, nextValue, scale);
107
+ }
108
+ }
109
+ return currentValue;
110
+ }
111
+ nextEntry = entry;
112
+ }
113
+ return 0;
114
+ };
115
+ }
116
+ }
117
+ RegisterClass("BABYLON.ParticleGradientBlock", ParticleGradientBlock);
118
+ //# sourceMappingURL=particleGradientBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"particleGradientBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/particleGradientBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { NodeParticleBlock } from \"../nodeParticleBlock\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../nodeParticleBlockConnectionPoint\";\r\nimport type { ParticleGradientValueBlock } from \"./particleGradientValueBlock\";\r\nimport type { Nullable } from \"core/types\";\r\nimport { Lerp } from \"core/Maths/math.scalar.functions\";\r\nimport { Color4 } from \"core/Maths/math.color\";\r\nimport { Vector2, Vector3 } from \"core/Maths/math.vector\";\r\n/**\r\n * Block used to define a list of gradient entries\r\n */\r\nexport class ParticleGradientBlock extends NodeParticleBlock {\r\n private _entryCount = 1;\r\n /**\r\n * Creates a new ParticleGradientBlock\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.registerInput(\"gradient\", NodeParticleBlockConnectionPointTypes.Float, true, 1, 0, 1);\r\n this.registerInput(\"value0\", NodeParticleBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeParticleBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[1];\r\n this._outputs[0]._typeConnectionSourceTranslation = (type) => {\r\n switch (type) {\r\n case NodeParticleBlockConnectionPointTypes.FloatGradient:\r\n return NodeParticleBlockConnectionPointTypes.Float;\r\n case NodeParticleBlockConnectionPointTypes.Vector2Gradient:\r\n return NodeParticleBlockConnectionPointTypes.Vector2;\r\n case NodeParticleBlockConnectionPointTypes.Vector3Gradient:\r\n return NodeParticleBlockConnectionPointTypes.Vector3;\r\n case NodeParticleBlockConnectionPointTypes.Color4Gradient:\r\n return NodeParticleBlockConnectionPointTypes.Color4;\r\n }\r\n return type;\r\n };\r\n\r\n this._inputs[1].addExcludedConnectionPointFromAllowedTypes(\r\n NodeParticleBlockConnectionPointTypes.FloatGradient |\r\n NodeParticleBlockConnectionPointTypes.Vector2Gradient |\r\n NodeParticleBlockConnectionPointTypes.Vector3Gradient |\r\n NodeParticleBlockConnectionPointTypes.Color4Gradient\r\n );\r\n\r\n this._manageExtendedInputs(1);\r\n }\r\n\r\n private _manageExtendedInputs(index: number) {\r\n this._inputs[index].onConnectionObservable.add(() => {\r\n if (this._entryCount > index) {\r\n return;\r\n }\r\n this._entryCount++;\r\n this.registerInput(\"value\" + (this._entryCount - 1), NodeParticleBlockConnectionPointTypes.AutoDetect, true);\r\n this._linkConnectionTypes(1, this._entryCount);\r\n\r\n this._manageExtendedInputs(this._entryCount);\r\n });\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 \"ParticleGradientBlock\";\r\n }\r\n\r\n /**\r\n * Gets the gradient operand input component\r\n */\r\n public get gradient(): NodeParticleConnectionPoint {\r\n return this._inputs[0];\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 public override _build() {\r\n // Building the list of entries in order\r\n const entries: ParticleGradientValueBlock[] = [];\r\n for (let i = 1; i < this._inputs.length; i++) {\r\n if (this._inputs[i].isConnected) {\r\n entries.push(this._inputs[i].connectedPoint?.ownerBlock as ParticleGradientValueBlock);\r\n }\r\n }\r\n\r\n entries.sort((a, b) => {\r\n return a.reference - b.reference;\r\n });\r\n\r\n this.output._storedFunction = (state) => {\r\n const gradient = this.gradient.getConnectedValue(state);\r\n\r\n if (entries.length === 1) {\r\n return entries[0].value.getConnectedValue(state);\r\n }\r\n\r\n // Go down the entries list in reverse order\r\n let nextEntry: Nullable<ParticleGradientValueBlock> = null;\r\n for (let i = entries.length - 1; i >= 0; i--) {\r\n const entry = entries[i];\r\n if (entry.reference <= gradient) {\r\n const currentValue = entry.value.getConnectedValue(state);\r\n if (nextEntry) {\r\n const nextValue = nextEntry.value.getConnectedValue(state);\r\n const nextReference = nextEntry.reference;\r\n const currentReference = entry.reference;\r\n const scale = Math.max(0, Math.min(1, (gradient - currentReference) / (nextReference - currentReference)));\r\n\r\n switch (this.output.type) {\r\n case NodeParticleBlockConnectionPointTypes.Float:\r\n return Lerp(currentValue, nextValue, scale);\r\n case NodeParticleBlockConnectionPointTypes.Vector2:\r\n return Vector2.Lerp(currentValue, nextValue, scale);\r\n case NodeParticleBlockConnectionPointTypes.Vector3:\r\n return Vector3.Lerp(currentValue, nextValue, scale);\r\n case NodeParticleBlockConnectionPointTypes.Color4:\r\n return Color4.Lerp(currentValue, nextValue, scale);\r\n }\r\n }\r\n return currentValue;\r\n }\r\n\r\n nextEntry = entry;\r\n }\r\n\r\n return 0;\r\n };\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleGradientBlock\", ParticleGradientBlock);\r\n"]}
@@ -0,0 +1,32 @@
1
+ import { NodeParticleBlock } from "../nodeParticleBlock.js";
2
+ import type { NodeParticleConnectionPoint } from "../nodeParticleBlockConnectionPoint.js";
3
+ /**
4
+ * Block used to define a gradient entry for a gradient block
5
+ */
6
+ export declare class ParticleGradientValueBlock extends NodeParticleBlock {
7
+ /**
8
+ * Gets or sets the epsilon value used for comparison
9
+ */
10
+ reference: number;
11
+ /**
12
+ * Creates a new ParticleGradientEntryBlock
13
+ * @param name defines the block name
14
+ */
15
+ constructor(name: string);
16
+ /**
17
+ * Gets the current class name
18
+ * @returns the class name
19
+ */
20
+ getClassName(): string;
21
+ /**
22
+ * Gets the value operand input component
23
+ */
24
+ get value(): NodeParticleConnectionPoint;
25
+ /**
26
+ * Gets the output component
27
+ */
28
+ get output(): NodeParticleConnectionPoint;
29
+ _build(): void;
30
+ serialize(): any;
31
+ _deserialize(serializationObject: any): void;
32
+ }
@@ -0,0 +1,79 @@
1
+ import { __decorate } from "../../../tslib.es6.js";
2
+ import { RegisterClass } from "../../../Misc/typeStore.js";
3
+ import { NodeParticleBlock } from "../nodeParticleBlock.js";
4
+ import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
5
+ import { editableInPropertyPage } from "../../../Decorators/nodeDecorator.js";
6
+ /**
7
+ * Block used to define a gradient entry for a gradient block
8
+ */
9
+ export class ParticleGradientValueBlock extends NodeParticleBlock {
10
+ /**
11
+ * Creates a new ParticleGradientEntryBlock
12
+ * @param name defines the block name
13
+ */
14
+ constructor(name) {
15
+ super(name);
16
+ /**
17
+ * Gets or sets the epsilon value used for comparison
18
+ */
19
+ this.reference = 0;
20
+ this.registerInput("value", NodeParticleBlockConnectionPointTypes.AutoDetect);
21
+ this.registerOutput("output", NodeParticleBlockConnectionPointTypes.BasedOnInput);
22
+ this._outputs[0]._typeConnectionSource = this._inputs[0];
23
+ this._outputs[0]._typeConnectionSourceTranslation = (type) => {
24
+ switch (type) {
25
+ case NodeParticleBlockConnectionPointTypes.Float:
26
+ return NodeParticleBlockConnectionPointTypes.FloatGradient;
27
+ case NodeParticleBlockConnectionPointTypes.Vector2:
28
+ return NodeParticleBlockConnectionPointTypes.Vector2Gradient;
29
+ case NodeParticleBlockConnectionPointTypes.Vector3:
30
+ return NodeParticleBlockConnectionPointTypes.Vector3Gradient;
31
+ case NodeParticleBlockConnectionPointTypes.Color4:
32
+ return NodeParticleBlockConnectionPointTypes.Color4Gradient;
33
+ }
34
+ return type;
35
+ };
36
+ this._inputs[0].addExcludedConnectionPointFromAllowedTypes(NodeParticleBlockConnectionPointTypes.Float |
37
+ NodeParticleBlockConnectionPointTypes.Vector2 |
38
+ NodeParticleBlockConnectionPointTypes.Vector3 |
39
+ NodeParticleBlockConnectionPointTypes.Color4);
40
+ }
41
+ /**
42
+ * Gets the current class name
43
+ * @returns the class name
44
+ */
45
+ getClassName() {
46
+ return "ParticleGradientValueBlock";
47
+ }
48
+ /**
49
+ * Gets the value operand input component
50
+ */
51
+ get value() {
52
+ return this._inputs[0];
53
+ }
54
+ /**
55
+ * Gets the output component
56
+ */
57
+ get output() {
58
+ return this._outputs[0];
59
+ }
60
+ _build() {
61
+ this.output._storedFunction = (state) => {
62
+ return null;
63
+ };
64
+ }
65
+ serialize() {
66
+ const serializationObject = super.serialize();
67
+ serializationObject.reference = this.reference;
68
+ return serializationObject;
69
+ }
70
+ _deserialize(serializationObject) {
71
+ super._deserialize(serializationObject);
72
+ this.reference = serializationObject.reference;
73
+ }
74
+ }
75
+ __decorate([
76
+ editableInPropertyPage("Reference", 1 /* PropertyTypeForEdition.Float */, "ADVANCED", { embedded: true, notifiers: { rebuild: true }, min: 0, max: 1 })
77
+ ], ParticleGradientValueBlock.prototype, "reference", void 0);
78
+ RegisterClass("BABYLON.ParticleGradientValueBlock", ParticleGradientValueBlock);
79
+ //# sourceMappingURL=particleGradientValueBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"particleGradientValueBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Particles/Node/Blocks/particleGradientValueBlock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,qCAAqC,EAAE,MAAM,gDAAgD,CAAC;AAEvG,OAAO,EAAE,sBAAsB,EAA0B,6CAAsC;AAC/F;;GAEG;AACH,MAAM,OAAO,0BAA2B,SAAQ,iBAAiB;IAO7D;;;OAGG;IACH,YAAmB,IAAY;QAC3B,KAAK,CAAC,IAAI,CAAC,CAAC;QAXhB;;WAEG;QAEI,cAAS,GAAG,CAAC,CAAC;QASjB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,qCAAqC,CAAC,UAAU,CAAC,CAAC;QAC9E,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,qCAAqC,CAAC,YAAY,CAAC,CAAC;QAElF,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,gCAAgC,GAAG,CAAC,IAAI,EAAE,EAAE;YACzD,QAAQ,IAAI,EAAE,CAAC;gBACX,KAAK,qCAAqC,CAAC,KAAK;oBAC5C,OAAO,qCAAqC,CAAC,aAAa,CAAC;gBAC/D,KAAK,qCAAqC,CAAC,OAAO;oBAC9C,OAAO,qCAAqC,CAAC,eAAe,CAAC;gBACjE,KAAK,qCAAqC,CAAC,OAAO;oBAC9C,OAAO,qCAAqC,CAAC,eAAe,CAAC;gBACjE,KAAK,qCAAqC,CAAC,MAAM;oBAC7C,OAAO,qCAAqC,CAAC,cAAc,CAAC;YACpE,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,0CAA0C,CACtD,qCAAqC,CAAC,KAAK;YACvC,qCAAqC,CAAC,OAAO;YAC7C,qCAAqC,CAAC,OAAO;YAC7C,qCAAqC,CAAC,MAAM,CACnD,CAAC;IACN,CAAC;IAED;;;OAGG;IACa,YAAY;QACxB,OAAO,4BAA4B,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACZ,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;IAEe,MAAM;QAClB,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,KAAK,EAAE,EAAE;YACpC,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;IACN,CAAC;IAEe,SAAS;QACrB,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9C,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAE/C,OAAO,mBAAmB,CAAC;IAC/B,CAAC;IAEe,YAAY,CAAC,mBAAwB;QACjD,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAExC,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;IACnD,CAAC;CACJ;AA5EU;IADN,sBAAsB,CAAC,WAAW,wCAAgC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;6DAC3H;AA8EzB,aAAa,CAAC,oCAAoC,EAAE,0BAA0B,CAAC,CAAC","sourcesContent":["import { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { NodeParticleBlock } from \"../nodeParticleBlock\";\r\nimport { NodeParticleBlockConnectionPointTypes } from \"../Enums/nodeParticleBlockConnectionPointTypes\";\r\nimport type { NodeParticleConnectionPoint } from \"../nodeParticleBlockConnectionPoint\";\r\nimport { editableInPropertyPage, PropertyTypeForEdition } from \"core/Decorators/nodeDecorator\";\r\n/**\r\n * Block used to define a gradient entry for a gradient block\r\n */\r\nexport class ParticleGradientValueBlock extends NodeParticleBlock {\r\n /**\r\n * Gets or sets the epsilon value used for comparison\r\n */\r\n @editableInPropertyPage(\"Reference\", PropertyTypeForEdition.Float, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 0, max: 1 })\r\n public reference = 0;\r\n\r\n /**\r\n * Creates a new ParticleGradientEntryBlock\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.registerInput(\"value\", NodeParticleBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeParticleBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n this._outputs[0]._typeConnectionSourceTranslation = (type) => {\r\n switch (type) {\r\n case NodeParticleBlockConnectionPointTypes.Float:\r\n return NodeParticleBlockConnectionPointTypes.FloatGradient;\r\n case NodeParticleBlockConnectionPointTypes.Vector2:\r\n return NodeParticleBlockConnectionPointTypes.Vector2Gradient;\r\n case NodeParticleBlockConnectionPointTypes.Vector3:\r\n return NodeParticleBlockConnectionPointTypes.Vector3Gradient;\r\n case NodeParticleBlockConnectionPointTypes.Color4:\r\n return NodeParticleBlockConnectionPointTypes.Color4Gradient;\r\n }\r\n return type;\r\n };\r\n\r\n this._inputs[0].addExcludedConnectionPointFromAllowedTypes(\r\n NodeParticleBlockConnectionPointTypes.Float |\r\n NodeParticleBlockConnectionPointTypes.Vector2 |\r\n NodeParticleBlockConnectionPointTypes.Vector3 |\r\n NodeParticleBlockConnectionPointTypes.Color4\r\n );\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 \"ParticleGradientValueBlock\";\r\n }\r\n\r\n /**\r\n * Gets the value operand input component\r\n */\r\n public get value(): NodeParticleConnectionPoint {\r\n return this._inputs[0];\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 public override _build() {\r\n this.output._storedFunction = (state) => {\r\n return null;\r\n };\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.reference = this.reference;\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.reference = serializationObject.reference;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.ParticleGradientValueBlock\", ParticleGradientValueBlock);\r\n"]}
@@ -0,0 +1,87 @@
1
+ import { Observable } from "../../../Misc/observable.js";
2
+ import { NodeParticleBlock } from "../nodeParticleBlock.js";
3
+ import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
4
+ import type { NodeParticleConnectionPoint } from "../nodeParticleBlockConnectionPoint.js";
5
+ import type { NodeParticleBuildState } from "../nodeParticleBuildState.js";
6
+ import { NodeParticleContextualSources } from "../Enums/nodeParticleContextualSources.js";
7
+ import { NodeParticleSystemSources } from "../Enums/nodeParticleSystemSources.js";
8
+ /**
9
+ * Block used to expose an input value
10
+ */
11
+ export declare class ParticleInputBlock extends NodeParticleBlock {
12
+ private _storedValue;
13
+ private _valueCallback;
14
+ private _type;
15
+ /** Gets or set a value used to limit the range of float values */
16
+ min: number;
17
+ /** Gets or set a value used to limit the range of float values */
18
+ max: number;
19
+ /** Gets or sets the group to use to display this block in the Inspector */
20
+ groupInInspector: string;
21
+ /**
22
+ * Gets or sets a boolean indicating that this input is displayed in the Inspector
23
+ */
24
+ displayInInspector: boolean;
25
+ /** Gets an observable raised when the value is changed */
26
+ onValueChangedObservable: Observable<ParticleInputBlock>;
27
+ /**
28
+ * Gets or sets the connection point type (default is float)
29
+ */
30
+ get type(): NodeParticleBlockConnectionPointTypes;
31
+ /** @internal */
32
+ private _systemSource;
33
+ /**
34
+ * Gets a boolean indicating that the current connection point is a system source
35
+ */
36
+ get isSystemSource(): boolean;
37
+ /**
38
+ * Gets or sets the system source used by this input block
39
+ */
40
+ get systemSource(): NodeParticleSystemSources;
41
+ set systemSource(value: NodeParticleSystemSources);
42
+ private _contextualSource;
43
+ /**
44
+ * Gets a boolean indicating that the current connection point is a contextual value
45
+ */
46
+ get isContextual(): boolean;
47
+ /**
48
+ * Gets or sets the current contextual value
49
+ */
50
+ get contextualValue(): NodeParticleContextualSources;
51
+ set contextualValue(value: NodeParticleContextualSources);
52
+ /**
53
+ * Creates a new InputBlock
54
+ * @param name defines the block name
55
+ * @param type defines the type of the input (can be set to NodeParticleBlockConnectionPointTypes.AutoDetect)
56
+ */
57
+ constructor(name: string, type?: NodeParticleBlockConnectionPointTypes);
58
+ /**
59
+ * Gets or sets the value of that point.
60
+ * Please note that this value will be ignored if valueCallback is defined
61
+ */
62
+ get value(): any;
63
+ set value(value: any);
64
+ /**
65
+ * Gets or sets a callback used to get the value of that point.
66
+ * Please note that setting this value will force the connection point to ignore the value property
67
+ */
68
+ get valueCallback(): () => any;
69
+ set valueCallback(value: () => any);
70
+ /**
71
+ * Gets the current class name
72
+ * @returns the class name
73
+ */
74
+ getClassName(): string;
75
+ /**
76
+ * Gets the output component
77
+ */
78
+ get output(): NodeParticleConnectionPoint;
79
+ /**
80
+ * Set the input block to its default value (based on its type)
81
+ */
82
+ setDefaultValue(): void;
83
+ _build(state: NodeParticleBuildState): void;
84
+ dispose(): void;
85
+ serialize(): any;
86
+ _deserialize(serializationObject: any): void;
87
+ }
@@ -0,0 +1,279 @@
1
+ import { Observable } from "../../../Misc/observable.js";
2
+ import { GetClass, RegisterClass } from "../../../Misc/typeStore.js";
3
+ import { Matrix, Vector2, Vector3 } from "../../../Maths/math.vector.js";
4
+ import { NodeParticleBlock } from "../nodeParticleBlock.js";
5
+ import { NodeParticleBlockConnectionPointTypes } from "../Enums/nodeParticleBlockConnectionPointTypes.js";
6
+ import { Color4 } from "../../../Maths/math.color.js";
7
+ import { NodeParticleContextualSources } from "../Enums/nodeParticleContextualSources.js";
8
+ import { NodeParticleSystemSources } from "../Enums/nodeParticleSystemSources.js";
9
+ /**
10
+ * Block used to expose an input value
11
+ */
12
+ export class ParticleInputBlock extends NodeParticleBlock {
13
+ /**
14
+ * Gets or sets the connection point type (default is float)
15
+ */
16
+ get type() {
17
+ if (this._type === NodeParticleBlockConnectionPointTypes.AutoDetect) {
18
+ if (this.value != null) {
19
+ if (!isNaN(this.value)) {
20
+ this._type = NodeParticleBlockConnectionPointTypes.Float;
21
+ return this._type;
22
+ }
23
+ switch (this.value.getClassName()) {
24
+ case "Vector2":
25
+ this._type = NodeParticleBlockConnectionPointTypes.Vector2;
26
+ return this._type;
27
+ case "Vector3":
28
+ this._type = NodeParticleBlockConnectionPointTypes.Vector3;
29
+ return this._type;
30
+ case "Color4":
31
+ this._type = NodeParticleBlockConnectionPointTypes.Color4;
32
+ return this._type;
33
+ case "Matrix":
34
+ this._type = NodeParticleBlockConnectionPointTypes.Matrix;
35
+ return this._type;
36
+ }
37
+ }
38
+ }
39
+ return this._type;
40
+ }
41
+ /**
42
+ * Gets a boolean indicating that the current connection point is a system source
43
+ */
44
+ get isSystemSource() {
45
+ return this._contextualSource === NodeParticleContextualSources.None && this._systemSource !== NodeParticleSystemSources.None;
46
+ }
47
+ /**
48
+ * Gets or sets the system source used by this input block
49
+ */
50
+ get systemSource() {
51
+ return this._systemSource;
52
+ }
53
+ set systemSource(value) {
54
+ this._systemSource = value;
55
+ if (value !== NodeParticleSystemSources.None) {
56
+ this._contextualSource = NodeParticleContextualSources.None;
57
+ this._type = NodeParticleBlockConnectionPointTypes.Float;
58
+ switch (value) {
59
+ case NodeParticleSystemSources.Time:
60
+ case NodeParticleSystemSources.Delta:
61
+ this._type = NodeParticleBlockConnectionPointTypes.Float;
62
+ break;
63
+ case NodeParticleSystemSources.Emitter:
64
+ this._type = NodeParticleBlockConnectionPointTypes.Vector3;
65
+ break;
66
+ }
67
+ if (this.output) {
68
+ this.output.type = this._type;
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * Gets a boolean indicating that the current connection point is a contextual value
74
+ */
75
+ get isContextual() {
76
+ return this._contextualSource !== NodeParticleContextualSources.None;
77
+ }
78
+ /**
79
+ * Gets or sets the current contextual value
80
+ */
81
+ get contextualValue() {
82
+ return this._contextualSource;
83
+ }
84
+ set contextualValue(value) {
85
+ this._contextualSource = value;
86
+ if (value !== NodeParticleContextualSources.None) {
87
+ this._systemSource = NodeParticleSystemSources.None;
88
+ switch (value) {
89
+ case NodeParticleContextualSources.Scale:
90
+ this._type = NodeParticleBlockConnectionPointTypes.Vector2;
91
+ break;
92
+ case NodeParticleContextualSources.Position:
93
+ case NodeParticleContextualSources.Direction:
94
+ case NodeParticleContextualSources.ScaledDirection:
95
+ this._type = NodeParticleBlockConnectionPointTypes.Vector3;
96
+ break;
97
+ case NodeParticleContextualSources.Color:
98
+ this._type = NodeParticleBlockConnectionPointTypes.Color4;
99
+ break;
100
+ case NodeParticleContextualSources.Age:
101
+ case NodeParticleContextualSources.Lifetime:
102
+ case NodeParticleContextualSources.Angle:
103
+ case NodeParticleContextualSources.AgeGradient:
104
+ this._type = NodeParticleBlockConnectionPointTypes.Float;
105
+ break;
106
+ case NodeParticleContextualSources.SpriteCellEnd:
107
+ case NodeParticleContextualSources.SpriteCellStart:
108
+ case NodeParticleContextualSources.SpriteCellIndex:
109
+ this._type = NodeParticleBlockConnectionPointTypes.Int;
110
+ break;
111
+ }
112
+ if (this.output) {
113
+ this.output.type = this._type;
114
+ }
115
+ }
116
+ }
117
+ /**
118
+ * Creates a new InputBlock
119
+ * @param name defines the block name
120
+ * @param type defines the type of the input (can be set to NodeParticleBlockConnectionPointTypes.AutoDetect)
121
+ */
122
+ constructor(name, type = NodeParticleBlockConnectionPointTypes.AutoDetect) {
123
+ super(name);
124
+ this._type = NodeParticleBlockConnectionPointTypes.Undefined;
125
+ /** Gets or set a value used to limit the range of float values */
126
+ this.min = 0;
127
+ /** Gets or set a value used to limit the range of float values */
128
+ this.max = 0;
129
+ /** Gets or sets the group to use to display this block in the Inspector */
130
+ this.groupInInspector = "";
131
+ /**
132
+ * Gets or sets a boolean indicating that this input is displayed in the Inspector
133
+ */
134
+ this.displayInInspector = true;
135
+ /** Gets an observable raised when the value is changed */
136
+ this.onValueChangedObservable = new Observable();
137
+ /** @internal */
138
+ this._systemSource = NodeParticleSystemSources.None;
139
+ this._contextualSource = NodeParticleContextualSources.None;
140
+ this._type = type;
141
+ this._isInput = true;
142
+ this._storedValue = null;
143
+ this.setDefaultValue();
144
+ this.registerOutput("output", type);
145
+ }
146
+ /**
147
+ * Gets or sets the value of that point.
148
+ * Please note that this value will be ignored if valueCallback is defined
149
+ */
150
+ get value() {
151
+ return this._storedValue;
152
+ }
153
+ set value(value) {
154
+ if (this.type === NodeParticleBlockConnectionPointTypes.Float) {
155
+ if (this.min !== this.max) {
156
+ value = Math.max(this.min, value);
157
+ value = Math.min(this.max, value);
158
+ }
159
+ }
160
+ this._storedValue = value;
161
+ this.onValueChangedObservable.notifyObservers(this);
162
+ }
163
+ /**
164
+ * Gets or sets a callback used to get the value of that point.
165
+ * Please note that setting this value will force the connection point to ignore the value property
166
+ */
167
+ get valueCallback() {
168
+ return this._valueCallback;
169
+ }
170
+ set valueCallback(value) {
171
+ this._valueCallback = value;
172
+ }
173
+ /**
174
+ * Gets the current class name
175
+ * @returns the class name
176
+ */
177
+ getClassName() {
178
+ return "ParticleInputBlock";
179
+ }
180
+ /**
181
+ * Gets the output component
182
+ */
183
+ get output() {
184
+ return this._outputs[0];
185
+ }
186
+ /**
187
+ * Set the input block to its default value (based on its type)
188
+ */
189
+ setDefaultValue() {
190
+ switch (this.type) {
191
+ case NodeParticleBlockConnectionPointTypes.Int:
192
+ case NodeParticleBlockConnectionPointTypes.Float:
193
+ this.value = 0;
194
+ break;
195
+ case NodeParticleBlockConnectionPointTypes.Vector2:
196
+ this.value = Vector2.Zero();
197
+ break;
198
+ case NodeParticleBlockConnectionPointTypes.Vector3:
199
+ this.value = Vector3.Zero();
200
+ break;
201
+ case NodeParticleBlockConnectionPointTypes.Color4:
202
+ this.value = new Color4(1, 1, 1, 1);
203
+ break;
204
+ case NodeParticleBlockConnectionPointTypes.Matrix:
205
+ this.value = Matrix.Identity();
206
+ break;
207
+ }
208
+ }
209
+ _build(state) {
210
+ super._build(state);
211
+ if (this.isSystemSource) {
212
+ this.output._storedValue = null;
213
+ this.output._storedFunction = (state) => {
214
+ return state.getSystemValue(this._systemSource);
215
+ };
216
+ }
217
+ else if (this.isContextual) {
218
+ this.output._storedValue = null;
219
+ this.output._storedFunction = (state) => {
220
+ return state.getContextualValue(this._contextualSource);
221
+ };
222
+ }
223
+ else {
224
+ this.output._storedFunction = null;
225
+ this.output._storedValue = this.value;
226
+ }
227
+ }
228
+ dispose() {
229
+ this.onValueChangedObservable.clear();
230
+ super.dispose();
231
+ }
232
+ serialize() {
233
+ const serializationObject = super.serialize();
234
+ serializationObject.type = this.type;
235
+ serializationObject.contextualValue = this.contextualValue;
236
+ serializationObject.systemSource = this.systemSource;
237
+ serializationObject.min = this.min;
238
+ serializationObject.max = this.max;
239
+ serializationObject.groupInInspector = this.groupInInspector;
240
+ serializationObject.displayInInspector = this.displayInInspector;
241
+ if (this._storedValue !== null && !this.isContextual && !this.isSystemSource) {
242
+ if (this._storedValue.asArray) {
243
+ serializationObject.valueType = "BABYLON." + this._storedValue.getClassName();
244
+ serializationObject.value = this._storedValue.asArray();
245
+ }
246
+ else {
247
+ serializationObject.valueType = "number";
248
+ serializationObject.value = this._storedValue;
249
+ }
250
+ }
251
+ return serializationObject;
252
+ }
253
+ _deserialize(serializationObject) {
254
+ super._deserialize(serializationObject);
255
+ this._type = serializationObject.type;
256
+ this.contextualValue = serializationObject.contextualValue;
257
+ this.systemSource = serializationObject.systemSource || NodeParticleSystemSources.None;
258
+ this.min = serializationObject.min || 0;
259
+ this.max = serializationObject.max || 0;
260
+ this.groupInInspector = serializationObject.groupInInspector || "";
261
+ if (serializationObject.displayInInspector !== undefined) {
262
+ this.displayInInspector = serializationObject.displayInInspector;
263
+ }
264
+ if (!serializationObject.valueType) {
265
+ return;
266
+ }
267
+ if (serializationObject.valueType === "number") {
268
+ this._storedValue = serializationObject.value;
269
+ }
270
+ else {
271
+ const valueType = GetClass(serializationObject.valueType);
272
+ if (valueType) {
273
+ this._storedValue = valueType.FromArray(serializationObject.value);
274
+ }
275
+ }
276
+ }
277
+ }
278
+ RegisterClass("BABYLON.ParticleInputBlock", ParticleInputBlock);
279
+ //# sourceMappingURL=particleInputBlock.js.map