@onerjs/core 8.41.6 → 8.41.7

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 (339) hide show
  1. package/Animations/animation.d.ts +6 -2
  2. package/Animations/animation.js +28 -4
  3. package/Animations/animation.js.map +1 -1
  4. package/Animations/animationGroup.d.ts +2 -1
  5. package/Animations/animationGroup.js +3 -2
  6. package/Animations/animationGroup.js.map +1 -1
  7. package/Animations/animatorAvatar.d.ts +161 -0
  8. package/Animations/animatorAvatar.js +573 -0
  9. package/Animations/animatorAvatar.js.map +1 -0
  10. package/Animations/index.d.ts +1 -0
  11. package/Animations/index.js +1 -0
  12. package/Animations/index.js.map +1 -1
  13. package/AudioV2/webAudio/webAudioSoundSource.d.ts +2 -2
  14. package/AudioV2/webAudio/webAudioSoundSource.js +12 -2
  15. package/AudioV2/webAudio/webAudioSoundSource.js.map +1 -1
  16. package/Bones/index.d.ts +1 -0
  17. package/Bones/index.js +1 -0
  18. package/Bones/index.js.map +1 -1
  19. package/Bones/skeleton.d.ts +13 -0
  20. package/Bones/skeleton.functions.d.ts +26 -0
  21. package/Bones/skeleton.functions.js +91 -0
  22. package/Bones/skeleton.functions.js.map +1 -0
  23. package/Bones/skeleton.js +26 -0
  24. package/Bones/skeleton.js.map +1 -1
  25. package/Cameras/geospatialCamera.js +21 -20
  26. package/Cameras/geospatialCamera.js.map +1 -1
  27. package/Cameras/geospatialCameraMovement.d.ts +8 -1
  28. package/Cameras/geospatialCameraMovement.js +29 -8
  29. package/Cameras/geospatialCameraMovement.js.map +1 -1
  30. package/Collisions/gpuPicker.d.ts +11 -0
  31. package/Collisions/gpuPicker.js +148 -19
  32. package/Collisions/gpuPicker.js.map +1 -1
  33. package/Debug/skeletonViewer.d.ts +4 -8
  34. package/Debug/skeletonViewer.js +13 -22
  35. package/Debug/skeletonViewer.js.map +1 -1
  36. package/Engines/Extensions/engine.multiview.d.ts +2 -0
  37. package/Engines/Extensions/engine.multiview.js +7 -3
  38. package/Engines/Extensions/engine.multiview.js.map +1 -1
  39. package/Engines/abstractEngine.js +2 -2
  40. package/Engines/abstractEngine.js.map +1 -1
  41. package/Engines/constants.d.ts +4 -0
  42. package/Engines/constants.js +4 -0
  43. package/Engines/constants.js.map +1 -1
  44. package/Instrumentation/engineInstrumentation.js +2 -1
  45. package/Instrumentation/engineInstrumentation.js.map +1 -1
  46. package/Layers/effectLayer.js +1 -3
  47. package/Layers/effectLayer.js.map +1 -1
  48. package/Lights/Shadows/cascadedShadowGenerator.js +1 -1
  49. package/Lights/Shadows/cascadedShadowGenerator.js.map +1 -1
  50. package/Lights/Shadows/shadowGenerator.js +2 -3
  51. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  52. package/Materials/Background/backgroundMaterial.js +37 -2
  53. package/Materials/Background/backgroundMaterial.js.map +1 -1
  54. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.d.ts +109 -0
  55. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.js +210 -0
  56. package/Materials/GaussianSplatting/gaussianSplattingGpuPickingMaterialPlugin.js.map +1 -0
  57. package/Materials/GaussianSplatting/gaussianSplattingMaterial.d.ts +1 -0
  58. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js +71 -15
  59. package/Materials/GaussianSplatting/gaussianSplattingMaterial.js.map +1 -1
  60. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.d.ts +86 -0
  61. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.js +161 -0
  62. package/Materials/GaussianSplatting/gaussianSplattingSolidColorMaterialPlugin.js.map +1 -0
  63. package/Materials/GreasedLine/greasedLinePluginMaterial.js +0 -6
  64. package/Materials/GreasedLine/greasedLinePluginMaterial.js.map +1 -1
  65. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js +0 -1
  66. package/Materials/GreasedLine/greasedLinePluginMaterialShadersGLSL.js.map +1 -1
  67. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js +0 -1
  68. package/Materials/GreasedLine/greasedLinePluginMaterialShadersWGSL.js.map +1 -1
  69. package/Materials/Node/Blocks/Dual/clipPlanesBlock.d.ts +14 -0
  70. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js +14 -0
  71. package/Materials/Node/Blocks/Dual/clipPlanesBlock.js.map +1 -1
  72. package/Materials/Node/Blocks/Dual/currentScreenBlock.d.ts +20 -1
  73. package/Materials/Node/Blocks/Dual/currentScreenBlock.js +20 -1
  74. package/Materials/Node/Blocks/Dual/currentScreenBlock.js.map +1 -1
  75. package/Materials/Node/Blocks/Dual/depthSourceBlock.d.ts +13 -0
  76. package/Materials/Node/Blocks/Dual/depthSourceBlock.js +13 -0
  77. package/Materials/Node/Blocks/Dual/depthSourceBlock.js.map +1 -1
  78. package/Materials/Node/Blocks/Dual/fogBlock.d.ts +21 -0
  79. package/Materials/Node/Blocks/Dual/fogBlock.js +21 -0
  80. package/Materials/Node/Blocks/Dual/fogBlock.js.map +1 -1
  81. package/Materials/Node/Blocks/Dual/imageSourceBlock.d.ts +21 -0
  82. package/Materials/Node/Blocks/Dual/imageSourceBlock.js +21 -0
  83. package/Materials/Node/Blocks/Dual/imageSourceBlock.js.map +1 -1
  84. package/Materials/Node/Blocks/Dual/lightBlock.d.ts +38 -0
  85. package/Materials/Node/Blocks/Dual/lightBlock.js +38 -0
  86. package/Materials/Node/Blocks/Dual/lightBlock.js.map +1 -1
  87. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.d.ts +29 -0
  88. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +29 -0
  89. package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
  90. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.d.ts +5 -0
  91. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js +5 -0
  92. package/Materials/Node/Blocks/Dual/reflectionTextureBlock.js.map +1 -1
  93. package/Materials/Node/Blocks/Dual/sceneDepthBlock.d.ts +16 -0
  94. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js +16 -0
  95. package/Materials/Node/Blocks/Dual/sceneDepthBlock.js.map +1 -1
  96. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.d.ts +16 -0
  97. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js +16 -0
  98. package/Materials/Node/Blocks/Dual/smartFilterTextureBlock.js.map +1 -1
  99. package/Materials/Node/Blocks/Dual/textureBlock.d.ts +34 -0
  100. package/Materials/Node/Blocks/Dual/textureBlock.js +34 -0
  101. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  102. package/Materials/Node/Blocks/Fragment/TBNBlock.d.ts +17 -0
  103. package/Materials/Node/Blocks/Fragment/TBNBlock.js +17 -2
  104. package/Materials/Node/Blocks/Fragment/TBNBlock.js.map +1 -1
  105. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.d.ts +7 -0
  106. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.js +7 -0
  107. package/Materials/Node/Blocks/Fragment/ambientOcclusionBlock.js.map +1 -1
  108. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.d.ts +21 -0
  109. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js +21 -0
  110. package/Materials/Node/Blocks/Fragment/fragmentOutputBlock.js.map +1 -1
  111. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.d.ts +10 -0
  112. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js +10 -0
  113. package/Materials/Node/Blocks/Fragment/heightToNormalBlock.js.map +1 -1
  114. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.d.ts +28 -0
  115. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js +28 -0
  116. package/Materials/Node/Blocks/Fragment/imageProcessingBlock.js.map +1 -1
  117. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.d.ts +30 -0
  118. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +30 -1
  119. package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
  120. package/Materials/Node/Blocks/Fragment/screenSizeBlock.d.ts +4 -0
  121. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js +4 -0
  122. package/Materials/Node/Blocks/Fragment/screenSizeBlock.js.map +1 -1
  123. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.d.ts +5 -0
  124. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js +5 -0
  125. package/Materials/Node/Blocks/Fragment/screenSpaceBlock.js.map +1 -1
  126. package/Materials/Node/Blocks/Fragment/twirlBlock.d.ts +3 -0
  127. package/Materials/Node/Blocks/Fragment/twirlBlock.js +3 -0
  128. package/Materials/Node/Blocks/Fragment/twirlBlock.js.map +1 -1
  129. package/Materials/Node/Blocks/GaussianSplatting/splatReaderBlock.d.ts +6 -0
  130. package/Materials/Node/Blocks/GaussianSplatting/splatReaderBlock.js +6 -0
  131. package/Materials/Node/Blocks/GaussianSplatting/splatReaderBlock.js.map +1 -1
  132. package/Materials/Node/Blocks/Input/inputBlock.d.ts +16 -0
  133. package/Materials/Node/Blocks/Input/inputBlock.js +16 -1
  134. package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
  135. package/Materials/Node/Blocks/Input/prePassTextureBlock.d.ts +5 -0
  136. package/Materials/Node/Blocks/Input/prePassTextureBlock.js +5 -0
  137. package/Materials/Node/Blocks/Input/prePassTextureBlock.js.map +1 -1
  138. package/Materials/Node/Blocks/PBR/anisotropyBlock.d.ts +10 -0
  139. package/Materials/Node/Blocks/PBR/anisotropyBlock.js +10 -1
  140. package/Materials/Node/Blocks/PBR/anisotropyBlock.js.map +1 -1
  141. package/Materials/Node/Blocks/PBR/clearCoatBlock.d.ts +23 -0
  142. package/Materials/Node/Blocks/PBR/clearCoatBlock.js +23 -1
  143. package/Materials/Node/Blocks/PBR/clearCoatBlock.js.map +1 -1
  144. package/Materials/Node/Blocks/PBR/iridescenceBlock.d.ts +17 -0
  145. package/Materials/Node/Blocks/PBR/iridescenceBlock.js +17 -0
  146. package/Materials/Node/Blocks/PBR/iridescenceBlock.js.map +1 -1
  147. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +41 -0
  148. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +41 -0
  149. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  150. package/Materials/Node/Blocks/PBR/reflectionBlock.d.ts +21 -0
  151. package/Materials/Node/Blocks/PBR/reflectionBlock.js +21 -0
  152. package/Materials/Node/Blocks/PBR/reflectionBlock.js.map +1 -1
  153. package/Materials/Node/Blocks/PBR/refractionBlock.d.ts +29 -0
  154. package/Materials/Node/Blocks/PBR/refractionBlock.js +29 -0
  155. package/Materials/Node/Blocks/PBR/refractionBlock.js.map +1 -1
  156. package/Materials/Node/Blocks/PBR/sheenBlock.d.ts +14 -0
  157. package/Materials/Node/Blocks/PBR/sheenBlock.js +14 -0
  158. package/Materials/Node/Blocks/PBR/sheenBlock.js.map +1 -1
  159. package/Materials/Node/Blocks/PBR/subSurfaceBlock.d.ts +7 -0
  160. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js +7 -0
  161. package/Materials/Node/Blocks/PBR/subSurfaceBlock.js.map +1 -1
  162. package/Materials/Node/Blocks/Particle/particleTextureBlock.d.ts +23 -0
  163. package/Materials/Node/Blocks/Particle/particleTextureBlock.js +23 -0
  164. package/Materials/Node/Blocks/Particle/particleTextureBlock.js.map +1 -1
  165. package/Materials/Node/Blocks/Teleport/teleportInBlock.d.ts +6 -0
  166. package/Materials/Node/Blocks/Teleport/teleportInBlock.js +6 -0
  167. package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
  168. package/Materials/Node/Blocks/Teleport/teleportOutBlock.d.ts +17 -0
  169. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js +17 -0
  170. package/Materials/Node/Blocks/Teleport/teleportOutBlock.js.map +1 -1
  171. package/Materials/Node/Blocks/Vertex/bonesBlock.d.ts +22 -0
  172. package/Materials/Node/Blocks/Vertex/bonesBlock.js +22 -0
  173. package/Materials/Node/Blocks/Vertex/bonesBlock.js.map +1 -1
  174. package/Materials/Node/Blocks/Vertex/instancesBlock.d.ts +13 -0
  175. package/Materials/Node/Blocks/Vertex/instancesBlock.js +13 -0
  176. package/Materials/Node/Blocks/Vertex/instancesBlock.js.map +1 -1
  177. package/Materials/Node/Blocks/Vertex/lightInformationBlock.d.ts +20 -0
  178. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js +20 -0
  179. package/Materials/Node/Blocks/Vertex/lightInformationBlock.js.map +1 -1
  180. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.d.ts +27 -0
  181. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js +27 -0
  182. package/Materials/Node/Blocks/Vertex/morphTargetsBlock.js.map +1 -1
  183. package/Materials/Node/Blocks/clampBlock.d.ts +10 -0
  184. package/Materials/Node/Blocks/clampBlock.js +10 -0
  185. package/Materials/Node/Blocks/clampBlock.js.map +1 -1
  186. package/Materials/Node/Blocks/cloudBlock.d.ts +10 -0
  187. package/Materials/Node/Blocks/cloudBlock.js +10 -0
  188. package/Materials/Node/Blocks/cloudBlock.js.map +1 -1
  189. package/Materials/Node/Blocks/colorMergerBlock.d.ts +10 -0
  190. package/Materials/Node/Blocks/colorMergerBlock.js +10 -0
  191. package/Materials/Node/Blocks/colorMergerBlock.js.map +1 -1
  192. package/Materials/Node/Blocks/conditionalBlock.d.ts +14 -0
  193. package/Materials/Node/Blocks/conditionalBlock.js +14 -0
  194. package/Materials/Node/Blocks/conditionalBlock.js.map +1 -1
  195. package/Materials/Node/Blocks/curveBlock.d.ts +10 -0
  196. package/Materials/Node/Blocks/curveBlock.js +10 -0
  197. package/Materials/Node/Blocks/curveBlock.js.map +1 -1
  198. package/Materials/Node/Blocks/customBlock.d.ts +10 -0
  199. package/Materials/Node/Blocks/customBlock.js +10 -0
  200. package/Materials/Node/Blocks/customBlock.js.map +1 -1
  201. package/Materials/Node/Blocks/debugBlock.d.ts +10 -0
  202. package/Materials/Node/Blocks/debugBlock.js +10 -0
  203. package/Materials/Node/Blocks/debugBlock.js.map +1 -1
  204. package/Materials/Node/Blocks/fresnelBlock.d.ts +4 -0
  205. package/Materials/Node/Blocks/fresnelBlock.js +4 -0
  206. package/Materials/Node/Blocks/fresnelBlock.js.map +1 -1
  207. package/Materials/Node/Blocks/gradientBlock.d.ts +10 -0
  208. package/Materials/Node/Blocks/gradientBlock.js +10 -0
  209. package/Materials/Node/Blocks/gradientBlock.js.map +1 -1
  210. package/Materials/Node/Blocks/loopBlock.d.ts +10 -0
  211. package/Materials/Node/Blocks/loopBlock.js +10 -0
  212. package/Materials/Node/Blocks/loopBlock.js.map +1 -1
  213. package/Materials/Node/Blocks/matrixBuilderBlock.d.ts +1 -0
  214. package/Materials/Node/Blocks/matrixBuilderBlock.js +1 -0
  215. package/Materials/Node/Blocks/matrixBuilderBlock.js.map +1 -1
  216. package/Materials/Node/Blocks/meshAttributeExistsBlock.d.ts +10 -0
  217. package/Materials/Node/Blocks/meshAttributeExistsBlock.js +10 -0
  218. package/Materials/Node/Blocks/meshAttributeExistsBlock.js.map +1 -1
  219. package/Materials/Node/Blocks/pannerBlock.d.ts +5 -0
  220. package/Materials/Node/Blocks/pannerBlock.js +5 -0
  221. package/Materials/Node/Blocks/pannerBlock.js.map +1 -1
  222. package/Materials/Node/Blocks/remapBlock.d.ts +10 -0
  223. package/Materials/Node/Blocks/remapBlock.js +10 -0
  224. package/Materials/Node/Blocks/remapBlock.js.map +1 -1
  225. package/Materials/Node/Blocks/rotate2dBlock.d.ts +1 -0
  226. package/Materials/Node/Blocks/rotate2dBlock.js +1 -0
  227. package/Materials/Node/Blocks/rotate2dBlock.js.map +1 -1
  228. package/Materials/Node/Blocks/transformBlock.d.ts +10 -0
  229. package/Materials/Node/Blocks/transformBlock.js +10 -0
  230. package/Materials/Node/Blocks/transformBlock.js.map +1 -1
  231. package/Materials/Node/Blocks/triPlanarBlock.d.ts +22 -0
  232. package/Materials/Node/Blocks/triPlanarBlock.js +22 -0
  233. package/Materials/Node/Blocks/triPlanarBlock.js.map +1 -1
  234. package/Materials/Node/Blocks/trigonometryBlock.d.ts +10 -0
  235. package/Materials/Node/Blocks/trigonometryBlock.js +10 -0
  236. package/Materials/Node/Blocks/trigonometryBlock.js.map +1 -1
  237. package/Materials/Node/Blocks/vectorMergerBlock.d.ts +10 -0
  238. package/Materials/Node/Blocks/vectorMergerBlock.js +10 -0
  239. package/Materials/Node/Blocks/vectorMergerBlock.js.map +1 -1
  240. package/Materials/Node/Blocks/viewDirectionBlock.d.ts +5 -0
  241. package/Materials/Node/Blocks/viewDirectionBlock.js +5 -0
  242. package/Materials/Node/Blocks/viewDirectionBlock.js.map +1 -1
  243. package/Materials/Node/Blocks/waveBlock.d.ts +10 -0
  244. package/Materials/Node/Blocks/waveBlock.js +10 -0
  245. package/Materials/Node/Blocks/waveBlock.js.map +1 -1
  246. package/Materials/Node/Blocks/worleyNoise3DBlock.d.ts +1 -0
  247. package/Materials/Node/Blocks/worleyNoise3DBlock.js +1 -0
  248. package/Materials/Node/Blocks/worleyNoise3DBlock.js.map +1 -1
  249. package/Materials/Node/nodeMaterial.d.ts +13 -0
  250. package/Materials/Node/nodeMaterial.js +14 -2
  251. package/Materials/Node/nodeMaterial.js.map +1 -1
  252. package/Materials/Node/nodeMaterialBlock.d.ts +0 -3
  253. package/Materials/Node/nodeMaterialBlock.js +1 -6
  254. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  255. package/Materials/Node/nodeMaterialBlockConnectionPoint.js +1 -2
  256. package/Materials/Node/nodeMaterialBlockConnectionPoint.js.map +1 -1
  257. package/Materials/Textures/mirrorTexture.js +1 -1
  258. package/Materials/Textures/mirrorTexture.js.map +1 -1
  259. package/Materials/index.d.ts +2 -0
  260. package/Materials/index.js +2 -0
  261. package/Materials/index.js.map +1 -1
  262. package/Maths/math.constants.d.ts +2 -1
  263. package/Maths/math.constants.js +3 -2
  264. package/Maths/math.constants.js.map +1 -1
  265. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js +17 -1
  266. package/Meshes/GaussianSplatting/gaussianSplattingMesh.js.map +1 -1
  267. package/Meshes/instancedMesh.js +1 -0
  268. package/Meshes/instancedMesh.js.map +1 -1
  269. package/Meshes/mesh.d.ts +5 -0
  270. package/Meshes/mesh.js +39 -16
  271. package/Meshes/mesh.js.map +1 -1
  272. package/Misc/dataStorage.d.ts +13 -0
  273. package/Misc/dataStorage.js +25 -0
  274. package/Misc/dataStorage.js.map +1 -1
  275. package/Morph/morphTarget.d.ts +9 -5
  276. package/Morph/morphTarget.js +15 -7
  277. package/Morph/morphTarget.js.map +1 -1
  278. package/Morph/morphTargetManager.d.ts +3 -1
  279. package/Morph/morphTargetManager.js +5 -2
  280. package/Morph/morphTargetManager.js.map +1 -1
  281. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js +1 -1
  282. package/Particles/Node/Blocks/Emitters/boxShapeBlock.js.map +1 -1
  283. package/Particles/Node/Blocks/Emitters/coneShapeBlock.js +1 -1
  284. package/Particles/Node/Blocks/Emitters/coneShapeBlock.js.map +1 -1
  285. package/Particles/Node/Blocks/Emitters/customShapeBlock.js +1 -1
  286. package/Particles/Node/Blocks/Emitters/customShapeBlock.js.map +1 -1
  287. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js +1 -1
  288. package/Particles/Node/Blocks/Emitters/cylinderShapeBlock.js.map +1 -1
  289. package/Particles/Node/Blocks/Emitters/emitters.functions.js +3 -3
  290. package/Particles/Node/Blocks/Emitters/emitters.functions.js.map +1 -1
  291. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js +1 -1
  292. package/Particles/Node/Blocks/Emitters/meshShapeBlock.js.map +1 -1
  293. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js +1 -1
  294. package/Particles/Node/Blocks/Emitters/pointShapeBlock.js.map +1 -1
  295. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js +1 -1
  296. package/Particles/Node/Blocks/Emitters/sphereShapeBlock.js.map +1 -1
  297. package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js +2 -2
  298. package/Particles/Node/Blocks/Update/basicPositionUpdateBlock.js.map +1 -1
  299. package/Particles/Node/Blocks/Update/updateNoiseBlock.js +7 -7
  300. package/Particles/Node/Blocks/Update/updateNoiseBlock.js.map +1 -1
  301. package/Particles/Node/Blocks/particleLocalVariableBlock.js +2 -2
  302. package/Particles/Node/Blocks/particleLocalVariableBlock.js.map +1 -1
  303. package/Particles/Node/nodeParticleBuildState.js +7 -7
  304. package/Particles/Node/nodeParticleBuildState.js.map +1 -1
  305. package/Particles/Node/nodeParticleSystemSet.helper.js +9 -4
  306. package/Particles/Node/nodeParticleSystemSet.helper.js.map +1 -1
  307. package/Particles/particle.d.ts +73 -61
  308. package/Particles/particle.js +106 -91
  309. package/Particles/particle.js.map +1 -1
  310. package/Particles/particleSystem.js +5 -5
  311. package/Particles/particleSystem.js.map +1 -1
  312. package/Particles/thinParticleSystem.function.js +83 -83
  313. package/Particles/thinParticleSystem.function.js.map +1 -1
  314. package/Particles/thinParticleSystem.js +8 -8
  315. package/Particles/thinParticleSystem.js.map +1 -1
  316. package/Physics/v2/Plugins/havokPlugin.d.ts +14 -1
  317. package/Physics/v2/Plugins/havokPlugin.js +154 -10
  318. package/Physics/v2/Plugins/havokPlugin.js.map +1 -1
  319. package/Probes/reflectionProbe.js +9 -6
  320. package/Probes/reflectionProbe.js.map +1 -1
  321. package/Rendering/objectRenderer.d.ts +3 -1
  322. package/Rendering/objectRenderer.js +28 -8
  323. package/Rendering/objectRenderer.js.map +1 -1
  324. package/Rendering/reflectiveShadowMap.js +1 -1
  325. package/Rendering/reflectiveShadowMap.js.map +1 -1
  326. package/Rendering/thinDepthPeelingRenderer.js +8 -0
  327. package/Rendering/thinDepthPeelingRenderer.js.map +1 -1
  328. package/Shaders/gaussianSplatting.fragment.js +8 -2
  329. package/Shaders/gaussianSplatting.fragment.js.map +1 -1
  330. package/Shaders/gaussianSplatting.vertex.js +8 -2
  331. package/Shaders/gaussianSplatting.vertex.js.map +1 -1
  332. package/ShadersWGSL/gaussianSplatting.fragment.js +7 -1
  333. package/ShadersWGSL/gaussianSplatting.fragment.js.map +1 -1
  334. package/ShadersWGSL/gaussianSplatting.vertex.js +8 -2
  335. package/ShadersWGSL/gaussianSplatting.vertex.js.map +1 -1
  336. package/package.json +1 -1
  337. package/scene.d.ts +22 -1
  338. package/scene.js +15 -15
  339. package/scene.js.map +1 -1
@@ -15,26 +15,26 @@ export function _CreateColorDeadData(particle, system) {
15
15
  }
16
16
  /** @internal */
17
17
  export function _CreateColorGradientsData(particle, system) {
18
- particle._currentColorGradient = system._colorGradients[0];
19
- particle._currentColorGradient.getColorToRef(particle.color);
20
- particle._currentColor1.copyFrom(particle.color);
18
+ particle._properties.currentColorGradient = system._colorGradients[0];
19
+ particle._properties.currentColorGradient.getColorToRef(particle.color);
20
+ particle._properties.currentColor1.copyFrom(particle.color);
21
21
  if (system._colorGradients.length > 1) {
22
- system._colorGradients[1].getColorToRef(particle._currentColor2);
22
+ system._colorGradients[1].getColorToRef(particle._properties.currentColor2);
23
23
  }
24
24
  else {
25
- particle._currentColor2.copyFrom(particle.color);
25
+ particle._properties.currentColor2.copyFrom(particle.color);
26
26
  }
27
27
  }
28
28
  /** @internal */
29
29
  export function _ProcessColorGradients(particle, system) {
30
30
  const colorGradients = system._colorGradients;
31
31
  GradientHelper.GetCurrentGradient(system._ratio, colorGradients, (currentGradient, nextGradient, scale) => {
32
- if (currentGradient !== particle._currentColorGradient) {
33
- particle._currentColor1.copyFrom(particle._currentColor2);
34
- nextGradient.getColorToRef(particle._currentColor2);
35
- particle._currentColorGradient = currentGradient;
32
+ if (currentGradient !== particle._properties.currentColorGradient) {
33
+ particle._properties.currentColor1.copyFrom(particle._properties.currentColor2);
34
+ nextGradient.getColorToRef(particle._properties.currentColor2);
35
+ particle._properties.currentColorGradient = currentGradient;
36
36
  }
37
- Color4.LerpToRef(particle._currentColor1, particle._currentColor2, scale, particle.color);
37
+ Color4.LerpToRef(particle._properties.currentColor1, particle._properties.currentColor2, scale, particle.color);
38
38
  if (particle.color.a < 0) {
39
39
  particle.color.a = 0;
40
40
  }
@@ -52,12 +52,12 @@ export function _ProcessColor(particle, system) {
52
52
  /** @internal */
53
53
  export function _ProcessAngularSpeedGradients(particle, system) {
54
54
  GradientHelper.GetCurrentGradient(system._ratio, system._angularSpeedGradients, (currentGradient, nextGradient, scale) => {
55
- if (currentGradient !== particle._currentAngularSpeedGradient) {
56
- particle._currentAngularSpeed1 = particle._currentAngularSpeed2;
57
- particle._currentAngularSpeed2 = nextGradient.getFactor();
58
- particle._currentAngularSpeedGradient = currentGradient;
55
+ if (currentGradient !== particle._properties.currentAngularSpeedGradient) {
56
+ particle._properties.currentAngularSpeed1 = particle._properties.currentAngularSpeed2;
57
+ particle._properties.currentAngularSpeed2 = nextGradient.getFactor();
58
+ particle._properties.currentAngularSpeedGradient = currentGradient;
59
59
  }
60
- particle.angularSpeed = Lerp(particle._currentAngularSpeed1, particle._currentAngularSpeed2, scale);
60
+ particle.angularSpeed = Lerp(particle._properties.currentAngularSpeed1, particle._properties.currentAngularSpeed2, scale);
61
61
  });
62
62
  }
63
63
  /** @internal */
@@ -75,46 +75,46 @@ export function _CreateCustomDirectionData(particle, system) {
75
75
  }
76
76
  /** @internal */
77
77
  export function _CreateVelocityGradients(particle, system) {
78
- particle._currentVelocityGradient = system._velocityGradients[0];
79
- particle._currentVelocity1 = particle._currentVelocityGradient.getFactor();
78
+ particle._properties.currentVelocityGradient = system._velocityGradients[0];
79
+ particle._properties.currentVelocity1 = particle._properties.currentVelocityGradient.getFactor();
80
80
  if (system._velocityGradients.length > 1) {
81
- particle._currentVelocity2 = system._velocityGradients[1].getFactor();
81
+ particle._properties.currentVelocity2 = system._velocityGradients[1].getFactor();
82
82
  }
83
83
  else {
84
- particle._currentVelocity2 = particle._currentVelocity1;
84
+ particle._properties.currentVelocity2 = particle._properties.currentVelocity1;
85
85
  }
86
86
  }
87
87
  /** @internal */
88
88
  export function _CreateLimitVelocityGradients(particle, system) {
89
- particle._currentLimitVelocityGradient = system._limitVelocityGradients[0];
90
- particle._currentLimitVelocity1 = particle._currentLimitVelocityGradient.getFactor();
89
+ particle._properties.currentLimitVelocityGradient = system._limitVelocityGradients[0];
90
+ particle._properties.currentLimitVelocity1 = particle._properties.currentLimitVelocityGradient.getFactor();
91
91
  if (system._limitVelocityGradients.length > 1) {
92
- particle._currentLimitVelocity2 = system._limitVelocityGradients[1].getFactor();
92
+ particle._properties.currentLimitVelocity2 = system._limitVelocityGradients[1].getFactor();
93
93
  }
94
94
  else {
95
- particle._currentLimitVelocity2 = particle._currentLimitVelocity1;
95
+ particle._properties.currentLimitVelocity2 = particle._properties.currentLimitVelocity1;
96
96
  }
97
97
  }
98
98
  /** @internal */
99
99
  export function _ProcessVelocityGradients(particle, system) {
100
100
  GradientHelper.GetCurrentGradient(system._ratio, system._velocityGradients, (currentGradient, nextGradient, scale) => {
101
- if (currentGradient !== particle._currentVelocityGradient) {
102
- particle._currentVelocity1 = particle._currentVelocity2;
103
- particle._currentVelocity2 = nextGradient.getFactor();
104
- particle._currentVelocityGradient = currentGradient;
101
+ if (currentGradient !== particle._properties.currentVelocityGradient) {
102
+ particle._properties.currentVelocity1 = particle._properties.currentVelocity2;
103
+ particle._properties.currentVelocity2 = nextGradient.getFactor();
104
+ particle._properties.currentVelocityGradient = currentGradient;
105
105
  }
106
- particle._directionScale *= Lerp(particle._currentVelocity1, particle._currentVelocity2, scale);
106
+ particle._properties.directionScale *= Lerp(particle._properties.currentVelocity1, particle._properties.currentVelocity2, scale);
107
107
  });
108
108
  }
109
109
  /** @internal */
110
110
  export function _ProcessLimitVelocityGradients(particle, system) {
111
111
  GradientHelper.GetCurrentGradient(system._ratio, system._limitVelocityGradients, (currentGradient, nextGradient, scale) => {
112
- if (currentGradient !== particle._currentLimitVelocityGradient) {
113
- particle._currentLimitVelocity1 = particle._currentLimitVelocity2;
114
- particle._currentLimitVelocity2 = nextGradient.getFactor();
115
- particle._currentLimitVelocityGradient = currentGradient;
112
+ if (currentGradient !== particle._properties.currentLimitVelocityGradient) {
113
+ particle._properties.currentLimitVelocity1 = particle._properties.currentLimitVelocity2;
114
+ particle._properties.currentLimitVelocity2 = nextGradient.getFactor();
115
+ particle._properties.currentLimitVelocityGradient = currentGradient;
116
116
  }
117
- const limitVelocity = Lerp(particle._currentLimitVelocity1, particle._currentLimitVelocity2, scale);
117
+ const limitVelocity = Lerp(particle._properties.currentLimitVelocity1, particle._properties.currentLimitVelocity2, scale);
118
118
  const currentVelocity = particle.direction.length();
119
119
  if (currentVelocity > limitVelocity) {
120
120
  particle.direction.scaleInPlace(system.limitVelocityDamping);
@@ -123,7 +123,7 @@ export function _ProcessLimitVelocityGradients(particle, system) {
123
123
  }
124
124
  /** @internal */
125
125
  export function _ProcessDirection(particle) {
126
- particle.direction.scaleToRef(particle._directionScale, particle._scaledDirection);
126
+ particle.direction.scaleToRef(particle._properties.directionScale, particle._properties.scaledDirection);
127
127
  }
128
128
  /** Position */
129
129
  /** @internal */
@@ -136,68 +136,68 @@ export function _CreateCustomPositionData(particle, system) {
136
136
  }
137
137
  /** @internal */
138
138
  export function _CreateIsLocalData(particle, system) {
139
- if (!particle._localPosition) {
140
- particle._localPosition = particle.position.clone();
139
+ if (!particle._properties.localPosition) {
140
+ particle._properties.localPosition = particle.position.clone();
141
141
  }
142
142
  else {
143
- particle._localPosition.copyFrom(particle.position);
143
+ particle._properties.localPosition.copyFrom(particle.position);
144
144
  }
145
- Vector3.TransformCoordinatesToRef(particle._localPosition, system._emitterWorldMatrix, particle.position);
145
+ Vector3.TransformCoordinatesToRef(particle._properties.localPosition, system._emitterWorldMatrix, particle.position);
146
146
  }
147
147
  /** @internal */
148
148
  export function _ProcessPosition(particle, system) {
149
- if (system.isLocal && particle._localPosition) {
150
- particle._localPosition.addInPlace(particle._scaledDirection);
151
- Vector3.TransformCoordinatesToRef(particle._localPosition, system._emitterWorldMatrix, particle.position);
149
+ if (system.isLocal && particle._properties.localPosition) {
150
+ particle._properties.localPosition.addInPlace(particle._properties.scaledDirection);
151
+ Vector3.TransformCoordinatesToRef(particle._properties.localPosition, system._emitterWorldMatrix, particle.position);
152
152
  }
153
153
  else {
154
- particle.position.addInPlace(particle._scaledDirection);
154
+ particle.position.addInPlace(particle._properties.scaledDirection);
155
155
  }
156
156
  }
157
157
  /** Drag */
158
158
  /** @internal */
159
159
  export function _CreateDragData(particle, system) {
160
- particle._currentDragGradient = system._dragGradients[0];
161
- particle._currentDrag1 = particle._currentDragGradient.getFactor();
160
+ particle._properties.currentDragGradient = system._dragGradients[0];
161
+ particle._properties.currentDrag1 = particle._properties.currentDragGradient.getFactor();
162
162
  if (system._dragGradients.length > 1) {
163
- particle._currentDrag2 = system._dragGradients[1].getFactor();
163
+ particle._properties.currentDrag2 = system._dragGradients[1].getFactor();
164
164
  }
165
165
  else {
166
- particle._currentDrag2 = particle._currentDrag1;
166
+ particle._properties.currentDrag2 = particle._properties.currentDrag1;
167
167
  }
168
168
  }
169
169
  /** @internal */
170
170
  export function _ProcessDragGradients(particle, system) {
171
171
  GradientHelper.GetCurrentGradient(system._ratio, system._dragGradients, (currentGradient, nextGradient, scale) => {
172
- if (currentGradient !== particle._currentDragGradient) {
173
- particle._currentDrag1 = particle._currentDrag2;
174
- particle._currentDrag2 = nextGradient.getFactor();
175
- particle._currentDragGradient = currentGradient;
172
+ if (currentGradient !== particle._properties.currentDragGradient) {
173
+ particle._properties.currentDrag1 = particle._properties.currentDrag2;
174
+ particle._properties.currentDrag2 = nextGradient.getFactor();
175
+ particle._properties.currentDragGradient = currentGradient;
176
176
  }
177
- const drag = Lerp(particle._currentDrag1, particle._currentDrag2, scale);
178
- particle._scaledDirection.scaleInPlace(1.0 - drag);
177
+ const drag = Lerp(particle._properties.currentDrag1, particle._properties.currentDrag2, scale);
178
+ particle._properties.scaledDirection.scaleInPlace(1.0 - drag);
179
179
  });
180
180
  }
181
181
  /** Noise */
182
182
  /** @internal */
183
183
  export function _CreateNoiseData(particle, _system) {
184
- if (particle._randomNoiseCoordinates1 && particle._randomNoiseCoordinates2) {
185
- particle._randomNoiseCoordinates1.copyFromFloats(Math.random(), Math.random(), Math.random());
186
- particle._randomNoiseCoordinates2.copyFromFloats(Math.random(), Math.random(), Math.random());
184
+ if (particle._properties.randomNoiseCoordinates1 && particle._properties.randomNoiseCoordinates2) {
185
+ particle._properties.randomNoiseCoordinates1.copyFromFloats(Math.random(), Math.random(), Math.random());
186
+ particle._properties.randomNoiseCoordinates2.copyFromFloats(Math.random(), Math.random(), Math.random());
187
187
  }
188
188
  else {
189
- particle._randomNoiseCoordinates1 = new Vector3(Math.random(), Math.random(), Math.random());
190
- particle._randomNoiseCoordinates2 = new Vector3(Math.random(), Math.random(), Math.random());
189
+ particle._properties.randomNoiseCoordinates1 = new Vector3(Math.random(), Math.random(), Math.random());
190
+ particle._properties.randomNoiseCoordinates2 = new Vector3(Math.random(), Math.random(), Math.random());
191
191
  }
192
192
  }
193
193
  /** @internal */
194
194
  export function _ProcessNoise(particle, system) {
195
195
  const noiseTextureData = system._noiseTextureData;
196
196
  const noiseTextureSize = system._noiseTextureSize;
197
- if (noiseTextureData && noiseTextureSize && particle._randomNoiseCoordinates1 && particle._randomNoiseCoordinates2) {
198
- const fetchedColorR = system._fetchR(particle._randomNoiseCoordinates1.x, particle._randomNoiseCoordinates1.y, noiseTextureSize.width, noiseTextureSize.height, noiseTextureData);
199
- const fetchedColorG = system._fetchR(particle._randomNoiseCoordinates1.z, particle._randomNoiseCoordinates2.x, noiseTextureSize.width, noiseTextureSize.height, noiseTextureData);
200
- const fetchedColorB = system._fetchR(particle._randomNoiseCoordinates2.y, particle._randomNoiseCoordinates2.z, noiseTextureSize.width, noiseTextureSize.height, noiseTextureData);
197
+ if (noiseTextureData && noiseTextureSize && particle._properties.randomNoiseCoordinates1 && particle._properties.randomNoiseCoordinates2) {
198
+ const fetchedColorR = system._fetchR(particle._properties.randomNoiseCoordinates1.x, particle._properties.randomNoiseCoordinates1.y, noiseTextureSize.width, noiseTextureSize.height, noiseTextureData);
199
+ const fetchedColorG = system._fetchR(particle._properties.randomNoiseCoordinates1.z, particle._properties.randomNoiseCoordinates2.x, noiseTextureSize.width, noiseTextureSize.height, noiseTextureData);
200
+ const fetchedColorB = system._fetchR(particle._properties.randomNoiseCoordinates2.y, particle._properties.randomNoiseCoordinates2.z, noiseTextureSize.width, noiseTextureSize.height, noiseTextureData);
201
201
  const force = TmpVectors.Vector3[0];
202
202
  const scaledForce = TmpVectors.Vector3[1];
203
203
  force.copyFromFloats((2 * fetchedColorR - 1) * system.noiseStrength.x, (2 * fetchedColorG - 1) * system.noiseStrength.y, (2 * fetchedColorB - 1) * system.noiseStrength.z);
@@ -219,14 +219,14 @@ export function _CreateSizeData(particle, system) {
219
219
  }
220
220
  /** @internal */
221
221
  export function _CreateSizeGradientsData(particle, system) {
222
- particle._currentSizeGradient = system._sizeGradients[0];
223
- particle._currentSize1 = particle._currentSizeGradient.getFactor();
224
- particle.size = particle._currentSize1;
222
+ particle._properties.currentSizeGradient = system._sizeGradients[0];
223
+ particle._properties.currentSize1 = particle._properties.currentSizeGradient.getFactor();
224
+ particle.size = particle._properties.currentSize1;
225
225
  if (system._sizeGradients.length > 1) {
226
- particle._currentSize2 = system._sizeGradients[1].getFactor();
226
+ particle._properties.currentSize2 = system._sizeGradients[1].getFactor();
227
227
  }
228
228
  else {
229
- particle._currentSize2 = particle._currentSize1;
229
+ particle._properties.currentSize2 = particle._properties.currentSize1;
230
230
  }
231
231
  particle.scale.copyFromFloats(RandomRange(system.minScaleX, system.maxScaleX), RandomRange(system.minScaleY, system.maxScaleY));
232
232
  }
@@ -246,12 +246,12 @@ export function _CreateStartSizeGradientsData(particle, system) {
246
246
  /** @internal */
247
247
  export function _ProcessSizeGradients(particle, system) {
248
248
  GradientHelper.GetCurrentGradient(system._ratio, system._sizeGradients, (currentGradient, nextGradient, scale) => {
249
- if (currentGradient !== particle._currentSizeGradient) {
250
- particle._currentSize1 = particle._currentSize2;
251
- particle._currentSize2 = nextGradient.getFactor();
252
- particle._currentSizeGradient = currentGradient;
249
+ if (currentGradient !== particle._properties.currentSizeGradient) {
250
+ particle._properties.currentSize1 = particle._properties.currentSize2;
251
+ particle._properties.currentSize2 = nextGradient.getFactor();
252
+ particle._properties.currentSizeGradient = currentGradient;
253
253
  }
254
- particle.size = Lerp(particle._currentSize1, particle._currentSize2, scale);
254
+ particle.size = Lerp(particle._properties.currentSize1, particle._properties.currentSize2, scale);
255
255
  });
256
256
  }
257
257
  /** Ramp */
@@ -302,16 +302,16 @@ export function _CreateLifetimeData(particle, system) {
302
302
  /** @internal */
303
303
  export function _CreateEmitPowerData(particle, system) {
304
304
  if (system._emitPower === 0) {
305
- if (!particle._initialDirection) {
306
- particle._initialDirection = particle.direction.clone();
305
+ if (!particle._properties.initialDirection) {
306
+ particle._properties.initialDirection = particle.direction.clone();
307
307
  }
308
308
  else {
309
- particle._initialDirection.copyFrom(particle.direction);
309
+ particle._properties.initialDirection.copyFrom(particle.direction);
310
310
  }
311
311
  particle.direction.set(0, 0, 0);
312
312
  }
313
313
  else {
314
- particle._initialDirection = null;
314
+ particle._properties.initialDirection = null;
315
315
  particle.direction.scaleInPlace(system._emitPower);
316
316
  }
317
317
  // Inherited Velocity
@@ -325,22 +325,22 @@ export function _CreateAngleData(particle, system) {
325
325
  }
326
326
  /** @internal */
327
327
  export function _CreateAngleGradientsData(particle, system) {
328
- particle._currentAngularSpeedGradient = system._angularSpeedGradients[0];
329
- particle.angularSpeed = particle._currentAngularSpeedGradient.getFactor();
330
- particle._currentAngularSpeed1 = particle.angularSpeed;
328
+ particle._properties.currentAngularSpeedGradient = system._angularSpeedGradients[0];
329
+ particle.angularSpeed = particle._properties.currentAngularSpeedGradient.getFactor();
330
+ particle._properties.currentAngularSpeed1 = particle.angularSpeed;
331
331
  if (system._angularSpeedGradients.length > 1) {
332
- particle._currentAngularSpeed2 = system._angularSpeedGradients[1].getFactor();
332
+ particle._properties.currentAngularSpeed2 = system._angularSpeedGradients[1].getFactor();
333
333
  }
334
334
  else {
335
- particle._currentAngularSpeed2 = particle._currentAngularSpeed1;
335
+ particle._properties.currentAngularSpeed2 = particle._properties.currentAngularSpeed1;
336
336
  }
337
337
  particle.angle = RandomRange(system.minInitialRotation, system.maxInitialRotation);
338
338
  }
339
339
  /** Sheet */
340
340
  /** @internal */
341
341
  export function _CreateSheetData(particle, system) {
342
- particle._initialStartSpriteCellId = system.startSpriteCellID;
343
- particle._initialEndSpriteCellId = system.endSpriteCellID;
344
- particle._initialSpriteCellLoop = system.spriteCellLoop;
342
+ particle._properties.initialStartSpriteCellId = system.startSpriteCellID;
343
+ particle._properties.initialEndSpriteCellId = system.endSpriteCellID;
344
+ particle._properties.initialSpriteCellLoop = system.spriteCellLoop;
345
345
  }
346
346
  //# sourceMappingURL=thinParticleSystem.function.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thinParticleSystem.function.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/thinParticleSystem.function.ts"],"names":[],"mappings":"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","sourcesContent":["import { Color4 } from \"core/Maths/math.color\";\r\nimport type { ColorGradient, FactorGradient } from \"core/Misc/gradients\";\r\nimport { GradientHelper } from \"core/Misc/gradients\";\r\nimport type { Particle } from \"./particle\";\r\nimport type { ThinParticleSystem } from \"./thinParticleSystem\";\r\nimport { Clamp, Lerp, RandomRange } from \"core/Maths/math.scalar.functions\";\r\nimport { TmpVectors, Vector3, Vector4 } from \"core/Maths/math.vector\";\r\n\r\n/** Color */\r\n\r\n/** @internal */\r\nexport function _CreateColorData(particle: Particle, system: ThinParticleSystem) {\r\n const step = RandomRange(0, 1.0);\r\n\r\n Color4.LerpToRef(system.color1, system.color2, step, particle.color);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateColorDeadData(particle: Particle, system: ThinParticleSystem) {\r\n system.colorDead.subtractToRef(particle.color, system._colorDiff);\r\n system._colorDiff.scaleToRef(1.0 / particle.lifeTime, particle.colorStep);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateColorGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._currentColorGradient = system._colorGradients![0];\r\n particle._currentColorGradient.getColorToRef(particle.color);\r\n particle._currentColor1.copyFrom(particle.color);\r\n\r\n if (system._colorGradients!.length > 1) {\r\n system._colorGradients![1].getColorToRef(particle._currentColor2);\r\n } else {\r\n particle._currentColor2.copyFrom(particle.color);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessColorGradients(particle: Particle, system: ThinParticleSystem) {\r\n const colorGradients = system._colorGradients;\r\n GradientHelper.GetCurrentGradient(system._ratio, colorGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._currentColorGradient) {\r\n particle._currentColor1.copyFrom(particle._currentColor2);\r\n (<ColorGradient>nextGradient).getColorToRef(particle._currentColor2);\r\n particle._currentColorGradient = <ColorGradient>currentGradient;\r\n }\r\n Color4.LerpToRef(particle._currentColor1, particle._currentColor2, scale, particle.color);\r\n\r\n if (particle.color.a < 0) {\r\n particle.color.a = 0;\r\n }\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessColor(particle: Particle, system: ThinParticleSystem) {\r\n particle.colorStep.scaleToRef(system._scaledUpdateSpeed, system._scaledColorStep);\r\n particle.color.addInPlace(system._scaledColorStep);\r\n\r\n if (particle.color.a < 0) {\r\n particle.color.a = 0;\r\n }\r\n}\r\n\r\n/** Angular speed */\r\n\r\n/** @internal */\r\nexport function _ProcessAngularSpeedGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._angularSpeedGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._currentAngularSpeedGradient) {\r\n particle._currentAngularSpeed1 = particle._currentAngularSpeed2;\r\n particle._currentAngularSpeed2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._currentAngularSpeedGradient = <FactorGradient>currentGradient;\r\n }\r\n particle.angularSpeed = Lerp(particle._currentAngularSpeed1, particle._currentAngularSpeed2, scale);\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessAngularSpeed(particle: Particle, system: ThinParticleSystem) {\r\n particle.angle += particle.angularSpeed * system._scaledUpdateSpeed;\r\n}\r\n\r\n/** Velocity & direction */\r\n\r\n/** @internal */\r\nexport function _CreateDirectionData(particle: Particle, system: ThinParticleSystem) {\r\n system.particleEmitterType.startDirectionFunction(system._emitterWorldMatrix, particle.direction, particle, system.isLocal, system._emitterInverseWorldMatrix);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateCustomDirectionData(particle: Particle, system: ThinParticleSystem) {\r\n system.startDirectionFunction!(system._emitterWorldMatrix, particle.direction, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n particle._currentVelocityGradient = system._velocityGradients![0];\r\n particle._currentVelocity1 = particle._currentVelocityGradient.getFactor();\r\n\r\n if (system._velocityGradients!.length > 1) {\r\n particle._currentVelocity2 = system._velocityGradients![1].getFactor();\r\n } else {\r\n particle._currentVelocity2 = particle._currentVelocity1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateLimitVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n particle._currentLimitVelocityGradient = system._limitVelocityGradients![0];\r\n particle._currentLimitVelocity1 = particle._currentLimitVelocityGradient.getFactor();\r\n\r\n if (system._limitVelocityGradients!.length > 1) {\r\n particle._currentLimitVelocity2 = system._limitVelocityGradients![1].getFactor();\r\n } else {\r\n particle._currentLimitVelocity2 = particle._currentLimitVelocity1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._velocityGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._currentVelocityGradient) {\r\n particle._currentVelocity1 = particle._currentVelocity2;\r\n particle._currentVelocity2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._currentVelocityGradient = <FactorGradient>currentGradient;\r\n }\r\n particle._directionScale *= Lerp(particle._currentVelocity1, particle._currentVelocity2, scale);\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessLimitVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._limitVelocityGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._currentLimitVelocityGradient) {\r\n particle._currentLimitVelocity1 = particle._currentLimitVelocity2;\r\n particle._currentLimitVelocity2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._currentLimitVelocityGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const limitVelocity = Lerp(particle._currentLimitVelocity1, particle._currentLimitVelocity2, scale);\r\n const currentVelocity = particle.direction.length();\r\n\r\n if (currentVelocity > limitVelocity) {\r\n particle.direction.scaleInPlace(system.limitVelocityDamping);\r\n }\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessDirection(particle: Particle) {\r\n particle.direction.scaleToRef(particle._directionScale, particle._scaledDirection);\r\n}\r\n\r\n/** Position */\r\n\r\n/** @internal */\r\nexport function _CreatePositionData(particle: Particle, system: ThinParticleSystem) {\r\n system.particleEmitterType.startPositionFunction(system._emitterWorldMatrix, particle.position, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateCustomPositionData(particle: Particle, system: ThinParticleSystem) {\r\n system.startPositionFunction!(system._emitterWorldMatrix, particle.position, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateIsLocalData(particle: Particle, system: ThinParticleSystem) {\r\n if (!particle._localPosition) {\r\n particle._localPosition = particle.position.clone();\r\n } else {\r\n particle._localPosition.copyFrom(particle.position);\r\n }\r\n Vector3.TransformCoordinatesToRef(particle._localPosition, system._emitterWorldMatrix, particle.position);\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessPosition(particle: Particle, system: ThinParticleSystem) {\r\n if (system.isLocal && particle._localPosition) {\r\n particle._localPosition!.addInPlace(particle._scaledDirection);\r\n Vector3.TransformCoordinatesToRef(particle._localPosition!, system._emitterWorldMatrix, particle.position);\r\n } else {\r\n particle.position.addInPlace(particle._scaledDirection);\r\n }\r\n}\r\n\r\n/** Drag */\r\n\r\n/** @internal */\r\nexport function _CreateDragData(particle: Particle, system: ThinParticleSystem) {\r\n particle._currentDragGradient = system._dragGradients![0];\r\n particle._currentDrag1 = particle._currentDragGradient.getFactor();\r\n\r\n if (system._dragGradients!.length > 1) {\r\n particle._currentDrag2 = system._dragGradients![1].getFactor();\r\n } else {\r\n particle._currentDrag2 = particle._currentDrag1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessDragGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._dragGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._currentDragGradient) {\r\n particle._currentDrag1 = particle._currentDrag2;\r\n particle._currentDrag2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._currentDragGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const drag = Lerp(particle._currentDrag1, particle._currentDrag2, scale);\r\n\r\n particle._scaledDirection.scaleInPlace(1.0 - drag);\r\n });\r\n}\r\n\r\n/** Noise */\r\n\r\n/** @internal */\r\nexport function _CreateNoiseData(particle: Particle, _system: ThinParticleSystem) {\r\n if (particle._randomNoiseCoordinates1 && particle._randomNoiseCoordinates2) {\r\n particle._randomNoiseCoordinates1.copyFromFloats(Math.random(), Math.random(), Math.random());\r\n particle._randomNoiseCoordinates2.copyFromFloats(Math.random(), Math.random(), Math.random());\r\n } else {\r\n particle._randomNoiseCoordinates1 = new Vector3(Math.random(), Math.random(), Math.random());\r\n particle._randomNoiseCoordinates2 = new Vector3(Math.random(), Math.random(), Math.random());\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessNoise(particle: Particle, system: ThinParticleSystem) {\r\n const noiseTextureData = system._noiseTextureData;\r\n const noiseTextureSize = system._noiseTextureSize;\r\n\r\n if (noiseTextureData && noiseTextureSize && particle._randomNoiseCoordinates1 && particle._randomNoiseCoordinates2) {\r\n const fetchedColorR = system._fetchR(\r\n particle._randomNoiseCoordinates1.x,\r\n particle._randomNoiseCoordinates1.y,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n const fetchedColorG = system._fetchR(\r\n particle._randomNoiseCoordinates1.z,\r\n particle._randomNoiseCoordinates2.x,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n const fetchedColorB = system._fetchR(\r\n particle._randomNoiseCoordinates2.y,\r\n particle._randomNoiseCoordinates2.z,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n\r\n const force = TmpVectors.Vector3[0];\r\n const scaledForce = TmpVectors.Vector3[1];\r\n\r\n force.copyFromFloats((2 * fetchedColorR - 1) * system.noiseStrength.x, (2 * fetchedColorG - 1) * system.noiseStrength.y, (2 * fetchedColorB - 1) * system.noiseStrength.z);\r\n\r\n force.scaleToRef(system._tempScaledUpdateSpeed, scaledForce);\r\n particle.direction.addInPlace(scaledForce);\r\n }\r\n}\r\n\r\n/** Gravity */\r\n\r\n/** @internal */\r\nexport function _ProcessGravity(particle: Particle, system: ThinParticleSystem) {\r\n system.gravity.scaleToRef(system._tempScaledUpdateSpeed, system._scaledGravity);\r\n particle.direction.addInPlace(system._scaledGravity);\r\n}\r\n\r\n/** Size */\r\n\r\n/** @internal */\r\nexport function _CreateSizeData(particle: Particle, system: ThinParticleSystem) {\r\n particle.size = RandomRange(system.minSize, system.maxSize);\r\n particle.scale.copyFromFloats(RandomRange(system.minScaleX, system.maxScaleX), RandomRange(system.minScaleY, system.maxScaleY));\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateSizeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._currentSizeGradient = system._sizeGradients![0];\r\n particle._currentSize1 = particle._currentSizeGradient.getFactor();\r\n particle.size = particle._currentSize1;\r\n\r\n if (system._sizeGradients!.length > 1) {\r\n particle._currentSize2 = system._sizeGradients![1].getFactor();\r\n } else {\r\n particle._currentSize2 = particle._currentSize1;\r\n }\r\n\r\n particle.scale.copyFromFloats(RandomRange(system.minScaleX, system.maxScaleX), RandomRange(system.minScaleY, system.maxScaleY));\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateStartSizeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n const ratio = system._actualFrame / system.targetStopDuration;\r\n GradientHelper.GetCurrentGradient(ratio, system._startSizeGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== system._currentStartSizeGradient) {\r\n system._currentStartSize1 = system._currentStartSize2;\r\n system._currentStartSize2 = (<FactorGradient>nextGradient).getFactor();\r\n system._currentStartSizeGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const value = Lerp(system._currentStartSize1, system._currentStartSize2, scale);\r\n particle.scale.scaleInPlace(value);\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessSizeGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._sizeGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._currentSizeGradient) {\r\n particle._currentSize1 = particle._currentSize2;\r\n particle._currentSize2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._currentSizeGradient = <FactorGradient>currentGradient;\r\n }\r\n particle.size = Lerp(particle._currentSize1, particle._currentSize2, scale);\r\n });\r\n}\r\n\r\n/** Ramp */\r\n\r\n/** @internal */\r\nexport function _CreateRampData(particle: Particle, _system: ThinParticleSystem) {\r\n particle.remapData = new Vector4(0, 1, 0, 1);\r\n}\r\n\r\n/** Remap */\r\n\r\n/** @internal */\r\nexport function _ProcessRemapGradients(particle: Particle, system: ThinParticleSystem) {\r\n if (system._colorRemapGradients && system._colorRemapGradients.length > 0) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._colorRemapGradients, (currentGradient, nextGradient, scale) => {\r\n const min = Lerp((<FactorGradient>currentGradient).factor1, (<FactorGradient>nextGradient).factor1, scale);\r\n const max = Lerp((<FactorGradient>currentGradient).factor2!, (<FactorGradient>nextGradient).factor2!, scale);\r\n\r\n particle.remapData.x = min;\r\n particle.remapData.y = max - min;\r\n });\r\n }\r\n\r\n if (system._alphaRemapGradients && system._alphaRemapGradients.length > 0) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._alphaRemapGradients, (currentGradient, nextGradient, scale) => {\r\n const min = Lerp((<FactorGradient>currentGradient).factor1, (<FactorGradient>nextGradient).factor1, scale);\r\n const max = Lerp((<FactorGradient>currentGradient).factor2!, (<FactorGradient>nextGradient).factor2!, scale);\r\n\r\n particle.remapData.z = min;\r\n particle.remapData.w = max - min;\r\n });\r\n }\r\n}\r\n\r\n/** Life */\r\n\r\n/** @internal */\r\nexport function _CreateLifeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n const ratio = Clamp(system._actualFrame / system.targetStopDuration);\r\n GradientHelper.GetCurrentGradient(ratio, system._lifeTimeGradients!, (currentGradient, nextGradient) => {\r\n const factorGradient1 = <FactorGradient>currentGradient;\r\n const factorGradient2 = <FactorGradient>nextGradient;\r\n const lifeTime1 = factorGradient1.getFactor();\r\n const lifeTime2 = factorGradient2.getFactor();\r\n const gradient = (ratio - factorGradient1.gradient) / (factorGradient2.gradient - factorGradient1.gradient);\r\n particle.lifeTime = Lerp(lifeTime1, lifeTime2, gradient);\r\n });\r\n system._emitPower = RandomRange(system.minEmitPower, system.maxEmitPower);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateLifetimeData(particle: Particle, system: ThinParticleSystem) {\r\n particle.lifeTime = RandomRange(system.minLifeTime, system.maxLifeTime);\r\n system._emitPower = RandomRange(system.minEmitPower, system.maxEmitPower);\r\n}\r\n\r\n/** Emit power */\r\n\r\n/** @internal */\r\nexport function _CreateEmitPowerData(particle: Particle, system: ThinParticleSystem) {\r\n if (system._emitPower === 0) {\r\n if (!particle._initialDirection) {\r\n particle._initialDirection = particle.direction.clone();\r\n } else {\r\n particle._initialDirection.copyFrom(particle.direction);\r\n }\r\n particle.direction.set(0, 0, 0);\r\n } else {\r\n particle._initialDirection = null;\r\n particle.direction.scaleInPlace(system._emitPower);\r\n }\r\n\r\n // Inherited Velocity\r\n particle.direction.addInPlace(system._inheritedVelocityOffset);\r\n}\r\n\r\n/** Angle */\r\n\r\n/** @internal */\r\nexport function _CreateAngleData(particle: Particle, system: ThinParticleSystem) {\r\n particle.angularSpeed = RandomRange(system.minAngularSpeed, system.maxAngularSpeed);\r\n particle.angle = RandomRange(system.minInitialRotation, system.maxInitialRotation);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateAngleGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._currentAngularSpeedGradient = system._angularSpeedGradients![0];\r\n particle.angularSpeed = particle._currentAngularSpeedGradient.getFactor();\r\n particle._currentAngularSpeed1 = particle.angularSpeed;\r\n\r\n if (system._angularSpeedGradients!.length > 1) {\r\n particle._currentAngularSpeed2 = system._angularSpeedGradients![1].getFactor();\r\n } else {\r\n particle._currentAngularSpeed2 = particle._currentAngularSpeed1;\r\n }\r\n particle.angle = RandomRange(system.minInitialRotation, system.maxInitialRotation);\r\n}\r\n\r\n/** Sheet */\r\n\r\n/** @internal */\r\nexport function _CreateSheetData(particle: Particle, system: ThinParticleSystem) {\r\n particle._initialStartSpriteCellId = system.startSpriteCellID;\r\n particle._initialEndSpriteCellId = system.endSpriteCellID;\r\n particle._initialSpriteCellLoop = system.spriteCellLoop;\r\n}\r\n"]}
1
+ {"version":3,"file":"thinParticleSystem.function.js","sourceRoot":"","sources":["../../../../dev/core/src/Particles/thinParticleSystem.function.ts"],"names":[],"mappings":"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","sourcesContent":["import { Color4 } from \"core/Maths/math.color\";\r\nimport type { ColorGradient, FactorGradient } from \"core/Misc/gradients\";\r\nimport { GradientHelper } from \"core/Misc/gradients\";\r\nimport type { Particle } from \"./particle\";\r\nimport type { ThinParticleSystem } from \"./thinParticleSystem\";\r\nimport { Clamp, Lerp, RandomRange } from \"core/Maths/math.scalar.functions\";\r\nimport { TmpVectors, Vector3, Vector4 } from \"core/Maths/math.vector\";\r\n\r\n/** Color */\r\n\r\n/** @internal */\r\nexport function _CreateColorData(particle: Particle, system: ThinParticleSystem) {\r\n const step = RandomRange(0, 1.0);\r\n\r\n Color4.LerpToRef(system.color1, system.color2, step, particle.color);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateColorDeadData(particle: Particle, system: ThinParticleSystem) {\r\n system.colorDead.subtractToRef(particle.color, system._colorDiff);\r\n system._colorDiff.scaleToRef(1.0 / particle.lifeTime, particle.colorStep);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateColorGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentColorGradient = system._colorGradients![0];\r\n particle._properties.currentColorGradient.getColorToRef(particle.color);\r\n particle._properties.currentColor1.copyFrom(particle.color);\r\n\r\n if (system._colorGradients!.length > 1) {\r\n system._colorGradients![1].getColorToRef(particle._properties.currentColor2);\r\n } else {\r\n particle._properties.currentColor2.copyFrom(particle.color);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessColorGradients(particle: Particle, system: ThinParticleSystem) {\r\n const colorGradients = system._colorGradients;\r\n GradientHelper.GetCurrentGradient(system._ratio, colorGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentColorGradient) {\r\n particle._properties.currentColor1.copyFrom(particle._properties.currentColor2);\r\n (<ColorGradient>nextGradient).getColorToRef(particle._properties.currentColor2);\r\n particle._properties.currentColorGradient = <ColorGradient>currentGradient;\r\n }\r\n Color4.LerpToRef(particle._properties.currentColor1, particle._properties.currentColor2, scale, particle.color);\r\n\r\n if (particle.color.a < 0) {\r\n particle.color.a = 0;\r\n }\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessColor(particle: Particle, system: ThinParticleSystem) {\r\n particle.colorStep.scaleToRef(system._scaledUpdateSpeed, system._scaledColorStep);\r\n particle.color.addInPlace(system._scaledColorStep);\r\n\r\n if (particle.color.a < 0) {\r\n particle.color.a = 0;\r\n }\r\n}\r\n\r\n/** Angular speed */\r\n\r\n/** @internal */\r\nexport function _ProcessAngularSpeedGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._angularSpeedGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentAngularSpeedGradient) {\r\n particle._properties.currentAngularSpeed1 = particle._properties.currentAngularSpeed2;\r\n particle._properties.currentAngularSpeed2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentAngularSpeedGradient = <FactorGradient>currentGradient;\r\n }\r\n particle.angularSpeed = Lerp(particle._properties.currentAngularSpeed1, particle._properties.currentAngularSpeed2, scale);\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessAngularSpeed(particle: Particle, system: ThinParticleSystem) {\r\n particle.angle += particle.angularSpeed * system._scaledUpdateSpeed;\r\n}\r\n\r\n/** Velocity & direction */\r\n\r\n/** @internal */\r\nexport function _CreateDirectionData(particle: Particle, system: ThinParticleSystem) {\r\n system.particleEmitterType.startDirectionFunction(system._emitterWorldMatrix, particle.direction, particle, system.isLocal, system._emitterInverseWorldMatrix);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateCustomDirectionData(particle: Particle, system: ThinParticleSystem) {\r\n system.startDirectionFunction!(system._emitterWorldMatrix, particle.direction, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentVelocityGradient = system._velocityGradients![0];\r\n particle._properties.currentVelocity1 = particle._properties.currentVelocityGradient.getFactor();\r\n\r\n if (system._velocityGradients!.length > 1) {\r\n particle._properties.currentVelocity2 = system._velocityGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentVelocity2 = particle._properties.currentVelocity1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateLimitVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentLimitVelocityGradient = system._limitVelocityGradients![0];\r\n particle._properties.currentLimitVelocity1 = particle._properties.currentLimitVelocityGradient.getFactor();\r\n\r\n if (system._limitVelocityGradients!.length > 1) {\r\n particle._properties.currentLimitVelocity2 = system._limitVelocityGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentLimitVelocity2 = particle._properties.currentLimitVelocity1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._velocityGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentVelocityGradient) {\r\n particle._properties.currentVelocity1 = particle._properties.currentVelocity2;\r\n particle._properties.currentVelocity2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentVelocityGradient = <FactorGradient>currentGradient;\r\n }\r\n particle._properties.directionScale *= Lerp(particle._properties.currentVelocity1, particle._properties.currentVelocity2, scale);\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessLimitVelocityGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._limitVelocityGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentLimitVelocityGradient) {\r\n particle._properties.currentLimitVelocity1 = particle._properties.currentLimitVelocity2;\r\n particle._properties.currentLimitVelocity2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentLimitVelocityGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const limitVelocity = Lerp(particle._properties.currentLimitVelocity1, particle._properties.currentLimitVelocity2, scale);\r\n const currentVelocity = particle.direction.length();\r\n\r\n if (currentVelocity > limitVelocity) {\r\n particle.direction.scaleInPlace(system.limitVelocityDamping);\r\n }\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessDirection(particle: Particle) {\r\n particle.direction.scaleToRef(particle._properties.directionScale, particle._properties.scaledDirection);\r\n}\r\n\r\n/** Position */\r\n\r\n/** @internal */\r\nexport function _CreatePositionData(particle: Particle, system: ThinParticleSystem) {\r\n system.particleEmitterType.startPositionFunction(system._emitterWorldMatrix, particle.position, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateCustomPositionData(particle: Particle, system: ThinParticleSystem) {\r\n system.startPositionFunction!(system._emitterWorldMatrix, particle.position, particle, system.isLocal);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateIsLocalData(particle: Particle, system: ThinParticleSystem) {\r\n if (!particle._properties.localPosition) {\r\n particle._properties.localPosition = particle.position.clone();\r\n } else {\r\n particle._properties.localPosition.copyFrom(particle.position);\r\n }\r\n Vector3.TransformCoordinatesToRef(particle._properties.localPosition, system._emitterWorldMatrix, particle.position);\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessPosition(particle: Particle, system: ThinParticleSystem) {\r\n if (system.isLocal && particle._properties.localPosition) {\r\n particle._properties.localPosition!.addInPlace(particle._properties.scaledDirection);\r\n Vector3.TransformCoordinatesToRef(particle._properties.localPosition!, system._emitterWorldMatrix, particle.position);\r\n } else {\r\n particle.position.addInPlace(particle._properties.scaledDirection);\r\n }\r\n}\r\n\r\n/** Drag */\r\n\r\n/** @internal */\r\nexport function _CreateDragData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentDragGradient = system._dragGradients![0];\r\n particle._properties.currentDrag1 = particle._properties.currentDragGradient.getFactor();\r\n\r\n if (system._dragGradients!.length > 1) {\r\n particle._properties.currentDrag2 = system._dragGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentDrag2 = particle._properties.currentDrag1;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessDragGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._dragGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentDragGradient) {\r\n particle._properties.currentDrag1 = particle._properties.currentDrag2;\r\n particle._properties.currentDrag2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentDragGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const drag = Lerp(particle._properties.currentDrag1, particle._properties.currentDrag2, scale);\r\n\r\n particle._properties.scaledDirection.scaleInPlace(1.0 - drag);\r\n });\r\n}\r\n\r\n/** Noise */\r\n\r\n/** @internal */\r\nexport function _CreateNoiseData(particle: Particle, _system: ThinParticleSystem) {\r\n if (particle._properties.randomNoiseCoordinates1 && particle._properties.randomNoiseCoordinates2) {\r\n particle._properties.randomNoiseCoordinates1.copyFromFloats(Math.random(), Math.random(), Math.random());\r\n particle._properties.randomNoiseCoordinates2.copyFromFloats(Math.random(), Math.random(), Math.random());\r\n } else {\r\n particle._properties.randomNoiseCoordinates1 = new Vector3(Math.random(), Math.random(), Math.random());\r\n particle._properties.randomNoiseCoordinates2 = new Vector3(Math.random(), Math.random(), Math.random());\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessNoise(particle: Particle, system: ThinParticleSystem) {\r\n const noiseTextureData = system._noiseTextureData;\r\n const noiseTextureSize = system._noiseTextureSize;\r\n\r\n if (noiseTextureData && noiseTextureSize && particle._properties.randomNoiseCoordinates1 && particle._properties.randomNoiseCoordinates2) {\r\n const fetchedColorR = system._fetchR(\r\n particle._properties.randomNoiseCoordinates1.x,\r\n particle._properties.randomNoiseCoordinates1.y,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n const fetchedColorG = system._fetchR(\r\n particle._properties.randomNoiseCoordinates1.z,\r\n particle._properties.randomNoiseCoordinates2.x,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n const fetchedColorB = system._fetchR(\r\n particle._properties.randomNoiseCoordinates2.y,\r\n particle._properties.randomNoiseCoordinates2.z,\r\n noiseTextureSize.width,\r\n noiseTextureSize.height,\r\n noiseTextureData\r\n );\r\n\r\n const force = TmpVectors.Vector3[0];\r\n const scaledForce = TmpVectors.Vector3[1];\r\n\r\n force.copyFromFloats((2 * fetchedColorR - 1) * system.noiseStrength.x, (2 * fetchedColorG - 1) * system.noiseStrength.y, (2 * fetchedColorB - 1) * system.noiseStrength.z);\r\n\r\n force.scaleToRef(system._tempScaledUpdateSpeed, scaledForce);\r\n particle.direction.addInPlace(scaledForce);\r\n }\r\n}\r\n\r\n/** Gravity */\r\n\r\n/** @internal */\r\nexport function _ProcessGravity(particle: Particle, system: ThinParticleSystem) {\r\n system.gravity.scaleToRef(system._tempScaledUpdateSpeed, system._scaledGravity);\r\n particle.direction.addInPlace(system._scaledGravity);\r\n}\r\n\r\n/** Size */\r\n\r\n/** @internal */\r\nexport function _CreateSizeData(particle: Particle, system: ThinParticleSystem) {\r\n particle.size = RandomRange(system.minSize, system.maxSize);\r\n particle.scale.copyFromFloats(RandomRange(system.minScaleX, system.maxScaleX), RandomRange(system.minScaleY, system.maxScaleY));\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateSizeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentSizeGradient = system._sizeGradients![0];\r\n particle._properties.currentSize1 = particle._properties.currentSizeGradient.getFactor();\r\n particle.size = particle._properties.currentSize1;\r\n\r\n if (system._sizeGradients!.length > 1) {\r\n particle._properties.currentSize2 = system._sizeGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentSize2 = particle._properties.currentSize1;\r\n }\r\n\r\n particle.scale.copyFromFloats(RandomRange(system.minScaleX, system.maxScaleX), RandomRange(system.minScaleY, system.maxScaleY));\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateStartSizeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n const ratio = system._actualFrame / system.targetStopDuration;\r\n GradientHelper.GetCurrentGradient(ratio, system._startSizeGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== system._currentStartSizeGradient) {\r\n system._currentStartSize1 = system._currentStartSize2;\r\n system._currentStartSize2 = (<FactorGradient>nextGradient).getFactor();\r\n system._currentStartSizeGradient = <FactorGradient>currentGradient;\r\n }\r\n\r\n const value = Lerp(system._currentStartSize1, system._currentStartSize2, scale);\r\n particle.scale.scaleInPlace(value);\r\n });\r\n}\r\n\r\n/** @internal */\r\nexport function _ProcessSizeGradients(particle: Particle, system: ThinParticleSystem) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._sizeGradients!, (currentGradient, nextGradient, scale) => {\r\n if (currentGradient !== particle._properties.currentSizeGradient) {\r\n particle._properties.currentSize1 = particle._properties.currentSize2;\r\n particle._properties.currentSize2 = (<FactorGradient>nextGradient).getFactor();\r\n particle._properties.currentSizeGradient = <FactorGradient>currentGradient;\r\n }\r\n particle.size = Lerp(particle._properties.currentSize1, particle._properties.currentSize2, scale);\r\n });\r\n}\r\n\r\n/** Ramp */\r\n\r\n/** @internal */\r\nexport function _CreateRampData(particle: Particle, _system: ThinParticleSystem) {\r\n particle.remapData = new Vector4(0, 1, 0, 1);\r\n}\r\n\r\n/** Remap */\r\n\r\n/** @internal */\r\nexport function _ProcessRemapGradients(particle: Particle, system: ThinParticleSystem) {\r\n if (system._colorRemapGradients && system._colorRemapGradients.length > 0) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._colorRemapGradients, (currentGradient, nextGradient, scale) => {\r\n const min = Lerp((<FactorGradient>currentGradient).factor1, (<FactorGradient>nextGradient).factor1, scale);\r\n const max = Lerp((<FactorGradient>currentGradient).factor2!, (<FactorGradient>nextGradient).factor2!, scale);\r\n\r\n particle.remapData.x = min;\r\n particle.remapData.y = max - min;\r\n });\r\n }\r\n\r\n if (system._alphaRemapGradients && system._alphaRemapGradients.length > 0) {\r\n GradientHelper.GetCurrentGradient(system._ratio, system._alphaRemapGradients, (currentGradient, nextGradient, scale) => {\r\n const min = Lerp((<FactorGradient>currentGradient).factor1, (<FactorGradient>nextGradient).factor1, scale);\r\n const max = Lerp((<FactorGradient>currentGradient).factor2!, (<FactorGradient>nextGradient).factor2!, scale);\r\n\r\n particle.remapData.z = min;\r\n particle.remapData.w = max - min;\r\n });\r\n }\r\n}\r\n\r\n/** Life */\r\n\r\n/** @internal */\r\nexport function _CreateLifeGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n const ratio = Clamp(system._actualFrame / system.targetStopDuration);\r\n GradientHelper.GetCurrentGradient(ratio, system._lifeTimeGradients!, (currentGradient, nextGradient) => {\r\n const factorGradient1 = <FactorGradient>currentGradient;\r\n const factorGradient2 = <FactorGradient>nextGradient;\r\n const lifeTime1 = factorGradient1.getFactor();\r\n const lifeTime2 = factorGradient2.getFactor();\r\n const gradient = (ratio - factorGradient1.gradient) / (factorGradient2.gradient - factorGradient1.gradient);\r\n particle.lifeTime = Lerp(lifeTime1, lifeTime2, gradient);\r\n });\r\n system._emitPower = RandomRange(system.minEmitPower, system.maxEmitPower);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateLifetimeData(particle: Particle, system: ThinParticleSystem) {\r\n particle.lifeTime = RandomRange(system.minLifeTime, system.maxLifeTime);\r\n system._emitPower = RandomRange(system.minEmitPower, system.maxEmitPower);\r\n}\r\n\r\n/** Emit power */\r\n\r\n/** @internal */\r\nexport function _CreateEmitPowerData(particle: Particle, system: ThinParticleSystem) {\r\n if (system._emitPower === 0) {\r\n if (!particle._properties.initialDirection) {\r\n particle._properties.initialDirection = particle.direction.clone();\r\n } else {\r\n particle._properties.initialDirection.copyFrom(particle.direction);\r\n }\r\n particle.direction.set(0, 0, 0);\r\n } else {\r\n particle._properties.initialDirection = null;\r\n particle.direction.scaleInPlace(system._emitPower);\r\n }\r\n\r\n // Inherited Velocity\r\n particle.direction.addInPlace(system._inheritedVelocityOffset);\r\n}\r\n\r\n/** Angle */\r\n\r\n/** @internal */\r\nexport function _CreateAngleData(particle: Particle, system: ThinParticleSystem) {\r\n particle.angularSpeed = RandomRange(system.minAngularSpeed, system.maxAngularSpeed);\r\n particle.angle = RandomRange(system.minInitialRotation, system.maxInitialRotation);\r\n}\r\n\r\n/** @internal */\r\nexport function _CreateAngleGradientsData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.currentAngularSpeedGradient = system._angularSpeedGradients![0];\r\n particle.angularSpeed = particle._properties.currentAngularSpeedGradient.getFactor();\r\n particle._properties.currentAngularSpeed1 = particle.angularSpeed;\r\n\r\n if (system._angularSpeedGradients!.length > 1) {\r\n particle._properties.currentAngularSpeed2 = system._angularSpeedGradients![1].getFactor();\r\n } else {\r\n particle._properties.currentAngularSpeed2 = particle._properties.currentAngularSpeed1;\r\n }\r\n particle.angle = RandomRange(system.minInitialRotation, system.maxInitialRotation);\r\n}\r\n\r\n/** Sheet */\r\n\r\n/** @internal */\r\nexport function _CreateSheetData(particle: Particle, system: ThinParticleSystem) {\r\n particle._properties.initialStartSpriteCellId = system.startSpriteCellID;\r\n particle._properties.initialEndSpriteCellId = system.endSpriteCellID;\r\n particle._properties.initialSpriteCellLoop = system.spriteCellLoop;\r\n}\r\n"]}
@@ -38,10 +38,10 @@ export class ThinParticleSystem extends BaseParticleSystem {
38
38
  }
39
39
  this._startDirectionFunction = value;
40
40
  if (value) {
41
- this._directionProcessing.process = _CreateCustomDirectionData;
41
+ this._directionCreation.process = _CreateCustomDirectionData;
42
42
  }
43
43
  else {
44
- this._directionProcessing.process = _CreateDirectionData;
44
+ this._directionCreation.process = _CreateDirectionData;
45
45
  }
46
46
  }
47
47
  /**
@@ -528,7 +528,7 @@ export class ThinParticleSystem extends BaseParticleSystem {
528
528
  particle.age = particle.lifeTime;
529
529
  }
530
530
  this._ratio = particle.age / particle.lifeTime;
531
- particle._directionScale = this._tempScaledUpdateSpeed;
531
+ particle._properties.directionScale = this._tempScaledUpdateSpeed;
532
532
  // Processing queue
533
533
  let currentQueueItem = this._updateQueueStart;
534
534
  while (currentQueueItem) {
@@ -543,12 +543,12 @@ export class ThinParticleSystem extends BaseParticleSystem {
543
543
  if (particle.age >= particle.lifeTime) {
544
544
  // Recycle by swapping with last particle
545
545
  this._emitFromParticle(particle);
546
- if (particle._attachedSubEmitters) {
547
- for (const subEmitter of particle._attachedSubEmitters) {
546
+ if (particle._properties.attachedSubEmitters) {
547
+ for (const subEmitter of particle._properties.attachedSubEmitters) {
548
548
  subEmitter.particleSystem.disposeOnStop = true;
549
549
  subEmitter.particleSystem.stop();
550
550
  }
551
- particle._attachedSubEmitters = null;
551
+ particle._properties.attachedSubEmitters = null;
552
552
  }
553
553
  this.recycleParticle(particle);
554
554
  if (sameParticleArray) {
@@ -1357,8 +1357,8 @@ export class ThinParticleSystem extends BaseParticleSystem {
1357
1357
  this._vertexData[offset++] = particle.cellIndex;
1358
1358
  }
1359
1359
  if (!this._isBillboardBased) {
1360
- if (particle._initialDirection) {
1361
- let initialDirection = particle._initialDirection;
1360
+ if (particle._properties.initialDirection) {
1361
+ let initialDirection = particle._properties.initialDirection;
1362
1362
  if (this.isLocal) {
1363
1363
  Vector3.TransformNormalToRef(initialDirection, this._emitterWorldMatrix, TmpVectors.Vector3[0]);
1364
1364
  initialDirection = TmpVectors.Vector3[0];