@needle-tools/engine 4.7.1 → 4.7.2-alpha

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 (1072) hide show
  1. package/CHANGELOG.md +3782 -3782
  2. package/LICENSE.md +10 -10
  3. package/README.md +64 -64
  4. package/components.needle.json +1 -1
  5. package/dist/generateMeshBVH.worker-Cdfpaq5W.js +25 -0
  6. package/dist/gltf-progressive-YjtQYFa9.js +1052 -0
  7. package/dist/gltf-progressive-yOP1mp5W.min.js +8 -0
  8. package/dist/gltf-progressive-zdhlW609.umd.cjs +8 -0
  9. package/dist/{needle-engine.bundle-CN9UC6Ju.min.js → needle-engine.bundle-BhDF-YSv.min.js} +65 -65
  10. package/dist/{needle-engine.bundle-B7M9iBIa.umd.cjs → needle-engine.bundle-D2myV4E4.umd.cjs} +61 -61
  11. package/dist/{needle-engine.bundle-BpCihhaP.js → needle-engine.bundle-gp00DTS4.js} +641 -641
  12. package/dist/needle-engine.d.ts +129 -130
  13. package/dist/needle-engine.js +4 -4
  14. package/dist/needle-engine.min.js +1 -1
  15. package/dist/needle-engine.umd.cjs +1 -1
  16. package/dist/{postprocessing-CjW23fio.umd.cjs → postprocessing-8AQTeZsr.umd.cjs} +2 -2
  17. package/dist/{postprocessing-xYQWCHFu.min.js → postprocessing-BDScN9yu.min.js} +2 -2
  18. package/dist/{postprocessing-DYLNOL3W.js → postprocessing-BkxN_08g.js} +3 -3
  19. package/dist/{three-DuDKwKB8.min.js → three-Boa-jOq-.min.js} +33 -33
  20. package/dist/{three-DrqIzZTH.js → three-Bz6X1mrw.js} +4198 -4198
  21. package/dist/{three-B_hneGZr.umd.cjs → three-DMrv-4ar.umd.cjs} +4 -4
  22. package/dist/{three-examples-X3OadjXB.umd.cjs → three-examples-C7ryg8vN.umd.cjs} +3 -3
  23. package/dist/{three-examples-DaDLBuy6.min.js → three-examples-DuVhxqft.min.js} +14 -14
  24. package/dist/{three-examples-B50TT3Iu.js → three-examples-GggCDHv0.js} +5 -5
  25. package/dist/{three-mesh-ui-CxuWt7m-.js → three-mesh-ui-CLNOfsWn.js} +1 -1
  26. package/dist/{three-mesh-ui-B3p3gyUz.min.js → three-mesh-ui-CY6Izc7C.min.js} +1 -1
  27. package/dist/{three-mesh-ui-CQiIQIlA.umd.cjs → three-mesh-ui-CwlN0FUC.umd.cjs} +1 -1
  28. package/dist/{vendor-BmYIgaS1.js → vendor-BSD1RQIh.js} +3 -3
  29. package/dist/{vendor-Cavtu3CP.umd.cjs → vendor-DHr4aqIZ.umd.cjs} +3 -3
  30. package/dist/{vendor-BlSxe9JJ.min.js → vendor-zxXa3Dmr.min.js} +3 -3
  31. package/lib/asap/needle-asap.d.ts +1 -1
  32. package/lib/asap/needle-asap.js +95 -95
  33. package/lib/asap/sessiongranted.d.ts +3 -3
  34. package/lib/asap/sessiongranted.js +65 -65
  35. package/lib/asap/utils.d.ts +1 -1
  36. package/lib/asap/utils.js +3 -3
  37. package/lib/engine/analytics/index.d.ts +6 -6
  38. package/lib/engine/analytics/index.js +12 -12
  39. package/lib/engine/analytics/lcp.d.ts +3 -3
  40. package/lib/engine/analytics/lcp.js +34 -34
  41. package/lib/engine/api.d.ts +82 -82
  42. package/lib/engine/api.js +81 -81
  43. package/lib/engine/assets/index.d.ts +11 -11
  44. package/lib/engine/assets/index.js +47 -47
  45. package/lib/engine/assets/static.d.ts +1 -1
  46. package/lib/engine/assets/static.js +4 -4
  47. package/lib/engine/codegen/register_types.d.ts +1 -1
  48. package/lib/engine/codegen/register_types.js +300 -300
  49. package/lib/engine/debug/debug.d.ts +15 -15
  50. package/lib/engine/debug/debug.js +44 -44
  51. package/lib/engine/debug/debug_console.d.ts +2 -2
  52. package/lib/engine/debug/debug_console.js +307 -307
  53. package/lib/engine/debug/debug_overlay.d.ts +22 -22
  54. package/lib/engine/debug/debug_overlay.js +316 -316
  55. package/lib/engine/debug/debug_spatial_console.d.ts +2 -2
  56. package/lib/engine/debug/debug_spatial_console.js +390 -390
  57. package/lib/engine/debug/index.d.ts +2 -2
  58. package/lib/engine/debug/index.js +2 -2
  59. package/lib/engine/engine_addressables.d.ts +164 -164
  60. package/lib/engine/engine_addressables.js +601 -601
  61. package/lib/engine/engine_animation.d.ts +43 -43
  62. package/lib/engine/engine_animation.js +133 -133
  63. package/lib/engine/engine_application.d.ts +45 -45
  64. package/lib/engine/engine_application.js +104 -104
  65. package/lib/engine/engine_assetdatabase.d.ts +25 -25
  66. package/lib/engine/engine_assetdatabase.js +346 -346
  67. package/lib/engine/engine_audio.d.ts +4 -4
  68. package/lib/engine/engine_audio.js +23 -23
  69. package/lib/engine/engine_camera.d.ts +13 -13
  70. package/lib/engine/engine_camera.js +30 -30
  71. package/lib/engine/engine_components.d.ts +110 -110
  72. package/lib/engine/engine_components.js +374 -374
  73. package/lib/engine/engine_components_internal.d.ts +9 -9
  74. package/lib/engine/engine_components_internal.js +36 -36
  75. package/lib/engine/engine_constants.d.ts +10 -10
  76. package/lib/engine/engine_constants.js +41 -41
  77. package/lib/engine/engine_context.d.ts +475 -475
  78. package/lib/engine/engine_context.js +1673 -1673
  79. package/lib/engine/engine_context_registry.d.ts +71 -71
  80. package/lib/engine/engine_context_registry.js +117 -117
  81. package/lib/engine/engine_coroutine.d.ts +35 -35
  82. package/lib/engine/engine_coroutine.js +52 -52
  83. package/lib/engine/engine_create_objects.d.ts +119 -119
  84. package/lib/engine/engine_create_objects.js +320 -320
  85. package/lib/engine/engine_default_parameters.d.ts +2 -2
  86. package/lib/engine/engine_default_parameters.js +3 -3
  87. package/lib/engine/engine_editor-sync.d.ts +21 -21
  88. package/lib/engine/engine_editor-sync.js +4 -4
  89. package/lib/engine/engine_fileloader.d.ts +2 -2
  90. package/lib/engine/engine_fileloader.js +8 -8
  91. package/lib/engine/engine_gameobject.d.ts +68 -68
  92. package/lib/engine/engine_gameobject.js +619 -619
  93. package/lib/engine/engine_generic_utils.d.ts +1 -1
  94. package/lib/engine/engine_generic_utils.js +13 -13
  95. package/lib/engine/engine_gizmos.d.ts +149 -149
  96. package/lib/engine/engine_gizmos.js +530 -530
  97. package/lib/engine/engine_gltf.d.ts +12 -12
  98. package/lib/engine/engine_gltf.js +15 -15
  99. package/lib/engine/engine_gltf_builtin_components.d.ts +11 -11
  100. package/lib/engine/engine_gltf_builtin_components.js +341 -341
  101. package/lib/engine/engine_hot_reload.d.ts +8 -8
  102. package/lib/engine/engine_hot_reload.js +197 -197
  103. package/lib/engine/engine_input.d.ts +362 -362
  104. package/lib/engine/engine_input.js +1294 -1294
  105. package/lib/engine/engine_input_utils.d.ts +2 -2
  106. package/lib/engine/engine_input_utils.js +22 -22
  107. package/lib/engine/engine_instancing.d.ts +19 -19
  108. package/lib/engine/engine_instancing.js +39 -39
  109. package/lib/engine/engine_license.d.ts +11 -11
  110. package/lib/engine/engine_license.js +369 -369
  111. package/lib/engine/engine_lifecycle_api.d.ts +83 -83
  112. package/lib/engine/engine_lifecycle_api.js +106 -106
  113. package/lib/engine/engine_lifecycle_functions_internal.d.ts +32 -32
  114. package/lib/engine/engine_lifecycle_functions_internal.js +146 -146
  115. package/lib/engine/engine_lightdata.d.ts +23 -23
  116. package/lib/engine/engine_lightdata.js +101 -101
  117. package/lib/engine/engine_loaders.callbacks.d.ts +97 -97
  118. package/lib/engine/engine_loaders.callbacks.js +86 -86
  119. package/lib/engine/engine_loaders.d.ts +48 -48
  120. package/lib/engine/engine_loaders.gltf.d.ts +13 -13
  121. package/lib/engine/engine_loaders.gltf.js +62 -62
  122. package/lib/engine/engine_loaders.js +337 -337
  123. package/lib/engine/engine_lods.d.ts +35 -35
  124. package/lib/engine/engine_lods.js +160 -160
  125. package/lib/engine/engine_lods.js.map +1 -1
  126. package/lib/engine/engine_mainloop_utils.d.ts +32 -32
  127. package/lib/engine/engine_mainloop_utils.js +466 -466
  128. package/lib/engine/engine_math.d.ts +114 -114
  129. package/lib/engine/engine_math.js +247 -247
  130. package/lib/engine/engine_modules.d.ts +36 -36
  131. package/lib/engine/engine_modules.js +85 -85
  132. package/lib/engine/engine_networking.d.ts +260 -260
  133. package/lib/engine/engine_networking.js +764 -764
  134. package/lib/engine/engine_networking_auto.d.ts +24 -24
  135. package/lib/engine/engine_networking_auto.js +310 -310
  136. package/lib/engine/engine_networking_blob.d.ts +48 -48
  137. package/lib/engine/engine_networking_blob.js +228 -228
  138. package/lib/engine/engine_networking_files.d.ts +35 -35
  139. package/lib/engine/engine_networking_files.js +172 -172
  140. package/lib/engine/engine_networking_files_default_components.d.ts +6 -6
  141. package/lib/engine/engine_networking_files_default_components.js +42 -42
  142. package/lib/engine/engine_networking_instantiate.d.ts +100 -100
  143. package/lib/engine/engine_networking_instantiate.js +345 -345
  144. package/lib/engine/engine_networking_peer.d.ts +15 -15
  145. package/lib/engine/engine_networking_peer.js +132 -132
  146. package/lib/engine/engine_networking_streams.d.ts +123 -123
  147. package/lib/engine/engine_networking_streams.js +645 -645
  148. package/lib/engine/engine_networking_types.d.ts +22 -22
  149. package/lib/engine/engine_networking_types.js +7 -7
  150. package/lib/engine/engine_networking_utils.d.ts +2 -2
  151. package/lib/engine/engine_networking_utils.js +20 -20
  152. package/lib/engine/engine_networking_websocket.d.ts +1 -1
  153. package/lib/engine/engine_networking_websocket.js +2 -2
  154. package/lib/engine/engine_patcher.d.ts +10 -10
  155. package/lib/engine/engine_patcher.js +142 -142
  156. package/lib/engine/engine_physics.d.ts +152 -152
  157. package/lib/engine/engine_physics.js +645 -645
  158. package/lib/engine/engine_physics.types.d.ts +40 -40
  159. package/lib/engine/engine_physics.types.js +33 -33
  160. package/lib/engine/engine_physics_rapier.d.ts +147 -147
  161. package/lib/engine/engine_physics_rapier.js +1433 -1433
  162. package/lib/engine/engine_playerview.d.ts +26 -26
  163. package/lib/engine/engine_playerview.js +64 -64
  164. package/lib/engine/engine_scenelighting.d.ts +71 -71
  165. package/lib/engine/engine_scenelighting.js +226 -226
  166. package/lib/engine/engine_serialization.d.ts +3 -3
  167. package/lib/engine/engine_serialization.js +3 -3
  168. package/lib/engine/engine_serialization_builtin_serializer.d.ts +72 -72
  169. package/lib/engine/engine_serialization_builtin_serializer.js +403 -403
  170. package/lib/engine/engine_serialization_core.d.ts +94 -94
  171. package/lib/engine/engine_serialization_core.js +607 -607
  172. package/lib/engine/engine_serialization_decorator.d.ts +23 -23
  173. package/lib/engine/engine_serialization_decorator.js +66 -66
  174. package/lib/engine/engine_setup.d.ts +1 -1
  175. package/lib/engine/engine_setup.js +2 -2
  176. package/lib/engine/engine_shaders.d.ts +53 -53
  177. package/lib/engine/engine_shaders.js +252 -252
  178. package/lib/engine/engine_shims.d.ts +4 -4
  179. package/lib/engine/engine_shims.js +24 -24
  180. package/lib/engine/engine_test_utils.d.ts +39 -39
  181. package/lib/engine/engine_test_utils.js +83 -83
  182. package/lib/engine/engine_texture.d.ts +28 -28
  183. package/lib/engine/engine_texture.js +64 -64
  184. package/lib/engine/engine_three_utils.d.ts +204 -204
  185. package/lib/engine/engine_three_utils.js +788 -788
  186. package/lib/engine/engine_time.d.ts +51 -51
  187. package/lib/engine/engine_time.js +82 -82
  188. package/lib/engine/engine_time_utils.d.ts +88 -88
  189. package/lib/engine/engine_time_utils.js +215 -215
  190. package/lib/engine/engine_tonemapping.d.ts +6 -6
  191. package/lib/engine/engine_tonemapping.js +197 -197
  192. package/lib/engine/engine_types.d.ts +578 -578
  193. package/lib/engine/engine_types.js +95 -95
  194. package/lib/engine/engine_typestore.d.ts +28 -28
  195. package/lib/engine/engine_typestore.js +55 -55
  196. package/lib/engine/engine_util_decorator.d.ts +13 -13
  197. package/lib/engine/engine_util_decorator.js +116 -116
  198. package/lib/engine/engine_utils.d.ts +248 -248
  199. package/lib/engine/engine_utils.js +1012 -1012
  200. package/lib/engine/engine_utils_format.d.ts +24 -24
  201. package/lib/engine/engine_utils_format.js +239 -239
  202. package/lib/engine/engine_utils_screenshot.d.ts +159 -159
  203. package/lib/engine/engine_utils_screenshot.js +522 -522
  204. package/lib/engine/engine_utils_screenshot.xr.d.ts +5 -5
  205. package/lib/engine/engine_utils_screenshot.xr.js +90 -90
  206. package/lib/engine/engine_xr.d.ts +1 -1
  207. package/lib/engine/engine_xr.js +1 -1
  208. package/lib/engine/export/gltf/Writers.d.ts +19 -19
  209. package/lib/engine/export/gltf/Writers.js +24 -24
  210. package/lib/engine/export/gltf/index.d.ts +11 -11
  211. package/lib/engine/export/gltf/index.js +123 -123
  212. package/lib/engine/export/index.d.ts +2 -2
  213. package/lib/engine/export/index.js +2 -2
  214. package/lib/engine/export/state.d.ts +7 -7
  215. package/lib/engine/export/state.js +17 -17
  216. package/lib/engine/export/utils.d.ts +2 -2
  217. package/lib/engine/export/utils.js +7 -7
  218. package/lib/engine/extensions/EXT_texture_exr.d.ts +8 -8
  219. package/lib/engine/extensions/EXT_texture_exr.js +32 -32
  220. package/lib/engine/extensions/NEEDLE_animator_controller_model.d.ts +122 -122
  221. package/lib/engine/extensions/NEEDLE_animator_controller_model.js +95 -95
  222. package/lib/engine/extensions/NEEDLE_components.d.ts +35 -35
  223. package/lib/engine/extensions/NEEDLE_components.js +220 -220
  224. package/lib/engine/extensions/NEEDLE_gameobject_data.d.ts +10 -10
  225. package/lib/engine/extensions/NEEDLE_gameobject_data.js +57 -57
  226. package/lib/engine/extensions/NEEDLE_lighting_settings.d.ts +37 -37
  227. package/lib/engine/extensions/NEEDLE_lighting_settings.js +157 -157
  228. package/lib/engine/extensions/NEEDLE_lightmaps.d.ts +18 -18
  229. package/lib/engine/extensions/NEEDLE_lightmaps.js +99 -99
  230. package/lib/engine/extensions/NEEDLE_persistent_assets.d.ts +11 -11
  231. package/lib/engine/extensions/NEEDLE_persistent_assets.js +63 -63
  232. package/lib/engine/extensions/NEEDLE_progressive.d.ts +1 -1
  233. package/lib/engine/extensions/NEEDLE_progressive.js +1 -1
  234. package/lib/engine/extensions/NEEDLE_render_objects.d.ts +13 -13
  235. package/lib/engine/extensions/NEEDLE_render_objects.js +159 -159
  236. package/lib/engine/extensions/NEEDLE_techniques_webgl.d.ts +38 -38
  237. package/lib/engine/extensions/NEEDLE_techniques_webgl.js +564 -564
  238. package/lib/engine/extensions/extension_resolver.d.ts +4 -4
  239. package/lib/engine/extensions/extension_resolver.js +1 -1
  240. package/lib/engine/extensions/extension_utils.d.ts +12 -12
  241. package/lib/engine/extensions/extension_utils.js +152 -152
  242. package/lib/engine/extensions/extensions.d.ts +32 -32
  243. package/lib/engine/extensions/extensions.js +107 -107
  244. package/lib/engine/extensions/index.d.ts +6 -6
  245. package/lib/engine/extensions/index.js +6 -6
  246. package/lib/engine/extensions/usage_tracker.d.ts +13 -13
  247. package/lib/engine/extensions/usage_tracker.js +65 -65
  248. package/lib/engine/js-extensions/Camera.d.ts +1 -1
  249. package/lib/engine/js-extensions/Camera.js +39 -39
  250. package/lib/engine/js-extensions/ExtensionUtils.d.ts +9 -9
  251. package/lib/engine/js-extensions/ExtensionUtils.js +67 -67
  252. package/lib/engine/js-extensions/Layers.d.ts +6 -6
  253. package/lib/engine/js-extensions/Layers.js +22 -22
  254. package/lib/engine/js-extensions/Object3D.d.ts +120 -120
  255. package/lib/engine/js-extensions/Object3D.js +136 -136
  256. package/lib/engine/js-extensions/RGBAColor.d.ts +23 -23
  257. package/lib/engine/js-extensions/RGBAColor.js +111 -111
  258. package/lib/engine/js-extensions/Vector.d.ts +3 -3
  259. package/lib/engine/js-extensions/Vector.js +13 -13
  260. package/lib/engine/js-extensions/index.d.ts +5 -5
  261. package/lib/engine/js-extensions/index.js +5 -5
  262. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.d.ts +4 -4
  263. package/lib/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +79 -79
  264. package/lib/engine/shaders/shaderData.d.ts +55 -55
  265. package/lib/engine/shaders/shaderData.js +58 -58
  266. package/lib/engine/tests/test_utils.d.ts +2 -2
  267. package/lib/engine/tests/test_utils.js +53 -53
  268. package/lib/engine/webcomponents/WebXRButtons.d.ts +56 -56
  269. package/lib/engine/webcomponents/WebXRButtons.js +230 -230
  270. package/lib/engine/webcomponents/api.d.ts +5 -5
  271. package/lib/engine/webcomponents/api.js +4 -4
  272. package/lib/engine/webcomponents/buttons.d.ts +51 -51
  273. package/lib/engine/webcomponents/buttons.js +264 -264
  274. package/lib/engine/webcomponents/fonts.d.ts +9 -9
  275. package/lib/engine/webcomponents/fonts.js +32 -32
  276. package/lib/engine/webcomponents/icons.d.ts +9 -9
  277. package/lib/engine/webcomponents/icons.js +52 -52
  278. package/lib/engine/webcomponents/index.d.ts +1 -1
  279. package/lib/engine/webcomponents/index.js +1 -1
  280. package/lib/engine/webcomponents/logo-element.d.ts +10 -10
  281. package/lib/engine/webcomponents/logo-element.js +67 -67
  282. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.d.ts +37 -37
  283. package/lib/engine/webcomponents/needle menu/needle-menu-spatial.js +513 -513
  284. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +155 -155
  285. package/lib/engine/webcomponents/needle menu/needle-menu.js +1029 -1029
  286. package/lib/engine/webcomponents/needle-button.d.ts +34 -34
  287. package/lib/engine/webcomponents/needle-button.js +161 -161
  288. package/lib/engine/webcomponents/needle-engine.ar-overlay.d.ts +21 -21
  289. package/lib/engine/webcomponents/needle-engine.ar-overlay.js +166 -166
  290. package/lib/engine/webcomponents/needle-engine.attributes.d.ts +69 -69
  291. package/lib/engine/webcomponents/needle-engine.attributes.js +1 -1
  292. package/lib/engine/webcomponents/needle-engine.d.ts +116 -116
  293. package/lib/engine/webcomponents/needle-engine.extras.d.ts +6 -6
  294. package/lib/engine/webcomponents/needle-engine.extras.js +13 -13
  295. package/lib/engine/webcomponents/needle-engine.js +821 -821
  296. package/lib/engine/webcomponents/needle-engine.loading.d.ts +44 -44
  297. package/lib/engine/webcomponents/needle-engine.loading.js +341 -341
  298. package/lib/engine/xr/NeedleXRController.d.ts +313 -313
  299. package/lib/engine/xr/NeedleXRController.js +1007 -1007
  300. package/lib/engine/xr/NeedleXRSession.d.ts +340 -340
  301. package/lib/engine/xr/NeedleXRSession.js +1463 -1463
  302. package/lib/engine/xr/NeedleXRSync.d.ts +22 -22
  303. package/lib/engine/xr/NeedleXRSync.js +188 -188
  304. package/lib/engine/xr/SceneTransition.d.ts +18 -18
  305. package/lib/engine/xr/SceneTransition.js +69 -69
  306. package/lib/engine/xr/TempXRContext.d.ts +34 -34
  307. package/lib/engine/xr/TempXRContext.js +187 -187
  308. package/lib/engine/xr/XRRig.d.ts +7 -7
  309. package/lib/engine/xr/XRRig.js +1 -1
  310. package/lib/engine/xr/api.d.ts +6 -6
  311. package/lib/engine/xr/api.js +6 -6
  312. package/lib/engine/xr/events.d.ts +66 -66
  313. package/lib/engine/xr/events.js +93 -93
  314. package/lib/engine/xr/internal.d.ts +12 -12
  315. package/lib/engine/xr/internal.js +25 -25
  316. package/lib/engine/xr/usdz.d.ts +12 -12
  317. package/lib/engine/xr/usdz.js +29 -29
  318. package/lib/engine/xr/utils.d.ts +11 -11
  319. package/lib/engine/xr/utils.js +34 -34
  320. package/lib/engine-components/AlignmentConstraint.d.ts +10 -10
  321. package/lib/engine-components/AlignmentConstraint.js +39 -39
  322. package/lib/engine-components/Animation.d.ts +156 -156
  323. package/lib/engine-components/Animation.js +508 -508
  324. package/lib/engine-components/AnimationCurve.d.ts +40 -40
  325. package/lib/engine-components/AnimationCurve.js +159 -159
  326. package/lib/engine-components/AnimationUtils.d.ts +8 -8
  327. package/lib/engine-components/AnimationUtils.js +27 -27
  328. package/lib/engine-components/AnimationUtilsAutoplay.d.ts +1 -1
  329. package/lib/engine-components/AnimationUtilsAutoplay.js +39 -39
  330. package/lib/engine-components/Animator.d.ts +217 -217
  331. package/lib/engine-components/Animator.js +354 -354
  332. package/lib/engine-components/AnimatorController.d.ts +227 -227
  333. package/lib/engine-components/AnimatorController.js +1152 -1152
  334. package/lib/engine-components/AudioListener.d.ts +33 -33
  335. package/lib/engine-components/AudioListener.js +86 -86
  336. package/lib/engine-components/AudioSource.d.ts +217 -217
  337. package/lib/engine-components/AudioSource.js +635 -635
  338. package/lib/engine-components/AvatarLoader.d.ts +80 -80
  339. package/lib/engine-components/AvatarLoader.js +231 -231
  340. package/lib/engine-components/AxesHelper.d.ts +32 -32
  341. package/lib/engine-components/AxesHelper.js +67 -67
  342. package/lib/engine-components/BasicIKConstraint.d.ts +9 -9
  343. package/lib/engine-components/BasicIKConstraint.js +43 -43
  344. package/lib/engine-components/BoxCollider.d.ts +2 -2
  345. package/lib/engine-components/BoxCollider.js +2 -2
  346. package/lib/engine-components/BoxHelperComponent.d.ts +47 -47
  347. package/lib/engine-components/BoxHelperComponent.js +102 -102
  348. package/lib/engine-components/Camera.d.ts +231 -231
  349. package/lib/engine-components/Camera.js +700 -700
  350. package/lib/engine-components/CameraUtils.d.ts +1 -1
  351. package/lib/engine-components/CameraUtils.js +123 -123
  352. package/lib/engine-components/CharacterController.d.ts +55 -55
  353. package/lib/engine-components/CharacterController.js +236 -236
  354. package/lib/engine-components/Collider.d.ts +188 -188
  355. package/lib/engine-components/Collider.js +369 -369
  356. package/lib/engine-components/Component.d.ts +792 -792
  357. package/lib/engine-components/Component.js +920 -920
  358. package/lib/engine-components/ContactShadows.d.ts +94 -94
  359. package/lib/engine-components/ContactShadows.js +453 -453
  360. package/lib/engine-components/DeleteBox.d.ts +19 -19
  361. package/lib/engine-components/DeleteBox.js +58 -58
  362. package/lib/engine-components/DeviceFlag.d.ts +16 -16
  363. package/lib/engine-components/DeviceFlag.js +47 -47
  364. package/lib/engine-components/DragControls.d.ts +170 -170
  365. package/lib/engine-components/DragControls.js +1421 -1421
  366. package/lib/engine-components/DropListener.d.ts +215 -215
  367. package/lib/engine-components/DropListener.js +642 -642
  368. package/lib/engine-components/Duplicatable.d.ts +35 -35
  369. package/lib/engine-components/Duplicatable.js +202 -202
  370. package/lib/engine-components/EventList.d.ts +54 -54
  371. package/lib/engine-components/EventList.js +232 -232
  372. package/lib/engine-components/EventTrigger.d.ts +33 -33
  373. package/lib/engine-components/EventTrigger.js +75 -75
  374. package/lib/engine-components/EventType.d.ts +22 -22
  375. package/lib/engine-components/EventType.js +23 -23
  376. package/lib/engine-components/Fog.d.ts +22 -22
  377. package/lib/engine-components/Fog.js +61 -61
  378. package/lib/engine-components/Gizmos.d.ts +17 -17
  379. package/lib/engine-components/Gizmos.js +64 -64
  380. package/lib/engine-components/GridHelper.d.ts +20 -20
  381. package/lib/engine-components/GridHelper.js +54 -54
  382. package/lib/engine-components/GroundProjection.d.ts +67 -67
  383. package/lib/engine-components/GroundProjection.js +343 -343
  384. package/lib/engine-components/Interactable.d.ts +12 -12
  385. package/lib/engine-components/Interactable.js +12 -12
  386. package/lib/engine-components/Joints.d.ts +19 -19
  387. package/lib/engine-components/Joints.js +51 -51
  388. package/lib/engine-components/LODGroup.d.ts +35 -35
  389. package/lib/engine-components/LODGroup.js +152 -152
  390. package/lib/engine-components/Light.d.ts +180 -180
  391. package/lib/engine-components/Light.js +535 -535
  392. package/lib/engine-components/LookAtConstraint.d.ts +19 -19
  393. package/lib/engine-components/LookAtConstraint.js +35 -35
  394. package/lib/engine-components/NeedleMenu.d.ts +50 -50
  395. package/lib/engine-components/NeedleMenu.js +92 -92
  396. package/lib/engine-components/NestedGltf.d.ts +25 -25
  397. package/lib/engine-components/NestedGltf.js +88 -88
  398. package/lib/engine-components/Networking.d.ts +54 -54
  399. package/lib/engine-components/Networking.js +112 -112
  400. package/lib/engine-components/OffsetConstraint.d.ts +14 -14
  401. package/lib/engine-components/OffsetConstraint.js +65 -65
  402. package/lib/engine-components/OrbitControls.d.ts +268 -268
  403. package/lib/engine-components/OrbitControls.js +1015 -1015
  404. package/lib/engine-components/PlayerColor.d.ts +19 -19
  405. package/lib/engine-components/PlayerColor.js +94 -94
  406. package/lib/engine-components/ReflectionProbe.d.ts +28 -28
  407. package/lib/engine-components/ReflectionProbe.js +204 -204
  408. package/lib/engine-components/Renderer.d.ts +153 -153
  409. package/lib/engine-components/Renderer.js +834 -834
  410. package/lib/engine-components/RendererInstancing.d.ts +140 -140
  411. package/lib/engine-components/RendererInstancing.js +744 -744
  412. package/lib/engine-components/RendererInstancing.js.map +1 -1
  413. package/lib/engine-components/RendererLightmap.d.ts +24 -24
  414. package/lib/engine-components/RendererLightmap.js +182 -182
  415. package/lib/engine-components/RigidBody.d.ts +155 -155
  416. package/lib/engine-components/RigidBody.js +517 -517
  417. package/lib/engine-components/SceneSwitcher.d.ts +263 -263
  418. package/lib/engine-components/SceneSwitcher.js +971 -971
  419. package/lib/engine-components/ScreenCapture.d.ts +144 -144
  420. package/lib/engine-components/ScreenCapture.js +547 -547
  421. package/lib/engine-components/ShadowCatcher.d.ts +33 -33
  422. package/lib/engine-components/ShadowCatcher.js +166 -166
  423. package/lib/engine-components/Skybox.d.ts +88 -88
  424. package/lib/engine-components/Skybox.js +469 -469
  425. package/lib/engine-components/SmoothFollow.d.ts +34 -34
  426. package/lib/engine-components/SmoothFollow.js +82 -82
  427. package/lib/engine-components/SpatialTrigger.d.ts +102 -102
  428. package/lib/engine-components/SpatialTrigger.js +225 -225
  429. package/lib/engine-components/SpectatorCamera.d.ts +111 -111
  430. package/lib/engine-components/SpectatorCamera.js +715 -715
  431. package/lib/engine-components/SphereCollider.d.ts +2 -2
  432. package/lib/engine-components/SphereCollider.js +2 -2
  433. package/lib/engine-components/SpriteRenderer.d.ts +132 -132
  434. package/lib/engine-components/SpriteRenderer.js +472 -472
  435. package/lib/engine-components/SyncedCamera.d.ts +41 -41
  436. package/lib/engine-components/SyncedCamera.js +199 -199
  437. package/lib/engine-components/SyncedRoom.d.ts +106 -106
  438. package/lib/engine-components/SyncedRoom.js +371 -371
  439. package/lib/engine-components/SyncedTransform.d.ts +94 -94
  440. package/lib/engine-components/SyncedTransform.js +331 -331
  441. package/lib/engine-components/TestRunner.d.ts +16 -16
  442. package/lib/engine-components/TestRunner.js +102 -102
  443. package/lib/engine-components/TransformGizmo.d.ts +75 -75
  444. package/lib/engine-components/TransformGizmo.js +209 -209
  445. package/lib/engine-components/VideoPlayer.d.ts +184 -184
  446. package/lib/engine-components/VideoPlayer.js +978 -978
  447. package/lib/engine-components/Voip.d.ts +67 -67
  448. package/lib/engine-components/Voip.js +360 -360
  449. package/lib/engine-components/api.d.ts +51 -51
  450. package/lib/engine-components/api.js +50 -50
  451. package/lib/engine-components/avatar/AvatarBlink_Simple.d.ts +11 -11
  452. package/lib/engine-components/avatar/AvatarBlink_Simple.js +76 -76
  453. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.d.ts +14 -14
  454. package/lib/engine-components/avatar/AvatarEyeLook_Rotation.js +68 -68
  455. package/lib/engine-components/avatar/Avatar_Brain_LookAt.d.ts +29 -29
  456. package/lib/engine-components/avatar/Avatar_Brain_LookAt.js +121 -121
  457. package/lib/engine-components/avatar/Avatar_MouthShapes.d.ts +15 -15
  458. package/lib/engine-components/avatar/Avatar_MouthShapes.js +79 -79
  459. package/lib/engine-components/avatar/Avatar_MustacheShake.d.ts +9 -9
  460. package/lib/engine-components/avatar/Avatar_MustacheShake.js +29 -29
  461. package/lib/engine-components/codegen/components.d.ts +216 -216
  462. package/lib/engine-components/codegen/components.js +218 -218
  463. package/lib/engine-components/debug/LogStats.d.ts +5 -5
  464. package/lib/engine-components/debug/LogStats.js +18 -18
  465. package/lib/engine-components/export/gltf/GltfExport.d.ts +30 -30
  466. package/lib/engine-components/export/gltf/GltfExport.js +246 -246
  467. package/lib/engine-components/export/gltf/index.d.ts +1 -1
  468. package/lib/engine-components/export/gltf/index.js +1 -1
  469. package/lib/engine-components/export/index.d.ts +1 -1
  470. package/lib/engine-components/export/index.js +1 -1
  471. package/lib/engine-components/export/usdz/Extension.d.ts +22 -22
  472. package/lib/engine-components/export/usdz/Extension.js +1 -1
  473. package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +162 -162
  474. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +1789 -1789
  475. package/lib/engine-components/export/usdz/USDZExporter.d.ts +130 -130
  476. package/lib/engine-components/export/usdz/USDZExporter.js +663 -663
  477. package/lib/engine-components/export/usdz/extensions/Animation.d.ts +106 -106
  478. package/lib/engine-components/export/usdz/extensions/Animation.js +1071 -1071
  479. package/lib/engine-components/export/usdz/extensions/DocumentExtension.d.ts +5 -5
  480. package/lib/engine-components/export/usdz/extensions/DocumentExtension.js +6 -6
  481. package/lib/engine-components/export/usdz/extensions/NodeMaterialConverter.d.ts +10 -10
  482. package/lib/engine-components/export/usdz/extensions/NodeMaterialConverter.js +451 -451
  483. package/lib/engine-components/export/usdz/extensions/USDZText.d.ts +54 -54
  484. package/lib/engine-components/export/usdz/extensions/USDZText.js +203 -203
  485. package/lib/engine-components/export/usdz/extensions/USDZUI.d.ts +8 -8
  486. package/lib/engine-components/export/usdz/extensions/USDZUI.js +158 -158
  487. package/lib/engine-components/export/usdz/extensions/behavior/Actions.d.ts +30 -30
  488. package/lib/engine-components/export/usdz/extensions/behavior/Actions.js +88 -88
  489. package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.d.ts +10 -10
  490. package/lib/engine-components/export/usdz/extensions/behavior/AudioExtension.js +86 -86
  491. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.d.ts +28 -28
  492. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js +290 -290
  493. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +190 -190
  494. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +1060 -1060
  495. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.d.ts +135 -135
  496. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js +548 -548
  497. package/lib/engine-components/export/usdz/extensions/behavior/PhysicsExtension.d.ts +7 -7
  498. package/lib/engine-components/export/usdz/extensions/behavior/PhysicsExtension.js +115 -115
  499. package/lib/engine-components/export/usdz/index.d.ts +3 -3
  500. package/lib/engine-components/export/usdz/index.js +2 -2
  501. package/lib/engine-components/export/usdz/utils/animationutils.d.ts +7 -7
  502. package/lib/engine-components/export/usdz/utils/animationutils.js +163 -163
  503. package/lib/engine-components/export/usdz/utils/quicklook.d.ts +2 -2
  504. package/lib/engine-components/export/usdz/utils/quicklook.js +43 -43
  505. package/lib/engine-components/particlesystem/ParticleSystem.d.ts +177 -177
  506. package/lib/engine-components/particlesystem/ParticleSystem.js +1176 -1176
  507. package/lib/engine-components/particlesystem/ParticleSystemModules.d.ts +526 -526
  508. package/lib/engine-components/particlesystem/ParticleSystemModules.js +1930 -1930
  509. package/lib/engine-components/particlesystem/ParticleSystemSubEmitter.d.ts +25 -25
  510. package/lib/engine-components/particlesystem/ParticleSystemSubEmitter.js +87 -87
  511. package/lib/engine-components/particlesystem/api.d.ts +2 -2
  512. package/lib/engine-components/particlesystem/api.js +2 -2
  513. package/lib/engine-components/postprocessing/Effects/Antialiasing.d.ts +17 -17
  514. package/lib/engine-components/postprocessing/Effects/Antialiasing.js +59 -59
  515. package/lib/engine-components/postprocessing/Effects/BloomEffect.d.ts +46 -46
  516. package/lib/engine-components/postprocessing/Effects/BloomEffect.js +113 -113
  517. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.d.ts +11 -11
  518. package/lib/engine-components/postprocessing/Effects/ChromaticAberration.js +39 -39
  519. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.d.ts +23 -23
  520. package/lib/engine-components/postprocessing/Effects/ColorAdjustments.js +111 -111
  521. package/lib/engine-components/postprocessing/Effects/DepthOfField.d.ts +25 -25
  522. package/lib/engine-components/postprocessing/Effects/DepthOfField.js +104 -104
  523. package/lib/engine-components/postprocessing/Effects/EffectWrapper.d.ts +12 -12
  524. package/lib/engine-components/postprocessing/Effects/EffectWrapper.js +18 -18
  525. package/lib/engine-components/postprocessing/Effects/Pixelation.d.ts +11 -11
  526. package/lib/engine-components/postprocessing/Effects/Pixelation.js +32 -32
  527. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.d.ts +18 -18
  528. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.js +91 -91
  529. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.d.ts +70 -70
  530. package/lib/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.js +176 -176
  531. package/lib/engine-components/postprocessing/Effects/Sharpening.d.ts +18 -18
  532. package/lib/engine-components/postprocessing/Effects/Sharpening.js +127 -127
  533. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.d.ts +17 -17
  534. package/lib/engine-components/postprocessing/Effects/TiltShiftEffect.js +70 -70
  535. package/lib/engine-components/postprocessing/Effects/Tonemapping.d.ts +19 -19
  536. package/lib/engine-components/postprocessing/Effects/Tonemapping.js +94 -94
  537. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.d.ts +13 -13
  538. package/lib/engine-components/postprocessing/Effects/Tonemapping.utils.js +51 -51
  539. package/lib/engine-components/postprocessing/Effects/Vignette.d.ts +15 -15
  540. package/lib/engine-components/postprocessing/Effects/Vignette.js +60 -60
  541. package/lib/engine-components/postprocessing/PostProcessingEffect.d.ts +90 -90
  542. package/lib/engine-components/postprocessing/PostProcessingEffect.js +168 -168
  543. package/lib/engine-components/postprocessing/PostProcessingHandler.d.ts +42 -42
  544. package/lib/engine-components/postprocessing/PostProcessingHandler.js +494 -494
  545. package/lib/engine-components/postprocessing/Volume.d.ts +90 -90
  546. package/lib/engine-components/postprocessing/Volume.js +385 -385
  547. package/lib/engine-components/postprocessing/VolumeParameter.d.ts +26 -26
  548. package/lib/engine-components/postprocessing/VolumeParameter.js +136 -136
  549. package/lib/engine-components/postprocessing/VolumeProfile.d.ts +15 -15
  550. package/lib/engine-components/postprocessing/VolumeProfile.js +60 -60
  551. package/lib/engine-components/postprocessing/index.d.ts +6 -6
  552. package/lib/engine-components/postprocessing/index.js +6 -6
  553. package/lib/engine-components/postprocessing/utils.d.ts +55 -55
  554. package/lib/engine-components/postprocessing/utils.js +119 -119
  555. package/lib/engine-components/timeline/PlayableDirector.d.ts +163 -163
  556. package/lib/engine-components/timeline/PlayableDirector.js +686 -686
  557. package/lib/engine-components/timeline/SignalAsset.d.ts +24 -24
  558. package/lib/engine-components/timeline/SignalAsset.js +130 -130
  559. package/lib/engine-components/timeline/TimelineModels.d.ts +89 -89
  560. package/lib/engine-components/timeline/TimelineModels.js +22 -22
  561. package/lib/engine-components/timeline/TimelineTracks.d.ts +110 -110
  562. package/lib/engine-components/timeline/TimelineTracks.js +879 -879
  563. package/lib/engine-components/timeline/index.d.ts +4 -4
  564. package/lib/engine-components/timeline/index.js +3 -3
  565. package/lib/engine-components/ui/BaseUIComponent.d.ts +48 -48
  566. package/lib/engine-components/ui/BaseUIComponent.js +170 -170
  567. package/lib/engine-components/ui/Button.d.ts +64 -64
  568. package/lib/engine-components/ui/Button.js +315 -315
  569. package/lib/engine-components/ui/Canvas.d.ts +74 -74
  570. package/lib/engine-components/ui/Canvas.js +407 -407
  571. package/lib/engine-components/ui/CanvasGroup.d.ts +19 -19
  572. package/lib/engine-components/ui/CanvasGroup.js +58 -58
  573. package/lib/engine-components/ui/EventSystem.d.ts +125 -125
  574. package/lib/engine-components/ui/EventSystem.js +765 -765
  575. package/lib/engine-components/ui/Graphic.d.ts +55 -55
  576. package/lib/engine-components/ui/Graphic.js +255 -255
  577. package/lib/engine-components/ui/Image.d.ts +35 -35
  578. package/lib/engine-components/ui/Image.js +116 -116
  579. package/lib/engine-components/ui/InputField.d.ts +42 -42
  580. package/lib/engine-components/ui/InputField.js +268 -268
  581. package/lib/engine-components/ui/Interfaces.d.ts +38 -38
  582. package/lib/engine-components/ui/Interfaces.js +12 -12
  583. package/lib/engine-components/ui/Layout.d.ts +84 -84
  584. package/lib/engine-components/ui/Layout.js +330 -330
  585. package/lib/engine-components/ui/Outline.d.ts +7 -7
  586. package/lib/engine-components/ui/Outline.js +20 -20
  587. package/lib/engine-components/ui/PointerEvents.d.ts +115 -115
  588. package/lib/engine-components/ui/PointerEvents.js +145 -145
  589. package/lib/engine-components/ui/RaycastUtils.d.ts +11 -11
  590. package/lib/engine-components/ui/RaycastUtils.js +67 -67
  591. package/lib/engine-components/ui/Raycaster.d.ts +30 -30
  592. package/lib/engine-components/ui/Raycaster.js +95 -95
  593. package/lib/engine-components/ui/RectTransform.d.ts +61 -61
  594. package/lib/engine-components/ui/RectTransform.js +356 -356
  595. package/lib/engine-components/ui/SpatialHtml.d.ts +8 -8
  596. package/lib/engine-components/ui/SpatialHtml.js +79 -79
  597. package/lib/engine-components/ui/Symbols.d.ts +1 -1
  598. package/lib/engine-components/ui/Symbols.js +1 -1
  599. package/lib/engine-components/ui/Text.d.ts +78 -78
  600. package/lib/engine-components/ui/Text.js +539 -539
  601. package/lib/engine-components/ui/Utils.d.ts +24 -24
  602. package/lib/engine-components/ui/Utils.js +90 -90
  603. package/lib/engine-components/ui/index.d.ts +1 -1
  604. package/lib/engine-components/ui/index.js +1 -1
  605. package/lib/engine-components/utils/EnvironmentScene.d.ts +5 -5
  606. package/lib/engine-components/utils/EnvironmentScene.js +205 -205
  607. package/lib/engine-components/utils/LookAt.d.ts +31 -31
  608. package/lib/engine-components/utils/LookAt.js +82 -82
  609. package/lib/engine-components/utils/OpenURL.d.ts +42 -42
  610. package/lib/engine-components/utils/OpenURL.js +119 -119
  611. package/lib/engine-components/webxr/Avatar.d.ts +25 -25
  612. package/lib/engine-components/webxr/Avatar.js +255 -255
  613. package/lib/engine-components/webxr/TeleportTarget.d.ts +7 -7
  614. package/lib/engine-components/webxr/TeleportTarget.js +7 -7
  615. package/lib/engine-components/webxr/WebARCameraBackground.d.ts +30 -30
  616. package/lib/engine-components/webxr/WebARCameraBackground.js +155 -155
  617. package/lib/engine-components/webxr/WebARSessionRoot.d.ts +98 -98
  618. package/lib/engine-components/webxr/WebARSessionRoot.js +770 -770
  619. package/lib/engine-components/webxr/WebXR.d.ts +232 -232
  620. package/lib/engine-components/webxr/WebXR.js +561 -561
  621. package/lib/engine-components/webxr/WebXRAvatar.d.ts +27 -27
  622. package/lib/engine-components/webxr/WebXRAvatar.js +44 -44
  623. package/lib/engine-components/webxr/WebXRImageTracking.d.ts +86 -86
  624. package/lib/engine-components/webxr/WebXRImageTracking.js +471 -471
  625. package/lib/engine-components/webxr/WebXRPlaneTracking.d.ts +92 -92
  626. package/lib/engine-components/webxr/WebXRPlaneTracking.js +500 -500
  627. package/lib/engine-components/webxr/WebXRRig.d.ts +32 -32
  628. package/lib/engine-components/webxr/WebXRRig.js +72 -72
  629. package/lib/engine-components/webxr/XRFlag.d.ts +38 -38
  630. package/lib/engine-components/webxr/XRFlag.js +139 -139
  631. package/lib/engine-components/webxr/controllers/XRControllerFollow.d.ts +47 -47
  632. package/lib/engine-components/webxr/controllers/XRControllerFollow.js +120 -120
  633. package/lib/engine-components/webxr/controllers/XRControllerModel.d.ts +43 -43
  634. package/lib/engine-components/webxr/controllers/XRControllerModel.js +352 -352
  635. package/lib/engine-components/webxr/controllers/XRControllerMovement.d.ts +78 -78
  636. package/lib/engine-components/webxr/controllers/XRControllerMovement.js +506 -506
  637. package/lib/engine-components/webxr/index.d.ts +3 -3
  638. package/lib/engine-components/webxr/index.js +3 -3
  639. package/lib/engine-components/webxr/types.d.ts +3 -3
  640. package/lib/engine-components/webxr/types.js +1 -1
  641. package/lib/engine-components-experimental/Presentation.d.ts +6 -6
  642. package/lib/engine-components-experimental/Presentation.js +9 -9
  643. package/lib/engine-components-experimental/api.d.ts +4 -4
  644. package/lib/engine-components-experimental/api.js +4 -4
  645. package/lib/engine-components-experimental/networking/PlayerSync.d.ts +156 -156
  646. package/lib/engine-components-experimental/networking/PlayerSync.js +377 -377
  647. package/lib/engine-schemes/api.d.ts +12 -12
  648. package/lib/engine-schemes/api.js +12 -12
  649. package/lib/engine-schemes/schemes.d.ts +7 -7
  650. package/lib/engine-schemes/schemes.js +19 -19
  651. package/lib/engine-schemes/synced-camera-model.d.ts +25 -25
  652. package/lib/engine-schemes/synced-camera-model.js +67 -67
  653. package/lib/engine-schemes/synced-transform-model.d.ts +31 -31
  654. package/lib/engine-schemes/synced-transform-model.js +66 -66
  655. package/lib/engine-schemes/transform.d.ts +12 -12
  656. package/lib/engine-schemes/transform.js +39 -39
  657. package/lib/engine-schemes/vec2.d.ts +10 -10
  658. package/lib/engine-schemes/vec2.js +25 -25
  659. package/lib/engine-schemes/vec3.d.ts +11 -11
  660. package/lib/engine-schemes/vec3.js +29 -29
  661. package/lib/engine-schemes/vec4.d.ts +12 -12
  662. package/lib/engine-schemes/vec4.js +33 -33
  663. package/lib/engine-schemes/vr-user-state-buffer.d.ts +37 -37
  664. package/lib/engine-schemes/vr-user-state-buffer.js +110 -110
  665. package/lib/include/three/EXT_mesh_gpu_instancing_exporter.d.ts +6 -6
  666. package/lib/include/three/EXT_mesh_gpu_instancing_exporter.js +45 -45
  667. package/lib/needle-engine.d.ts +7 -7
  668. package/lib/needle-engine.js +64 -64
  669. package/package.json +2 -2
  670. package/plugins/common/buildinfo.js +64 -64
  671. package/plugins/common/cloud.js +1 -1
  672. package/plugins/common/config.cjs +31 -31
  673. package/plugins/common/config.js +35 -35
  674. package/plugins/common/files.js +31 -31
  675. package/plugins/common/generator.js +10 -10
  676. package/plugins/common/license.js +452 -452
  677. package/plugins/common/logger.js +327 -327
  678. package/plugins/common/npm.js +15 -15
  679. package/plugins/common/timers.js +7 -7
  680. package/plugins/common/version.js +37 -37
  681. package/plugins/gltf-packer.mjs +1 -1
  682. package/plugins/next/alias.cjs +39 -39
  683. package/plugins/next/license.cjs +24 -24
  684. package/plugins/next/meshbvhworker.cjs +18 -18
  685. package/plugins/next/next.js +141 -141
  686. package/plugins/types/index.d.ts +2 -2
  687. package/plugins/types/license.d.ts +24 -24
  688. package/plugins/types/needleConfig.d.ts +27 -27
  689. package/plugins/types/next.d.ts +2 -2
  690. package/plugins/types/userconfig.d.ts +124 -124
  691. package/plugins/types/vite.d.ts +13 -13
  692. package/plugins/types/webmanifest.d.ts +32 -32
  693. package/plugins/vite/alias.js +189 -189
  694. package/plugins/vite/asap.js +251 -251
  695. package/plugins/vite/build-pipeline.js +371 -371
  696. package/plugins/vite/build.js +19 -19
  697. package/plugins/vite/buildinfo.js +41 -41
  698. package/plugins/vite/config.js +106 -106
  699. package/plugins/vite/copyfiles.js +138 -138
  700. package/plugins/vite/defines.js +70 -70
  701. package/plugins/vite/dependencies.js +232 -232
  702. package/plugins/vite/dependency-watcher.js +237 -237
  703. package/plugins/vite/drop-client.js +76 -76
  704. package/plugins/vite/drop.js +87 -87
  705. package/plugins/vite/editor-connection.js +124 -124
  706. package/plugins/vite/facebook-instant-games.js +102 -102
  707. package/plugins/vite/gzip.js +5 -5
  708. package/plugins/vite/imports-logger.js +143 -143
  709. package/plugins/vite/index.js +147 -147
  710. package/plugins/vite/license.js +56 -56
  711. package/plugins/vite/local-files.js +440 -440
  712. package/plugins/vite/logger.client.js +272 -272
  713. package/plugins/vite/logger.js +100 -100
  714. package/plugins/vite/materialx.js +31 -31
  715. package/plugins/vite/meta.js +163 -163
  716. package/plugins/vite/npm.js +7 -7
  717. package/plugins/vite/peer.js +29 -29
  718. package/plugins/vite/poster-client.js +73 -73
  719. package/plugins/vite/poster.js +79 -79
  720. package/plugins/vite/pwa.js +604 -604
  721. package/plugins/vite/reload-client.js +15 -15
  722. package/plugins/vite/reload.js +351 -351
  723. package/plugins/vite/server.js +66 -66
  724. package/plugins/vite/transform-codegen.js +55 -55
  725. package/plugins/vite/transform.js +32 -32
  726. package/plugins/vite/vite-4.4-hack.js +31 -31
  727. package/src/asap/needle-asap.ts +111 -111
  728. package/src/asap/sessiongranted.ts +75 -75
  729. package/src/asap/utils.ts +4 -4
  730. package/src/engine/analytics/index.ts +10 -10
  731. package/src/engine/analytics/lcp.ts +35 -35
  732. package/src/engine/api.ts +82 -82
  733. package/src/engine/assets/index.ts +59 -59
  734. package/src/engine/assets/static.js +5 -5
  735. package/src/engine/codegen/register_types.ts +300 -300
  736. package/src/engine/debug/debug.ts +51 -51
  737. package/src/engine/debug/debug_console.ts +333 -333
  738. package/src/engine/debug/debug_overlay.ts +332 -332
  739. package/src/engine/debug/debug_spatial_console.ts +429 -429
  740. package/src/engine/debug/index.ts +1 -1
  741. package/src/engine/engine_addressables.ts +671 -671
  742. package/src/engine/engine_animation.ts +145 -145
  743. package/src/engine/engine_application.ts +113 -113
  744. package/src/engine/engine_assetdatabase.ts +389 -389
  745. package/src/engine/engine_audio.ts +24 -24
  746. package/src/engine/engine_camera.ts +39 -39
  747. package/src/engine/engine_components.ts +366 -366
  748. package/src/engine/engine_components_internal.ts +40 -40
  749. package/src/engine/engine_constants.ts +52 -52
  750. package/src/engine/engine_context.ts +1824 -1824
  751. package/src/engine/engine_context_registry.ts +129 -129
  752. package/src/engine/engine_coroutine.ts +54 -54
  753. package/src/engine/engine_create_objects.ts +411 -411
  754. package/src/engine/engine_default_parameters.ts +3 -3
  755. package/src/engine/engine_editor-sync.ts +28 -28
  756. package/src/engine/engine_fileloader.js +9 -9
  757. package/src/engine/engine_gameobject.ts +712 -712
  758. package/src/engine/engine_generic_utils.js +13 -13
  759. package/src/engine/engine_gizmos.ts +577 -577
  760. package/src/engine/engine_gltf.ts +29 -29
  761. package/src/engine/engine_gltf_builtin_components.ts +403 -403
  762. package/src/engine/engine_hot_reload.ts +210 -210
  763. package/src/engine/engine_input.ts +1500 -1500
  764. package/src/engine/engine_input_utils.ts +23 -23
  765. package/src/engine/engine_instancing.ts +45 -45
  766. package/src/engine/engine_license.ts +386 -386
  767. package/src/engine/engine_lifecycle_api.ts +113 -113
  768. package/src/engine/engine_lifecycle_functions_internal.ts +193 -193
  769. package/src/engine/engine_lightdata.ts +125 -125
  770. package/src/engine/engine_loaders.callbacks.ts +136 -136
  771. package/src/engine/engine_loaders.gltf.ts +82 -82
  772. package/src/engine/engine_loaders.ts +378 -378
  773. package/src/engine/engine_lods.ts +186 -186
  774. package/src/engine/engine_mainloop_utils.ts +472 -472
  775. package/src/engine/engine_math.ts +282 -282
  776. package/src/engine/engine_modules.ts +83 -83
  777. package/src/engine/engine_networking.ts +862 -862
  778. package/src/engine/engine_networking_auto.ts +352 -352
  779. package/src/engine/engine_networking_blob.ts +275 -275
  780. package/src/engine/engine_networking_files.ts +217 -217
  781. package/src/engine/engine_networking_files_default_components.ts +58 -58
  782. package/src/engine/engine_networking_instantiate.ts +419 -419
  783. package/src/engine/engine_networking_peer.ts +159 -159
  784. package/src/engine/engine_networking_streams.ts +713 -713
  785. package/src/engine/engine_networking_types.ts +24 -24
  786. package/src/engine/engine_networking_utils.ts +23 -23
  787. package/src/engine/engine_networking_websocket.ts +2 -2
  788. package/src/engine/engine_patcher.ts +199 -199
  789. package/src/engine/engine_physics.ts +783 -783
  790. package/src/engine/engine_physics.types.ts +46 -46
  791. package/src/engine/engine_physics_rapier.ts +1577 -1577
  792. package/src/engine/engine_playerview.ts +80 -80
  793. package/src/engine/engine_scenelighting.ts +294 -294
  794. package/src/engine/engine_serialization.ts +2 -2
  795. package/src/engine/engine_serialization_builtin_serializer.ts +473 -473
  796. package/src/engine/engine_serialization_core.ts +720 -720
  797. package/src/engine/engine_serialization_decorator.ts +80 -80
  798. package/src/engine/engine_setup.ts +1 -1
  799. package/src/engine/engine_shaders.ts +267 -267
  800. package/src/engine/engine_shims.ts +32 -32
  801. package/src/engine/engine_test_utils.ts +109 -109
  802. package/src/engine/engine_texture.ts +82 -82
  803. package/src/engine/engine_three_utils.ts +928 -928
  804. package/src/engine/engine_time.ts +94 -94
  805. package/src/engine/engine_time_utils.ts +237 -237
  806. package/src/engine/engine_tonemapping.ts +208 -208
  807. package/src/engine/engine_types.ts +730 -730
  808. package/src/engine/engine_typestore.ts +63 -63
  809. package/src/engine/engine_util_decorator.ts +136 -136
  810. package/src/engine/engine_utils.ts +1115 -1115
  811. package/src/engine/engine_utils_format.ts +273 -273
  812. package/src/engine/engine_utils_screenshot.ts +708 -708
  813. package/src/engine/engine_utils_screenshot.xr.ts +103 -103
  814. package/src/engine/export/gltf/Writers.ts +34 -34
  815. package/src/engine/export/gltf/index.ts +158 -158
  816. package/src/engine/export/index.ts +2 -2
  817. package/src/engine/export/state.ts +19 -19
  818. package/src/engine/export/utils.ts +9 -9
  819. package/src/engine/extensions/EXT_texture_exr.ts +50 -50
  820. package/src/engine/extensions/NEEDLE_animator_controller_model.ts +195 -195
  821. package/src/engine/extensions/NEEDLE_components.ts +268 -268
  822. package/src/engine/extensions/NEEDLE_gameobject_data.ts +81 -81
  823. package/src/engine/extensions/NEEDLE_lighting_settings.ts +185 -185
  824. package/src/engine/extensions/NEEDLE_lightmaps.ts +119 -119
  825. package/src/engine/extensions/NEEDLE_persistent_assets.ts +76 -76
  826. package/src/engine/extensions/NEEDLE_render_objects.ts +209 -209
  827. package/src/engine/extensions/NEEDLE_techniques_webgl.ts +640 -640
  828. package/src/engine/extensions/extension_resolver.ts +4 -4
  829. package/src/engine/extensions/extension_utils.ts +166 -166
  830. package/src/engine/extensions/extensions.ts +140 -140
  831. package/src/engine/extensions/index.ts +5 -5
  832. package/src/engine/extensions/usage_tracker.ts +100 -100
  833. package/src/engine/js-extensions/Camera.ts +37 -37
  834. package/src/engine/js-extensions/ExtensionUtils.ts +85 -85
  835. package/src/engine/js-extensions/Layers.ts +23 -23
  836. package/src/engine/js-extensions/Object3D.ts +296 -296
  837. package/src/engine/js-extensions/RGBAColor.ts +126 -126
  838. package/src/engine/js-extensions/Vector.ts +18 -18
  839. package/src/engine/js-extensions/index.ts +4 -4
  840. package/src/engine/physics/workers/mesh-bvh/GenerateMeshBVHWorker.js +125 -125
  841. package/src/engine/shaders/shaderData.ts +67 -67
  842. package/src/engine/tests/test_utils.ts +63 -63
  843. package/src/engine/webcomponents/WebXRButtons.ts +260 -260
  844. package/src/engine/webcomponents/api.ts +6 -6
  845. package/src/engine/webcomponents/buttons.ts +292 -292
  846. package/src/engine/webcomponents/fonts.ts +41 -41
  847. package/src/engine/webcomponents/icons.ts +57 -57
  848. package/src/engine/webcomponents/index.ts +1 -1
  849. package/src/engine/webcomponents/logo-element.ts +78 -78
  850. package/src/engine/webcomponents/needle menu/needle-menu-spatial.ts +573 -573
  851. package/src/engine/webcomponents/needle menu/needle-menu.ts +1118 -1118
  852. package/src/engine/webcomponents/needle-button.ts +181 -181
  853. package/src/engine/webcomponents/needle-engine.ar-overlay.ts +186 -186
  854. package/src/engine/webcomponents/needle-engine.attributes.ts +82 -82
  855. package/src/engine/webcomponents/needle-engine.extras.ts +16 -16
  856. package/src/engine/webcomponents/needle-engine.loading.ts +373 -373
  857. package/src/engine/webcomponents/needle-engine.ts +860 -860
  858. package/src/engine/xr/NeedleXRController.ts +1125 -1125
  859. package/src/engine/xr/NeedleXRSession.ts +1624 -1624
  860. package/src/engine/xr/NeedleXRSync.ts +220 -220
  861. package/src/engine/xr/SceneTransition.ts +78 -78
  862. package/src/engine/xr/TempXRContext.ts +216 -216
  863. package/src/engine/xr/XRRig.ts +9 -9
  864. package/src/engine/xr/api.ts +5 -5
  865. package/src/engine/xr/events.ts +102 -102
  866. package/src/engine/xr/internal.ts +34 -34
  867. package/src/engine/xr/usdz.ts +30 -30
  868. package/src/engine/xr/utils.ts +39 -39
  869. package/src/engine-components/AlignmentConstraint.ts +36 -36
  870. package/src/engine-components/Animation.ts +557 -557
  871. package/src/engine-components/AnimationCurve.ts +150 -150
  872. package/src/engine-components/AnimationUtils.ts +28 -28
  873. package/src/engine-components/AnimationUtilsAutoplay.ts +43 -43
  874. package/src/engine-components/Animator.ts +397 -397
  875. package/src/engine-components/AnimatorController.ts +1293 -1293
  876. package/src/engine-components/AudioListener.ts +92 -92
  877. package/src/engine-components/AudioSource.ts +644 -644
  878. package/src/engine-components/AvatarLoader.ts +263 -263
  879. package/src/engine-components/AxesHelper.ts +59 -59
  880. package/src/engine-components/BasicIKConstraint.ts +54 -54
  881. package/src/engine-components/BoxCollider.ts +1 -1
  882. package/src/engine-components/BoxHelperComponent.ts +114 -114
  883. package/src/engine-components/Camera.ts +719 -719
  884. package/src/engine-components/CameraUtils.ts +138 -138
  885. package/src/engine-components/CharacterController.ts +253 -253
  886. package/src/engine-components/Collider.ts +374 -374
  887. package/src/engine-components/Component.ts +1297 -1297
  888. package/src/engine-components/ContactShadows.ts +506 -506
  889. package/src/engine-components/DeleteBox.ts +62 -62
  890. package/src/engine-components/DeviceFlag.ts +46 -46
  891. package/src/engine-components/DragControls.ts +1623 -1623
  892. package/src/engine-components/DropListener.ts +713 -713
  893. package/src/engine-components/Duplicatable.ts +198 -198
  894. package/src/engine-components/EventList.ts +266 -266
  895. package/src/engine-components/EventTrigger.ts +74 -74
  896. package/src/engine-components/EventType.ts +22 -22
  897. package/src/engine-components/Fog.ts +60 -60
  898. package/src/engine-components/Gizmos.ts +56 -56
  899. package/src/engine-components/GridHelper.ts +48 -48
  900. package/src/engine-components/GroundProjection.ts +356 -356
  901. package/src/engine-components/Interactable.ts +14 -14
  902. package/src/engine-components/Joints.ts +52 -52
  903. package/src/engine-components/LODGroup.ts +153 -153
  904. package/src/engine-components/Light.ts +558 -558
  905. package/src/engine-components/LookAtConstraint.ts +25 -25
  906. package/src/engine-components/NeedleMenu.ts +84 -84
  907. package/src/engine-components/NestedGltf.ts +86 -86
  908. package/src/engine-components/Networking.ts +114 -114
  909. package/src/engine-components/OffsetConstraint.ts +60 -60
  910. package/src/engine-components/OrbitControls.ts +1074 -1074
  911. package/src/engine-components/PlayerColor.ts +103 -103
  912. package/src/engine-components/ReflectionProbe.ts +220 -220
  913. package/src/engine-components/Renderer.ts +903 -903
  914. package/src/engine-components/RendererInstancing.ts +855 -855
  915. package/src/engine-components/RendererLightmap.ts +198 -198
  916. package/src/engine-components/RigidBody.ts +526 -526
  917. package/src/engine-components/SceneSwitcher.ts +1030 -1030
  918. package/src/engine-components/ScreenCapture.ts +592 -592
  919. package/src/engine-components/ShadowCatcher.ts +172 -172
  920. package/src/engine-components/Skybox.ts +475 -475
  921. package/src/engine-components/SmoothFollow.ts +76 -76
  922. package/src/engine-components/SpatialTrigger.ts +229 -229
  923. package/src/engine-components/SpectatorCamera.ts +787 -787
  924. package/src/engine-components/SphereCollider.ts +1 -1
  925. package/src/engine-components/SpriteRenderer.ts +468 -468
  926. package/src/engine-components/SyncedCamera.ts +220 -220
  927. package/src/engine-components/SyncedRoom.ts +380 -380
  928. package/src/engine-components/SyncedTransform.ts +383 -383
  929. package/src/engine-components/TestRunner.ts +118 -118
  930. package/src/engine-components/TransformGizmo.ts +219 -219
  931. package/src/engine-components/VideoPlayer.ts +1025 -1025
  932. package/src/engine-components/Voip.ts +363 -363
  933. package/src/engine-components/api.ts +60 -60
  934. package/src/engine-components/avatar/AvatarBlink_Simple.ts +69 -69
  935. package/src/engine-components/avatar/AvatarEyeLook_Rotation.ts +63 -63
  936. package/src/engine-components/avatar/Avatar_Brain_LookAt.ts +139 -139
  937. package/src/engine-components/avatar/Avatar_MouthShapes.ts +83 -83
  938. package/src/engine-components/avatar/Avatar_MustacheShake.ts +31 -31
  939. package/src/engine-components/codegen/components.ts +217 -217
  940. package/src/engine-components/debug/LogStats.ts +21 -21
  941. package/src/engine-components/export/gltf/GltfExport.ts +265 -265
  942. package/src/engine-components/export/usdz/Extension.ts +24 -24
  943. package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +2426 -2426
  944. package/src/engine-components/export/usdz/USDZExporter.ts +705 -705
  945. package/src/engine-components/export/usdz/extensions/Animation.ts +1204 -1204
  946. package/src/engine-components/export/usdz/extensions/DocumentExtension.ts +9 -9
  947. package/src/engine-components/export/usdz/extensions/NodeMaterialConverter.ts +532 -532
  948. package/src/engine-components/export/usdz/extensions/USDZText.ts +240 -240
  949. package/src/engine-components/export/usdz/extensions/USDZUI.ts +189 -189
  950. package/src/engine-components/export/usdz/extensions/behavior/Actions.ts +99 -99
  951. package/src/engine-components/export/usdz/extensions/behavior/AudioExtension.ts +102 -102
  952. package/src/engine-components/export/usdz/extensions/behavior/Behaviour.ts +320 -320
  953. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +1225 -1225
  954. package/src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +646 -646
  955. package/src/engine-components/export/usdz/extensions/behavior/PhysicsExtension.ts +132 -132
  956. package/src/engine-components/export/usdz/index.ts +2 -2
  957. package/src/engine-components/export/usdz/utils/animationutils.ts +191 -191
  958. package/src/engine-components/export/usdz/utils/quicklook.ts +50 -50
  959. package/src/engine-components/particlesystem/ParticleSystem.ts +1287 -1287
  960. package/src/engine-components/particlesystem/ParticleSystemModules.ts +1765 -1765
  961. package/src/engine-components/particlesystem/ParticleSystemSubEmitter.ts +111 -111
  962. package/src/engine-components/particlesystem/api.ts +1 -1
  963. package/src/engine-components/postprocessing/Effects/Antialiasing.ts +64 -64
  964. package/src/engine-components/postprocessing/Effects/BloomEffect.ts +116 -116
  965. package/src/engine-components/postprocessing/Effects/ChromaticAberration.ts +37 -37
  966. package/src/engine-components/postprocessing/Effects/ColorAdjustments.ts +106 -106
  967. package/src/engine-components/postprocessing/Effects/DepthOfField.ts +103 -103
  968. package/src/engine-components/postprocessing/Effects/EffectWrapper.ts +25 -25
  969. package/src/engine-components/postprocessing/Effects/Pixelation.ts +32 -32
  970. package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusion.ts +90 -90
  971. package/src/engine-components/postprocessing/Effects/ScreenspaceAmbientOcclusionN8.ts +192 -192
  972. package/src/engine-components/postprocessing/Effects/Sharpening.ts +143 -143
  973. package/src/engine-components/postprocessing/Effects/TiltShiftEffect.ts +61 -61
  974. package/src/engine-components/postprocessing/Effects/Tonemapping.ts +103 -103
  975. package/src/engine-components/postprocessing/Effects/Tonemapping.utils.ts +60 -60
  976. package/src/engine-components/postprocessing/Effects/Vignette.ts +59 -59
  977. package/src/engine-components/postprocessing/PostProcessingEffect.ts +192 -192
  978. package/src/engine-components/postprocessing/PostProcessingHandler.ts +572 -572
  979. package/src/engine-components/postprocessing/Volume.ts +426 -426
  980. package/src/engine-components/postprocessing/VolumeParameter.ts +158 -158
  981. package/src/engine-components/postprocessing/VolumeProfile.ts +61 -61
  982. package/src/engine-components/postprocessing/index.ts +5 -5
  983. package/src/engine-components/postprocessing/utils.ts +154 -154
  984. package/src/engine-components/timeline/PlayableDirector.ts +722 -722
  985. package/src/engine-components/timeline/SignalAsset.ts +144 -144
  986. package/src/engine-components/timeline/TimelineModels.ts +92 -92
  987. package/src/engine-components/timeline/TimelineTracks.ts +967 -967
  988. package/src/engine-components/timeline/index.ts +3 -3
  989. package/src/engine-components/ui/BaseUIComponent.ts +203 -203
  990. package/src/engine-components/ui/Button.ts +307 -307
  991. package/src/engine-components/ui/Canvas.ts +419 -419
  992. package/src/engine-components/ui/CanvasGroup.ts +54 -54
  993. package/src/engine-components/ui/EventSystem.ts +854 -854
  994. package/src/engine-components/ui/Graphic.ts +275 -275
  995. package/src/engine-components/ui/Image.ts +112 -112
  996. package/src/engine-components/ui/InputField.ts +321 -321
  997. package/src/engine-components/ui/Interfaces.ts +57 -57
  998. package/src/engine-components/ui/Layout.ts +334 -334
  999. package/src/engine-components/ui/Outline.ts +13 -13
  1000. package/src/engine-components/ui/PointerEvents.ts +206 -206
  1001. package/src/engine-components/ui/RaycastUtils.ts +69 -69
  1002. package/src/engine-components/ui/Raycaster.ts +102 -102
  1003. package/src/engine-components/ui/RectTransform.ts +375 -375
  1004. package/src/engine-components/ui/SpatialHtml.ts +79 -79
  1005. package/src/engine-components/ui/Symbols.ts +1 -1
  1006. package/src/engine-components/ui/Text.ts +578 -578
  1007. package/src/engine-components/ui/Utils.ts +113 -113
  1008. package/src/engine-components/utils/EnvironmentScene.ts +245 -245
  1009. package/src/engine-components/utils/LookAt.ts +88 -88
  1010. package/src/engine-components/utils/OpenURL.ts +114 -114
  1011. package/src/engine-components/webxr/Avatar.ts +265 -265
  1012. package/src/engine-components/webxr/TeleportTarget.ts +9 -9
  1013. package/src/engine-components/webxr/WebARCameraBackground.ts +175 -175
  1014. package/src/engine-components/webxr/WebARSessionRoot.ts +880 -880
  1015. package/src/engine-components/webxr/WebXR.ts +585 -585
  1016. package/src/engine-components/webxr/WebXRAvatar.ts +66 -66
  1017. package/src/engine-components/webxr/WebXRImageTracking.ts +519 -519
  1018. package/src/engine-components/webxr/WebXRPlaneTracking.ts +570 -570
  1019. package/src/engine-components/webxr/WebXRRig.ts +77 -77
  1020. package/src/engine-components/webxr/XRFlag.ts +147 -147
  1021. package/src/engine-components/webxr/controllers/XRControllerFollow.ts +118 -118
  1022. package/src/engine-components/webxr/controllers/XRControllerModel.ts +373 -373
  1023. package/src/engine-components/webxr/controllers/XRControllerMovement.ts +550 -550
  1024. package/src/engine-components/webxr/index.ts +2 -2
  1025. package/src/engine-components/webxr/types.ts +3 -3
  1026. package/src/engine-components-experimental/Presentation.ts +12 -12
  1027. package/src/engine-components-experimental/api.ts +4 -4
  1028. package/src/engine-components-experimental/networking/PlayerSync.ts +401 -401
  1029. package/src/engine-schemes/COMPILE_SCHEMES.bat +3 -3
  1030. package/src/engine-schemes/COMPILE_TS.bat +11 -11
  1031. package/src/engine-schemes/README.md +1 -1
  1032. package/src/engine-schemes/api.ts +12 -12
  1033. package/src/engine-schemes/dist/api.js +17 -0
  1034. package/src/engine-schemes/dist/api.js.meta +7 -0
  1035. package/src/engine-schemes/dist/schemes.js +25 -0
  1036. package/src/engine-schemes/dist/schemes.js.meta +7 -0
  1037. package/src/engine-schemes/dist/synced-camera-model.js +74 -0
  1038. package/src/engine-schemes/dist/synced-camera-model.js.meta +7 -0
  1039. package/src/engine-schemes/dist/synced-transform-model.js +73 -0
  1040. package/src/engine-schemes/dist/synced-transform-model.js.meta +7 -0
  1041. package/src/engine-schemes/dist/transform.js +46 -0
  1042. package/src/engine-schemes/dist/transform.js.meta +7 -0
  1043. package/src/engine-schemes/dist/vec2.js +32 -0
  1044. package/src/engine-schemes/dist/vec2.js.meta +7 -0
  1045. package/src/engine-schemes/dist/vec3.js +36 -0
  1046. package/src/engine-schemes/dist/vec3.js.meta +7 -0
  1047. package/src/engine-schemes/dist/vec4.js +40 -0
  1048. package/src/engine-schemes/dist/vec4.js.meta +7 -0
  1049. package/src/engine-schemes/dist/vr-user-state-buffer.js +110 -0
  1050. package/src/engine-schemes/dist/vr-user-state-buffer.js.meta +7 -0
  1051. package/src/engine-schemes/schemes.ts +28 -28
  1052. package/src/engine-schemes/synced-camera-model.ts +92 -92
  1053. package/src/engine-schemes/synced-transform-model.ts +90 -90
  1054. package/src/engine-schemes/syncedCamera.fbs +10 -10
  1055. package/src/engine-schemes/transform.ts +50 -50
  1056. package/src/engine-schemes/transforms.fbs +25 -25
  1057. package/src/engine-schemes/vec.fbs +19 -19
  1058. package/src/engine-schemes/vec2.ts +33 -33
  1059. package/src/engine-schemes/vec3.ts +38 -38
  1060. package/src/engine-schemes/vec4.ts +43 -43
  1061. package/src/engine-schemes/vr-user-state-buffer.ts +145 -145
  1062. package/src/engine-schemes/vrUserStateBuffer.fbs +17 -17
  1063. package/src/include/draco/draco_decoder.js +34 -34
  1064. package/src/include/ktx2/basis_transcoder.js +21 -21
  1065. package/src/include/needle/arial-msdf.json +1471 -1471
  1066. package/src/include/three/DragControls.js +231 -231
  1067. package/src/include/three/EXT_mesh_gpu_instancing_exporter.js +66 -66
  1068. package/src/needle-engine.ts +70 -70
  1069. package/dist/generateMeshBVH.worker-BaNp_Xtp.js +0 -25
  1070. package/dist/gltf-progressive-60Qk5ebF.min.js +0 -8
  1071. package/dist/gltf-progressive-DM5ZiecW.js +0 -1060
  1072. package/dist/gltf-progressive-wxtaVmio.umd.cjs +0 -8
@@ -1,1931 +1,1931 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { createNoise4D } from 'simplex-noise';
8
- import { Euler, Matrix4, Quaternion, Triangle, Vector2, Vector3 } from "three";
9
- import { isDevEnvironment } from '../../engine/debug/index.js';
10
- import { Gizmos } from "../../engine/engine_gizmos.js";
11
- import { Mathf } from "../../engine/engine_math.js";
12
- import { serializable } from "../../engine/engine_serialization.js";
13
- import { getTempVector, getWorldQuaternion } from '../../engine/engine_three_utils.js';
14
- import { getParam } from "../../engine/engine_utils.js";
15
- import { RGBAColor } from "../../engine/js-extensions/index.js";
16
- import { AnimationCurve } from "../AnimationCurve.js";
17
- import { MeshRenderer } from '../Renderer.js';
18
- const debug = getParam("debugparticles");
19
- export var ParticleSystemRenderMode;
20
- (function (ParticleSystemRenderMode) {
21
- ParticleSystemRenderMode[ParticleSystemRenderMode["Billboard"] = 0] = "Billboard";
22
- ParticleSystemRenderMode[ParticleSystemRenderMode["Stretch"] = 1] = "Stretch";
23
- ParticleSystemRenderMode[ParticleSystemRenderMode["HorizontalBillboard"] = 2] = "HorizontalBillboard";
24
- ParticleSystemRenderMode[ParticleSystemRenderMode["VerticalBillboard"] = 3] = "VerticalBillboard";
25
- ParticleSystemRenderMode[ParticleSystemRenderMode["Mesh"] = 4] = "Mesh";
26
- // None = 5,
27
- })(ParticleSystemRenderMode || (ParticleSystemRenderMode = {}));
28
- export class Gradient {
29
- alphaKeys = [];
30
- colorKeys = [];
31
- get duration() {
32
- return 1;
33
- }
34
- evaluate(time, target) {
35
- // target.r = this.colorKeys[0].color.r;
36
- // target.g = this.colorKeys[0].color.g;
37
- // target.b = this.colorKeys[0].color.b;
38
- // target.alpha = this.alphaKeys[0].alpha;
39
- // return;
40
- let closestAlpha = undefined;
41
- let closestAlphaIndex = 0;
42
- let closestColor = null;
43
- let closestColorIndex = 0;
44
- for (let i = 0; i < this.alphaKeys.length; i++) {
45
- const key = this.alphaKeys[i];
46
- if (key.time < time || !closestAlpha) {
47
- closestAlpha = key;
48
- closestAlphaIndex = i;
49
- }
50
- }
51
- for (let i = 0; i < this.colorKeys.length; i++) {
52
- const key = this.colorKeys[i];
53
- if (key.time < time || !closestColor) {
54
- closestColor = key;
55
- closestColorIndex = i;
56
- }
57
- }
58
- if (closestColor) {
59
- const hasNextColor = closestColorIndex + 1 < this.colorKeys.length;
60
- if (hasNextColor) {
61
- const nextColor = this.colorKeys[closestColorIndex + 1];
62
- const t = Mathf.remap(time, closestColor.time, nextColor.time, 0, 1);
63
- target.r = Mathf.lerp(closestColor.color.r, nextColor.color.r, t);
64
- target.g = Mathf.lerp(closestColor.color.g, nextColor.color.g, t);
65
- target.b = Mathf.lerp(closestColor.color.b, nextColor.color.b, t);
66
- }
67
- else {
68
- target.r = closestColor.color.r;
69
- target.g = closestColor.color.g;
70
- target.b = closestColor.color.b;
71
- }
72
- }
73
- if (closestAlpha) {
74
- const hasNextAlpha = closestAlphaIndex + 1 < this.alphaKeys.length;
75
- if (hasNextAlpha) {
76
- const nextAlpha = this.alphaKeys[closestAlphaIndex + 1];
77
- const t = Mathf.remap(time, closestAlpha.time, nextAlpha.time, 0, 1);
78
- target.alpha = Mathf.lerp(closestAlpha.alpha, nextAlpha.alpha, t);
79
- }
80
- else {
81
- target.alpha = closestAlpha.alpha;
82
- }
83
- }
84
- return target;
85
- }
86
- }
87
- __decorate([
88
- serializable()
89
- ], Gradient.prototype, "alphaKeys", void 0);
90
- __decorate([
91
- serializable()
92
- ], Gradient.prototype, "colorKeys", void 0);
93
- export var ParticleSystemCurveMode;
94
- (function (ParticleSystemCurveMode) {
95
- ParticleSystemCurveMode[ParticleSystemCurveMode["Constant"] = 0] = "Constant";
96
- ParticleSystemCurveMode[ParticleSystemCurveMode["Curve"] = 1] = "Curve";
97
- ParticleSystemCurveMode[ParticleSystemCurveMode["TwoCurves"] = 2] = "TwoCurves";
98
- ParticleSystemCurveMode[ParticleSystemCurveMode["TwoConstants"] = 3] = "TwoConstants";
99
- })(ParticleSystemCurveMode || (ParticleSystemCurveMode = {}));
100
- export var ParticleSystemGradientMode;
101
- (function (ParticleSystemGradientMode) {
102
- ParticleSystemGradientMode[ParticleSystemGradientMode["Color"] = 0] = "Color";
103
- ParticleSystemGradientMode[ParticleSystemGradientMode["Gradient"] = 1] = "Gradient";
104
- ParticleSystemGradientMode[ParticleSystemGradientMode["TwoColors"] = 2] = "TwoColors";
105
- ParticleSystemGradientMode[ParticleSystemGradientMode["TwoGradients"] = 3] = "TwoGradients";
106
- ParticleSystemGradientMode[ParticleSystemGradientMode["RandomColor"] = 4] = "RandomColor";
107
- })(ParticleSystemGradientMode || (ParticleSystemGradientMode = {}));
108
- export var ParticleSystemSimulationSpace;
109
- (function (ParticleSystemSimulationSpace) {
110
- ParticleSystemSimulationSpace[ParticleSystemSimulationSpace["Local"] = 0] = "Local";
111
- ParticleSystemSimulationSpace[ParticleSystemSimulationSpace["World"] = 1] = "World";
112
- ParticleSystemSimulationSpace[ParticleSystemSimulationSpace["Custom"] = 2] = "Custom";
113
- })(ParticleSystemSimulationSpace || (ParticleSystemSimulationSpace = {}));
114
- export var ParticleSystemShapeType;
115
- (function (ParticleSystemShapeType) {
116
- ParticleSystemShapeType[ParticleSystemShapeType["Sphere"] = 0] = "Sphere";
117
- ParticleSystemShapeType[ParticleSystemShapeType["SphereShell"] = 1] = "SphereShell";
118
- ParticleSystemShapeType[ParticleSystemShapeType["Hemisphere"] = 2] = "Hemisphere";
119
- ParticleSystemShapeType[ParticleSystemShapeType["HemisphereShell"] = 3] = "HemisphereShell";
120
- ParticleSystemShapeType[ParticleSystemShapeType["Cone"] = 4] = "Cone";
121
- ParticleSystemShapeType[ParticleSystemShapeType["Box"] = 5] = "Box";
122
- ParticleSystemShapeType[ParticleSystemShapeType["Mesh"] = 6] = "Mesh";
123
- ParticleSystemShapeType[ParticleSystemShapeType["ConeShell"] = 7] = "ConeShell";
124
- ParticleSystemShapeType[ParticleSystemShapeType["ConeVolume"] = 8] = "ConeVolume";
125
- ParticleSystemShapeType[ParticleSystemShapeType["ConeVolumeShell"] = 9] = "ConeVolumeShell";
126
- ParticleSystemShapeType[ParticleSystemShapeType["Circle"] = 10] = "Circle";
127
- ParticleSystemShapeType[ParticleSystemShapeType["CircleEdge"] = 11] = "CircleEdge";
128
- ParticleSystemShapeType[ParticleSystemShapeType["SingleSidedEdge"] = 12] = "SingleSidedEdge";
129
- ParticleSystemShapeType[ParticleSystemShapeType["MeshRenderer"] = 13] = "MeshRenderer";
130
- ParticleSystemShapeType[ParticleSystemShapeType["SkinnedMeshRenderer"] = 14] = "SkinnedMeshRenderer";
131
- ParticleSystemShapeType[ParticleSystemShapeType["BoxShell"] = 15] = "BoxShell";
132
- ParticleSystemShapeType[ParticleSystemShapeType["BoxEdge"] = 16] = "BoxEdge";
133
- ParticleSystemShapeType[ParticleSystemShapeType["Donut"] = 17] = "Donut";
134
- ParticleSystemShapeType[ParticleSystemShapeType["Rectangle"] = 18] = "Rectangle";
135
- ParticleSystemShapeType[ParticleSystemShapeType["Sprite"] = 19] = "Sprite";
136
- ParticleSystemShapeType[ParticleSystemShapeType["SpriteRenderer"] = 20] = "SpriteRenderer";
137
- })(ParticleSystemShapeType || (ParticleSystemShapeType = {}));
138
- export var ParticleSystemShapeMultiModeValue;
139
- (function (ParticleSystemShapeMultiModeValue) {
140
- ParticleSystemShapeMultiModeValue[ParticleSystemShapeMultiModeValue["Random"] = 0] = "Random";
141
- ParticleSystemShapeMultiModeValue[ParticleSystemShapeMultiModeValue["Loop"] = 1] = "Loop";
142
- ParticleSystemShapeMultiModeValue[ParticleSystemShapeMultiModeValue["PingPong"] = 2] = "PingPong";
143
- ParticleSystemShapeMultiModeValue[ParticleSystemShapeMultiModeValue["BurstSpread"] = 3] = "BurstSpread";
144
- })(ParticleSystemShapeMultiModeValue || (ParticleSystemShapeMultiModeValue = {}));
145
- export class MinMaxCurve {
146
- static constant(val) {
147
- const obj = new MinMaxCurve();
148
- obj.setConstant(val);
149
- return obj;
150
- }
151
- static betweenTwoConstants(min, max) {
152
- const obj = new MinMaxCurve();
153
- obj.setMinMaxConstant(min, max);
154
- return obj;
155
- }
156
- static curve(curve, multiplier = 1) {
157
- const obj = new MinMaxCurve();
158
- obj.setCurve(curve, multiplier);
159
- return obj;
160
- }
161
- setConstant(val) {
162
- this.mode = ParticleSystemCurveMode.Constant;
163
- this.constant = val;
164
- }
165
- setMinMaxConstant(min, max) {
166
- this.mode = ParticleSystemCurveMode.TwoConstants;
167
- this.constantMin = min;
168
- this.constantMax = max;
169
- }
170
- setCurve(curve, multiplier = 1) {
171
- this.mode = ParticleSystemCurveMode.Curve;
172
- this.curve = curve;
173
- this.curveMultiplier = multiplier;
174
- }
175
- mode = "Constant";
176
- constant;
177
- constantMin;
178
- constantMax;
179
- curve;
180
- curveMin;
181
- curveMax;
182
- curveMultiplier;
183
- clone() {
184
- const clone = new MinMaxCurve();
185
- clone.mode = this.mode;
186
- clone.constant = this.constant;
187
- clone.constantMin = this.constantMin;
188
- clone.constantMax = this.constantMax;
189
- clone.curve = this.curve?.clone();
190
- clone.curveMin = this.curveMin?.clone();
191
- clone.curveMax = this.curveMax?.clone();
192
- clone.curveMultiplier = this.curveMultiplier;
193
- return clone;
194
- }
195
- evaluate(t01, lerpFactor) {
196
- const t = lerpFactor === undefined ? Math.random() : lerpFactor;
197
- switch (this.mode) {
198
- case ParticleSystemCurveMode.Constant:
199
- case "Constant":
200
- return this.constant;
201
- case ParticleSystemCurveMode.Curve:
202
- case "Curve":
203
- t01 = Mathf.clamp01(t01);
204
- return this.curve.evaluate(t01) * this.curveMultiplier;
205
- case ParticleSystemCurveMode.TwoCurves:
206
- case "TwoCurves":
207
- const t1 = t01 * this.curveMin.duration;
208
- const t2 = t01 * this.curveMax.duration;
209
- return Mathf.lerp(this.curveMin.evaluate(t1), this.curveMax.evaluate(t2), t % 1) * this.curveMultiplier;
210
- case ParticleSystemCurveMode.TwoConstants:
211
- case "TwoConstants":
212
- return Mathf.lerp(this.constantMin, this.constantMax, t % 1);
213
- default:
214
- this.curveMax.evaluate(t01) * this.curveMultiplier;
215
- break;
216
- }
217
- return 0;
218
- }
219
- getMax() {
220
- switch (this.mode) {
221
- case ParticleSystemCurveMode.Constant:
222
- case "Constant":
223
- return this.constant;
224
- case ParticleSystemCurveMode.Curve:
225
- case "Curve":
226
- return this.getMaxFromCurve(this.curve) * this.curveMultiplier;
227
- case ParticleSystemCurveMode.TwoCurves:
228
- case "TwoCurves":
229
- return Math.max(this.getMaxFromCurve(this.curveMin), this.getMaxFromCurve(this.curveMax)) * this.curveMultiplier;
230
- case ParticleSystemCurveMode.TwoConstants:
231
- case "TwoConstants":
232
- return Math.max(this.constantMin, this.constantMax);
233
- default:
234
- return 0;
235
- }
236
- }
237
- getMaxFromCurve(curve) {
238
- if (!curve)
239
- return 0;
240
- let maxNumber = Number.MIN_VALUE;
241
- for (let i = 0; i < curve.keys.length; i++) {
242
- const key = curve.keys[i];
243
- if (key.value > maxNumber) {
244
- maxNumber = key.value;
245
- }
246
- }
247
- return maxNumber;
248
- }
249
- }
250
- __decorate([
251
- serializable()
252
- ], MinMaxCurve.prototype, "mode", void 0);
253
- __decorate([
254
- serializable()
255
- ], MinMaxCurve.prototype, "constant", void 0);
256
- __decorate([
257
- serializable()
258
- ], MinMaxCurve.prototype, "constantMin", void 0);
259
- __decorate([
260
- serializable()
261
- ], MinMaxCurve.prototype, "constantMax", void 0);
262
- __decorate([
263
- serializable(AnimationCurve)
264
- ], MinMaxCurve.prototype, "curve", void 0);
265
- __decorate([
266
- serializable(AnimationCurve)
267
- ], MinMaxCurve.prototype, "curveMin", void 0);
268
- __decorate([
269
- serializable(AnimationCurve)
270
- ], MinMaxCurve.prototype, "curveMax", void 0);
271
- __decorate([
272
- serializable()
273
- ], MinMaxCurve.prototype, "curveMultiplier", void 0);
274
- export class MinMaxGradient {
275
- static constant(color) {
276
- const obj = new MinMaxGradient();
277
- obj.constant(color);
278
- return obj;
279
- }
280
- static betweenTwoColors(color1, color2) {
281
- const obj = new MinMaxGradient();
282
- obj.betweenTwoColors(color1, color2);
283
- return obj;
284
- }
285
- constant(color) {
286
- this.mode = ParticleSystemGradientMode.Color;
287
- this.color = color;
288
- return this;
289
- }
290
- betweenTwoColors(color1, color2) {
291
- this.mode = ParticleSystemGradientMode.TwoColors;
292
- this.colorMin = color1;
293
- this.colorMax = color2;
294
- return this;
295
- }
296
- /**
297
- * The mode of the gradient, which can be Color, Gradient, TwoColors or TwoGradients.
298
- */
299
- mode = ParticleSystemGradientMode.Color;
300
- color;
301
- colorMin;
302
- colorMax;
303
- gradient;
304
- gradientMin;
305
- gradientMax;
306
- static _temp = new RGBAColor(0, 0, 0, 1);
307
- static _temp2 = new RGBAColor(0, 0, 0, 1);
308
- evaluate(t01, lerpFactor) {
309
- const t = lerpFactor === undefined ? Math.random() : lerpFactor;
310
- switch (this.mode) {
311
- case ParticleSystemGradientMode.Color:
312
- case "Color":
313
- return this.color;
314
- case ParticleSystemGradientMode.Gradient:
315
- case "Gradient":
316
- this.gradient.evaluate(t01, MinMaxGradient._temp);
317
- return MinMaxGradient._temp;
318
- case ParticleSystemGradientMode.TwoColors:
319
- case "TwoColors":
320
- const col1 = MinMaxGradient._temp.lerpColors(this.colorMin, this.colorMax, t);
321
- return col1;
322
- case ParticleSystemGradientMode.TwoGradients:
323
- case "TwoGradients":
324
- this.gradientMin.evaluate(t01, MinMaxGradient._temp);
325
- this.gradientMax.evaluate(t01, MinMaxGradient._temp2);
326
- return MinMaxGradient._temp.lerp(MinMaxGradient._temp2, t);
327
- case ParticleSystemGradientMode.RandomColor:
328
- case "RandomColor":
329
- const random_t = Math.random();
330
- this.gradientMin.evaluate(t01, MinMaxGradient._temp);
331
- this.gradientMax.evaluate(t01, MinMaxGradient._temp2);
332
- return MinMaxGradient._temp.lerp(MinMaxGradient._temp2, random_t);
333
- }
334
- // console.warn("Not implemented", ParticleSystemGradientMode[this.mode]);
335
- MinMaxGradient._temp.set(0xffffff);
336
- MinMaxGradient._temp.alpha = 1;
337
- return MinMaxGradient._temp;
338
- }
339
- }
340
- __decorate([
341
- serializable()
342
- ], MinMaxGradient.prototype, "mode", void 0);
343
- __decorate([
344
- serializable(RGBAColor)
345
- ], MinMaxGradient.prototype, "color", void 0);
346
- __decorate([
347
- serializable(RGBAColor)
348
- ], MinMaxGradient.prototype, "colorMin", void 0);
349
- __decorate([
350
- serializable(RGBAColor)
351
- ], MinMaxGradient.prototype, "colorMax", void 0);
352
- __decorate([
353
- serializable(Gradient)
354
- ], MinMaxGradient.prototype, "gradient", void 0);
355
- __decorate([
356
- serializable(Gradient)
357
- ], MinMaxGradient.prototype, "gradientMin", void 0);
358
- __decorate([
359
- serializable(Gradient)
360
- ], MinMaxGradient.prototype, "gradientMax", void 0);
361
- export var ParticleSystemScalingMode;
362
- (function (ParticleSystemScalingMode) {
363
- ParticleSystemScalingMode[ParticleSystemScalingMode["Hierarchy"] = 0] = "Hierarchy";
364
- ParticleSystemScalingMode[ParticleSystemScalingMode["Local"] = 1] = "Local";
365
- ParticleSystemScalingMode[ParticleSystemScalingMode["Shape"] = 2] = "Shape";
366
- })(ParticleSystemScalingMode || (ParticleSystemScalingMode = {}));
367
- export class MainModule {
368
- cullingMode;
369
- duration;
370
- emitterVelocityMode;
371
- flipRotation;
372
- gravityModifier;
373
- gravityModifierMultiplier;
374
- loop;
375
- maxParticles;
376
- playOnAwake;
377
- prewarm;
378
- ringBufferLoopRange;
379
- ringBufferMode;
380
- scalingMode;
381
- simulationSpace;
382
- simulationSpeed;
383
- startColor;
384
- startDelay;
385
- startDelayMultiplier;
386
- startLifetime;
387
- startLifetimeMultiplier;
388
- startRotation;
389
- startRotationMultiplier;
390
- startRotation3D;
391
- startRotationX;
392
- startRotationXMultiplier;
393
- startRotationY;
394
- startRotationYMultiplier;
395
- startRotationZ;
396
- startRotationZMultiplier;
397
- startSize;
398
- startSize3D;
399
- startSizeMultiplier;
400
- startSizeX;
401
- startSizeXMultiplier;
402
- startSizeY;
403
- startSizeYMultiplier;
404
- startSizeZ;
405
- startSizeZMultiplier;
406
- startSpeed;
407
- startSpeedMultiplier;
408
- stopAction;
409
- useUnscaledTime;
410
- }
411
- __decorate([
412
- serializable(MinMaxCurve)
413
- ], MainModule.prototype, "gravityModifier", void 0);
414
- __decorate([
415
- serializable(MinMaxGradient)
416
- ], MainModule.prototype, "startColor", void 0);
417
- __decorate([
418
- serializable(MinMaxCurve)
419
- ], MainModule.prototype, "startDelay", void 0);
420
- __decorate([
421
- serializable(MinMaxCurve)
422
- ], MainModule.prototype, "startLifetime", void 0);
423
- __decorate([
424
- serializable(MinMaxCurve)
425
- ], MainModule.prototype, "startRotation", void 0);
426
- __decorate([
427
- serializable(MinMaxCurve)
428
- ], MainModule.prototype, "startRotationX", void 0);
429
- __decorate([
430
- serializable(MinMaxCurve)
431
- ], MainModule.prototype, "startRotationY", void 0);
432
- __decorate([
433
- serializable(MinMaxCurve)
434
- ], MainModule.prototype, "startRotationZ", void 0);
435
- __decorate([
436
- serializable(MinMaxCurve)
437
- ], MainModule.prototype, "startSize", void 0);
438
- __decorate([
439
- serializable(MinMaxCurve)
440
- ], MainModule.prototype, "startSizeX", void 0);
441
- __decorate([
442
- serializable(MinMaxCurve)
443
- ], MainModule.prototype, "startSizeY", void 0);
444
- __decorate([
445
- serializable(MinMaxCurve)
446
- ], MainModule.prototype, "startSizeZ", void 0);
447
- __decorate([
448
- serializable(MinMaxCurve)
449
- ], MainModule.prototype, "startSpeed", void 0);
450
- export class ParticleBurst {
451
- cycleCount;
452
- maxCount;
453
- minCount;
454
- probability;
455
- repeatInterval;
456
- time;
457
- count;
458
- _performed = 0;
459
- reset() {
460
- this._performed = 0;
461
- }
462
- run(time) {
463
- if (time <= this.time) {
464
- return 0;
465
- }
466
- let amount = 0;
467
- if (this.cycleCount === 0 || this._performed < this.cycleCount) {
468
- const nextTime = this.time + this.repeatInterval * this._performed;
469
- if (time >= nextTime) {
470
- this._performed += 1;
471
- if (Math.random() < this.probability) {
472
- switch (this.count.mode) {
473
- case ParticleSystemCurveMode.Constant:
474
- amount = this.count.constant;
475
- break;
476
- case ParticleSystemCurveMode.TwoConstants:
477
- amount = Mathf.lerp(this.count.constantMin, this.count.constantMax, Math.random());
478
- break;
479
- case ParticleSystemCurveMode.Curve:
480
- amount = this.count.curve.evaluate(Math.random());
481
- break;
482
- case ParticleSystemCurveMode.TwoCurves:
483
- const t = Math.random();
484
- amount = Mathf.lerp(this.count.curveMin.evaluate(t), this.count.curveMax.evaluate(t), Math.random());
485
- break;
486
- }
487
- }
488
- }
489
- }
490
- return amount;
491
- }
492
- }
493
- export class EmissionModule {
494
- enabled;
495
- get burstCount() {
496
- return this.bursts?.length ?? 0;
497
- }
498
- bursts;
499
- rateOverTime;
500
- rateOverTimeMultiplier;
501
- rateOverDistance;
502
- rateOverDistanceMultiplier;
503
- /** set from system */
504
- system;
505
- reset() {
506
- this.bursts?.forEach(b => b.reset());
507
- }
508
- getBurst() {
509
- let amount = 0;
510
- if (this.burstCount > 0) {
511
- for (let i = 0; i < this.burstCount; i++) {
512
- const burst = this.bursts[i];
513
- if (this.system.main.loop && burst.time >= this.system.time) {
514
- burst.reset();
515
- }
516
- amount += Math.round(burst.run(this.system.time));
517
- }
518
- }
519
- return amount;
520
- }
521
- }
522
- __decorate([
523
- serializable()
524
- ], EmissionModule.prototype, "enabled", void 0);
525
- __decorate([
526
- serializable()
527
- ], EmissionModule.prototype, "bursts", void 0);
528
- __decorate([
529
- serializable(MinMaxCurve)
530
- ], EmissionModule.prototype, "rateOverTime", void 0);
531
- __decorate([
532
- serializable()
533
- ], EmissionModule.prototype, "rateOverTimeMultiplier", void 0);
534
- __decorate([
535
- serializable(MinMaxCurve)
536
- ], EmissionModule.prototype, "rateOverDistance", void 0);
537
- __decorate([
538
- serializable()
539
- ], EmissionModule.prototype, "rateOverDistanceMultiplier", void 0);
540
- export class ColorOverLifetimeModule {
541
- enabled;
542
- color;
543
- }
544
- __decorate([
545
- serializable(MinMaxGradient)
546
- ], ColorOverLifetimeModule.prototype, "color", void 0);
547
- export class SizeOverLifetimeModule {
548
- enabled;
549
- separateAxes;
550
- size;
551
- sizeMultiplier;
552
- x;
553
- xMultiplier;
554
- y;
555
- yMultiplier;
556
- z;
557
- zMultiplier;
558
- _time = 0;
559
- _temp = new Vector3();
560
- evaluate(t01, target, lerpFactor) {
561
- if (!target)
562
- target = this._temp;
563
- if (!this.enabled) {
564
- target.x = target.y = target.z = 1;
565
- return target;
566
- }
567
- if (!this.separateAxes) {
568
- const scale = this.size.evaluate(t01, lerpFactor) * this.sizeMultiplier;
569
- target.x = scale;
570
- // target.y = scale;
571
- // target.z = scale;
572
- }
573
- else {
574
- target.x = this.x.evaluate(t01, lerpFactor) * this.xMultiplier;
575
- target.y = this.y.evaluate(t01, lerpFactor) * this.yMultiplier;
576
- target.z = this.z.evaluate(t01, lerpFactor) * this.zMultiplier;
577
- }
578
- return target;
579
- }
580
- }
581
- __decorate([
582
- serializable(MinMaxCurve)
583
- ], SizeOverLifetimeModule.prototype, "size", void 0);
584
- __decorate([
585
- serializable(MinMaxCurve)
586
- ], SizeOverLifetimeModule.prototype, "x", void 0);
587
- __decorate([
588
- serializable(MinMaxCurve)
589
- ], SizeOverLifetimeModule.prototype, "y", void 0);
590
- __decorate([
591
- serializable(MinMaxCurve)
592
- ], SizeOverLifetimeModule.prototype, "z", void 0);
593
- export var ParticleSystemMeshShapeType;
594
- (function (ParticleSystemMeshShapeType) {
595
- ParticleSystemMeshShapeType[ParticleSystemMeshShapeType["Vertex"] = 0] = "Vertex";
596
- ParticleSystemMeshShapeType[ParticleSystemMeshShapeType["Edge"] = 1] = "Edge";
597
- ParticleSystemMeshShapeType[ParticleSystemMeshShapeType["Triangle"] = 2] = "Triangle";
598
- })(ParticleSystemMeshShapeType || (ParticleSystemMeshShapeType = {}));
599
- export class ShapeModule {
600
- // Emittershape start
601
- get type() {
602
- return ParticleSystemShapeType[this.shapeType];
603
- }
604
- initialize(particle) {
605
- this.onInitialize(particle);
606
- particle.position.x = this._vector.x;
607
- particle.position.y = this._vector.y;
608
- particle.position.z = this._vector.z;
609
- }
610
- toJSON() {
611
- return this;
612
- }
613
- clone() {
614
- return new ShapeModule();
615
- }
616
- // EmitterShape end
617
- shapeType = ParticleSystemShapeType.Box;
618
- enabled = true;
619
- alignToDirection = false;
620
- angle = 0;
621
- arc = 360;
622
- arcSpread;
623
- arcSpeedMultiplier;
624
- arcMode;
625
- boxThickness;
626
- position;
627
- rotation;
628
- _rotation = new Euler();
629
- scale;
630
- radius;
631
- radiusThickness;
632
- sphericalDirectionAmount;
633
- randomDirectionAmount;
634
- randomPositionAmount;
635
- /** Controls if particles should spawn off vertices, faces or edges. `shapeType` must be set to `MeshRenderer` */
636
- meshShapeType;
637
- /** When assigned and `shapeType` is set to `MeshRenderer` particles will spawn using a mesh in the scene.
638
- * Use the `meshShapeType` to choose if particles should be spawned from vertices, faces or edges
639
- * To re-assign use the `setMesh` function to cache the mesh and geometry
640
- * */
641
- meshRenderer;
642
- _meshObj;
643
- _meshGeometry;
644
- setMesh(mesh) {
645
- this.meshRenderer = mesh;
646
- if (mesh) {
647
- this._meshObj = mesh.sharedMeshes[Math.floor(Math.random() * mesh.sharedMeshes.length)];
648
- this._meshGeometry = this._meshObj.geometry;
649
- }
650
- else {
651
- this._meshObj = undefined;
652
- this._meshGeometry = undefined;
653
- }
654
- }
655
- system;
656
- _space;
657
- _worldSpaceMatrix = new Matrix4();
658
- _worldSpaceMatrixInverse = new Matrix4();
659
- constructor() {
660
- if (debug)
661
- console.log(this);
662
- }
663
- update(_system, _delta) {
664
- /* this is called by quarks */
665
- }
666
- onUpdate(system, _context, simulationSpace, obj) {
667
- this.system = system;
668
- this._space = simulationSpace;
669
- if (simulationSpace === ParticleSystemSimulationSpace.World) {
670
- this._worldSpaceMatrix.copy(obj.matrixWorld);
671
- // set scale to 1
672
- this._worldSpaceMatrix.elements[0] = 1;
673
- this._worldSpaceMatrix.elements[5] = 1;
674
- this._worldSpaceMatrix.elements[10] = 1;
675
- this._worldSpaceMatrixInverse.copy(this._worldSpaceMatrix).invert();
676
- }
677
- }
678
- applyRotation(vector) {
679
- const isRotated = this.rotation.x !== 0 || this.rotation.y !== 0 || this.rotation.z !== 0;
680
- if (isRotated) {
681
- // console.log(this._rotation);
682
- // TODO: we need to convert this to threejs euler
683
- this._rotation.x = Mathf.toRadians(this.rotation.x);
684
- this._rotation.y = Mathf.toRadians(this.rotation.y);
685
- this._rotation.z = Mathf.toRadians(this.rotation.z);
686
- this._rotation.order = 'ZYX';
687
- vector.applyEuler(this._rotation);
688
- // this._quat.setFromEuler(this._rotation);
689
- // // this._quat.invert();
690
- // this._quat.x *= -1;
691
- // // this._quat.y *= -1;
692
- // // this._quat.z *= -1;
693
- // this._quat.w *= -1;
694
- // vector.applyQuaternion(this._quat);
695
- }
696
- return isRotated;
697
- }
698
- /** nebula implementations: */
699
- /** initializer implementation */
700
- _vector = new Vector3(0, 0, 0);
701
- _temp = new Vector3(0, 0, 0);
702
- _triangle = new Triangle();
703
- onInitialize(particle) {
704
- this._vector.set(0, 0, 0);
705
- // remove mesh from particle in case it got destroyed (we dont want to keep a reference to a destroyed mesh in the particle system)
706
- particle["mesh"] = undefined;
707
- particle["mesh_geometry"] = undefined;
708
- const pos = this._temp.copy(this.position);
709
- const isWorldSpace = this._space === ParticleSystemSimulationSpace.World;
710
- if (isWorldSpace) {
711
- pos.applyQuaternion(this.system.worldQuaternion);
712
- }
713
- let radius = this.radius;
714
- if (isWorldSpace)
715
- radius *= this.system.worldScale.x;
716
- if (this.enabled) {
717
- switch (this.shapeType) {
718
- case ParticleSystemShapeType.Box:
719
- if (debug)
720
- Gizmos.DrawWireBox(this.position, this.scale, 0xdddddd, 1);
721
- this._vector.x = Math.random() * this.scale.x - this.scale.x / 2;
722
- this._vector.y = Math.random() * this.scale.y - this.scale.y / 2;
723
- this._vector.z = Math.random() * this.scale.z - this.scale.z / 2;
724
- this._vector.add(pos);
725
- break;
726
- case ParticleSystemShapeType.Cone:
727
- this.randomConePoint(this.position, this.angle, radius, this.radiusThickness, this.arc, this.arcMode, this._vector);
728
- break;
729
- case ParticleSystemShapeType.Sphere:
730
- this.randomSpherePoint(this.position, radius, this.radiusThickness, this.arc, this._vector);
731
- break;
732
- case ParticleSystemShapeType.Circle:
733
- this.randomCirclePoint(this.position, radius, this.radiusThickness, this.arc, this._vector);
734
- break;
735
- case ParticleSystemShapeType.MeshRenderer:
736
- const renderer = this.meshRenderer;
737
- if (renderer?.destroyed == false)
738
- this.setMesh(renderer);
739
- const mesh = particle["mesh"] = this._meshObj;
740
- const geometry = particle["mesh_geometry"] = this._meshGeometry;
741
- if (mesh && geometry) {
742
- switch (this.meshShapeType) {
743
- case ParticleSystemMeshShapeType.Vertex:
744
- {
745
- const vertices = geometry.getAttribute("position");
746
- const index = Math.floor(Math.random() * vertices.count);
747
- this._vector.fromBufferAttribute(vertices, index);
748
- this._vector.applyMatrix4(mesh.matrixWorld);
749
- particle["mesh_normal"] = index;
750
- }
751
- break;
752
- case ParticleSystemMeshShapeType.Edge:
753
- break;
754
- case ParticleSystemMeshShapeType.Triangle:
755
- {
756
- const faces = geometry.index;
757
- if (faces) {
758
- let u = Math.random();
759
- let v = Math.random();
760
- if (u + v > 1) {
761
- u = 1 - u;
762
- v = 1 - v;
763
- }
764
- const faceIndex = Math.floor(Math.random() * (faces.count / 3));
765
- let i0 = faceIndex * 3;
766
- let i1 = faceIndex * 3 + 1;
767
- let i2 = faceIndex * 3 + 2;
768
- i0 = faces.getX(i0);
769
- i1 = faces.getX(i1);
770
- i2 = faces.getX(i2);
771
- const positionAttribute = geometry.getAttribute("position");
772
- this._triangle.a.fromBufferAttribute(positionAttribute, i0);
773
- this._triangle.b.fromBufferAttribute(positionAttribute, i1);
774
- this._triangle.c.fromBufferAttribute(positionAttribute, i2);
775
- this._vector
776
- .set(0, 0, 0)
777
- .addScaledVector(this._triangle.a, u)
778
- .addScaledVector(this._triangle.b, v)
779
- .addScaledVector(this._triangle.c, 1 - (u + v));
780
- this._vector.applyMatrix4(mesh.matrixWorld);
781
- particle["mesh_normal"] = faceIndex;
782
- }
783
- }
784
- break;
785
- }
786
- }
787
- break;
788
- default:
789
- this._vector.set(0, 0, 0);
790
- if (isDevEnvironment() && !globalThis["__particlesystem_shapetype_unsupported"]) {
791
- console.warn("ParticleSystem ShapeType is not supported:", ParticleSystemShapeType[this.shapeType]);
792
- globalThis["__particlesystem_shapetype_unsupported"] = true;
793
- }
794
- break;
795
- // case ParticleSystemShapeType.Hemisphere:
796
- // randomSpherePoint(this.position.x, this.position.y, this.position.z, this.radius, this.radiusThickness, 180, this._vector);
797
- // break;
798
- }
799
- this.randomizePosition(this._vector, this.randomPositionAmount);
800
- }
801
- this.applyRotation(this._vector);
802
- if (isWorldSpace) {
803
- this._vector.applyQuaternion(this.system.worldQuaternion);
804
- this._vector.add(this.system.worldPos);
805
- }
806
- if (debug) {
807
- Gizmos.DrawSphere(this._vector, .03, 0xff0000, .5, true);
808
- }
809
- }
810
- _dir = new Vector3();
811
- getDirection(particle, pos) {
812
- if (!this.enabled) {
813
- this._dir.set(0, 0, 1);
814
- return this._dir;
815
- }
816
- switch (this.shapeType) {
817
- case ParticleSystemShapeType.Box:
818
- this._dir.set(0, 0, 1);
819
- break;
820
- case ParticleSystemShapeType.Cone:
821
- this._dir.set(0, 0, 1);
822
- // apply cone angle
823
- // this._dir.applyAxisAngle(new Vector3(0, 1, 0), Mathf.toRadians(this.angle));
824
- break;
825
- case ParticleSystemShapeType.Circle:
826
- case ParticleSystemShapeType.Sphere:
827
- const rx = pos.x;
828
- const ry = pos.y;
829
- const rz = pos.z;
830
- this._dir.set(rx, ry, rz);
831
- if (this.system?.worldspace)
832
- this._dir.sub(this.system.worldPos);
833
- else
834
- this._dir.sub(this.position);
835
- break;
836
- case ParticleSystemShapeType.MeshRenderer:
837
- const mesh = particle["mesh"];
838
- const geometry = particle["mesh_geometry"];
839
- if (mesh && geometry) {
840
- switch (this.meshShapeType) {
841
- case ParticleSystemMeshShapeType.Vertex:
842
- {
843
- const normal = geometry.getAttribute("normal");
844
- const index = particle["mesh_normal"];
845
- this._dir.fromBufferAttribute(normal, index);
846
- }
847
- break;
848
- case ParticleSystemMeshShapeType.Edge:
849
- break;
850
- case ParticleSystemMeshShapeType.Triangle:
851
- {
852
- const faces = geometry.index;
853
- if (faces) {
854
- const index = particle["mesh_normal"];
855
- const i0 = faces.getX(index * 3);
856
- const i1 = faces.getX(index * 3 + 1);
857
- const i2 = faces.getX(index * 3 + 2);
858
- const positionAttribute = geometry.getAttribute("position");
859
- const a = getTempVector();
860
- const b = getTempVector();
861
- const c = getTempVector();
862
- a.fromBufferAttribute(positionAttribute, i0);
863
- b.fromBufferAttribute(positionAttribute, i1);
864
- c.fromBufferAttribute(positionAttribute, i2);
865
- a.sub(b);
866
- c.sub(b);
867
- a.cross(c);
868
- this._dir.copy(a).multiplyScalar(-1);
869
- const rot = getWorldQuaternion(mesh);
870
- this._dir.applyQuaternion(rot);
871
- }
872
- }
873
- break;
874
- }
875
- }
876
- break;
877
- default:
878
- this._dir.set(0, 0, 1);
879
- break;
880
- }
881
- if (this._space === ParticleSystemSimulationSpace.World) {
882
- this._dir.applyQuaternion(this.system.worldQuaternion);
883
- }
884
- this.applyRotation(this._dir);
885
- this._dir.normalize();
886
- this.spherizeDirection(this._dir, this.sphericalDirectionAmount);
887
- this.randomizeDirection(this._dir, this.randomDirectionAmount);
888
- if (debug) {
889
- Gizmos.DrawSphere(pos, .01, 0x883300, .5, true);
890
- Gizmos.DrawDirection(pos, this._dir, 0x883300, .5, true);
891
- }
892
- return this._dir;
893
- }
894
- static _randomQuat = new Quaternion();
895
- static _tempVec = new Vector3();
896
- randomizePosition(pos, amount) {
897
- if (amount <= 0)
898
- return;
899
- const rp = ShapeModule._tempVec;
900
- rp.set(Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random() * 2 - 1);
901
- rp.x *= amount * this.scale.x;
902
- rp.y *= amount * this.scale.y;
903
- rp.z *= amount * this.scale.z;
904
- pos.add(rp);
905
- }
906
- randomizeDirection(direction, amount) {
907
- if (amount === 0)
908
- return;
909
- const randomQuat = ShapeModule._randomQuat;
910
- const tempVec = ShapeModule._tempVec;
911
- tempVec.set(Math.random() - .5, Math.random() - .5, Math.random() - .5).normalize();
912
- randomQuat.setFromAxisAngle(tempVec, amount * Math.random() * Math.PI);
913
- direction.applyQuaternion(randomQuat);
914
- }
915
- spherizeDirection(dir, amount) {
916
- if (amount === 0)
917
- return;
918
- const theta = Math.random() * Math.PI * 2;
919
- const phi = Math.acos(1 - Math.random() * 2);
920
- const x = Math.sin(phi) * Math.cos(theta);
921
- const y = Math.sin(phi) * Math.sin(theta);
922
- const z = Math.cos(phi);
923
- const v = new Vector3(x, y, z);
924
- dir.lerp(v, amount);
925
- }
926
- randomSpherePoint(pos, radius, thickness, arc, vec) {
927
- const u = Math.random();
928
- const v = Math.random();
929
- const theta = 2 * Math.PI * u * (arc / 360);
930
- const phi = Math.acos(2 * v - 1);
931
- const r = Mathf.lerp(1, 1 - (Math.pow(1 - Math.random(), Math.PI)), thickness) * (radius);
932
- const x = pos.x + this.scale.x * (-r * Math.sin(phi) * Math.cos(theta));
933
- const y = pos.y + this.scale.y * (r * Math.sin(phi) * Math.sin(theta));
934
- const z = pos.z + this.scale.z * (r * Math.cos(phi));
935
- vec.x = x;
936
- vec.y = y;
937
- vec.z = z;
938
- }
939
- randomCirclePoint(pos, radius, thickness, arg, vec) {
940
- const u = Math.random();
941
- const theta = 2 * Math.PI * u * (arg / 360);
942
- const r = Mathf.lerp(1, 1 - (Math.pow(1 - Math.random(), Math.PI)), thickness) * (radius);
943
- const x = pos.x + this.scale.x * r * Math.cos(theta);
944
- const y = pos.y + this.scale.y * r * Math.sin(theta);
945
- const z = pos.z;
946
- vec.x = x;
947
- vec.y = y;
948
- vec.z = z;
949
- }
950
- _loopTime = 0;
951
- _loopDirection = 1;
952
- randomConePoint(pos, _angle, radius, thickness, arc, arcMode, vec) {
953
- let u = 0;
954
- let v = 0;
955
- switch (arcMode) {
956
- case ParticleSystemShapeMultiModeValue.Random:
957
- u = Math.random();
958
- v = Math.random();
959
- break;
960
- case ParticleSystemShapeMultiModeValue.PingPong:
961
- if (this._loopTime > 1)
962
- this._loopDirection = -1;
963
- if (this._loopTime < 0)
964
- this._loopDirection = 1;
965
- // continue with loop
966
- case ParticleSystemShapeMultiModeValue.Loop:
967
- u = .5;
968
- v = Math.random();
969
- this._loopTime += this.system.deltaTime * this._loopDirection;
970
- break;
971
- }
972
- let theta = 2 * Math.PI * u * (arc / 360);
973
- switch (arcMode) {
974
- case ParticleSystemShapeMultiModeValue.PingPong:
975
- case ParticleSystemShapeMultiModeValue.Loop:
976
- theta += Math.PI + .5;
977
- theta += this._loopTime * Math.PI * 2;
978
- theta %= Mathf.toRadians(arc);
979
- break;
980
- }
981
- const phi = Math.acos(2 * v - 1);
982
- const r = Mathf.lerp(1, 1 - (Math.pow(1 - Math.random(), Math.PI)), thickness) * radius;
983
- const x = pos.x + (-r * Math.sin(phi) * Math.cos(theta));
984
- const y = pos.y + (r * Math.sin(phi) * Math.sin(theta));
985
- const z = pos.z;
986
- vec.x = x * this.scale.x;
987
- vec.y = y * this.scale.y;
988
- vec.z = z * this.scale.z;
989
- }
990
- }
991
- __decorate([
992
- serializable()
993
- ], ShapeModule.prototype, "shapeType", void 0);
994
- __decorate([
995
- serializable()
996
- ], ShapeModule.prototype, "enabled", void 0);
997
- __decorate([
998
- serializable()
999
- ], ShapeModule.prototype, "alignToDirection", void 0);
1000
- __decorate([
1001
- serializable()
1002
- ], ShapeModule.prototype, "angle", void 0);
1003
- __decorate([
1004
- serializable()
1005
- ], ShapeModule.prototype, "arc", void 0);
1006
- __decorate([
1007
- serializable()
1008
- ], ShapeModule.prototype, "arcSpread", void 0);
1009
- __decorate([
1010
- serializable()
1011
- ], ShapeModule.prototype, "arcSpeedMultiplier", void 0);
1012
- __decorate([
1013
- serializable()
1014
- ], ShapeModule.prototype, "arcMode", void 0);
1015
- __decorate([
1016
- serializable(Vector3)
1017
- ], ShapeModule.prototype, "boxThickness", void 0);
1018
- __decorate([
1019
- serializable(Vector3)
1020
- ], ShapeModule.prototype, "position", void 0);
1021
- __decorate([
1022
- serializable(Vector3)
1023
- ], ShapeModule.prototype, "rotation", void 0);
1024
- __decorate([
1025
- serializable(Vector3)
1026
- ], ShapeModule.prototype, "scale", void 0);
1027
- __decorate([
1028
- serializable()
1029
- ], ShapeModule.prototype, "radius", void 0);
1030
- __decorate([
1031
- serializable()
1032
- ], ShapeModule.prototype, "radiusThickness", void 0);
1033
- __decorate([
1034
- serializable()
1035
- ], ShapeModule.prototype, "sphericalDirectionAmount", void 0);
1036
- __decorate([
1037
- serializable()
1038
- ], ShapeModule.prototype, "randomDirectionAmount", void 0);
1039
- __decorate([
1040
- serializable()
1041
- ], ShapeModule.prototype, "randomPositionAmount", void 0);
1042
- __decorate([
1043
- serializable()
1044
- ], ShapeModule.prototype, "meshShapeType", void 0);
1045
- __decorate([
1046
- serializable(MeshRenderer)
1047
- ], ShapeModule.prototype, "meshRenderer", void 0);
1048
- export class NoiseModule {
1049
- damping;
1050
- enabled;
1051
- frequency;
1052
- octaveCount;
1053
- octaveMultiplier;
1054
- octaveScale;
1055
- positionAmount;
1056
- quality;
1057
- remap;
1058
- remapEnabled;
1059
- remapMultiplier;
1060
- remapX;
1061
- remapXMultiplier;
1062
- remapY;
1063
- remapYMultiplier;
1064
- remapZ;
1065
- remapZMultiplier;
1066
- scrollSpeedMultiplier;
1067
- separateAxes;
1068
- strengthMultiplier;
1069
- strengthX;
1070
- strengthXMultiplier;
1071
- strengthY;
1072
- strengthYMultiplier;
1073
- strengthZ;
1074
- strengthZMultiplier;
1075
- _noise;
1076
- _time = 0;
1077
- update(context) {
1078
- this._time += context.time.deltaTime * this.scrollSpeedMultiplier;
1079
- }
1080
- /** nebula implementations: */
1081
- _temp = new Vector3();
1082
- apply(_index, pos, vel, _deltaTime, age, life) {
1083
- if (!this.enabled)
1084
- return;
1085
- if (!this._noise) {
1086
- this._noise = createNoise4D(() => 0);
1087
- }
1088
- const temp = this._temp.set(pos.x, pos.y, pos.z).multiplyScalar(this.frequency);
1089
- const nx = this._noise(temp.x, temp.y, temp.z, this._time);
1090
- const ny = this._noise(temp.x, temp.y, temp.z, this._time + 1000 * this.frequency);
1091
- const nz = this._noise(temp.x, temp.y, temp.z, this._time + 2000 * this.frequency);
1092
- this._temp.set(nx, ny, nz).normalize();
1093
- const t = age / life;
1094
- let strengthFactor = this.positionAmount.evaluate(t);
1095
- if (!this.separateAxes) {
1096
- if (this.strengthX) {
1097
- strengthFactor *= this.strengthX.evaluate(t) * 1.5;
1098
- }
1099
- // strengthFactor *= this.strengthMultiplier;
1100
- // strengthFactor *= deltaTime;
1101
- this._temp.multiplyScalar(strengthFactor);
1102
- }
1103
- else {
1104
- this._temp.x *= strengthFactor * this.strengthXMultiplier;
1105
- this._temp.y *= strengthFactor * this.strengthYMultiplier;
1106
- this._temp.z *= strengthFactor * this.strengthZMultiplier;
1107
- }
1108
- // this._temp.setLength(strengthFactor * deltaTime);
1109
- vel.x += this._temp.x;
1110
- vel.y += this._temp.y;
1111
- vel.z += this._temp.z;
1112
- }
1113
- }
1114
- __decorate([
1115
- serializable()
1116
- ], NoiseModule.prototype, "damping", void 0);
1117
- __decorate([
1118
- serializable()
1119
- ], NoiseModule.prototype, "enabled", void 0);
1120
- __decorate([
1121
- serializable()
1122
- ], NoiseModule.prototype, "frequency", void 0);
1123
- __decorate([
1124
- serializable()
1125
- ], NoiseModule.prototype, "octaveCount", void 0);
1126
- __decorate([
1127
- serializable()
1128
- ], NoiseModule.prototype, "octaveMultiplier", void 0);
1129
- __decorate([
1130
- serializable()
1131
- ], NoiseModule.prototype, "octaveScale", void 0);
1132
- __decorate([
1133
- serializable(MinMaxCurve)
1134
- ], NoiseModule.prototype, "positionAmount", void 0);
1135
- __decorate([
1136
- serializable()
1137
- ], NoiseModule.prototype, "quality", void 0);
1138
- __decorate([
1139
- serializable(MinMaxCurve)
1140
- ], NoiseModule.prototype, "remap", void 0);
1141
- __decorate([
1142
- serializable()
1143
- ], NoiseModule.prototype, "remapEnabled", void 0);
1144
- __decorate([
1145
- serializable()
1146
- ], NoiseModule.prototype, "remapMultiplier", void 0);
1147
- __decorate([
1148
- serializable(MinMaxCurve)
1149
- ], NoiseModule.prototype, "remapX", void 0);
1150
- __decorate([
1151
- serializable()
1152
- ], NoiseModule.prototype, "remapXMultiplier", void 0);
1153
- __decorate([
1154
- serializable(MinMaxCurve)
1155
- ], NoiseModule.prototype, "remapY", void 0);
1156
- __decorate([
1157
- serializable()
1158
- ], NoiseModule.prototype, "remapYMultiplier", void 0);
1159
- __decorate([
1160
- serializable(MinMaxCurve)
1161
- ], NoiseModule.prototype, "remapZ", void 0);
1162
- __decorate([
1163
- serializable()
1164
- ], NoiseModule.prototype, "remapZMultiplier", void 0);
1165
- __decorate([
1166
- serializable()
1167
- ], NoiseModule.prototype, "scrollSpeedMultiplier", void 0);
1168
- __decorate([
1169
- serializable()
1170
- ], NoiseModule.prototype, "separateAxes", void 0);
1171
- __decorate([
1172
- serializable()
1173
- ], NoiseModule.prototype, "strengthMultiplier", void 0);
1174
- __decorate([
1175
- serializable(MinMaxCurve)
1176
- ], NoiseModule.prototype, "strengthX", void 0);
1177
- __decorate([
1178
- serializable()
1179
- ], NoiseModule.prototype, "strengthXMultiplier", void 0);
1180
- __decorate([
1181
- serializable(MinMaxCurve)
1182
- ], NoiseModule.prototype, "strengthY", void 0);
1183
- __decorate([
1184
- serializable()
1185
- ], NoiseModule.prototype, "strengthYMultiplier", void 0);
1186
- __decorate([
1187
- serializable(MinMaxCurve)
1188
- ], NoiseModule.prototype, "strengthZ", void 0);
1189
- __decorate([
1190
- serializable()
1191
- ], NoiseModule.prototype, "strengthZMultiplier", void 0);
1192
- export var ParticleSystemTrailMode;
1193
- (function (ParticleSystemTrailMode) {
1194
- ParticleSystemTrailMode[ParticleSystemTrailMode["PerParticle"] = 0] = "PerParticle";
1195
- ParticleSystemTrailMode[ParticleSystemTrailMode["Ribbon"] = 1] = "Ribbon";
1196
- })(ParticleSystemTrailMode || (ParticleSystemTrailMode = {}));
1197
- export var ParticleSystemTrailTextureMode;
1198
- (function (ParticleSystemTrailTextureMode) {
1199
- ParticleSystemTrailTextureMode[ParticleSystemTrailTextureMode["Stretch"] = 0] = "Stretch";
1200
- ParticleSystemTrailTextureMode[ParticleSystemTrailTextureMode["Tile"] = 1] = "Tile";
1201
- ParticleSystemTrailTextureMode[ParticleSystemTrailTextureMode["DistributePerSegment"] = 2] = "DistributePerSegment";
1202
- ParticleSystemTrailTextureMode[ParticleSystemTrailTextureMode["RepeatPerSegment"] = 3] = "RepeatPerSegment";
1203
- })(ParticleSystemTrailTextureMode || (ParticleSystemTrailTextureMode = {}));
1204
- export class TrailModule {
1205
- enabled;
1206
- attachRibbonToTransform = false;
1207
- colorOverLifetime;
1208
- colorOverTrail;
1209
- dieWithParticles = true;
1210
- inheritParticleColor = true;
1211
- lifetime;
1212
- lifetimeMultiplier;
1213
- minVertexDistance = .2;
1214
- mode = ParticleSystemTrailMode.PerParticle;
1215
- ratio = 1;
1216
- ribbonCount = 1;
1217
- shadowBias = 0;
1218
- sizeAffectsLifetime = false;
1219
- sizeAffectsWidth = false;
1220
- splitSubEmitterRibbons = false;
1221
- textureMode = ParticleSystemTrailTextureMode.Stretch;
1222
- widthOverTrail;
1223
- widthOverTrailMultiplier;
1224
- worldSpace = false;
1225
- getWidth(size, _life01, pos01, t) {
1226
- const res = this.widthOverTrail.evaluate(pos01, t);
1227
- size *= res;
1228
- return size;
1229
- }
1230
- getColor(color, life01, pos01) {
1231
- const overTrail = this.colorOverTrail.evaluate(pos01);
1232
- const overLife = this.colorOverLifetime.evaluate(life01);
1233
- color.x *= overTrail.r * overLife.r;
1234
- color.y *= overTrail.g * overLife.g;
1235
- color.z *= overTrail.b * overLife.b;
1236
- if ("alpha" in overTrail && "alpha" in overLife)
1237
- color.w *= overTrail.alpha * overLife.alpha;
1238
- }
1239
- }
1240
- __decorate([
1241
- serializable()
1242
- ], TrailModule.prototype, "enabled", void 0);
1243
- __decorate([
1244
- serializable()
1245
- ], TrailModule.prototype, "attachRibbonToTransform", void 0);
1246
- __decorate([
1247
- serializable(MinMaxGradient)
1248
- ], TrailModule.prototype, "colorOverLifetime", void 0);
1249
- __decorate([
1250
- serializable(MinMaxGradient)
1251
- ], TrailModule.prototype, "colorOverTrail", void 0);
1252
- __decorate([
1253
- serializable()
1254
- ], TrailModule.prototype, "dieWithParticles", void 0);
1255
- __decorate([
1256
- serializable()
1257
- ], TrailModule.prototype, "inheritParticleColor", void 0);
1258
- __decorate([
1259
- serializable(MinMaxCurve)
1260
- ], TrailModule.prototype, "lifetime", void 0);
1261
- __decorate([
1262
- serializable()
1263
- ], TrailModule.prototype, "lifetimeMultiplier", void 0);
1264
- __decorate([
1265
- serializable()
1266
- ], TrailModule.prototype, "minVertexDistance", void 0);
1267
- __decorate([
1268
- serializable()
1269
- ], TrailModule.prototype, "mode", void 0);
1270
- __decorate([
1271
- serializable()
1272
- ], TrailModule.prototype, "ratio", void 0);
1273
- __decorate([
1274
- serializable()
1275
- ], TrailModule.prototype, "ribbonCount", void 0);
1276
- __decorate([
1277
- serializable()
1278
- ], TrailModule.prototype, "shadowBias", void 0);
1279
- __decorate([
1280
- serializable()
1281
- ], TrailModule.prototype, "sizeAffectsLifetime", void 0);
1282
- __decorate([
1283
- serializable()
1284
- ], TrailModule.prototype, "sizeAffectsWidth", void 0);
1285
- __decorate([
1286
- serializable()
1287
- ], TrailModule.prototype, "splitSubEmitterRibbons", void 0);
1288
- __decorate([
1289
- serializable()
1290
- ], TrailModule.prototype, "textureMode", void 0);
1291
- __decorate([
1292
- serializable(MinMaxCurve)
1293
- ], TrailModule.prototype, "widthOverTrail", void 0);
1294
- __decorate([
1295
- serializable()
1296
- ], TrailModule.prototype, "widthOverTrailMultiplier", void 0);
1297
- __decorate([
1298
- serializable()
1299
- ], TrailModule.prototype, "worldSpace", void 0);
1300
- export class VelocityOverLifetimeModule {
1301
- enabled;
1302
- space = ParticleSystemSimulationSpace.Local;
1303
- orbitalX;
1304
- orbitalY;
1305
- orbitalZ;
1306
- orbitalXMultiplier;
1307
- orbitalYMultiplier;
1308
- orbitalZMultiplier;
1309
- orbitalOffsetX;
1310
- orbitalOffsetY;
1311
- orbitalOffsetZ;
1312
- speedModifier;
1313
- speedModifierMultiplier;
1314
- x;
1315
- xMultiplier;
1316
- y;
1317
- yMultiplier;
1318
- z;
1319
- zMultiplier;
1320
- _system;
1321
- // private _worldRotation: Quaternion = new Quaternion();
1322
- update(system) {
1323
- this._system = system;
1324
- }
1325
- _temp = new Vector3();
1326
- _temp2 = new Vector3();
1327
- _temp3 = new Vector3();
1328
- _hasOrbital = false;
1329
- _index = 0;
1330
- _orbitalMatrix = new Matrix4();
1331
- init(particle) {
1332
- if (this._index == 0)
1333
- particle["debug"] = true;
1334
- this._index += 1;
1335
- particle["orbitx"] = this.orbitalX.evaluate(Math.random());
1336
- particle["orbity"] = this.orbitalY.evaluate(Math.random());
1337
- particle["orbitz"] = this.orbitalZ.evaluate(Math.random());
1338
- // console.log(particle["orbitx"], particle["orbity"], particle["orbitz"])
1339
- this._hasOrbital = particle["orbitx"] != 0 || particle["orbity"] != 0 || particle["orbitz"] != 0;
1340
- }
1341
- apply(_particle, _index, _pos, vel, _dt, age, life) {
1342
- if (!this.enabled)
1343
- return;
1344
- const t = age / life;
1345
- const speed = this.speedModifier.evaluate(t) * this.speedModifierMultiplier;
1346
- const x = this.x.evaluate(t);
1347
- const y = this.y.evaluate(t);
1348
- const z = this.z.evaluate(t);
1349
- this._temp.set(-x, y, z);
1350
- if (this._system) {
1351
- // if (this.space === ParticleSystemSimulationSpace.World) {
1352
- // this._temp.applyQuaternion(this._system.worldQuaternionInverted);
1353
- // }
1354
- if (this._system.main.simulationSpace === ParticleSystemSimulationSpace.World) {
1355
- this._temp.applyQuaternion(this._system.worldQuaternion);
1356
- }
1357
- }
1358
- if (this._hasOrbital) {
1359
- const position = this._system?.worldPos;
1360
- if (position) {
1361
- // TODO: we absolutely need to fix this, this is a hack for a specific usecase and doesnt work yet correctly
1362
- // https://github.com/needle-tools/needle-tiny/issues/710
1363
- const pos = this._temp2.set(_pos.x, _pos.y, _pos.z);
1364
- const ox = this.orbitalXMultiplier; // particle["orbitx"];
1365
- const oy = this.orbitalYMultiplier; // particle["orbity"];
1366
- const oz = this.orbitalZMultiplier; // particle["orbitz"];
1367
- const angle = speed * Math.PI * 2 * 10; // < Oh god
1368
- const cosX = Math.cos(angle * ox);
1369
- const sinX = Math.sin(angle * ox);
1370
- const cosY = Math.cos(angle * oy);
1371
- const sinY = Math.sin(angle * oy);
1372
- const cosZ = Math.cos(angle * oz);
1373
- const sinZ = Math.sin(angle * oz);
1374
- const newX = pos.x * (cosY * cosZ) + pos.y * (cosY * sinZ) + pos.z * (-sinY);
1375
- const newY = pos.x * (sinX * sinY * cosZ - cosX * sinZ) + pos.y * (sinX * sinY * sinZ + cosX * cosZ) + pos.z * (sinX * cosY);
1376
- const newZ = pos.x * (cosX * sinY * cosZ + sinX * sinZ) + pos.y * (cosX * sinY * sinZ - sinX * cosZ) + pos.z * (cosX * cosY);
1377
- // pos.x += this.orbitalOffsetX;
1378
- // pos.y += this.orbitalOffsetY;
1379
- // pos.z += this.orbitalOffsetZ;
1380
- const v = this._temp3.set(pos.x - newX, pos.y - newY, pos.z - newZ);
1381
- v.normalize();
1382
- v.multiplyScalar(.2 / _dt * (Math.max(this.orbitalXMultiplier, this.orbitalYMultiplier, this.orbitalZMultiplier)));
1383
- vel.x += v.x;
1384
- vel.y += v.y;
1385
- vel.z += v.z;
1386
- }
1387
- }
1388
- vel.x += this._temp.x;
1389
- vel.y += this._temp.y;
1390
- vel.z += this._temp.z;
1391
- vel.x *= speed;
1392
- vel.y *= speed;
1393
- vel.z *= speed;
1394
- }
1395
- }
1396
- __decorate([
1397
- serializable()
1398
- ], VelocityOverLifetimeModule.prototype, "enabled", void 0);
1399
- __decorate([
1400
- serializable()
1401
- ], VelocityOverLifetimeModule.prototype, "space", void 0);
1402
- __decorate([
1403
- serializable(MinMaxCurve)
1404
- ], VelocityOverLifetimeModule.prototype, "orbitalX", void 0);
1405
- __decorate([
1406
- serializable(MinMaxCurve)
1407
- ], VelocityOverLifetimeModule.prototype, "orbitalY", void 0);
1408
- __decorate([
1409
- serializable(MinMaxCurve)
1410
- ], VelocityOverLifetimeModule.prototype, "orbitalZ", void 0);
1411
- __decorate([
1412
- serializable()
1413
- ], VelocityOverLifetimeModule.prototype, "orbitalXMultiplier", void 0);
1414
- __decorate([
1415
- serializable()
1416
- ], VelocityOverLifetimeModule.prototype, "orbitalYMultiplier", void 0);
1417
- __decorate([
1418
- serializable()
1419
- ], VelocityOverLifetimeModule.prototype, "orbitalZMultiplier", void 0);
1420
- __decorate([
1421
- serializable()
1422
- ], VelocityOverLifetimeModule.prototype, "orbitalOffsetX", void 0);
1423
- __decorate([
1424
- serializable()
1425
- ], VelocityOverLifetimeModule.prototype, "orbitalOffsetY", void 0);
1426
- __decorate([
1427
- serializable()
1428
- ], VelocityOverLifetimeModule.prototype, "orbitalOffsetZ", void 0);
1429
- __decorate([
1430
- serializable(MinMaxCurve)
1431
- ], VelocityOverLifetimeModule.prototype, "speedModifier", void 0);
1432
- __decorate([
1433
- serializable()
1434
- ], VelocityOverLifetimeModule.prototype, "speedModifierMultiplier", void 0);
1435
- __decorate([
1436
- serializable(MinMaxCurve)
1437
- ], VelocityOverLifetimeModule.prototype, "x", void 0);
1438
- __decorate([
1439
- serializable()
1440
- ], VelocityOverLifetimeModule.prototype, "xMultiplier", void 0);
1441
- __decorate([
1442
- serializable(MinMaxCurve)
1443
- ], VelocityOverLifetimeModule.prototype, "y", void 0);
1444
- __decorate([
1445
- serializable()
1446
- ], VelocityOverLifetimeModule.prototype, "yMultiplier", void 0);
1447
- __decorate([
1448
- serializable(MinMaxCurve)
1449
- ], VelocityOverLifetimeModule.prototype, "z", void 0);
1450
- __decorate([
1451
- serializable()
1452
- ], VelocityOverLifetimeModule.prototype, "zMultiplier", void 0);
1453
- var ParticleSystemAnimationTimeMode;
1454
- (function (ParticleSystemAnimationTimeMode) {
1455
- ParticleSystemAnimationTimeMode[ParticleSystemAnimationTimeMode["Lifetime"] = 0] = "Lifetime";
1456
- ParticleSystemAnimationTimeMode[ParticleSystemAnimationTimeMode["Speed"] = 1] = "Speed";
1457
- ParticleSystemAnimationTimeMode[ParticleSystemAnimationTimeMode["FPS"] = 2] = "FPS";
1458
- })(ParticleSystemAnimationTimeMode || (ParticleSystemAnimationTimeMode = {}));
1459
- var ParticleSystemAnimationMode;
1460
- (function (ParticleSystemAnimationMode) {
1461
- ParticleSystemAnimationMode[ParticleSystemAnimationMode["Grid"] = 0] = "Grid";
1462
- ParticleSystemAnimationMode[ParticleSystemAnimationMode["Sprites"] = 1] = "Sprites";
1463
- })(ParticleSystemAnimationMode || (ParticleSystemAnimationMode = {}));
1464
- var ParticleSystemAnimationRowMode;
1465
- (function (ParticleSystemAnimationRowMode) {
1466
- ParticleSystemAnimationRowMode[ParticleSystemAnimationRowMode["Custom"] = 0] = "Custom";
1467
- ParticleSystemAnimationRowMode[ParticleSystemAnimationRowMode["Random"] = 1] = "Random";
1468
- ParticleSystemAnimationRowMode[ParticleSystemAnimationRowMode["MeshIndex"] = 2] = "MeshIndex";
1469
- })(ParticleSystemAnimationRowMode || (ParticleSystemAnimationRowMode = {}));
1470
- var ParticleSystemAnimationType;
1471
- (function (ParticleSystemAnimationType) {
1472
- ParticleSystemAnimationType[ParticleSystemAnimationType["WholeSheet"] = 0] = "WholeSheet";
1473
- ParticleSystemAnimationType[ParticleSystemAnimationType["SingleRow"] = 1] = "SingleRow";
1474
- })(ParticleSystemAnimationType || (ParticleSystemAnimationType = {}));
1475
- export class TextureSheetAnimationModule {
1476
- animation;
1477
- enabled;
1478
- cycleCount;
1479
- frameOverTime;
1480
- frameOverTimeMultiplier;
1481
- numTilesX;
1482
- numTilesY;
1483
- startFrame;
1484
- startFrameMultiplier;
1485
- rowMode;
1486
- rowIndex;
1487
- spriteCount;
1488
- timeMode;
1489
- sampleOnceAtStart() {
1490
- if (this.timeMode === ParticleSystemAnimationTimeMode.Lifetime) {
1491
- switch (this.frameOverTime.mode) {
1492
- case ParticleSystemCurveMode.Constant:
1493
- case ParticleSystemCurveMode.TwoConstants:
1494
- case ParticleSystemCurveMode.TwoCurves:
1495
- case ParticleSystemCurveMode.Curve:
1496
- return true;
1497
- }
1498
- }
1499
- return false;
1500
- }
1501
- getStartIndex() {
1502
- if (this.sampleOnceAtStart()) {
1503
- const start = Math.random();
1504
- return start * (this.numTilesX * this.numTilesY);
1505
- }
1506
- return 0;
1507
- }
1508
- evaluate(t01) {
1509
- if (this.sampleOnceAtStart()) {
1510
- return undefined;
1511
- }
1512
- return this.getIndex(t01);
1513
- }
1514
- getIndex(t01) {
1515
- const tiles = this.numTilesX * this.numTilesY;
1516
- t01 = t01 * this.cycleCount;
1517
- let index = this.frameOverTime.evaluate(t01 % 1);
1518
- index *= this.frameOverTimeMultiplier;
1519
- index *= tiles;
1520
- index = index % tiles;
1521
- index = Math.floor(index);
1522
- return index;
1523
- }
1524
- }
1525
- __decorate([
1526
- serializable()
1527
- ], TextureSheetAnimationModule.prototype, "animation", void 0);
1528
- __decorate([
1529
- serializable()
1530
- ], TextureSheetAnimationModule.prototype, "enabled", void 0);
1531
- __decorate([
1532
- serializable()
1533
- ], TextureSheetAnimationModule.prototype, "cycleCount", void 0);
1534
- __decorate([
1535
- serializable(MinMaxCurve)
1536
- ], TextureSheetAnimationModule.prototype, "frameOverTime", void 0);
1537
- __decorate([
1538
- serializable()
1539
- ], TextureSheetAnimationModule.prototype, "frameOverTimeMultiplier", void 0);
1540
- __decorate([
1541
- serializable()
1542
- ], TextureSheetAnimationModule.prototype, "numTilesX", void 0);
1543
- __decorate([
1544
- serializable()
1545
- ], TextureSheetAnimationModule.prototype, "numTilesY", void 0);
1546
- __decorate([
1547
- serializable(MinMaxCurve)
1548
- ], TextureSheetAnimationModule.prototype, "startFrame", void 0);
1549
- __decorate([
1550
- serializable()
1551
- ], TextureSheetAnimationModule.prototype, "startFrameMultiplier", void 0);
1552
- __decorate([
1553
- serializable()
1554
- ], TextureSheetAnimationModule.prototype, "rowMode", void 0);
1555
- __decorate([
1556
- serializable()
1557
- ], TextureSheetAnimationModule.prototype, "rowIndex", void 0);
1558
- __decorate([
1559
- serializable()
1560
- ], TextureSheetAnimationModule.prototype, "spriteCount", void 0);
1561
- __decorate([
1562
- serializable()
1563
- ], TextureSheetAnimationModule.prototype, "timeMode", void 0);
1564
- export class RotationOverLifetimeModule {
1565
- enabled;
1566
- separateAxes;
1567
- x;
1568
- xMultiplier;
1569
- y;
1570
- yMultiplier;
1571
- z;
1572
- zMultiplier;
1573
- evaluate(t01, t) {
1574
- if (!this.enabled)
1575
- return 0;
1576
- if (!this.separateAxes) {
1577
- const rot = this.z.evaluate(t01, t) * -1;
1578
- return rot;
1579
- }
1580
- return 0;
1581
- }
1582
- }
1583
- __decorate([
1584
- serializable()
1585
- ], RotationOverLifetimeModule.prototype, "enabled", void 0);
1586
- __decorate([
1587
- serializable()
1588
- ], RotationOverLifetimeModule.prototype, "separateAxes", void 0);
1589
- __decorate([
1590
- serializable(MinMaxCurve)
1591
- ], RotationOverLifetimeModule.prototype, "x", void 0);
1592
- __decorate([
1593
- serializable()
1594
- ], RotationOverLifetimeModule.prototype, "xMultiplier", void 0);
1595
- __decorate([
1596
- serializable(MinMaxCurve)
1597
- ], RotationOverLifetimeModule.prototype, "y", void 0);
1598
- __decorate([
1599
- serializable()
1600
- ], RotationOverLifetimeModule.prototype, "yMultiplier", void 0);
1601
- __decorate([
1602
- serializable(MinMaxCurve)
1603
- ], RotationOverLifetimeModule.prototype, "z", void 0);
1604
- __decorate([
1605
- serializable()
1606
- ], RotationOverLifetimeModule.prototype, "zMultiplier", void 0);
1607
- export class RotationBySpeedModule {
1608
- enabled;
1609
- range;
1610
- separateAxes;
1611
- x;
1612
- xMultiplier;
1613
- y;
1614
- yMultiplier;
1615
- z;
1616
- zMultiplier;
1617
- evaluate(_t01, speed) {
1618
- if (!this.enabled)
1619
- return 0;
1620
- if (!this.separateAxes) {
1621
- const t = Mathf.lerp(this.range.x, this.range.y, speed);
1622
- const rot = this.z.evaluate(t) * -1;
1623
- return rot;
1624
- }
1625
- return 0;
1626
- }
1627
- }
1628
- __decorate([
1629
- serializable()
1630
- ], RotationBySpeedModule.prototype, "enabled", void 0);
1631
- __decorate([
1632
- serializable()
1633
- ], RotationBySpeedModule.prototype, "range", void 0);
1634
- __decorate([
1635
- serializable()
1636
- ], RotationBySpeedModule.prototype, "separateAxes", void 0);
1637
- __decorate([
1638
- serializable(MinMaxCurve)
1639
- ], RotationBySpeedModule.prototype, "x", void 0);
1640
- __decorate([
1641
- serializable()
1642
- ], RotationBySpeedModule.prototype, "xMultiplier", void 0);
1643
- __decorate([
1644
- serializable(MinMaxCurve)
1645
- ], RotationBySpeedModule.prototype, "y", void 0);
1646
- __decorate([
1647
- serializable()
1648
- ], RotationBySpeedModule.prototype, "yMultiplier", void 0);
1649
- __decorate([
1650
- serializable(MinMaxCurve)
1651
- ], RotationBySpeedModule.prototype, "z", void 0);
1652
- __decorate([
1653
- serializable()
1654
- ], RotationBySpeedModule.prototype, "zMultiplier", void 0);
1655
- export class LimitVelocityOverLifetimeModule {
1656
- enabled;
1657
- dampen;
1658
- drag;
1659
- dragMultiplier;
1660
- limit;
1661
- limitMultiplier;
1662
- separateAxes;
1663
- limitX;
1664
- limitXMultiplier;
1665
- limitY;
1666
- limitYMultiplier;
1667
- limitZ;
1668
- limitZMultiplier;
1669
- multiplyDragByParticleSize = false;
1670
- multiplyDragByParticleVelocity = false;
1671
- space;
1672
- _temp = new Vector3();
1673
- _temp2 = new Vector3();
1674
- apply(_position, baseVelocity, currentVelocity, _size, t01, _dt, _scale) {
1675
- if (!this.enabled)
1676
- return;
1677
- // if (this.separateAxes) {
1678
- // // const maxX = this.limitX.evaluate(t01) * this.limitXMultiplier;
1679
- // // const maxY = this.limitY.evaluate(t01) * this.limitYMultiplier;
1680
- // // const maxZ = this.limitZ.evaluate(t01) * this.limitZMultiplier;
1681
- // }
1682
- // else
1683
- {
1684
- const max = this.limit.evaluate(t01) * this.limitMultiplier;
1685
- const speed = baseVelocity.length();
1686
- if (speed > max) {
1687
- this._temp.copy(baseVelocity).normalize().multiplyScalar(max);
1688
- const t = this.dampen * .5;
1689
- // t *= scale;
1690
- baseVelocity.x = Mathf.lerp(baseVelocity.x, this._temp.x, t);
1691
- baseVelocity.y = Mathf.lerp(baseVelocity.y, this._temp.y, t);
1692
- baseVelocity.z = Mathf.lerp(baseVelocity.z, this._temp.z, t);
1693
- // this._temp2.set(0, 0, 0);
1694
- currentVelocity.x = Mathf.lerp(currentVelocity.x, this._temp.x, t);
1695
- currentVelocity.y = Mathf.lerp(currentVelocity.y, this._temp.y, t);
1696
- currentVelocity.z = Mathf.lerp(currentVelocity.z, this._temp.z, t);
1697
- }
1698
- // vel.multiplyScalar(dragFactor);
1699
- }
1700
- // vel.x *= 0.3;
1701
- // vel.y *= 0.3;
1702
- // vel.z *= 0.3;
1703
- }
1704
- }
1705
- __decorate([
1706
- serializable()
1707
- ], LimitVelocityOverLifetimeModule.prototype, "enabled", void 0);
1708
- __decorate([
1709
- serializable()
1710
- ], LimitVelocityOverLifetimeModule.prototype, "dampen", void 0);
1711
- __decorate([
1712
- serializable(MinMaxCurve)
1713
- ], LimitVelocityOverLifetimeModule.prototype, "drag", void 0);
1714
- __decorate([
1715
- serializable()
1716
- ], LimitVelocityOverLifetimeModule.prototype, "dragMultiplier", void 0);
1717
- __decorate([
1718
- serializable(MinMaxCurve)
1719
- ], LimitVelocityOverLifetimeModule.prototype, "limit", void 0);
1720
- __decorate([
1721
- serializable()
1722
- ], LimitVelocityOverLifetimeModule.prototype, "limitMultiplier", void 0);
1723
- __decorate([
1724
- serializable()
1725
- ], LimitVelocityOverLifetimeModule.prototype, "separateAxes", void 0);
1726
- __decorate([
1727
- serializable(MinMaxCurve)
1728
- ], LimitVelocityOverLifetimeModule.prototype, "limitX", void 0);
1729
- __decorate([
1730
- serializable()
1731
- ], LimitVelocityOverLifetimeModule.prototype, "limitXMultiplier", void 0);
1732
- __decorate([
1733
- serializable(MinMaxCurve)
1734
- ], LimitVelocityOverLifetimeModule.prototype, "limitY", void 0);
1735
- __decorate([
1736
- serializable()
1737
- ], LimitVelocityOverLifetimeModule.prototype, "limitYMultiplier", void 0);
1738
- __decorate([
1739
- serializable(MinMaxCurve)
1740
- ], LimitVelocityOverLifetimeModule.prototype, "limitZ", void 0);
1741
- __decorate([
1742
- serializable()
1743
- ], LimitVelocityOverLifetimeModule.prototype, "limitZMultiplier", void 0);
1744
- __decorate([
1745
- serializable()
1746
- ], LimitVelocityOverLifetimeModule.prototype, "multiplyDragByParticleSize", void 0);
1747
- __decorate([
1748
- serializable()
1749
- ], LimitVelocityOverLifetimeModule.prototype, "multiplyDragByParticleVelocity", void 0);
1750
- __decorate([
1751
- serializable()
1752
- ], LimitVelocityOverLifetimeModule.prototype, "space", void 0);
1753
- export var ParticleSystemInheritVelocityMode;
1754
- (function (ParticleSystemInheritVelocityMode) {
1755
- ParticleSystemInheritVelocityMode[ParticleSystemInheritVelocityMode["Initial"] = 0] = "Initial";
1756
- ParticleSystemInheritVelocityMode[ParticleSystemInheritVelocityMode["Current"] = 1] = "Current";
1757
- })(ParticleSystemInheritVelocityMode || (ParticleSystemInheritVelocityMode = {}));
1758
- export class InheritVelocityModule {
1759
- enabled;
1760
- curve;
1761
- curveMultiplier;
1762
- mode;
1763
- clone() {
1764
- const ni = new InheritVelocityModule();
1765
- ni.enabled = this.enabled;
1766
- ni.curve = this.curve?.clone();
1767
- ni.curveMultiplier = this.curveMultiplier;
1768
- ni.mode = this.mode;
1769
- return ni;
1770
- }
1771
- system;
1772
- get _lastWorldPosition() {
1773
- if (!this.system['_iv_lastWorldPosition']) {
1774
- this.system['_iv_lastWorldPosition'] = new Vector3();
1775
- }
1776
- return this.system['_iv_lastWorldPosition'];
1777
- }
1778
- get _velocity() {
1779
- if (!this.system['_iv_velocity']) {
1780
- this.system['_iv_velocity'] = new Vector3();
1781
- }
1782
- return this.system['_iv_velocity'];
1783
- }
1784
- _temp = new Vector3();
1785
- _firstUpdate = true;
1786
- awake(system) {
1787
- this.system = system;
1788
- this.reset();
1789
- }
1790
- reset() {
1791
- this._firstUpdate = true;
1792
- }
1793
- update(_context) {
1794
- if (!this.enabled)
1795
- return;
1796
- if (this.system.worldspace === false)
1797
- return;
1798
- if (this._firstUpdate) {
1799
- this._firstUpdate = false;
1800
- this._velocity.set(0, 0, 0);
1801
- this._lastWorldPosition.copy(this.system.worldPos);
1802
- }
1803
- else if (this._lastWorldPosition) {
1804
- this._velocity.copy(this.system.worldPos).sub(this._lastWorldPosition).multiplyScalar(1 / this.system.deltaTime);
1805
- this._lastWorldPosition.copy(this.system.worldPos);
1806
- }
1807
- }
1808
- // TODO: make work for subsystems
1809
- applyInitial(vel) {
1810
- if (!this.enabled)
1811
- return;
1812
- if (this.system.worldspace === false)
1813
- return;
1814
- if (this.mode === ParticleSystemInheritVelocityMode.Initial) {
1815
- const factor = this.curve.evaluate(Math.random(), Math.random());
1816
- this._temp.copy(this._velocity).multiplyScalar(factor);
1817
- vel.x += this._temp.x;
1818
- vel.y += this._temp.y;
1819
- vel.z += this._temp.z;
1820
- }
1821
- }
1822
- _frames = 0;
1823
- applyCurrent(vel, t01, lerpFactor) {
1824
- if (!this.enabled)
1825
- return;
1826
- if (!this.system)
1827
- return;
1828
- if (this.system.worldspace === false)
1829
- return;
1830
- if (this.mode === ParticleSystemInheritVelocityMode.Current) {
1831
- const factor = this.curve.evaluate(t01, lerpFactor);
1832
- this._temp.copy(this._velocity).multiplyScalar(factor);
1833
- vel.x += this._temp.x;
1834
- vel.y += this._temp.y;
1835
- vel.z += this._temp.z;
1836
- }
1837
- }
1838
- }
1839
- __decorate([
1840
- serializable()
1841
- ], InheritVelocityModule.prototype, "enabled", void 0);
1842
- __decorate([
1843
- serializable(MinMaxCurve)
1844
- ], InheritVelocityModule.prototype, "curve", void 0);
1845
- __decorate([
1846
- serializable()
1847
- ], InheritVelocityModule.prototype, "curveMultiplier", void 0);
1848
- __decorate([
1849
- serializable()
1850
- ], InheritVelocityModule.prototype, "mode", void 0);
1851
- export class SizeBySpeedModule {
1852
- enabled;
1853
- range;
1854
- separateAxes;
1855
- size;
1856
- sizeMultiplier;
1857
- x;
1858
- xMultiplier;
1859
- y;
1860
- yMultiplier;
1861
- z;
1862
- zMultiplier;
1863
- evaluate(vel, _t01, lerpFactor, size) {
1864
- const speed = vel.length();
1865
- const x = Mathf.remap(speed, this.range.x, this.range.y, 0, 1);
1866
- const factor = this.size.evaluate(x, lerpFactor);
1867
- // return size;
1868
- size.x *= factor;
1869
- size.y *= factor;
1870
- size.z *= factor;
1871
- return size;
1872
- }
1873
- }
1874
- __decorate([
1875
- serializable()
1876
- ], SizeBySpeedModule.prototype, "enabled", void 0);
1877
- __decorate([
1878
- serializable(Vector2)
1879
- ], SizeBySpeedModule.prototype, "range", void 0);
1880
- __decorate([
1881
- serializable()
1882
- ], SizeBySpeedModule.prototype, "separateAxes", void 0);
1883
- __decorate([
1884
- serializable(MinMaxCurve)
1885
- ], SizeBySpeedModule.prototype, "size", void 0);
1886
- __decorate([
1887
- serializable()
1888
- ], SizeBySpeedModule.prototype, "sizeMultiplier", void 0);
1889
- __decorate([
1890
- serializable(MinMaxCurve)
1891
- ], SizeBySpeedModule.prototype, "x", void 0);
1892
- __decorate([
1893
- serializable()
1894
- ], SizeBySpeedModule.prototype, "xMultiplier", void 0);
1895
- __decorate([
1896
- serializable(MinMaxCurve)
1897
- ], SizeBySpeedModule.prototype, "y", void 0);
1898
- __decorate([
1899
- serializable()
1900
- ], SizeBySpeedModule.prototype, "yMultiplier", void 0);
1901
- __decorate([
1902
- serializable(MinMaxCurve)
1903
- ], SizeBySpeedModule.prototype, "z", void 0);
1904
- __decorate([
1905
- serializable()
1906
- ], SizeBySpeedModule.prototype, "zMultiplier", void 0);
1907
- export class ColorBySpeedModule {
1908
- enabled;
1909
- range;
1910
- color;
1911
- evaluate(vel, lerpFactor, color) {
1912
- const speed = vel.length();
1913
- const x = Mathf.remap(speed, this.range.x, this.range.y, 0, 1);
1914
- const res = this.color.evaluate(x, lerpFactor);
1915
- color.x *= res.r;
1916
- color.y *= res.g;
1917
- color.z *= res.b;
1918
- if ("alpha" in res)
1919
- color.w *= res.alpha;
1920
- }
1921
- }
1922
- __decorate([
1923
- serializable()
1924
- ], ColorBySpeedModule.prototype, "enabled", void 0);
1925
- __decorate([
1926
- serializable(Vector2)
1927
- ], ColorBySpeedModule.prototype, "range", void 0);
1928
- __decorate([
1929
- serializable(MinMaxGradient)
1930
- ], ColorBySpeedModule.prototype, "color", void 0);
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { createNoise4D } from 'simplex-noise';
8
+ import { Euler, Matrix4, Quaternion, Triangle, Vector2, Vector3 } from "three";
9
+ import { isDevEnvironment } from '../../engine/debug/index.js';
10
+ import { Gizmos } from "../../engine/engine_gizmos.js";
11
+ import { Mathf } from "../../engine/engine_math.js";
12
+ import { serializable } from "../../engine/engine_serialization.js";
13
+ import { getTempVector, getWorldQuaternion } from '../../engine/engine_three_utils.js';
14
+ import { getParam } from "../../engine/engine_utils.js";
15
+ import { RGBAColor } from "../../engine/js-extensions/index.js";
16
+ import { AnimationCurve } from "../AnimationCurve.js";
17
+ import { MeshRenderer } from '../Renderer.js';
18
+ const debug = getParam("debugparticles");
19
+ export var ParticleSystemRenderMode;
20
+ (function (ParticleSystemRenderMode) {
21
+ ParticleSystemRenderMode[ParticleSystemRenderMode["Billboard"] = 0] = "Billboard";
22
+ ParticleSystemRenderMode[ParticleSystemRenderMode["Stretch"] = 1] = "Stretch";
23
+ ParticleSystemRenderMode[ParticleSystemRenderMode["HorizontalBillboard"] = 2] = "HorizontalBillboard";
24
+ ParticleSystemRenderMode[ParticleSystemRenderMode["VerticalBillboard"] = 3] = "VerticalBillboard";
25
+ ParticleSystemRenderMode[ParticleSystemRenderMode["Mesh"] = 4] = "Mesh";
26
+ // None = 5,
27
+ })(ParticleSystemRenderMode || (ParticleSystemRenderMode = {}));
28
+ export class Gradient {
29
+ alphaKeys = [];
30
+ colorKeys = [];
31
+ get duration() {
32
+ return 1;
33
+ }
34
+ evaluate(time, target) {
35
+ // target.r = this.colorKeys[0].color.r;
36
+ // target.g = this.colorKeys[0].color.g;
37
+ // target.b = this.colorKeys[0].color.b;
38
+ // target.alpha = this.alphaKeys[0].alpha;
39
+ // return;
40
+ let closestAlpha = undefined;
41
+ let closestAlphaIndex = 0;
42
+ let closestColor = null;
43
+ let closestColorIndex = 0;
44
+ for (let i = 0; i < this.alphaKeys.length; i++) {
45
+ const key = this.alphaKeys[i];
46
+ if (key.time < time || !closestAlpha) {
47
+ closestAlpha = key;
48
+ closestAlphaIndex = i;
49
+ }
50
+ }
51
+ for (let i = 0; i < this.colorKeys.length; i++) {
52
+ const key = this.colorKeys[i];
53
+ if (key.time < time || !closestColor) {
54
+ closestColor = key;
55
+ closestColorIndex = i;
56
+ }
57
+ }
58
+ if (closestColor) {
59
+ const hasNextColor = closestColorIndex + 1 < this.colorKeys.length;
60
+ if (hasNextColor) {
61
+ const nextColor = this.colorKeys[closestColorIndex + 1];
62
+ const t = Mathf.remap(time, closestColor.time, nextColor.time, 0, 1);
63
+ target.r = Mathf.lerp(closestColor.color.r, nextColor.color.r, t);
64
+ target.g = Mathf.lerp(closestColor.color.g, nextColor.color.g, t);
65
+ target.b = Mathf.lerp(closestColor.color.b, nextColor.color.b, t);
66
+ }
67
+ else {
68
+ target.r = closestColor.color.r;
69
+ target.g = closestColor.color.g;
70
+ target.b = closestColor.color.b;
71
+ }
72
+ }
73
+ if (closestAlpha) {
74
+ const hasNextAlpha = closestAlphaIndex + 1 < this.alphaKeys.length;
75
+ if (hasNextAlpha) {
76
+ const nextAlpha = this.alphaKeys[closestAlphaIndex + 1];
77
+ const t = Mathf.remap(time, closestAlpha.time, nextAlpha.time, 0, 1);
78
+ target.alpha = Mathf.lerp(closestAlpha.alpha, nextAlpha.alpha, t);
79
+ }
80
+ else {
81
+ target.alpha = closestAlpha.alpha;
82
+ }
83
+ }
84
+ return target;
85
+ }
86
+ }
87
+ __decorate([
88
+ serializable()
89
+ ], Gradient.prototype, "alphaKeys", void 0);
90
+ __decorate([
91
+ serializable()
92
+ ], Gradient.prototype, "colorKeys", void 0);
93
+ export var ParticleSystemCurveMode;
94
+ (function (ParticleSystemCurveMode) {
95
+ ParticleSystemCurveMode[ParticleSystemCurveMode["Constant"] = 0] = "Constant";
96
+ ParticleSystemCurveMode[ParticleSystemCurveMode["Curve"] = 1] = "Curve";
97
+ ParticleSystemCurveMode[ParticleSystemCurveMode["TwoCurves"] = 2] = "TwoCurves";
98
+ ParticleSystemCurveMode[ParticleSystemCurveMode["TwoConstants"] = 3] = "TwoConstants";
99
+ })(ParticleSystemCurveMode || (ParticleSystemCurveMode = {}));
100
+ export var ParticleSystemGradientMode;
101
+ (function (ParticleSystemGradientMode) {
102
+ ParticleSystemGradientMode[ParticleSystemGradientMode["Color"] = 0] = "Color";
103
+ ParticleSystemGradientMode[ParticleSystemGradientMode["Gradient"] = 1] = "Gradient";
104
+ ParticleSystemGradientMode[ParticleSystemGradientMode["TwoColors"] = 2] = "TwoColors";
105
+ ParticleSystemGradientMode[ParticleSystemGradientMode["TwoGradients"] = 3] = "TwoGradients";
106
+ ParticleSystemGradientMode[ParticleSystemGradientMode["RandomColor"] = 4] = "RandomColor";
107
+ })(ParticleSystemGradientMode || (ParticleSystemGradientMode = {}));
108
+ export var ParticleSystemSimulationSpace;
109
+ (function (ParticleSystemSimulationSpace) {
110
+ ParticleSystemSimulationSpace[ParticleSystemSimulationSpace["Local"] = 0] = "Local";
111
+ ParticleSystemSimulationSpace[ParticleSystemSimulationSpace["World"] = 1] = "World";
112
+ ParticleSystemSimulationSpace[ParticleSystemSimulationSpace["Custom"] = 2] = "Custom";
113
+ })(ParticleSystemSimulationSpace || (ParticleSystemSimulationSpace = {}));
114
+ export var ParticleSystemShapeType;
115
+ (function (ParticleSystemShapeType) {
116
+ ParticleSystemShapeType[ParticleSystemShapeType["Sphere"] = 0] = "Sphere";
117
+ ParticleSystemShapeType[ParticleSystemShapeType["SphereShell"] = 1] = "SphereShell";
118
+ ParticleSystemShapeType[ParticleSystemShapeType["Hemisphere"] = 2] = "Hemisphere";
119
+ ParticleSystemShapeType[ParticleSystemShapeType["HemisphereShell"] = 3] = "HemisphereShell";
120
+ ParticleSystemShapeType[ParticleSystemShapeType["Cone"] = 4] = "Cone";
121
+ ParticleSystemShapeType[ParticleSystemShapeType["Box"] = 5] = "Box";
122
+ ParticleSystemShapeType[ParticleSystemShapeType["Mesh"] = 6] = "Mesh";
123
+ ParticleSystemShapeType[ParticleSystemShapeType["ConeShell"] = 7] = "ConeShell";
124
+ ParticleSystemShapeType[ParticleSystemShapeType["ConeVolume"] = 8] = "ConeVolume";
125
+ ParticleSystemShapeType[ParticleSystemShapeType["ConeVolumeShell"] = 9] = "ConeVolumeShell";
126
+ ParticleSystemShapeType[ParticleSystemShapeType["Circle"] = 10] = "Circle";
127
+ ParticleSystemShapeType[ParticleSystemShapeType["CircleEdge"] = 11] = "CircleEdge";
128
+ ParticleSystemShapeType[ParticleSystemShapeType["SingleSidedEdge"] = 12] = "SingleSidedEdge";
129
+ ParticleSystemShapeType[ParticleSystemShapeType["MeshRenderer"] = 13] = "MeshRenderer";
130
+ ParticleSystemShapeType[ParticleSystemShapeType["SkinnedMeshRenderer"] = 14] = "SkinnedMeshRenderer";
131
+ ParticleSystemShapeType[ParticleSystemShapeType["BoxShell"] = 15] = "BoxShell";
132
+ ParticleSystemShapeType[ParticleSystemShapeType["BoxEdge"] = 16] = "BoxEdge";
133
+ ParticleSystemShapeType[ParticleSystemShapeType["Donut"] = 17] = "Donut";
134
+ ParticleSystemShapeType[ParticleSystemShapeType["Rectangle"] = 18] = "Rectangle";
135
+ ParticleSystemShapeType[ParticleSystemShapeType["Sprite"] = 19] = "Sprite";
136
+ ParticleSystemShapeType[ParticleSystemShapeType["SpriteRenderer"] = 20] = "SpriteRenderer";
137
+ })(ParticleSystemShapeType || (ParticleSystemShapeType = {}));
138
+ export var ParticleSystemShapeMultiModeValue;
139
+ (function (ParticleSystemShapeMultiModeValue) {
140
+ ParticleSystemShapeMultiModeValue[ParticleSystemShapeMultiModeValue["Random"] = 0] = "Random";
141
+ ParticleSystemShapeMultiModeValue[ParticleSystemShapeMultiModeValue["Loop"] = 1] = "Loop";
142
+ ParticleSystemShapeMultiModeValue[ParticleSystemShapeMultiModeValue["PingPong"] = 2] = "PingPong";
143
+ ParticleSystemShapeMultiModeValue[ParticleSystemShapeMultiModeValue["BurstSpread"] = 3] = "BurstSpread";
144
+ })(ParticleSystemShapeMultiModeValue || (ParticleSystemShapeMultiModeValue = {}));
145
+ export class MinMaxCurve {
146
+ static constant(val) {
147
+ const obj = new MinMaxCurve();
148
+ obj.setConstant(val);
149
+ return obj;
150
+ }
151
+ static betweenTwoConstants(min, max) {
152
+ const obj = new MinMaxCurve();
153
+ obj.setMinMaxConstant(min, max);
154
+ return obj;
155
+ }
156
+ static curve(curve, multiplier = 1) {
157
+ const obj = new MinMaxCurve();
158
+ obj.setCurve(curve, multiplier);
159
+ return obj;
160
+ }
161
+ setConstant(val) {
162
+ this.mode = ParticleSystemCurveMode.Constant;
163
+ this.constant = val;
164
+ }
165
+ setMinMaxConstant(min, max) {
166
+ this.mode = ParticleSystemCurveMode.TwoConstants;
167
+ this.constantMin = min;
168
+ this.constantMax = max;
169
+ }
170
+ setCurve(curve, multiplier = 1) {
171
+ this.mode = ParticleSystemCurveMode.Curve;
172
+ this.curve = curve;
173
+ this.curveMultiplier = multiplier;
174
+ }
175
+ mode = "Constant";
176
+ constant;
177
+ constantMin;
178
+ constantMax;
179
+ curve;
180
+ curveMin;
181
+ curveMax;
182
+ curveMultiplier;
183
+ clone() {
184
+ const clone = new MinMaxCurve();
185
+ clone.mode = this.mode;
186
+ clone.constant = this.constant;
187
+ clone.constantMin = this.constantMin;
188
+ clone.constantMax = this.constantMax;
189
+ clone.curve = this.curve?.clone();
190
+ clone.curveMin = this.curveMin?.clone();
191
+ clone.curveMax = this.curveMax?.clone();
192
+ clone.curveMultiplier = this.curveMultiplier;
193
+ return clone;
194
+ }
195
+ evaluate(t01, lerpFactor) {
196
+ const t = lerpFactor === undefined ? Math.random() : lerpFactor;
197
+ switch (this.mode) {
198
+ case ParticleSystemCurveMode.Constant:
199
+ case "Constant":
200
+ return this.constant;
201
+ case ParticleSystemCurveMode.Curve:
202
+ case "Curve":
203
+ t01 = Mathf.clamp01(t01);
204
+ return this.curve.evaluate(t01) * this.curveMultiplier;
205
+ case ParticleSystemCurveMode.TwoCurves:
206
+ case "TwoCurves":
207
+ const t1 = t01 * this.curveMin.duration;
208
+ const t2 = t01 * this.curveMax.duration;
209
+ return Mathf.lerp(this.curveMin.evaluate(t1), this.curveMax.evaluate(t2), t % 1) * this.curveMultiplier;
210
+ case ParticleSystemCurveMode.TwoConstants:
211
+ case "TwoConstants":
212
+ return Mathf.lerp(this.constantMin, this.constantMax, t % 1);
213
+ default:
214
+ this.curveMax.evaluate(t01) * this.curveMultiplier;
215
+ break;
216
+ }
217
+ return 0;
218
+ }
219
+ getMax() {
220
+ switch (this.mode) {
221
+ case ParticleSystemCurveMode.Constant:
222
+ case "Constant":
223
+ return this.constant;
224
+ case ParticleSystemCurveMode.Curve:
225
+ case "Curve":
226
+ return this.getMaxFromCurve(this.curve) * this.curveMultiplier;
227
+ case ParticleSystemCurveMode.TwoCurves:
228
+ case "TwoCurves":
229
+ return Math.max(this.getMaxFromCurve(this.curveMin), this.getMaxFromCurve(this.curveMax)) * this.curveMultiplier;
230
+ case ParticleSystemCurveMode.TwoConstants:
231
+ case "TwoConstants":
232
+ return Math.max(this.constantMin, this.constantMax);
233
+ default:
234
+ return 0;
235
+ }
236
+ }
237
+ getMaxFromCurve(curve) {
238
+ if (!curve)
239
+ return 0;
240
+ let maxNumber = Number.MIN_VALUE;
241
+ for (let i = 0; i < curve.keys.length; i++) {
242
+ const key = curve.keys[i];
243
+ if (key.value > maxNumber) {
244
+ maxNumber = key.value;
245
+ }
246
+ }
247
+ return maxNumber;
248
+ }
249
+ }
250
+ __decorate([
251
+ serializable()
252
+ ], MinMaxCurve.prototype, "mode", void 0);
253
+ __decorate([
254
+ serializable()
255
+ ], MinMaxCurve.prototype, "constant", void 0);
256
+ __decorate([
257
+ serializable()
258
+ ], MinMaxCurve.prototype, "constantMin", void 0);
259
+ __decorate([
260
+ serializable()
261
+ ], MinMaxCurve.prototype, "constantMax", void 0);
262
+ __decorate([
263
+ serializable(AnimationCurve)
264
+ ], MinMaxCurve.prototype, "curve", void 0);
265
+ __decorate([
266
+ serializable(AnimationCurve)
267
+ ], MinMaxCurve.prototype, "curveMin", void 0);
268
+ __decorate([
269
+ serializable(AnimationCurve)
270
+ ], MinMaxCurve.prototype, "curveMax", void 0);
271
+ __decorate([
272
+ serializable()
273
+ ], MinMaxCurve.prototype, "curveMultiplier", void 0);
274
+ export class MinMaxGradient {
275
+ static constant(color) {
276
+ const obj = new MinMaxGradient();
277
+ obj.constant(color);
278
+ return obj;
279
+ }
280
+ static betweenTwoColors(color1, color2) {
281
+ const obj = new MinMaxGradient();
282
+ obj.betweenTwoColors(color1, color2);
283
+ return obj;
284
+ }
285
+ constant(color) {
286
+ this.mode = ParticleSystemGradientMode.Color;
287
+ this.color = color;
288
+ return this;
289
+ }
290
+ betweenTwoColors(color1, color2) {
291
+ this.mode = ParticleSystemGradientMode.TwoColors;
292
+ this.colorMin = color1;
293
+ this.colorMax = color2;
294
+ return this;
295
+ }
296
+ /**
297
+ * The mode of the gradient, which can be Color, Gradient, TwoColors or TwoGradients.
298
+ */
299
+ mode = ParticleSystemGradientMode.Color;
300
+ color;
301
+ colorMin;
302
+ colorMax;
303
+ gradient;
304
+ gradientMin;
305
+ gradientMax;
306
+ static _temp = new RGBAColor(0, 0, 0, 1);
307
+ static _temp2 = new RGBAColor(0, 0, 0, 1);
308
+ evaluate(t01, lerpFactor) {
309
+ const t = lerpFactor === undefined ? Math.random() : lerpFactor;
310
+ switch (this.mode) {
311
+ case ParticleSystemGradientMode.Color:
312
+ case "Color":
313
+ return this.color;
314
+ case ParticleSystemGradientMode.Gradient:
315
+ case "Gradient":
316
+ this.gradient.evaluate(t01, MinMaxGradient._temp);
317
+ return MinMaxGradient._temp;
318
+ case ParticleSystemGradientMode.TwoColors:
319
+ case "TwoColors":
320
+ const col1 = MinMaxGradient._temp.lerpColors(this.colorMin, this.colorMax, t);
321
+ return col1;
322
+ case ParticleSystemGradientMode.TwoGradients:
323
+ case "TwoGradients":
324
+ this.gradientMin.evaluate(t01, MinMaxGradient._temp);
325
+ this.gradientMax.evaluate(t01, MinMaxGradient._temp2);
326
+ return MinMaxGradient._temp.lerp(MinMaxGradient._temp2, t);
327
+ case ParticleSystemGradientMode.RandomColor:
328
+ case "RandomColor":
329
+ const random_t = Math.random();
330
+ this.gradientMin.evaluate(t01, MinMaxGradient._temp);
331
+ this.gradientMax.evaluate(t01, MinMaxGradient._temp2);
332
+ return MinMaxGradient._temp.lerp(MinMaxGradient._temp2, random_t);
333
+ }
334
+ // console.warn("Not implemented", ParticleSystemGradientMode[this.mode]);
335
+ MinMaxGradient._temp.set(0xffffff);
336
+ MinMaxGradient._temp.alpha = 1;
337
+ return MinMaxGradient._temp;
338
+ }
339
+ }
340
+ __decorate([
341
+ serializable()
342
+ ], MinMaxGradient.prototype, "mode", void 0);
343
+ __decorate([
344
+ serializable(RGBAColor)
345
+ ], MinMaxGradient.prototype, "color", void 0);
346
+ __decorate([
347
+ serializable(RGBAColor)
348
+ ], MinMaxGradient.prototype, "colorMin", void 0);
349
+ __decorate([
350
+ serializable(RGBAColor)
351
+ ], MinMaxGradient.prototype, "colorMax", void 0);
352
+ __decorate([
353
+ serializable(Gradient)
354
+ ], MinMaxGradient.prototype, "gradient", void 0);
355
+ __decorate([
356
+ serializable(Gradient)
357
+ ], MinMaxGradient.prototype, "gradientMin", void 0);
358
+ __decorate([
359
+ serializable(Gradient)
360
+ ], MinMaxGradient.prototype, "gradientMax", void 0);
361
+ export var ParticleSystemScalingMode;
362
+ (function (ParticleSystemScalingMode) {
363
+ ParticleSystemScalingMode[ParticleSystemScalingMode["Hierarchy"] = 0] = "Hierarchy";
364
+ ParticleSystemScalingMode[ParticleSystemScalingMode["Local"] = 1] = "Local";
365
+ ParticleSystemScalingMode[ParticleSystemScalingMode["Shape"] = 2] = "Shape";
366
+ })(ParticleSystemScalingMode || (ParticleSystemScalingMode = {}));
367
+ export class MainModule {
368
+ cullingMode;
369
+ duration;
370
+ emitterVelocityMode;
371
+ flipRotation;
372
+ gravityModifier;
373
+ gravityModifierMultiplier;
374
+ loop;
375
+ maxParticles;
376
+ playOnAwake;
377
+ prewarm;
378
+ ringBufferLoopRange;
379
+ ringBufferMode;
380
+ scalingMode;
381
+ simulationSpace;
382
+ simulationSpeed;
383
+ startColor;
384
+ startDelay;
385
+ startDelayMultiplier;
386
+ startLifetime;
387
+ startLifetimeMultiplier;
388
+ startRotation;
389
+ startRotationMultiplier;
390
+ startRotation3D;
391
+ startRotationX;
392
+ startRotationXMultiplier;
393
+ startRotationY;
394
+ startRotationYMultiplier;
395
+ startRotationZ;
396
+ startRotationZMultiplier;
397
+ startSize;
398
+ startSize3D;
399
+ startSizeMultiplier;
400
+ startSizeX;
401
+ startSizeXMultiplier;
402
+ startSizeY;
403
+ startSizeYMultiplier;
404
+ startSizeZ;
405
+ startSizeZMultiplier;
406
+ startSpeed;
407
+ startSpeedMultiplier;
408
+ stopAction;
409
+ useUnscaledTime;
410
+ }
411
+ __decorate([
412
+ serializable(MinMaxCurve)
413
+ ], MainModule.prototype, "gravityModifier", void 0);
414
+ __decorate([
415
+ serializable(MinMaxGradient)
416
+ ], MainModule.prototype, "startColor", void 0);
417
+ __decorate([
418
+ serializable(MinMaxCurve)
419
+ ], MainModule.prototype, "startDelay", void 0);
420
+ __decorate([
421
+ serializable(MinMaxCurve)
422
+ ], MainModule.prototype, "startLifetime", void 0);
423
+ __decorate([
424
+ serializable(MinMaxCurve)
425
+ ], MainModule.prototype, "startRotation", void 0);
426
+ __decorate([
427
+ serializable(MinMaxCurve)
428
+ ], MainModule.prototype, "startRotationX", void 0);
429
+ __decorate([
430
+ serializable(MinMaxCurve)
431
+ ], MainModule.prototype, "startRotationY", void 0);
432
+ __decorate([
433
+ serializable(MinMaxCurve)
434
+ ], MainModule.prototype, "startRotationZ", void 0);
435
+ __decorate([
436
+ serializable(MinMaxCurve)
437
+ ], MainModule.prototype, "startSize", void 0);
438
+ __decorate([
439
+ serializable(MinMaxCurve)
440
+ ], MainModule.prototype, "startSizeX", void 0);
441
+ __decorate([
442
+ serializable(MinMaxCurve)
443
+ ], MainModule.prototype, "startSizeY", void 0);
444
+ __decorate([
445
+ serializable(MinMaxCurve)
446
+ ], MainModule.prototype, "startSizeZ", void 0);
447
+ __decorate([
448
+ serializable(MinMaxCurve)
449
+ ], MainModule.prototype, "startSpeed", void 0);
450
+ export class ParticleBurst {
451
+ cycleCount;
452
+ maxCount;
453
+ minCount;
454
+ probability;
455
+ repeatInterval;
456
+ time;
457
+ count;
458
+ _performed = 0;
459
+ reset() {
460
+ this._performed = 0;
461
+ }
462
+ run(time) {
463
+ if (time <= this.time) {
464
+ return 0;
465
+ }
466
+ let amount = 0;
467
+ if (this.cycleCount === 0 || this._performed < this.cycleCount) {
468
+ const nextTime = this.time + this.repeatInterval * this._performed;
469
+ if (time >= nextTime) {
470
+ this._performed += 1;
471
+ if (Math.random() < this.probability) {
472
+ switch (this.count.mode) {
473
+ case ParticleSystemCurveMode.Constant:
474
+ amount = this.count.constant;
475
+ break;
476
+ case ParticleSystemCurveMode.TwoConstants:
477
+ amount = Mathf.lerp(this.count.constantMin, this.count.constantMax, Math.random());
478
+ break;
479
+ case ParticleSystemCurveMode.Curve:
480
+ amount = this.count.curve.evaluate(Math.random());
481
+ break;
482
+ case ParticleSystemCurveMode.TwoCurves:
483
+ const t = Math.random();
484
+ amount = Mathf.lerp(this.count.curveMin.evaluate(t), this.count.curveMax.evaluate(t), Math.random());
485
+ break;
486
+ }
487
+ }
488
+ }
489
+ }
490
+ return amount;
491
+ }
492
+ }
493
+ export class EmissionModule {
494
+ enabled;
495
+ get burstCount() {
496
+ return this.bursts?.length ?? 0;
497
+ }
498
+ bursts;
499
+ rateOverTime;
500
+ rateOverTimeMultiplier;
501
+ rateOverDistance;
502
+ rateOverDistanceMultiplier;
503
+ /** set from system */
504
+ system;
505
+ reset() {
506
+ this.bursts?.forEach(b => b.reset());
507
+ }
508
+ getBurst() {
509
+ let amount = 0;
510
+ if (this.burstCount > 0) {
511
+ for (let i = 0; i < this.burstCount; i++) {
512
+ const burst = this.bursts[i];
513
+ if (this.system.main.loop && burst.time >= this.system.time) {
514
+ burst.reset();
515
+ }
516
+ amount += Math.round(burst.run(this.system.time));
517
+ }
518
+ }
519
+ return amount;
520
+ }
521
+ }
522
+ __decorate([
523
+ serializable()
524
+ ], EmissionModule.prototype, "enabled", void 0);
525
+ __decorate([
526
+ serializable()
527
+ ], EmissionModule.prototype, "bursts", void 0);
528
+ __decorate([
529
+ serializable(MinMaxCurve)
530
+ ], EmissionModule.prototype, "rateOverTime", void 0);
531
+ __decorate([
532
+ serializable()
533
+ ], EmissionModule.prototype, "rateOverTimeMultiplier", void 0);
534
+ __decorate([
535
+ serializable(MinMaxCurve)
536
+ ], EmissionModule.prototype, "rateOverDistance", void 0);
537
+ __decorate([
538
+ serializable()
539
+ ], EmissionModule.prototype, "rateOverDistanceMultiplier", void 0);
540
+ export class ColorOverLifetimeModule {
541
+ enabled;
542
+ color;
543
+ }
544
+ __decorate([
545
+ serializable(MinMaxGradient)
546
+ ], ColorOverLifetimeModule.prototype, "color", void 0);
547
+ export class SizeOverLifetimeModule {
548
+ enabled;
549
+ separateAxes;
550
+ size;
551
+ sizeMultiplier;
552
+ x;
553
+ xMultiplier;
554
+ y;
555
+ yMultiplier;
556
+ z;
557
+ zMultiplier;
558
+ _time = 0;
559
+ _temp = new Vector3();
560
+ evaluate(t01, target, lerpFactor) {
561
+ if (!target)
562
+ target = this._temp;
563
+ if (!this.enabled) {
564
+ target.x = target.y = target.z = 1;
565
+ return target;
566
+ }
567
+ if (!this.separateAxes) {
568
+ const scale = this.size.evaluate(t01, lerpFactor) * this.sizeMultiplier;
569
+ target.x = scale;
570
+ // target.y = scale;
571
+ // target.z = scale;
572
+ }
573
+ else {
574
+ target.x = this.x.evaluate(t01, lerpFactor) * this.xMultiplier;
575
+ target.y = this.y.evaluate(t01, lerpFactor) * this.yMultiplier;
576
+ target.z = this.z.evaluate(t01, lerpFactor) * this.zMultiplier;
577
+ }
578
+ return target;
579
+ }
580
+ }
581
+ __decorate([
582
+ serializable(MinMaxCurve)
583
+ ], SizeOverLifetimeModule.prototype, "size", void 0);
584
+ __decorate([
585
+ serializable(MinMaxCurve)
586
+ ], SizeOverLifetimeModule.prototype, "x", void 0);
587
+ __decorate([
588
+ serializable(MinMaxCurve)
589
+ ], SizeOverLifetimeModule.prototype, "y", void 0);
590
+ __decorate([
591
+ serializable(MinMaxCurve)
592
+ ], SizeOverLifetimeModule.prototype, "z", void 0);
593
+ export var ParticleSystemMeshShapeType;
594
+ (function (ParticleSystemMeshShapeType) {
595
+ ParticleSystemMeshShapeType[ParticleSystemMeshShapeType["Vertex"] = 0] = "Vertex";
596
+ ParticleSystemMeshShapeType[ParticleSystemMeshShapeType["Edge"] = 1] = "Edge";
597
+ ParticleSystemMeshShapeType[ParticleSystemMeshShapeType["Triangle"] = 2] = "Triangle";
598
+ })(ParticleSystemMeshShapeType || (ParticleSystemMeshShapeType = {}));
599
+ export class ShapeModule {
600
+ // Emittershape start
601
+ get type() {
602
+ return ParticleSystemShapeType[this.shapeType];
603
+ }
604
+ initialize(particle) {
605
+ this.onInitialize(particle);
606
+ particle.position.x = this._vector.x;
607
+ particle.position.y = this._vector.y;
608
+ particle.position.z = this._vector.z;
609
+ }
610
+ toJSON() {
611
+ return this;
612
+ }
613
+ clone() {
614
+ return new ShapeModule();
615
+ }
616
+ // EmitterShape end
617
+ shapeType = ParticleSystemShapeType.Box;
618
+ enabled = true;
619
+ alignToDirection = false;
620
+ angle = 0;
621
+ arc = 360;
622
+ arcSpread;
623
+ arcSpeedMultiplier;
624
+ arcMode;
625
+ boxThickness;
626
+ position;
627
+ rotation;
628
+ _rotation = new Euler();
629
+ scale;
630
+ radius;
631
+ radiusThickness;
632
+ sphericalDirectionAmount;
633
+ randomDirectionAmount;
634
+ randomPositionAmount;
635
+ /** Controls if particles should spawn off vertices, faces or edges. `shapeType` must be set to `MeshRenderer` */
636
+ meshShapeType;
637
+ /** When assigned and `shapeType` is set to `MeshRenderer` particles will spawn using a mesh in the scene.
638
+ * Use the `meshShapeType` to choose if particles should be spawned from vertices, faces or edges
639
+ * To re-assign use the `setMesh` function to cache the mesh and geometry
640
+ * */
641
+ meshRenderer;
642
+ _meshObj;
643
+ _meshGeometry;
644
+ setMesh(mesh) {
645
+ this.meshRenderer = mesh;
646
+ if (mesh) {
647
+ this._meshObj = mesh.sharedMeshes[Math.floor(Math.random() * mesh.sharedMeshes.length)];
648
+ this._meshGeometry = this._meshObj.geometry;
649
+ }
650
+ else {
651
+ this._meshObj = undefined;
652
+ this._meshGeometry = undefined;
653
+ }
654
+ }
655
+ system;
656
+ _space;
657
+ _worldSpaceMatrix = new Matrix4();
658
+ _worldSpaceMatrixInverse = new Matrix4();
659
+ constructor() {
660
+ if (debug)
661
+ console.log(this);
662
+ }
663
+ update(_system, _delta) {
664
+ /* this is called by quarks */
665
+ }
666
+ onUpdate(system, _context, simulationSpace, obj) {
667
+ this.system = system;
668
+ this._space = simulationSpace;
669
+ if (simulationSpace === ParticleSystemSimulationSpace.World) {
670
+ this._worldSpaceMatrix.copy(obj.matrixWorld);
671
+ // set scale to 1
672
+ this._worldSpaceMatrix.elements[0] = 1;
673
+ this._worldSpaceMatrix.elements[5] = 1;
674
+ this._worldSpaceMatrix.elements[10] = 1;
675
+ this._worldSpaceMatrixInverse.copy(this._worldSpaceMatrix).invert();
676
+ }
677
+ }
678
+ applyRotation(vector) {
679
+ const isRotated = this.rotation.x !== 0 || this.rotation.y !== 0 || this.rotation.z !== 0;
680
+ if (isRotated) {
681
+ // console.log(this._rotation);
682
+ // TODO: we need to convert this to threejs euler
683
+ this._rotation.x = Mathf.toRadians(this.rotation.x);
684
+ this._rotation.y = Mathf.toRadians(this.rotation.y);
685
+ this._rotation.z = Mathf.toRadians(this.rotation.z);
686
+ this._rotation.order = 'ZYX';
687
+ vector.applyEuler(this._rotation);
688
+ // this._quat.setFromEuler(this._rotation);
689
+ // // this._quat.invert();
690
+ // this._quat.x *= -1;
691
+ // // this._quat.y *= -1;
692
+ // // this._quat.z *= -1;
693
+ // this._quat.w *= -1;
694
+ // vector.applyQuaternion(this._quat);
695
+ }
696
+ return isRotated;
697
+ }
698
+ /** nebula implementations: */
699
+ /** initializer implementation */
700
+ _vector = new Vector3(0, 0, 0);
701
+ _temp = new Vector3(0, 0, 0);
702
+ _triangle = new Triangle();
703
+ onInitialize(particle) {
704
+ this._vector.set(0, 0, 0);
705
+ // remove mesh from particle in case it got destroyed (we dont want to keep a reference to a destroyed mesh in the particle system)
706
+ particle["mesh"] = undefined;
707
+ particle["mesh_geometry"] = undefined;
708
+ const pos = this._temp.copy(this.position);
709
+ const isWorldSpace = this._space === ParticleSystemSimulationSpace.World;
710
+ if (isWorldSpace) {
711
+ pos.applyQuaternion(this.system.worldQuaternion);
712
+ }
713
+ let radius = this.radius;
714
+ if (isWorldSpace)
715
+ radius *= this.system.worldScale.x;
716
+ if (this.enabled) {
717
+ switch (this.shapeType) {
718
+ case ParticleSystemShapeType.Box:
719
+ if (debug)
720
+ Gizmos.DrawWireBox(this.position, this.scale, 0xdddddd, 1);
721
+ this._vector.x = Math.random() * this.scale.x - this.scale.x / 2;
722
+ this._vector.y = Math.random() * this.scale.y - this.scale.y / 2;
723
+ this._vector.z = Math.random() * this.scale.z - this.scale.z / 2;
724
+ this._vector.add(pos);
725
+ break;
726
+ case ParticleSystemShapeType.Cone:
727
+ this.randomConePoint(this.position, this.angle, radius, this.radiusThickness, this.arc, this.arcMode, this._vector);
728
+ break;
729
+ case ParticleSystemShapeType.Sphere:
730
+ this.randomSpherePoint(this.position, radius, this.radiusThickness, this.arc, this._vector);
731
+ break;
732
+ case ParticleSystemShapeType.Circle:
733
+ this.randomCirclePoint(this.position, radius, this.radiusThickness, this.arc, this._vector);
734
+ break;
735
+ case ParticleSystemShapeType.MeshRenderer:
736
+ const renderer = this.meshRenderer;
737
+ if (renderer?.destroyed == false)
738
+ this.setMesh(renderer);
739
+ const mesh = particle["mesh"] = this._meshObj;
740
+ const geometry = particle["mesh_geometry"] = this._meshGeometry;
741
+ if (mesh && geometry) {
742
+ switch (this.meshShapeType) {
743
+ case ParticleSystemMeshShapeType.Vertex:
744
+ {
745
+ const vertices = geometry.getAttribute("position");
746
+ const index = Math.floor(Math.random() * vertices.count);
747
+ this._vector.fromBufferAttribute(vertices, index);
748
+ this._vector.applyMatrix4(mesh.matrixWorld);
749
+ particle["mesh_normal"] = index;
750
+ }
751
+ break;
752
+ case ParticleSystemMeshShapeType.Edge:
753
+ break;
754
+ case ParticleSystemMeshShapeType.Triangle:
755
+ {
756
+ const faces = geometry.index;
757
+ if (faces) {
758
+ let u = Math.random();
759
+ let v = Math.random();
760
+ if (u + v > 1) {
761
+ u = 1 - u;
762
+ v = 1 - v;
763
+ }
764
+ const faceIndex = Math.floor(Math.random() * (faces.count / 3));
765
+ let i0 = faceIndex * 3;
766
+ let i1 = faceIndex * 3 + 1;
767
+ let i2 = faceIndex * 3 + 2;
768
+ i0 = faces.getX(i0);
769
+ i1 = faces.getX(i1);
770
+ i2 = faces.getX(i2);
771
+ const positionAttribute = geometry.getAttribute("position");
772
+ this._triangle.a.fromBufferAttribute(positionAttribute, i0);
773
+ this._triangle.b.fromBufferAttribute(positionAttribute, i1);
774
+ this._triangle.c.fromBufferAttribute(positionAttribute, i2);
775
+ this._vector
776
+ .set(0, 0, 0)
777
+ .addScaledVector(this._triangle.a, u)
778
+ .addScaledVector(this._triangle.b, v)
779
+ .addScaledVector(this._triangle.c, 1 - (u + v));
780
+ this._vector.applyMatrix4(mesh.matrixWorld);
781
+ particle["mesh_normal"] = faceIndex;
782
+ }
783
+ }
784
+ break;
785
+ }
786
+ }
787
+ break;
788
+ default:
789
+ this._vector.set(0, 0, 0);
790
+ if (isDevEnvironment() && !globalThis["__particlesystem_shapetype_unsupported"]) {
791
+ console.warn("ParticleSystem ShapeType is not supported:", ParticleSystemShapeType[this.shapeType]);
792
+ globalThis["__particlesystem_shapetype_unsupported"] = true;
793
+ }
794
+ break;
795
+ // case ParticleSystemShapeType.Hemisphere:
796
+ // randomSpherePoint(this.position.x, this.position.y, this.position.z, this.radius, this.radiusThickness, 180, this._vector);
797
+ // break;
798
+ }
799
+ this.randomizePosition(this._vector, this.randomPositionAmount);
800
+ }
801
+ this.applyRotation(this._vector);
802
+ if (isWorldSpace) {
803
+ this._vector.applyQuaternion(this.system.worldQuaternion);
804
+ this._vector.add(this.system.worldPos);
805
+ }
806
+ if (debug) {
807
+ Gizmos.DrawSphere(this._vector, .03, 0xff0000, .5, true);
808
+ }
809
+ }
810
+ _dir = new Vector3();
811
+ getDirection(particle, pos) {
812
+ if (!this.enabled) {
813
+ this._dir.set(0, 0, 1);
814
+ return this._dir;
815
+ }
816
+ switch (this.shapeType) {
817
+ case ParticleSystemShapeType.Box:
818
+ this._dir.set(0, 0, 1);
819
+ break;
820
+ case ParticleSystemShapeType.Cone:
821
+ this._dir.set(0, 0, 1);
822
+ // apply cone angle
823
+ // this._dir.applyAxisAngle(new Vector3(0, 1, 0), Mathf.toRadians(this.angle));
824
+ break;
825
+ case ParticleSystemShapeType.Circle:
826
+ case ParticleSystemShapeType.Sphere:
827
+ const rx = pos.x;
828
+ const ry = pos.y;
829
+ const rz = pos.z;
830
+ this._dir.set(rx, ry, rz);
831
+ if (this.system?.worldspace)
832
+ this._dir.sub(this.system.worldPos);
833
+ else
834
+ this._dir.sub(this.position);
835
+ break;
836
+ case ParticleSystemShapeType.MeshRenderer:
837
+ const mesh = particle["mesh"];
838
+ const geometry = particle["mesh_geometry"];
839
+ if (mesh && geometry) {
840
+ switch (this.meshShapeType) {
841
+ case ParticleSystemMeshShapeType.Vertex:
842
+ {
843
+ const normal = geometry.getAttribute("normal");
844
+ const index = particle["mesh_normal"];
845
+ this._dir.fromBufferAttribute(normal, index);
846
+ }
847
+ break;
848
+ case ParticleSystemMeshShapeType.Edge:
849
+ break;
850
+ case ParticleSystemMeshShapeType.Triangle:
851
+ {
852
+ const faces = geometry.index;
853
+ if (faces) {
854
+ const index = particle["mesh_normal"];
855
+ const i0 = faces.getX(index * 3);
856
+ const i1 = faces.getX(index * 3 + 1);
857
+ const i2 = faces.getX(index * 3 + 2);
858
+ const positionAttribute = geometry.getAttribute("position");
859
+ const a = getTempVector();
860
+ const b = getTempVector();
861
+ const c = getTempVector();
862
+ a.fromBufferAttribute(positionAttribute, i0);
863
+ b.fromBufferAttribute(positionAttribute, i1);
864
+ c.fromBufferAttribute(positionAttribute, i2);
865
+ a.sub(b);
866
+ c.sub(b);
867
+ a.cross(c);
868
+ this._dir.copy(a).multiplyScalar(-1);
869
+ const rot = getWorldQuaternion(mesh);
870
+ this._dir.applyQuaternion(rot);
871
+ }
872
+ }
873
+ break;
874
+ }
875
+ }
876
+ break;
877
+ default:
878
+ this._dir.set(0, 0, 1);
879
+ break;
880
+ }
881
+ if (this._space === ParticleSystemSimulationSpace.World) {
882
+ this._dir.applyQuaternion(this.system.worldQuaternion);
883
+ }
884
+ this.applyRotation(this._dir);
885
+ this._dir.normalize();
886
+ this.spherizeDirection(this._dir, this.sphericalDirectionAmount);
887
+ this.randomizeDirection(this._dir, this.randomDirectionAmount);
888
+ if (debug) {
889
+ Gizmos.DrawSphere(pos, .01, 0x883300, .5, true);
890
+ Gizmos.DrawDirection(pos, this._dir, 0x883300, .5, true);
891
+ }
892
+ return this._dir;
893
+ }
894
+ static _randomQuat = new Quaternion();
895
+ static _tempVec = new Vector3();
896
+ randomizePosition(pos, amount) {
897
+ if (amount <= 0)
898
+ return;
899
+ const rp = ShapeModule._tempVec;
900
+ rp.set(Math.random() * 2 - 1, Math.random() * 2 - 1, Math.random() * 2 - 1);
901
+ rp.x *= amount * this.scale.x;
902
+ rp.y *= amount * this.scale.y;
903
+ rp.z *= amount * this.scale.z;
904
+ pos.add(rp);
905
+ }
906
+ randomizeDirection(direction, amount) {
907
+ if (amount === 0)
908
+ return;
909
+ const randomQuat = ShapeModule._randomQuat;
910
+ const tempVec = ShapeModule._tempVec;
911
+ tempVec.set(Math.random() - .5, Math.random() - .5, Math.random() - .5).normalize();
912
+ randomQuat.setFromAxisAngle(tempVec, amount * Math.random() * Math.PI);
913
+ direction.applyQuaternion(randomQuat);
914
+ }
915
+ spherizeDirection(dir, amount) {
916
+ if (amount === 0)
917
+ return;
918
+ const theta = Math.random() * Math.PI * 2;
919
+ const phi = Math.acos(1 - Math.random() * 2);
920
+ const x = Math.sin(phi) * Math.cos(theta);
921
+ const y = Math.sin(phi) * Math.sin(theta);
922
+ const z = Math.cos(phi);
923
+ const v = new Vector3(x, y, z);
924
+ dir.lerp(v, amount);
925
+ }
926
+ randomSpherePoint(pos, radius, thickness, arc, vec) {
927
+ const u = Math.random();
928
+ const v = Math.random();
929
+ const theta = 2 * Math.PI * u * (arc / 360);
930
+ const phi = Math.acos(2 * v - 1);
931
+ const r = Mathf.lerp(1, 1 - (Math.pow(1 - Math.random(), Math.PI)), thickness) * (radius);
932
+ const x = pos.x + this.scale.x * (-r * Math.sin(phi) * Math.cos(theta));
933
+ const y = pos.y + this.scale.y * (r * Math.sin(phi) * Math.sin(theta));
934
+ const z = pos.z + this.scale.z * (r * Math.cos(phi));
935
+ vec.x = x;
936
+ vec.y = y;
937
+ vec.z = z;
938
+ }
939
+ randomCirclePoint(pos, radius, thickness, arg, vec) {
940
+ const u = Math.random();
941
+ const theta = 2 * Math.PI * u * (arg / 360);
942
+ const r = Mathf.lerp(1, 1 - (Math.pow(1 - Math.random(), Math.PI)), thickness) * (radius);
943
+ const x = pos.x + this.scale.x * r * Math.cos(theta);
944
+ const y = pos.y + this.scale.y * r * Math.sin(theta);
945
+ const z = pos.z;
946
+ vec.x = x;
947
+ vec.y = y;
948
+ vec.z = z;
949
+ }
950
+ _loopTime = 0;
951
+ _loopDirection = 1;
952
+ randomConePoint(pos, _angle, radius, thickness, arc, arcMode, vec) {
953
+ let u = 0;
954
+ let v = 0;
955
+ switch (arcMode) {
956
+ case ParticleSystemShapeMultiModeValue.Random:
957
+ u = Math.random();
958
+ v = Math.random();
959
+ break;
960
+ case ParticleSystemShapeMultiModeValue.PingPong:
961
+ if (this._loopTime > 1)
962
+ this._loopDirection = -1;
963
+ if (this._loopTime < 0)
964
+ this._loopDirection = 1;
965
+ // continue with loop
966
+ case ParticleSystemShapeMultiModeValue.Loop:
967
+ u = .5;
968
+ v = Math.random();
969
+ this._loopTime += this.system.deltaTime * this._loopDirection;
970
+ break;
971
+ }
972
+ let theta = 2 * Math.PI * u * (arc / 360);
973
+ switch (arcMode) {
974
+ case ParticleSystemShapeMultiModeValue.PingPong:
975
+ case ParticleSystemShapeMultiModeValue.Loop:
976
+ theta += Math.PI + .5;
977
+ theta += this._loopTime * Math.PI * 2;
978
+ theta %= Mathf.toRadians(arc);
979
+ break;
980
+ }
981
+ const phi = Math.acos(2 * v - 1);
982
+ const r = Mathf.lerp(1, 1 - (Math.pow(1 - Math.random(), Math.PI)), thickness) * radius;
983
+ const x = pos.x + (-r * Math.sin(phi) * Math.cos(theta));
984
+ const y = pos.y + (r * Math.sin(phi) * Math.sin(theta));
985
+ const z = pos.z;
986
+ vec.x = x * this.scale.x;
987
+ vec.y = y * this.scale.y;
988
+ vec.z = z * this.scale.z;
989
+ }
990
+ }
991
+ __decorate([
992
+ serializable()
993
+ ], ShapeModule.prototype, "shapeType", void 0);
994
+ __decorate([
995
+ serializable()
996
+ ], ShapeModule.prototype, "enabled", void 0);
997
+ __decorate([
998
+ serializable()
999
+ ], ShapeModule.prototype, "alignToDirection", void 0);
1000
+ __decorate([
1001
+ serializable()
1002
+ ], ShapeModule.prototype, "angle", void 0);
1003
+ __decorate([
1004
+ serializable()
1005
+ ], ShapeModule.prototype, "arc", void 0);
1006
+ __decorate([
1007
+ serializable()
1008
+ ], ShapeModule.prototype, "arcSpread", void 0);
1009
+ __decorate([
1010
+ serializable()
1011
+ ], ShapeModule.prototype, "arcSpeedMultiplier", void 0);
1012
+ __decorate([
1013
+ serializable()
1014
+ ], ShapeModule.prototype, "arcMode", void 0);
1015
+ __decorate([
1016
+ serializable(Vector3)
1017
+ ], ShapeModule.prototype, "boxThickness", void 0);
1018
+ __decorate([
1019
+ serializable(Vector3)
1020
+ ], ShapeModule.prototype, "position", void 0);
1021
+ __decorate([
1022
+ serializable(Vector3)
1023
+ ], ShapeModule.prototype, "rotation", void 0);
1024
+ __decorate([
1025
+ serializable(Vector3)
1026
+ ], ShapeModule.prototype, "scale", void 0);
1027
+ __decorate([
1028
+ serializable()
1029
+ ], ShapeModule.prototype, "radius", void 0);
1030
+ __decorate([
1031
+ serializable()
1032
+ ], ShapeModule.prototype, "radiusThickness", void 0);
1033
+ __decorate([
1034
+ serializable()
1035
+ ], ShapeModule.prototype, "sphericalDirectionAmount", void 0);
1036
+ __decorate([
1037
+ serializable()
1038
+ ], ShapeModule.prototype, "randomDirectionAmount", void 0);
1039
+ __decorate([
1040
+ serializable()
1041
+ ], ShapeModule.prototype, "randomPositionAmount", void 0);
1042
+ __decorate([
1043
+ serializable()
1044
+ ], ShapeModule.prototype, "meshShapeType", void 0);
1045
+ __decorate([
1046
+ serializable(MeshRenderer)
1047
+ ], ShapeModule.prototype, "meshRenderer", void 0);
1048
+ export class NoiseModule {
1049
+ damping;
1050
+ enabled;
1051
+ frequency;
1052
+ octaveCount;
1053
+ octaveMultiplier;
1054
+ octaveScale;
1055
+ positionAmount;
1056
+ quality;
1057
+ remap;
1058
+ remapEnabled;
1059
+ remapMultiplier;
1060
+ remapX;
1061
+ remapXMultiplier;
1062
+ remapY;
1063
+ remapYMultiplier;
1064
+ remapZ;
1065
+ remapZMultiplier;
1066
+ scrollSpeedMultiplier;
1067
+ separateAxes;
1068
+ strengthMultiplier;
1069
+ strengthX;
1070
+ strengthXMultiplier;
1071
+ strengthY;
1072
+ strengthYMultiplier;
1073
+ strengthZ;
1074
+ strengthZMultiplier;
1075
+ _noise;
1076
+ _time = 0;
1077
+ update(context) {
1078
+ this._time += context.time.deltaTime * this.scrollSpeedMultiplier;
1079
+ }
1080
+ /** nebula implementations: */
1081
+ _temp = new Vector3();
1082
+ apply(_index, pos, vel, _deltaTime, age, life) {
1083
+ if (!this.enabled)
1084
+ return;
1085
+ if (!this._noise) {
1086
+ this._noise = createNoise4D(() => 0);
1087
+ }
1088
+ const temp = this._temp.set(pos.x, pos.y, pos.z).multiplyScalar(this.frequency);
1089
+ const nx = this._noise(temp.x, temp.y, temp.z, this._time);
1090
+ const ny = this._noise(temp.x, temp.y, temp.z, this._time + 1000 * this.frequency);
1091
+ const nz = this._noise(temp.x, temp.y, temp.z, this._time + 2000 * this.frequency);
1092
+ this._temp.set(nx, ny, nz).normalize();
1093
+ const t = age / life;
1094
+ let strengthFactor = this.positionAmount.evaluate(t);
1095
+ if (!this.separateAxes) {
1096
+ if (this.strengthX) {
1097
+ strengthFactor *= this.strengthX.evaluate(t) * 1.5;
1098
+ }
1099
+ // strengthFactor *= this.strengthMultiplier;
1100
+ // strengthFactor *= deltaTime;
1101
+ this._temp.multiplyScalar(strengthFactor);
1102
+ }
1103
+ else {
1104
+ this._temp.x *= strengthFactor * this.strengthXMultiplier;
1105
+ this._temp.y *= strengthFactor * this.strengthYMultiplier;
1106
+ this._temp.z *= strengthFactor * this.strengthZMultiplier;
1107
+ }
1108
+ // this._temp.setLength(strengthFactor * deltaTime);
1109
+ vel.x += this._temp.x;
1110
+ vel.y += this._temp.y;
1111
+ vel.z += this._temp.z;
1112
+ }
1113
+ }
1114
+ __decorate([
1115
+ serializable()
1116
+ ], NoiseModule.prototype, "damping", void 0);
1117
+ __decorate([
1118
+ serializable()
1119
+ ], NoiseModule.prototype, "enabled", void 0);
1120
+ __decorate([
1121
+ serializable()
1122
+ ], NoiseModule.prototype, "frequency", void 0);
1123
+ __decorate([
1124
+ serializable()
1125
+ ], NoiseModule.prototype, "octaveCount", void 0);
1126
+ __decorate([
1127
+ serializable()
1128
+ ], NoiseModule.prototype, "octaveMultiplier", void 0);
1129
+ __decorate([
1130
+ serializable()
1131
+ ], NoiseModule.prototype, "octaveScale", void 0);
1132
+ __decorate([
1133
+ serializable(MinMaxCurve)
1134
+ ], NoiseModule.prototype, "positionAmount", void 0);
1135
+ __decorate([
1136
+ serializable()
1137
+ ], NoiseModule.prototype, "quality", void 0);
1138
+ __decorate([
1139
+ serializable(MinMaxCurve)
1140
+ ], NoiseModule.prototype, "remap", void 0);
1141
+ __decorate([
1142
+ serializable()
1143
+ ], NoiseModule.prototype, "remapEnabled", void 0);
1144
+ __decorate([
1145
+ serializable()
1146
+ ], NoiseModule.prototype, "remapMultiplier", void 0);
1147
+ __decorate([
1148
+ serializable(MinMaxCurve)
1149
+ ], NoiseModule.prototype, "remapX", void 0);
1150
+ __decorate([
1151
+ serializable()
1152
+ ], NoiseModule.prototype, "remapXMultiplier", void 0);
1153
+ __decorate([
1154
+ serializable(MinMaxCurve)
1155
+ ], NoiseModule.prototype, "remapY", void 0);
1156
+ __decorate([
1157
+ serializable()
1158
+ ], NoiseModule.prototype, "remapYMultiplier", void 0);
1159
+ __decorate([
1160
+ serializable(MinMaxCurve)
1161
+ ], NoiseModule.prototype, "remapZ", void 0);
1162
+ __decorate([
1163
+ serializable()
1164
+ ], NoiseModule.prototype, "remapZMultiplier", void 0);
1165
+ __decorate([
1166
+ serializable()
1167
+ ], NoiseModule.prototype, "scrollSpeedMultiplier", void 0);
1168
+ __decorate([
1169
+ serializable()
1170
+ ], NoiseModule.prototype, "separateAxes", void 0);
1171
+ __decorate([
1172
+ serializable()
1173
+ ], NoiseModule.prototype, "strengthMultiplier", void 0);
1174
+ __decorate([
1175
+ serializable(MinMaxCurve)
1176
+ ], NoiseModule.prototype, "strengthX", void 0);
1177
+ __decorate([
1178
+ serializable()
1179
+ ], NoiseModule.prototype, "strengthXMultiplier", void 0);
1180
+ __decorate([
1181
+ serializable(MinMaxCurve)
1182
+ ], NoiseModule.prototype, "strengthY", void 0);
1183
+ __decorate([
1184
+ serializable()
1185
+ ], NoiseModule.prototype, "strengthYMultiplier", void 0);
1186
+ __decorate([
1187
+ serializable(MinMaxCurve)
1188
+ ], NoiseModule.prototype, "strengthZ", void 0);
1189
+ __decorate([
1190
+ serializable()
1191
+ ], NoiseModule.prototype, "strengthZMultiplier", void 0);
1192
+ export var ParticleSystemTrailMode;
1193
+ (function (ParticleSystemTrailMode) {
1194
+ ParticleSystemTrailMode[ParticleSystemTrailMode["PerParticle"] = 0] = "PerParticle";
1195
+ ParticleSystemTrailMode[ParticleSystemTrailMode["Ribbon"] = 1] = "Ribbon";
1196
+ })(ParticleSystemTrailMode || (ParticleSystemTrailMode = {}));
1197
+ export var ParticleSystemTrailTextureMode;
1198
+ (function (ParticleSystemTrailTextureMode) {
1199
+ ParticleSystemTrailTextureMode[ParticleSystemTrailTextureMode["Stretch"] = 0] = "Stretch";
1200
+ ParticleSystemTrailTextureMode[ParticleSystemTrailTextureMode["Tile"] = 1] = "Tile";
1201
+ ParticleSystemTrailTextureMode[ParticleSystemTrailTextureMode["DistributePerSegment"] = 2] = "DistributePerSegment";
1202
+ ParticleSystemTrailTextureMode[ParticleSystemTrailTextureMode["RepeatPerSegment"] = 3] = "RepeatPerSegment";
1203
+ })(ParticleSystemTrailTextureMode || (ParticleSystemTrailTextureMode = {}));
1204
+ export class TrailModule {
1205
+ enabled;
1206
+ attachRibbonToTransform = false;
1207
+ colorOverLifetime;
1208
+ colorOverTrail;
1209
+ dieWithParticles = true;
1210
+ inheritParticleColor = true;
1211
+ lifetime;
1212
+ lifetimeMultiplier;
1213
+ minVertexDistance = .2;
1214
+ mode = ParticleSystemTrailMode.PerParticle;
1215
+ ratio = 1;
1216
+ ribbonCount = 1;
1217
+ shadowBias = 0;
1218
+ sizeAffectsLifetime = false;
1219
+ sizeAffectsWidth = false;
1220
+ splitSubEmitterRibbons = false;
1221
+ textureMode = ParticleSystemTrailTextureMode.Stretch;
1222
+ widthOverTrail;
1223
+ widthOverTrailMultiplier;
1224
+ worldSpace = false;
1225
+ getWidth(size, _life01, pos01, t) {
1226
+ const res = this.widthOverTrail.evaluate(pos01, t);
1227
+ size *= res;
1228
+ return size;
1229
+ }
1230
+ getColor(color, life01, pos01) {
1231
+ const overTrail = this.colorOverTrail.evaluate(pos01);
1232
+ const overLife = this.colorOverLifetime.evaluate(life01);
1233
+ color.x *= overTrail.r * overLife.r;
1234
+ color.y *= overTrail.g * overLife.g;
1235
+ color.z *= overTrail.b * overLife.b;
1236
+ if ("alpha" in overTrail && "alpha" in overLife)
1237
+ color.w *= overTrail.alpha * overLife.alpha;
1238
+ }
1239
+ }
1240
+ __decorate([
1241
+ serializable()
1242
+ ], TrailModule.prototype, "enabled", void 0);
1243
+ __decorate([
1244
+ serializable()
1245
+ ], TrailModule.prototype, "attachRibbonToTransform", void 0);
1246
+ __decorate([
1247
+ serializable(MinMaxGradient)
1248
+ ], TrailModule.prototype, "colorOverLifetime", void 0);
1249
+ __decorate([
1250
+ serializable(MinMaxGradient)
1251
+ ], TrailModule.prototype, "colorOverTrail", void 0);
1252
+ __decorate([
1253
+ serializable()
1254
+ ], TrailModule.prototype, "dieWithParticles", void 0);
1255
+ __decorate([
1256
+ serializable()
1257
+ ], TrailModule.prototype, "inheritParticleColor", void 0);
1258
+ __decorate([
1259
+ serializable(MinMaxCurve)
1260
+ ], TrailModule.prototype, "lifetime", void 0);
1261
+ __decorate([
1262
+ serializable()
1263
+ ], TrailModule.prototype, "lifetimeMultiplier", void 0);
1264
+ __decorate([
1265
+ serializable()
1266
+ ], TrailModule.prototype, "minVertexDistance", void 0);
1267
+ __decorate([
1268
+ serializable()
1269
+ ], TrailModule.prototype, "mode", void 0);
1270
+ __decorate([
1271
+ serializable()
1272
+ ], TrailModule.prototype, "ratio", void 0);
1273
+ __decorate([
1274
+ serializable()
1275
+ ], TrailModule.prototype, "ribbonCount", void 0);
1276
+ __decorate([
1277
+ serializable()
1278
+ ], TrailModule.prototype, "shadowBias", void 0);
1279
+ __decorate([
1280
+ serializable()
1281
+ ], TrailModule.prototype, "sizeAffectsLifetime", void 0);
1282
+ __decorate([
1283
+ serializable()
1284
+ ], TrailModule.prototype, "sizeAffectsWidth", void 0);
1285
+ __decorate([
1286
+ serializable()
1287
+ ], TrailModule.prototype, "splitSubEmitterRibbons", void 0);
1288
+ __decorate([
1289
+ serializable()
1290
+ ], TrailModule.prototype, "textureMode", void 0);
1291
+ __decorate([
1292
+ serializable(MinMaxCurve)
1293
+ ], TrailModule.prototype, "widthOverTrail", void 0);
1294
+ __decorate([
1295
+ serializable()
1296
+ ], TrailModule.prototype, "widthOverTrailMultiplier", void 0);
1297
+ __decorate([
1298
+ serializable()
1299
+ ], TrailModule.prototype, "worldSpace", void 0);
1300
+ export class VelocityOverLifetimeModule {
1301
+ enabled;
1302
+ space = ParticleSystemSimulationSpace.Local;
1303
+ orbitalX;
1304
+ orbitalY;
1305
+ orbitalZ;
1306
+ orbitalXMultiplier;
1307
+ orbitalYMultiplier;
1308
+ orbitalZMultiplier;
1309
+ orbitalOffsetX;
1310
+ orbitalOffsetY;
1311
+ orbitalOffsetZ;
1312
+ speedModifier;
1313
+ speedModifierMultiplier;
1314
+ x;
1315
+ xMultiplier;
1316
+ y;
1317
+ yMultiplier;
1318
+ z;
1319
+ zMultiplier;
1320
+ _system;
1321
+ // private _worldRotation: Quaternion = new Quaternion();
1322
+ update(system) {
1323
+ this._system = system;
1324
+ }
1325
+ _temp = new Vector3();
1326
+ _temp2 = new Vector3();
1327
+ _temp3 = new Vector3();
1328
+ _hasOrbital = false;
1329
+ _index = 0;
1330
+ _orbitalMatrix = new Matrix4();
1331
+ init(particle) {
1332
+ if (this._index == 0)
1333
+ particle["debug"] = true;
1334
+ this._index += 1;
1335
+ particle["orbitx"] = this.orbitalX.evaluate(Math.random());
1336
+ particle["orbity"] = this.orbitalY.evaluate(Math.random());
1337
+ particle["orbitz"] = this.orbitalZ.evaluate(Math.random());
1338
+ // console.log(particle["orbitx"], particle["orbity"], particle["orbitz"])
1339
+ this._hasOrbital = particle["orbitx"] != 0 || particle["orbity"] != 0 || particle["orbitz"] != 0;
1340
+ }
1341
+ apply(_particle, _index, _pos, vel, _dt, age, life) {
1342
+ if (!this.enabled)
1343
+ return;
1344
+ const t = age / life;
1345
+ const speed = this.speedModifier.evaluate(t) * this.speedModifierMultiplier;
1346
+ const x = this.x.evaluate(t);
1347
+ const y = this.y.evaluate(t);
1348
+ const z = this.z.evaluate(t);
1349
+ this._temp.set(-x, y, z);
1350
+ if (this._system) {
1351
+ // if (this.space === ParticleSystemSimulationSpace.World) {
1352
+ // this._temp.applyQuaternion(this._system.worldQuaternionInverted);
1353
+ // }
1354
+ if (this._system.main.simulationSpace === ParticleSystemSimulationSpace.World) {
1355
+ this._temp.applyQuaternion(this._system.worldQuaternion);
1356
+ }
1357
+ }
1358
+ if (this._hasOrbital) {
1359
+ const position = this._system?.worldPos;
1360
+ if (position) {
1361
+ // TODO: we absolutely need to fix this, this is a hack for a specific usecase and doesnt work yet correctly
1362
+ // https://github.com/needle-tools/needle-tiny/issues/710
1363
+ const pos = this._temp2.set(_pos.x, _pos.y, _pos.z);
1364
+ const ox = this.orbitalXMultiplier; // particle["orbitx"];
1365
+ const oy = this.orbitalYMultiplier; // particle["orbity"];
1366
+ const oz = this.orbitalZMultiplier; // particle["orbitz"];
1367
+ const angle = speed * Math.PI * 2 * 10; // < Oh god
1368
+ const cosX = Math.cos(angle * ox);
1369
+ const sinX = Math.sin(angle * ox);
1370
+ const cosY = Math.cos(angle * oy);
1371
+ const sinY = Math.sin(angle * oy);
1372
+ const cosZ = Math.cos(angle * oz);
1373
+ const sinZ = Math.sin(angle * oz);
1374
+ const newX = pos.x * (cosY * cosZ) + pos.y * (cosY * sinZ) + pos.z * (-sinY);
1375
+ const newY = pos.x * (sinX * sinY * cosZ - cosX * sinZ) + pos.y * (sinX * sinY * sinZ + cosX * cosZ) + pos.z * (sinX * cosY);
1376
+ const newZ = pos.x * (cosX * sinY * cosZ + sinX * sinZ) + pos.y * (cosX * sinY * sinZ - sinX * cosZ) + pos.z * (cosX * cosY);
1377
+ // pos.x += this.orbitalOffsetX;
1378
+ // pos.y += this.orbitalOffsetY;
1379
+ // pos.z += this.orbitalOffsetZ;
1380
+ const v = this._temp3.set(pos.x - newX, pos.y - newY, pos.z - newZ);
1381
+ v.normalize();
1382
+ v.multiplyScalar(.2 / _dt * (Math.max(this.orbitalXMultiplier, this.orbitalYMultiplier, this.orbitalZMultiplier)));
1383
+ vel.x += v.x;
1384
+ vel.y += v.y;
1385
+ vel.z += v.z;
1386
+ }
1387
+ }
1388
+ vel.x += this._temp.x;
1389
+ vel.y += this._temp.y;
1390
+ vel.z += this._temp.z;
1391
+ vel.x *= speed;
1392
+ vel.y *= speed;
1393
+ vel.z *= speed;
1394
+ }
1395
+ }
1396
+ __decorate([
1397
+ serializable()
1398
+ ], VelocityOverLifetimeModule.prototype, "enabled", void 0);
1399
+ __decorate([
1400
+ serializable()
1401
+ ], VelocityOverLifetimeModule.prototype, "space", void 0);
1402
+ __decorate([
1403
+ serializable(MinMaxCurve)
1404
+ ], VelocityOverLifetimeModule.prototype, "orbitalX", void 0);
1405
+ __decorate([
1406
+ serializable(MinMaxCurve)
1407
+ ], VelocityOverLifetimeModule.prototype, "orbitalY", void 0);
1408
+ __decorate([
1409
+ serializable(MinMaxCurve)
1410
+ ], VelocityOverLifetimeModule.prototype, "orbitalZ", void 0);
1411
+ __decorate([
1412
+ serializable()
1413
+ ], VelocityOverLifetimeModule.prototype, "orbitalXMultiplier", void 0);
1414
+ __decorate([
1415
+ serializable()
1416
+ ], VelocityOverLifetimeModule.prototype, "orbitalYMultiplier", void 0);
1417
+ __decorate([
1418
+ serializable()
1419
+ ], VelocityOverLifetimeModule.prototype, "orbitalZMultiplier", void 0);
1420
+ __decorate([
1421
+ serializable()
1422
+ ], VelocityOverLifetimeModule.prototype, "orbitalOffsetX", void 0);
1423
+ __decorate([
1424
+ serializable()
1425
+ ], VelocityOverLifetimeModule.prototype, "orbitalOffsetY", void 0);
1426
+ __decorate([
1427
+ serializable()
1428
+ ], VelocityOverLifetimeModule.prototype, "orbitalOffsetZ", void 0);
1429
+ __decorate([
1430
+ serializable(MinMaxCurve)
1431
+ ], VelocityOverLifetimeModule.prototype, "speedModifier", void 0);
1432
+ __decorate([
1433
+ serializable()
1434
+ ], VelocityOverLifetimeModule.prototype, "speedModifierMultiplier", void 0);
1435
+ __decorate([
1436
+ serializable(MinMaxCurve)
1437
+ ], VelocityOverLifetimeModule.prototype, "x", void 0);
1438
+ __decorate([
1439
+ serializable()
1440
+ ], VelocityOverLifetimeModule.prototype, "xMultiplier", void 0);
1441
+ __decorate([
1442
+ serializable(MinMaxCurve)
1443
+ ], VelocityOverLifetimeModule.prototype, "y", void 0);
1444
+ __decorate([
1445
+ serializable()
1446
+ ], VelocityOverLifetimeModule.prototype, "yMultiplier", void 0);
1447
+ __decorate([
1448
+ serializable(MinMaxCurve)
1449
+ ], VelocityOverLifetimeModule.prototype, "z", void 0);
1450
+ __decorate([
1451
+ serializable()
1452
+ ], VelocityOverLifetimeModule.prototype, "zMultiplier", void 0);
1453
+ var ParticleSystemAnimationTimeMode;
1454
+ (function (ParticleSystemAnimationTimeMode) {
1455
+ ParticleSystemAnimationTimeMode[ParticleSystemAnimationTimeMode["Lifetime"] = 0] = "Lifetime";
1456
+ ParticleSystemAnimationTimeMode[ParticleSystemAnimationTimeMode["Speed"] = 1] = "Speed";
1457
+ ParticleSystemAnimationTimeMode[ParticleSystemAnimationTimeMode["FPS"] = 2] = "FPS";
1458
+ })(ParticleSystemAnimationTimeMode || (ParticleSystemAnimationTimeMode = {}));
1459
+ var ParticleSystemAnimationMode;
1460
+ (function (ParticleSystemAnimationMode) {
1461
+ ParticleSystemAnimationMode[ParticleSystemAnimationMode["Grid"] = 0] = "Grid";
1462
+ ParticleSystemAnimationMode[ParticleSystemAnimationMode["Sprites"] = 1] = "Sprites";
1463
+ })(ParticleSystemAnimationMode || (ParticleSystemAnimationMode = {}));
1464
+ var ParticleSystemAnimationRowMode;
1465
+ (function (ParticleSystemAnimationRowMode) {
1466
+ ParticleSystemAnimationRowMode[ParticleSystemAnimationRowMode["Custom"] = 0] = "Custom";
1467
+ ParticleSystemAnimationRowMode[ParticleSystemAnimationRowMode["Random"] = 1] = "Random";
1468
+ ParticleSystemAnimationRowMode[ParticleSystemAnimationRowMode["MeshIndex"] = 2] = "MeshIndex";
1469
+ })(ParticleSystemAnimationRowMode || (ParticleSystemAnimationRowMode = {}));
1470
+ var ParticleSystemAnimationType;
1471
+ (function (ParticleSystemAnimationType) {
1472
+ ParticleSystemAnimationType[ParticleSystemAnimationType["WholeSheet"] = 0] = "WholeSheet";
1473
+ ParticleSystemAnimationType[ParticleSystemAnimationType["SingleRow"] = 1] = "SingleRow";
1474
+ })(ParticleSystemAnimationType || (ParticleSystemAnimationType = {}));
1475
+ export class TextureSheetAnimationModule {
1476
+ animation;
1477
+ enabled;
1478
+ cycleCount;
1479
+ frameOverTime;
1480
+ frameOverTimeMultiplier;
1481
+ numTilesX;
1482
+ numTilesY;
1483
+ startFrame;
1484
+ startFrameMultiplier;
1485
+ rowMode;
1486
+ rowIndex;
1487
+ spriteCount;
1488
+ timeMode;
1489
+ sampleOnceAtStart() {
1490
+ if (this.timeMode === ParticleSystemAnimationTimeMode.Lifetime) {
1491
+ switch (this.frameOverTime.mode) {
1492
+ case ParticleSystemCurveMode.Constant:
1493
+ case ParticleSystemCurveMode.TwoConstants:
1494
+ case ParticleSystemCurveMode.TwoCurves:
1495
+ case ParticleSystemCurveMode.Curve:
1496
+ return true;
1497
+ }
1498
+ }
1499
+ return false;
1500
+ }
1501
+ getStartIndex() {
1502
+ if (this.sampleOnceAtStart()) {
1503
+ const start = Math.random();
1504
+ return start * (this.numTilesX * this.numTilesY);
1505
+ }
1506
+ return 0;
1507
+ }
1508
+ evaluate(t01) {
1509
+ if (this.sampleOnceAtStart()) {
1510
+ return undefined;
1511
+ }
1512
+ return this.getIndex(t01);
1513
+ }
1514
+ getIndex(t01) {
1515
+ const tiles = this.numTilesX * this.numTilesY;
1516
+ t01 = t01 * this.cycleCount;
1517
+ let index = this.frameOverTime.evaluate(t01 % 1);
1518
+ index *= this.frameOverTimeMultiplier;
1519
+ index *= tiles;
1520
+ index = index % tiles;
1521
+ index = Math.floor(index);
1522
+ return index;
1523
+ }
1524
+ }
1525
+ __decorate([
1526
+ serializable()
1527
+ ], TextureSheetAnimationModule.prototype, "animation", void 0);
1528
+ __decorate([
1529
+ serializable()
1530
+ ], TextureSheetAnimationModule.prototype, "enabled", void 0);
1531
+ __decorate([
1532
+ serializable()
1533
+ ], TextureSheetAnimationModule.prototype, "cycleCount", void 0);
1534
+ __decorate([
1535
+ serializable(MinMaxCurve)
1536
+ ], TextureSheetAnimationModule.prototype, "frameOverTime", void 0);
1537
+ __decorate([
1538
+ serializable()
1539
+ ], TextureSheetAnimationModule.prototype, "frameOverTimeMultiplier", void 0);
1540
+ __decorate([
1541
+ serializable()
1542
+ ], TextureSheetAnimationModule.prototype, "numTilesX", void 0);
1543
+ __decorate([
1544
+ serializable()
1545
+ ], TextureSheetAnimationModule.prototype, "numTilesY", void 0);
1546
+ __decorate([
1547
+ serializable(MinMaxCurve)
1548
+ ], TextureSheetAnimationModule.prototype, "startFrame", void 0);
1549
+ __decorate([
1550
+ serializable()
1551
+ ], TextureSheetAnimationModule.prototype, "startFrameMultiplier", void 0);
1552
+ __decorate([
1553
+ serializable()
1554
+ ], TextureSheetAnimationModule.prototype, "rowMode", void 0);
1555
+ __decorate([
1556
+ serializable()
1557
+ ], TextureSheetAnimationModule.prototype, "rowIndex", void 0);
1558
+ __decorate([
1559
+ serializable()
1560
+ ], TextureSheetAnimationModule.prototype, "spriteCount", void 0);
1561
+ __decorate([
1562
+ serializable()
1563
+ ], TextureSheetAnimationModule.prototype, "timeMode", void 0);
1564
+ export class RotationOverLifetimeModule {
1565
+ enabled;
1566
+ separateAxes;
1567
+ x;
1568
+ xMultiplier;
1569
+ y;
1570
+ yMultiplier;
1571
+ z;
1572
+ zMultiplier;
1573
+ evaluate(t01, t) {
1574
+ if (!this.enabled)
1575
+ return 0;
1576
+ if (!this.separateAxes) {
1577
+ const rot = this.z.evaluate(t01, t) * -1;
1578
+ return rot;
1579
+ }
1580
+ return 0;
1581
+ }
1582
+ }
1583
+ __decorate([
1584
+ serializable()
1585
+ ], RotationOverLifetimeModule.prototype, "enabled", void 0);
1586
+ __decorate([
1587
+ serializable()
1588
+ ], RotationOverLifetimeModule.prototype, "separateAxes", void 0);
1589
+ __decorate([
1590
+ serializable(MinMaxCurve)
1591
+ ], RotationOverLifetimeModule.prototype, "x", void 0);
1592
+ __decorate([
1593
+ serializable()
1594
+ ], RotationOverLifetimeModule.prototype, "xMultiplier", void 0);
1595
+ __decorate([
1596
+ serializable(MinMaxCurve)
1597
+ ], RotationOverLifetimeModule.prototype, "y", void 0);
1598
+ __decorate([
1599
+ serializable()
1600
+ ], RotationOverLifetimeModule.prototype, "yMultiplier", void 0);
1601
+ __decorate([
1602
+ serializable(MinMaxCurve)
1603
+ ], RotationOverLifetimeModule.prototype, "z", void 0);
1604
+ __decorate([
1605
+ serializable()
1606
+ ], RotationOverLifetimeModule.prototype, "zMultiplier", void 0);
1607
+ export class RotationBySpeedModule {
1608
+ enabled;
1609
+ range;
1610
+ separateAxes;
1611
+ x;
1612
+ xMultiplier;
1613
+ y;
1614
+ yMultiplier;
1615
+ z;
1616
+ zMultiplier;
1617
+ evaluate(_t01, speed) {
1618
+ if (!this.enabled)
1619
+ return 0;
1620
+ if (!this.separateAxes) {
1621
+ const t = Mathf.lerp(this.range.x, this.range.y, speed);
1622
+ const rot = this.z.evaluate(t) * -1;
1623
+ return rot;
1624
+ }
1625
+ return 0;
1626
+ }
1627
+ }
1628
+ __decorate([
1629
+ serializable()
1630
+ ], RotationBySpeedModule.prototype, "enabled", void 0);
1631
+ __decorate([
1632
+ serializable()
1633
+ ], RotationBySpeedModule.prototype, "range", void 0);
1634
+ __decorate([
1635
+ serializable()
1636
+ ], RotationBySpeedModule.prototype, "separateAxes", void 0);
1637
+ __decorate([
1638
+ serializable(MinMaxCurve)
1639
+ ], RotationBySpeedModule.prototype, "x", void 0);
1640
+ __decorate([
1641
+ serializable()
1642
+ ], RotationBySpeedModule.prototype, "xMultiplier", void 0);
1643
+ __decorate([
1644
+ serializable(MinMaxCurve)
1645
+ ], RotationBySpeedModule.prototype, "y", void 0);
1646
+ __decorate([
1647
+ serializable()
1648
+ ], RotationBySpeedModule.prototype, "yMultiplier", void 0);
1649
+ __decorate([
1650
+ serializable(MinMaxCurve)
1651
+ ], RotationBySpeedModule.prototype, "z", void 0);
1652
+ __decorate([
1653
+ serializable()
1654
+ ], RotationBySpeedModule.prototype, "zMultiplier", void 0);
1655
+ export class LimitVelocityOverLifetimeModule {
1656
+ enabled;
1657
+ dampen;
1658
+ drag;
1659
+ dragMultiplier;
1660
+ limit;
1661
+ limitMultiplier;
1662
+ separateAxes;
1663
+ limitX;
1664
+ limitXMultiplier;
1665
+ limitY;
1666
+ limitYMultiplier;
1667
+ limitZ;
1668
+ limitZMultiplier;
1669
+ multiplyDragByParticleSize = false;
1670
+ multiplyDragByParticleVelocity = false;
1671
+ space;
1672
+ _temp = new Vector3();
1673
+ _temp2 = new Vector3();
1674
+ apply(_position, baseVelocity, currentVelocity, _size, t01, _dt, _scale) {
1675
+ if (!this.enabled)
1676
+ return;
1677
+ // if (this.separateAxes) {
1678
+ // // const maxX = this.limitX.evaluate(t01) * this.limitXMultiplier;
1679
+ // // const maxY = this.limitY.evaluate(t01) * this.limitYMultiplier;
1680
+ // // const maxZ = this.limitZ.evaluate(t01) * this.limitZMultiplier;
1681
+ // }
1682
+ // else
1683
+ {
1684
+ const max = this.limit.evaluate(t01) * this.limitMultiplier;
1685
+ const speed = baseVelocity.length();
1686
+ if (speed > max) {
1687
+ this._temp.copy(baseVelocity).normalize().multiplyScalar(max);
1688
+ const t = this.dampen * .5;
1689
+ // t *= scale;
1690
+ baseVelocity.x = Mathf.lerp(baseVelocity.x, this._temp.x, t);
1691
+ baseVelocity.y = Mathf.lerp(baseVelocity.y, this._temp.y, t);
1692
+ baseVelocity.z = Mathf.lerp(baseVelocity.z, this._temp.z, t);
1693
+ // this._temp2.set(0, 0, 0);
1694
+ currentVelocity.x = Mathf.lerp(currentVelocity.x, this._temp.x, t);
1695
+ currentVelocity.y = Mathf.lerp(currentVelocity.y, this._temp.y, t);
1696
+ currentVelocity.z = Mathf.lerp(currentVelocity.z, this._temp.z, t);
1697
+ }
1698
+ // vel.multiplyScalar(dragFactor);
1699
+ }
1700
+ // vel.x *= 0.3;
1701
+ // vel.y *= 0.3;
1702
+ // vel.z *= 0.3;
1703
+ }
1704
+ }
1705
+ __decorate([
1706
+ serializable()
1707
+ ], LimitVelocityOverLifetimeModule.prototype, "enabled", void 0);
1708
+ __decorate([
1709
+ serializable()
1710
+ ], LimitVelocityOverLifetimeModule.prototype, "dampen", void 0);
1711
+ __decorate([
1712
+ serializable(MinMaxCurve)
1713
+ ], LimitVelocityOverLifetimeModule.prototype, "drag", void 0);
1714
+ __decorate([
1715
+ serializable()
1716
+ ], LimitVelocityOverLifetimeModule.prototype, "dragMultiplier", void 0);
1717
+ __decorate([
1718
+ serializable(MinMaxCurve)
1719
+ ], LimitVelocityOverLifetimeModule.prototype, "limit", void 0);
1720
+ __decorate([
1721
+ serializable()
1722
+ ], LimitVelocityOverLifetimeModule.prototype, "limitMultiplier", void 0);
1723
+ __decorate([
1724
+ serializable()
1725
+ ], LimitVelocityOverLifetimeModule.prototype, "separateAxes", void 0);
1726
+ __decorate([
1727
+ serializable(MinMaxCurve)
1728
+ ], LimitVelocityOverLifetimeModule.prototype, "limitX", void 0);
1729
+ __decorate([
1730
+ serializable()
1731
+ ], LimitVelocityOverLifetimeModule.prototype, "limitXMultiplier", void 0);
1732
+ __decorate([
1733
+ serializable(MinMaxCurve)
1734
+ ], LimitVelocityOverLifetimeModule.prototype, "limitY", void 0);
1735
+ __decorate([
1736
+ serializable()
1737
+ ], LimitVelocityOverLifetimeModule.prototype, "limitYMultiplier", void 0);
1738
+ __decorate([
1739
+ serializable(MinMaxCurve)
1740
+ ], LimitVelocityOverLifetimeModule.prototype, "limitZ", void 0);
1741
+ __decorate([
1742
+ serializable()
1743
+ ], LimitVelocityOverLifetimeModule.prototype, "limitZMultiplier", void 0);
1744
+ __decorate([
1745
+ serializable()
1746
+ ], LimitVelocityOverLifetimeModule.prototype, "multiplyDragByParticleSize", void 0);
1747
+ __decorate([
1748
+ serializable()
1749
+ ], LimitVelocityOverLifetimeModule.prototype, "multiplyDragByParticleVelocity", void 0);
1750
+ __decorate([
1751
+ serializable()
1752
+ ], LimitVelocityOverLifetimeModule.prototype, "space", void 0);
1753
+ export var ParticleSystemInheritVelocityMode;
1754
+ (function (ParticleSystemInheritVelocityMode) {
1755
+ ParticleSystemInheritVelocityMode[ParticleSystemInheritVelocityMode["Initial"] = 0] = "Initial";
1756
+ ParticleSystemInheritVelocityMode[ParticleSystemInheritVelocityMode["Current"] = 1] = "Current";
1757
+ })(ParticleSystemInheritVelocityMode || (ParticleSystemInheritVelocityMode = {}));
1758
+ export class InheritVelocityModule {
1759
+ enabled;
1760
+ curve;
1761
+ curveMultiplier;
1762
+ mode;
1763
+ clone() {
1764
+ const ni = new InheritVelocityModule();
1765
+ ni.enabled = this.enabled;
1766
+ ni.curve = this.curve?.clone();
1767
+ ni.curveMultiplier = this.curveMultiplier;
1768
+ ni.mode = this.mode;
1769
+ return ni;
1770
+ }
1771
+ system;
1772
+ get _lastWorldPosition() {
1773
+ if (!this.system['_iv_lastWorldPosition']) {
1774
+ this.system['_iv_lastWorldPosition'] = new Vector3();
1775
+ }
1776
+ return this.system['_iv_lastWorldPosition'];
1777
+ }
1778
+ get _velocity() {
1779
+ if (!this.system['_iv_velocity']) {
1780
+ this.system['_iv_velocity'] = new Vector3();
1781
+ }
1782
+ return this.system['_iv_velocity'];
1783
+ }
1784
+ _temp = new Vector3();
1785
+ _firstUpdate = true;
1786
+ awake(system) {
1787
+ this.system = system;
1788
+ this.reset();
1789
+ }
1790
+ reset() {
1791
+ this._firstUpdate = true;
1792
+ }
1793
+ update(_context) {
1794
+ if (!this.enabled)
1795
+ return;
1796
+ if (this.system.worldspace === false)
1797
+ return;
1798
+ if (this._firstUpdate) {
1799
+ this._firstUpdate = false;
1800
+ this._velocity.set(0, 0, 0);
1801
+ this._lastWorldPosition.copy(this.system.worldPos);
1802
+ }
1803
+ else if (this._lastWorldPosition) {
1804
+ this._velocity.copy(this.system.worldPos).sub(this._lastWorldPosition).multiplyScalar(1 / this.system.deltaTime);
1805
+ this._lastWorldPosition.copy(this.system.worldPos);
1806
+ }
1807
+ }
1808
+ // TODO: make work for subsystems
1809
+ applyInitial(vel) {
1810
+ if (!this.enabled)
1811
+ return;
1812
+ if (this.system.worldspace === false)
1813
+ return;
1814
+ if (this.mode === ParticleSystemInheritVelocityMode.Initial) {
1815
+ const factor = this.curve.evaluate(Math.random(), Math.random());
1816
+ this._temp.copy(this._velocity).multiplyScalar(factor);
1817
+ vel.x += this._temp.x;
1818
+ vel.y += this._temp.y;
1819
+ vel.z += this._temp.z;
1820
+ }
1821
+ }
1822
+ _frames = 0;
1823
+ applyCurrent(vel, t01, lerpFactor) {
1824
+ if (!this.enabled)
1825
+ return;
1826
+ if (!this.system)
1827
+ return;
1828
+ if (this.system.worldspace === false)
1829
+ return;
1830
+ if (this.mode === ParticleSystemInheritVelocityMode.Current) {
1831
+ const factor = this.curve.evaluate(t01, lerpFactor);
1832
+ this._temp.copy(this._velocity).multiplyScalar(factor);
1833
+ vel.x += this._temp.x;
1834
+ vel.y += this._temp.y;
1835
+ vel.z += this._temp.z;
1836
+ }
1837
+ }
1838
+ }
1839
+ __decorate([
1840
+ serializable()
1841
+ ], InheritVelocityModule.prototype, "enabled", void 0);
1842
+ __decorate([
1843
+ serializable(MinMaxCurve)
1844
+ ], InheritVelocityModule.prototype, "curve", void 0);
1845
+ __decorate([
1846
+ serializable()
1847
+ ], InheritVelocityModule.prototype, "curveMultiplier", void 0);
1848
+ __decorate([
1849
+ serializable()
1850
+ ], InheritVelocityModule.prototype, "mode", void 0);
1851
+ export class SizeBySpeedModule {
1852
+ enabled;
1853
+ range;
1854
+ separateAxes;
1855
+ size;
1856
+ sizeMultiplier;
1857
+ x;
1858
+ xMultiplier;
1859
+ y;
1860
+ yMultiplier;
1861
+ z;
1862
+ zMultiplier;
1863
+ evaluate(vel, _t01, lerpFactor, size) {
1864
+ const speed = vel.length();
1865
+ const x = Mathf.remap(speed, this.range.x, this.range.y, 0, 1);
1866
+ const factor = this.size.evaluate(x, lerpFactor);
1867
+ // return size;
1868
+ size.x *= factor;
1869
+ size.y *= factor;
1870
+ size.z *= factor;
1871
+ return size;
1872
+ }
1873
+ }
1874
+ __decorate([
1875
+ serializable()
1876
+ ], SizeBySpeedModule.prototype, "enabled", void 0);
1877
+ __decorate([
1878
+ serializable(Vector2)
1879
+ ], SizeBySpeedModule.prototype, "range", void 0);
1880
+ __decorate([
1881
+ serializable()
1882
+ ], SizeBySpeedModule.prototype, "separateAxes", void 0);
1883
+ __decorate([
1884
+ serializable(MinMaxCurve)
1885
+ ], SizeBySpeedModule.prototype, "size", void 0);
1886
+ __decorate([
1887
+ serializable()
1888
+ ], SizeBySpeedModule.prototype, "sizeMultiplier", void 0);
1889
+ __decorate([
1890
+ serializable(MinMaxCurve)
1891
+ ], SizeBySpeedModule.prototype, "x", void 0);
1892
+ __decorate([
1893
+ serializable()
1894
+ ], SizeBySpeedModule.prototype, "xMultiplier", void 0);
1895
+ __decorate([
1896
+ serializable(MinMaxCurve)
1897
+ ], SizeBySpeedModule.prototype, "y", void 0);
1898
+ __decorate([
1899
+ serializable()
1900
+ ], SizeBySpeedModule.prototype, "yMultiplier", void 0);
1901
+ __decorate([
1902
+ serializable(MinMaxCurve)
1903
+ ], SizeBySpeedModule.prototype, "z", void 0);
1904
+ __decorate([
1905
+ serializable()
1906
+ ], SizeBySpeedModule.prototype, "zMultiplier", void 0);
1907
+ export class ColorBySpeedModule {
1908
+ enabled;
1909
+ range;
1910
+ color;
1911
+ evaluate(vel, lerpFactor, color) {
1912
+ const speed = vel.length();
1913
+ const x = Mathf.remap(speed, this.range.x, this.range.y, 0, 1);
1914
+ const res = this.color.evaluate(x, lerpFactor);
1915
+ color.x *= res.r;
1916
+ color.y *= res.g;
1917
+ color.z *= res.b;
1918
+ if ("alpha" in res)
1919
+ color.w *= res.alpha;
1920
+ }
1921
+ }
1922
+ __decorate([
1923
+ serializable()
1924
+ ], ColorBySpeedModule.prototype, "enabled", void 0);
1925
+ __decorate([
1926
+ serializable(Vector2)
1927
+ ], ColorBySpeedModule.prototype, "range", void 0);
1928
+ __decorate([
1929
+ serializable(MinMaxGradient)
1930
+ ], ColorBySpeedModule.prototype, "color", void 0);
1931
1931
  //# sourceMappingURL=ParticleSystemModules.js.map