@splinetool/runtime 2.0.62 → 2.0.63

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 (267) hide show
  1. package/build/{runtime-chunk-YDJBLHAS.js → runtime-chunk-2JD7RQUT.js} +1 -1
  2. package/build/runtime-chunk-2JD7RQUT.js.br +0 -0
  3. package/build/runtime-chunk-2JD7RQUT.js.gz +0 -0
  4. package/build/{runtime-chunk-CXXEDL4D.js → runtime-chunk-2MJ7PCLB.js} +1 -1
  5. package/build/runtime-chunk-2MJ7PCLB.js.br +0 -0
  6. package/build/runtime-chunk-2MJ7PCLB.js.gz +0 -0
  7. package/build/{runtime-chunk-MLSGRRBI.js → runtime-chunk-462PSYFK.js} +1 -1
  8. package/build/runtime-chunk-462PSYFK.js.br +1 -0
  9. package/build/runtime-chunk-462PSYFK.js.gz +0 -0
  10. package/build/{runtime-chunk-AASXNCLC.js → runtime-chunk-4BGTCDLP.js} +1 -1
  11. package/build/runtime-chunk-4BGTCDLP.js.br +0 -0
  12. package/build/runtime-chunk-4BGTCDLP.js.gz +0 -0
  13. package/build/{runtime-chunk-7GJTQZHN.js → runtime-chunk-BFFQY3CG.js} +1 -1
  14. package/build/runtime-chunk-BFFQY3CG.js.br +0 -0
  15. package/build/runtime-chunk-BFFQY3CG.js.gz +0 -0
  16. package/build/{runtime-chunk-MPHBANVQ.js → runtime-chunk-F4XMOADV.js} +1 -1
  17. package/build/runtime-chunk-F4XMOADV.js.br +0 -0
  18. package/build/runtime-chunk-F4XMOADV.js.gz +0 -0
  19. package/build/runtime-chunk-FNNRPWF7.js +1 -0
  20. package/build/runtime-chunk-FNNRPWF7.js.br +0 -0
  21. package/build/runtime-chunk-FNNRPWF7.js.gz +0 -0
  22. package/build/{runtime-chunk-GUIPUTN7.js → runtime-chunk-HKTFFRM3.js} +1 -1
  23. package/build/runtime-chunk-HKTFFRM3.js.br +0 -0
  24. package/build/runtime-chunk-HKTFFRM3.js.gz +0 -0
  25. package/build/{runtime-chunk-YFK3OQ3S.js → runtime-chunk-IDKFOADO.js} +1 -1
  26. package/build/runtime-chunk-IDKFOADO.js.br +0 -0
  27. package/build/runtime-chunk-IDKFOADO.js.gz +0 -0
  28. package/build/{runtime-chunk-DCHCPETD.js → runtime-chunk-INLZ4T6V.js} +1 -1
  29. package/build/runtime-chunk-INLZ4T6V.js.br +0 -0
  30. package/build/runtime-chunk-INLZ4T6V.js.gz +0 -0
  31. package/build/{runtime-chunk-4BMKE6ES.js → runtime-chunk-ISDQFD3B.js} +1 -1
  32. package/build/runtime-chunk-ISDQFD3B.js.br +0 -0
  33. package/build/runtime-chunk-ISDQFD3B.js.gz +0 -0
  34. package/build/{runtime-chunk-24H3WFTK.js → runtime-chunk-IVETVBB5.js} +1 -1
  35. package/build/runtime-chunk-IVETVBB5.js.br +0 -0
  36. package/build/runtime-chunk-IVETVBB5.js.gz +0 -0
  37. package/build/{runtime-chunk-WIHWNZGM.js → runtime-chunk-JFIELPCR.js} +1 -1
  38. package/build/runtime-chunk-JFIELPCR.js.br +0 -0
  39. package/build/runtime-chunk-JFIELPCR.js.gz +0 -0
  40. package/build/{runtime-chunk-UKC3GXYR.js → runtime-chunk-KGT64R74.js} +1 -1
  41. package/build/runtime-chunk-KGT64R74.js.br +0 -0
  42. package/build/runtime-chunk-KGT64R74.js.gz +0 -0
  43. package/build/{runtime-chunk-AELGHW4P.js → runtime-chunk-MVS4EJZ3.js} +1 -1
  44. package/build/runtime-chunk-MVS4EJZ3.js.br +0 -0
  45. package/build/runtime-chunk-MVS4EJZ3.js.gz +0 -0
  46. package/build/{runtime-chunk-YZOZISIF.js → runtime-chunk-NBPUHLWO.js} +1 -1
  47. package/build/runtime-chunk-NBPUHLWO.js.br +0 -0
  48. package/build/runtime-chunk-NBPUHLWO.js.gz +0 -0
  49. package/build/{runtime-chunk-QEQMFHXP.js → runtime-chunk-NHROOVYJ.js} +1 -1
  50. package/build/runtime-chunk-NHROOVYJ.js.br +0 -0
  51. package/build/runtime-chunk-NHROOVYJ.js.gz +0 -0
  52. package/build/{runtime-chunk-FVFP62G4.js → runtime-chunk-NMNYFTLO.js} +1 -1
  53. package/build/runtime-chunk-NMNYFTLO.js.br +0 -0
  54. package/build/runtime-chunk-NMNYFTLO.js.gz +0 -0
  55. package/build/{runtime-chunk-QZSA6WBT.js → runtime-chunk-OYIE77GW.js} +1 -1
  56. package/build/runtime-chunk-OYIE77GW.js.br +0 -0
  57. package/build/runtime-chunk-OYIE77GW.js.gz +0 -0
  58. package/build/{runtime-chunk-L6BTAFWG.js → runtime-chunk-Q7IYVDLG.js} +1 -1
  59. package/build/runtime-chunk-Q7IYVDLG.js.br +0 -0
  60. package/build/runtime-chunk-Q7IYVDLG.js.gz +0 -0
  61. package/build/{runtime-chunk-IIHOKKLP.js → runtime-chunk-SKYMJ662.js} +1 -1
  62. package/build/runtime-chunk-SKYMJ662.js.br +0 -0
  63. package/build/runtime-chunk-SKYMJ662.js.gz +0 -0
  64. package/build/{runtime-chunk-N4O4HFFU.js → runtime-chunk-U4SSOL4Z.js} +1 -1
  65. package/build/runtime-chunk-U4SSOL4Z.js.br +0 -0
  66. package/build/runtime-chunk-U4SSOL4Z.js.gz +0 -0
  67. package/build/{runtime-chunk-XXDRC64C.js → runtime-chunk-WCFTACIP.js} +1 -1
  68. package/build/runtime-chunk-WCFTACIP.js.br +0 -0
  69. package/build/runtime-chunk-WCFTACIP.js.gz +0 -0
  70. package/build/{runtime-chunk-G5CDJ5A2.js → runtime-chunk-WLH55Q7G.js} +1 -1
  71. package/build/runtime-chunk-WLH55Q7G.js.br +0 -0
  72. package/build/runtime-chunk-WLH55Q7G.js.gz +0 -0
  73. package/build/{runtime-chunk-WPORMQ43.js → runtime-chunk-WNPU65HI.js} +1 -1
  74. package/build/runtime-chunk-WNPU65HI.js.br +0 -0
  75. package/build/runtime-chunk-WNPU65HI.js.gz +0 -0
  76. package/build/{runtime-classicRuntime-DOC667AS.js → runtime-classicRuntime-36WWMRVL.js} +1 -1
  77. package/build/runtime-classicRuntime-36WWMRVL.js.br +0 -0
  78. package/build/runtime-classicRuntime-36WWMRVL.js.gz +0 -0
  79. package/build/{runtime-cloners-XTTGDCQH.js → runtime-cloners-7VQZGKRO.js} +1 -1
  80. package/build/runtime-cloners-7VQZGKRO.js.br +0 -0
  81. package/build/runtime-cloners-7VQZGKRO.js.gz +0 -0
  82. package/build/{runtime-components-OQZNW7GX.js → runtime-components-Q4ZHSM3G.js} +1 -1
  83. package/build/runtime-components-Q4ZHSM3G.js.br +0 -0
  84. package/build/runtime-components-Q4ZHSM3G.js.gz +0 -0
  85. package/build/{runtime-createDestroy-GD7OF7E7.js → runtime-createDestroy-H2L4DV2Q.js} +1 -1
  86. package/build/runtime-createDestroy-H2L4DV2Q.js.br +0 -0
  87. package/build/runtime-createDestroy-H2L4DV2Q.js.gz +0 -0
  88. package/build/{runtime-dragDrop-GZC5GEI3.js → runtime-dragDrop-TMCWI4AX.js} +1 -1
  89. package/build/runtime-dragDrop-TMCWI4AX.js.br +0 -0
  90. package/build/runtime-dragDrop-TMCWI4AX.js.gz +0 -0
  91. package/build/{runtime-gameControls-AB4FKVHF.js → runtime-gameControls-K3EET7EB.js} +1 -1
  92. package/build/runtime-gameControls-K3EET7EB.js.br +0 -0
  93. package/build/runtime-gameControls-K3EET7EB.js.gz +0 -0
  94. package/build/{runtime-hair-32VUKQJV.js → runtime-hair-UNCJEHMZ.js} +1 -1
  95. package/build/runtime-hair-UNCJEHMZ.js.br +2 -0
  96. package/build/runtime-hair-UNCJEHMZ.js.gz +0 -0
  97. package/build/{runtime-mergeStaticGeometries-CW7DRGM4.js → runtime-mergeStaticGeometries-U6HXCKAF.js} +1 -1
  98. package/build/runtime-mergeStaticGeometries-U6HXCKAF.js.br +0 -0
  99. package/build/runtime-mergeStaticGeometries-U6HXCKAF.js.gz +0 -0
  100. package/build/{runtime-miscActions-UNNG55JX.js → runtime-miscActions-MIHRP2IA.js} +1 -1
  101. package/build/runtime-miscActions-MIHRP2IA.js.br +0 -0
  102. package/build/runtime-miscActions-MIHRP2IA.js.gz +0 -0
  103. package/build/{runtime-mouseHover-VQCDWUJM.js → runtime-mouseHover-O7UOREGV.js} +1 -1
  104. package/build/runtime-mouseHover-O7UOREGV.js.br +0 -0
  105. package/build/runtime-mouseHover-O7UOREGV.js.gz +0 -0
  106. package/build/{runtime-particles-OAV5RWDA.js → runtime-particles-TNUIYZTS.js} +1 -1
  107. package/build/runtime-particles-TNUIYZTS.js.br +0 -0
  108. package/build/runtime-particles-TNUIYZTS.js.gz +0 -0
  109. package/build/{runtime-paths-3EGLFCCN.js → runtime-paths-BWFGUOH6.js} +1 -1
  110. package/build/runtime-paths-BWFGUOH6.js.br +0 -0
  111. package/build/runtime-paths-BWFGUOH6.js.gz +0 -0
  112. package/build/{runtime-resize-K3R7V2A3.js → runtime-resize-62A3W2SA.js} +1 -1
  113. package/build/runtime-resize-62A3W2SA.js.br +0 -0
  114. package/build/runtime-resize-62A3W2SA.js.gz +0 -0
  115. package/build/{runtime-sceneTransition-E3VERGJC.js → runtime-sceneTransition-3YMHQAIS.js} +1 -1
  116. package/build/runtime-sceneTransition-3YMHQAIS.js.br +0 -0
  117. package/build/runtime-sceneTransition-3YMHQAIS.js.gz +0 -0
  118. package/build/{runtime-scroll-RH7RUN3F.js → runtime-scroll-LRDQXDHP.js} +1 -1
  119. package/build/runtime-scroll-LRDQXDHP.js.br +0 -0
  120. package/build/runtime-scroll-LRDQXDHP.js.gz +0 -0
  121. package/build/runtime-shapeBlends-3GG2WNW2.js +1 -0
  122. package/build/runtime-shapeBlends-3GG2WNW2.js.br +2 -0
  123. package/build/runtime-shapeBlends-3GG2WNW2.js.gz +0 -0
  124. package/build/{runtime-text-M4YX657N.js → runtime-text-IYSXDHOW.js} +1 -1
  125. package/build/runtime-text-IYSXDHOW.js.br +0 -0
  126. package/build/runtime-text-IYSXDHOW.js.gz +0 -0
  127. package/build/{runtime-textInputs-SJB42NO3.js → runtime-textInputs-QAX5AYI7.js} +1 -1
  128. package/build/runtime-textInputs-QAX5AYI7.js.br +0 -0
  129. package/build/runtime-textInputs-QAX5AYI7.js.gz +0 -0
  130. package/build/{runtime-timeline-WII5EDYV.js → runtime-timeline-5ZWFKEVA.js} +1 -1
  131. package/build/runtime-timeline-5ZWFKEVA.js.br +0 -0
  132. package/build/runtime-timeline-5ZWFKEVA.js.gz +0 -0
  133. package/build/{runtime-tracking-PQDPSVNJ.js → runtime-tracking-4ZBAGCUN.js} +1 -1
  134. package/build/runtime-tracking-4ZBAGCUN.js.br +0 -0
  135. package/build/runtime-tracking-4ZBAGCUN.js.gz +0 -0
  136. package/build/{runtime-transitions-JHTBNVJX.js → runtime-transitions-LHIFZQV6.js} +1 -1
  137. package/build/runtime-transitions-LHIFZQV6.js.br +0 -0
  138. package/build/runtime-transitions-LHIFZQV6.js.gz +0 -0
  139. package/build/{runtime-ui2d-ATOCKBMJ.js → runtime-ui2d-MAIQOS5J.js} +1 -1
  140. package/build/runtime-ui2d-MAIQOS5J.js.br +0 -0
  141. package/build/runtime-ui2d-MAIQOS5J.js.gz +0 -0
  142. package/build/{runtime-vectorShapes-7ZXGKNXC.js → runtime-vectorShapes-6DZHHP7B.js} +1 -1
  143. package/build/runtime-vectorShapes-6DZHHP7B.js.br +0 -0
  144. package/build/runtime-vectorShapes-6DZHHP7B.js.gz +0 -0
  145. package/build/{runtime-webgpu-2SQXM6FH.js → runtime-webgpu-TV56PJIX.js} +1 -1
  146. package/build/runtime-webgpu-TV56PJIX.js.br +0 -0
  147. package/build/runtime-webgpu-TV56PJIX.js.gz +0 -0
  148. package/build/runtime.cjs +37 -37
  149. package/build/runtime.js +1 -1
  150. package/build/runtime.js.br +0 -0
  151. package/build/runtime.js.gz +0 -0
  152. package/build/runtime.standalone.js +1 -1
  153. package/build/runtime.standalone.js.br +0 -0
  154. package/build/runtime.standalone.js.gz +0 -0
  155. package/build/runtime.standalone.webgl.js +1 -1
  156. package/build/runtime.standalone.webgl.js.br +0 -0
  157. package/build/runtime.standalone.webgl.js.gz +0 -0
  158. package/build/runtime.standalone.webgpu.js +1 -1
  159. package/build/runtime.standalone.webgpu.js.br +0 -0
  160. package/build/runtime.standalone.webgpu.js.gz +0 -0
  161. package/build/runtime.standalone.webgpu.micro.js +1 -1
  162. package/build/runtime.standalone.webgpu.micro.js.br +0 -0
  163. package/build/runtime.standalone.webgpu.micro.js.gz +0 -0
  164. package/build/runtime.standalone.webgpu.min.js +1 -1
  165. package/build/runtime.standalone.webgpu.min.js.br +0 -0
  166. package/build/runtime.standalone.webgpu.min.js.gz +0 -0
  167. package/package.json +1 -1
  168. package/build/runtime-chunk-24H3WFTK.js.br +0 -0
  169. package/build/runtime-chunk-24H3WFTK.js.gz +0 -0
  170. package/build/runtime-chunk-4BMKE6ES.js.br +0 -0
  171. package/build/runtime-chunk-4BMKE6ES.js.gz +0 -0
  172. package/build/runtime-chunk-7GJTQZHN.js.br +0 -0
  173. package/build/runtime-chunk-7GJTQZHN.js.gz +0 -0
  174. package/build/runtime-chunk-AASXNCLC.js.br +0 -0
  175. package/build/runtime-chunk-AASXNCLC.js.gz +0 -0
  176. package/build/runtime-chunk-AELGHW4P.js.br +0 -0
  177. package/build/runtime-chunk-AELGHW4P.js.gz +0 -0
  178. package/build/runtime-chunk-CXXEDL4D.js.br +0 -0
  179. package/build/runtime-chunk-CXXEDL4D.js.gz +0 -0
  180. package/build/runtime-chunk-DCHCPETD.js.br +0 -0
  181. package/build/runtime-chunk-DCHCPETD.js.gz +0 -0
  182. package/build/runtime-chunk-FVFP62G4.js.br +0 -0
  183. package/build/runtime-chunk-FVFP62G4.js.gz +0 -0
  184. package/build/runtime-chunk-G5CDJ5A2.js.br +0 -0
  185. package/build/runtime-chunk-G5CDJ5A2.js.gz +0 -0
  186. package/build/runtime-chunk-GUIPUTN7.js.br +0 -0
  187. package/build/runtime-chunk-GUIPUTN7.js.gz +0 -0
  188. package/build/runtime-chunk-IIHOKKLP.js.br +0 -0
  189. package/build/runtime-chunk-IIHOKKLP.js.gz +0 -0
  190. package/build/runtime-chunk-KG3PGFA5.js +0 -1
  191. package/build/runtime-chunk-KG3PGFA5.js.br +0 -0
  192. package/build/runtime-chunk-KG3PGFA5.js.gz +0 -0
  193. package/build/runtime-chunk-L6BTAFWG.js.br +0 -0
  194. package/build/runtime-chunk-L6BTAFWG.js.gz +0 -0
  195. package/build/runtime-chunk-MLSGRRBI.js.br +0 -0
  196. package/build/runtime-chunk-MLSGRRBI.js.gz +0 -0
  197. package/build/runtime-chunk-MPHBANVQ.js.br +0 -0
  198. package/build/runtime-chunk-MPHBANVQ.js.gz +0 -0
  199. package/build/runtime-chunk-N4O4HFFU.js.br +0 -0
  200. package/build/runtime-chunk-N4O4HFFU.js.gz +0 -0
  201. package/build/runtime-chunk-QEQMFHXP.js.br +0 -0
  202. package/build/runtime-chunk-QEQMFHXP.js.gz +0 -0
  203. package/build/runtime-chunk-QZSA6WBT.js.br +0 -0
  204. package/build/runtime-chunk-QZSA6WBT.js.gz +0 -0
  205. package/build/runtime-chunk-UKC3GXYR.js.br +0 -0
  206. package/build/runtime-chunk-UKC3GXYR.js.gz +0 -0
  207. package/build/runtime-chunk-WIHWNZGM.js.br +0 -0
  208. package/build/runtime-chunk-WIHWNZGM.js.gz +0 -0
  209. package/build/runtime-chunk-WPORMQ43.js.br +0 -0
  210. package/build/runtime-chunk-WPORMQ43.js.gz +0 -0
  211. package/build/runtime-chunk-XXDRC64C.js.br +0 -0
  212. package/build/runtime-chunk-XXDRC64C.js.gz +0 -0
  213. package/build/runtime-chunk-YDJBLHAS.js.br +0 -0
  214. package/build/runtime-chunk-YDJBLHAS.js.gz +0 -0
  215. package/build/runtime-chunk-YFK3OQ3S.js.br +0 -0
  216. package/build/runtime-chunk-YFK3OQ3S.js.gz +0 -0
  217. package/build/runtime-chunk-YZOZISIF.js.br +0 -0
  218. package/build/runtime-chunk-YZOZISIF.js.gz +0 -0
  219. package/build/runtime-classicRuntime-DOC667AS.js.br +0 -0
  220. package/build/runtime-classicRuntime-DOC667AS.js.gz +0 -0
  221. package/build/runtime-cloners-XTTGDCQH.js.br +0 -0
  222. package/build/runtime-cloners-XTTGDCQH.js.gz +0 -0
  223. package/build/runtime-components-OQZNW7GX.js.br +0 -0
  224. package/build/runtime-components-OQZNW7GX.js.gz +0 -0
  225. package/build/runtime-createDestroy-GD7OF7E7.js.br +0 -0
  226. package/build/runtime-createDestroy-GD7OF7E7.js.gz +0 -0
  227. package/build/runtime-dragDrop-GZC5GEI3.js.br +0 -0
  228. package/build/runtime-dragDrop-GZC5GEI3.js.gz +0 -0
  229. package/build/runtime-gameControls-AB4FKVHF.js.br +0 -0
  230. package/build/runtime-gameControls-AB4FKVHF.js.gz +0 -0
  231. package/build/runtime-hair-32VUKQJV.js.br +0 -2
  232. package/build/runtime-hair-32VUKQJV.js.gz +0 -0
  233. package/build/runtime-mergeStaticGeometries-CW7DRGM4.js.br +0 -0
  234. package/build/runtime-mergeStaticGeometries-CW7DRGM4.js.gz +0 -0
  235. package/build/runtime-miscActions-UNNG55JX.js.br +0 -0
  236. package/build/runtime-miscActions-UNNG55JX.js.gz +0 -0
  237. package/build/runtime-mouseHover-VQCDWUJM.js.br +0 -0
  238. package/build/runtime-mouseHover-VQCDWUJM.js.gz +0 -0
  239. package/build/runtime-particles-OAV5RWDA.js.br +0 -0
  240. package/build/runtime-particles-OAV5RWDA.js.gz +0 -0
  241. package/build/runtime-paths-3EGLFCCN.js.br +0 -0
  242. package/build/runtime-paths-3EGLFCCN.js.gz +0 -0
  243. package/build/runtime-resize-K3R7V2A3.js.br +0 -0
  244. package/build/runtime-resize-K3R7V2A3.js.gz +0 -0
  245. package/build/runtime-sceneTransition-E3VERGJC.js.br +0 -0
  246. package/build/runtime-sceneTransition-E3VERGJC.js.gz +0 -0
  247. package/build/runtime-scroll-RH7RUN3F.js.br +0 -0
  248. package/build/runtime-scroll-RH7RUN3F.js.gz +0 -0
  249. package/build/runtime-shapeBlends-TI6ZZTFP.js +0 -1
  250. package/build/runtime-shapeBlends-TI6ZZTFP.js.br +0 -0
  251. package/build/runtime-shapeBlends-TI6ZZTFP.js.gz +0 -0
  252. package/build/runtime-text-M4YX657N.js.br +0 -0
  253. package/build/runtime-text-M4YX657N.js.gz +0 -0
  254. package/build/runtime-textInputs-SJB42NO3.js.br +0 -0
  255. package/build/runtime-textInputs-SJB42NO3.js.gz +0 -0
  256. package/build/runtime-timeline-WII5EDYV.js.br +0 -0
  257. package/build/runtime-timeline-WII5EDYV.js.gz +0 -0
  258. package/build/runtime-tracking-PQDPSVNJ.js.br +0 -0
  259. package/build/runtime-tracking-PQDPSVNJ.js.gz +0 -0
  260. package/build/runtime-transitions-JHTBNVJX.js.br +0 -0
  261. package/build/runtime-transitions-JHTBNVJX.js.gz +0 -0
  262. package/build/runtime-ui2d-ATOCKBMJ.js.br +0 -0
  263. package/build/runtime-ui2d-ATOCKBMJ.js.gz +0 -0
  264. package/build/runtime-vectorShapes-7ZXGKNXC.js.br +0 -0
  265. package/build/runtime-vectorShapes-7ZXGKNXC.js.gz +0 -0
  266. package/build/runtime-webgpu-2SQXM6FH.js.br +0 -0
  267. package/build/runtime-webgpu-2SQXM6FH.js.gz +0 -0
@@ -1 +1 @@
1
- import{b as t,h as e}from"./runtime-chunk-KG3PGFA5.js";import"./runtime-chunk-WPORMQ43.js";import"./runtime-chunk-NTUTXO7Q.js";import{a}from"./runtime-chunk-WIHWNZGM.js";import"./runtime-chunk-HD7WF3XN.js";import{a as i}from"./runtime-chunk-GGSUJEGZ.js";import"./runtime-chunk-QEQMFHXP.js";import"./runtime-chunk-IIHOKKLP.js";import"./runtime-chunk-24H3WFTK.js";import"./runtime-chunk-TU4KDRKR.js";import"./runtime-chunk-FTVQTRM7.js";import{a as r,b as s}from"./runtime-chunk-VAVYZ35B.js";import{a as o,c as n}from"./runtime-chunk-FQNSP44B.js";import"./runtime-chunk-4BMKE6ES.js";import"./runtime-chunk-AASXNCLC.js";import"./runtime-chunk-DCHCPETD.js";import"./runtime-chunk-N4O4HFFU.js";import{ea as h}from"./runtime-chunk-QZSA6WBT.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{b as m,e as c}from"./runtime-chunk-M6FFVLT6.js";import"./runtime-chunk-MPHBANVQ.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as d}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import{Bc as p,Ec as u,Fc as l}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var g=(t,e)=>e.some(e=>e instanceof RegExp?e.test(t):e===t);var w=class{constructor({url:t,context:e},a,i,r){if(this.controlsManager=a,this.shared=i,this.condition=r,!t)throw new Error("Missing property");this.url=t.startsWith("mailto:")?t:function(t,e){if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return((t,{stripHash:e})=>{let a=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(t);if(!a)throw new Error(`Invalid URL: ${t}`);let{type:i,data:r,hash:s}=a.groups,o=i.split(";");s=e?"":s;let n=!1;"base64"===o[o.length-1]&&(o.pop(),n=!0);let h=(o.shift()||"").toLowerCase(),m=[...o.map(t=>{let[e,a=""]=t.split("=").map(t=>t.trim());return"charset"===e&&(a=a.toLowerCase(),"us-ascii"===a)?"":`${e}${a?`=${a}`:""}`}).filter(Boolean)];return n&&m.push("base64"),(m.length>0||h&&"text/plain"!==h)&&m.unshift(h),`data:${m.join(";")},${n?r.trim():r}${s?`#${s}`:""}`})(t,e);if(/^view-source:/i.test(t))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let a=t.startsWith("//");!a&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let i=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&"https:"===i.protocol&&(i.protocol="http:"),e.forceHttps&&"http:"===i.protocol&&(i.protocol="https:"),e.stripAuthentication&&(i.username="",i.password=""),e.stripHash?i.hash="":e.stripTextFragment&&(i.hash=i.hash.replace(/#?:~:text.*?$/i,"")),i.pathname){let t=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,e=0,a="";for(;;){let r=t.exec(i.pathname);if(!r)break;let s=r[0],o=r.index;a+=i.pathname.slice(e,o).replace(/\/{2,}/g,"/"),a+=s,e=o+s.length}a+=i.pathname.slice(e,i.pathname.length).replace(/\/{2,}/g,"/"),i.pathname=a}if(i.pathname)try{i.pathname=decodeURI(i.pathname)}catch{}if(!0===e.removeDirectoryIndex&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let t=i.pathname.split("/"),a=t[t.length-1];g(a,e.removeDirectoryIndex)&&(t=t.slice(0,-1),i.pathname=t.slice(1).join("/")+"/")}if(i.hostname&&(i.hostname=i.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(i.hostname)&&(i.hostname=i.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let t of[...i.searchParams.keys()])g(t,e.removeQueryParameters)&&i.searchParams.delete(t);if(!0===e.removeQueryParameters&&(i.search=""),e.sortQueryParameters){i.searchParams.sort();try{i.search=decodeURIComponent(i.search)}catch{}}e.removeTrailingSlash&&(i.pathname=i.pathname.replace(/\/$/,""));let r=t;return t=i.toString(),!e.removeSingleSlash&&"/"===i.pathname&&!r.endsWith("/")&&""===i.hash&&(t=t.replace(/\/$/,"")),(e.removeTrailingSlash||"/"===i.pathname)&&""===i.hash&&e.removeSingleSlash&&(t=t.replace(/\/$/,"")),a&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t}(t,{removeTrailingSlash:!1,removeSingleSlash:!1,stripWWW:!1}),this.context=e??"tab"}dispatch(){if(!1===c(this.shared,this.condition))return!1;n?window.location.assign(this.url):("tab"===this.context||o&&"none"===this.context?window.open(this.url,"_blank"):"window"===this.context?window.open(this.url,"_blank",`width=${window.innerWidth}, height=${window.innerHeight}`):window.open(this.url,"_parent"),this.controlsManager.orbitControls?.onPointerUp(r[0]),s())}},f=class{constructor(t,e,a,i,r){this.data=t,this.page=e,this.shared=a,this.eventManager=i,this.condition=r}dispatch(){if(!1===c(this.shared,this.condition))return!1;clearTimeout(this.timeoutId),delete this.timeoutId,this.timeoutId=window.setTimeout(()=>{this.shared.reset(this.shared.data,!0),a(this.page,this.shared,!0),this.eventManager.reset(),this.eventManager.controlsManager.gameControl?.reset(!0),this.page.switchToPlayCamera(),this.eventManager.controlsManager.requestRender(),delete this.timeoutId},1e3*(this.data.delay??0))}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},v={type:"beginState"},C={type:"completeState",isfromEntity:!1},y={type:"requestRender"},I=class extends p{constructor(t,e,a,i){super(),this.data=t,this.page=e,this.shared=a,this.condition=i,this.toggleIsForward=!1,this.posStart=new l,this.posEnd=new l,this.qStart=new u,this.qEnd=new u,this.zoomStart=1,this.zoomEnd=1}init(){}get playing(){return!0===this.runner?.isPlaying}buildAnimation(a=!1){if(!this.data.animate)return;let i=this.page.scene.find(this.data.targetCamera);if(!i||!i.visible)throw new ReferenceError("Target camera not founded or not visible");this.posStart.copy(this.page.activeCamera.position),this.qStart.copy(this.page.activeCamera.quaternion),this.zoomStart=this.page.activeCamera.zoom;let r={duration:this.data.duration,delay:0,delayDirection:"start-once",direction:"normal",repeat:0,ease:e(this.data)},s=t=>{let e=this.page.activeCamera;e.position.lerpVectors(this.posStart,this.posEnd,t),e.quaternion.slerpQuaternions(this.qStart,this.qEnd,t),e.zoom=this.zoomStart+(this.zoomEnd-this.zoomStart)*t,e.wasMovedBySwitchCameraAction=!0,e.updateMatrix(),e.updateMatrixWorld(),e.updateProjectionMatrix(),e.dispatchEvent(y),1===t&&e.dispatchEvent(C)};this.runner=new t(r,s,()=>{"Toggle"!==this.data.runMode||this.toggleIsForward?(this.posEnd.copy(i.position),this.qEnd.copy(i.quaternion),this.zoomEnd=i.zoom,this.fromCamera=this.page.activeCamera,this.switchCamera(i.uuid)):this.fromCamera&&(this.posEnd.copy(this.fromCamera.position),this.qEnd.copy(this.fromCamera.quaternion),this.zoomEnd=this.fromCamera.zoom,this.switchCamera(this.fromCamera.uuid)),this.page.activeCamera.dispatchEvent(v),s(0)})}update(t){this.runner?.update(t),!0!==this.runner?.isPlaying&&i.remove(this)}start(){!this.runner||(this.runner.start(i.time),i.add(this))}switchCamera(t){let e=this.page.activeCamera,a=this.page.scene.find(t);if(!a||!a.visible)throw new ReferenceError("Target camera not founded or not visible");this.page.switchActiveCamera(a),e.dispatchEvent({type:"cameraChange",camera:a})}play(){if(!1===c(this.shared,this.condition))return!1;if(!this.playing&&this.page.activeCamera.uuid!==this.data.targetCamera)try{clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{delete this.timeoutId,this.data.animate?(this.buildAnimation(),this.start()):this.switchCamera(this.data.targetCamera)},1e3*this.data.delay)}catch{}}pause(){this.runner?.stop(),i.remove(this),clearTimeout(this.timeoutId),delete this.timeoutId}toggle(t){if(!1===c(this.shared,this.condition))return!1;if(window.clearTimeout(this.timeoutId),delete this.timeoutId,t!==this.toggleIsForward)try{this.playing?(this.runner?.stop(),this.toggleIsForward=t??!this.toggleIsForward,this.buildAnimation(!0),this.start()):this.timeoutId=window.setTimeout(()=>{this.toggleIsForward=t??!this.toggleIsForward,this.data.animate?(this.runner?.stop(),this.buildAnimation(),this.start()):(this.toggleIsForward?(this.fromCamera=this.page.activeCamera,this.switchCamera(this.data.targetCamera)):this.fromCamera&&this.switchCamera(this.fromCamera.uuid),this.page.activeCamera.dispatchEvent(C),this.page.activeCamera.dispatchEvent(y))},1e3*this.data.delay)}catch{}}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause(),this.toggleIsForward=!1}},S=class{constructor(t,e,a,i){this.data=t,this.page=e,this.shared=a,this.condition=i}dispatch(){if(!1===c(this.shared,this.condition))return!1;("single"===this.data.target?this.data.variableId?[this.data.variableId]:[]:Object.keys(this.shared.getVariables())).forEach(t=>{this.shared.getVariable(t);let e=this.shared.data.variables.data(t)?.value;void 0!==e&&this.shared.updateVariable(t,e),this.shared.enableLocalStorageForPersistentVariables&&localStorage.removeItem(h(t))})}dispose(){}};m("Link",({data:t,eventManager:e,shared:a,actionCondition:i})=>new w(t,e.controlsManager,a,i)),m("Reset",({data:t,page:e,shared:a,eventManager:i,actionCondition:r})=>new f(t,e,a,i,r)),m("SwitchCamera",({data:t,page:e,shared:a,actionCondition:i})=>new I(t,e,a,i)),m("ClearLocalStorage",({data:t,page:e,shared:a,actionCondition:i})=>new S(t,e,a,i)),d("misc-actions");
1
+ import{b as t,h as e}from"./runtime-chunk-FNNRPWF7.js";import"./runtime-chunk-WNPU65HI.js";import"./runtime-chunk-NTUTXO7Q.js";import{a}from"./runtime-chunk-JFIELPCR.js";import"./runtime-chunk-HD7WF3XN.js";import{a as i}from"./runtime-chunk-GGSUJEGZ.js";import"./runtime-chunk-NHROOVYJ.js";import"./runtime-chunk-SKYMJ662.js";import"./runtime-chunk-IVETVBB5.js";import"./runtime-chunk-TU4KDRKR.js";import"./runtime-chunk-FTVQTRM7.js";import{a as r,b as s}from"./runtime-chunk-VAVYZ35B.js";import{a as o,c as n}from"./runtime-chunk-FQNSP44B.js";import"./runtime-chunk-ISDQFD3B.js";import"./runtime-chunk-4BGTCDLP.js";import"./runtime-chunk-INLZ4T6V.js";import"./runtime-chunk-U4SSOL4Z.js";import{ea as h}from"./runtime-chunk-OYIE77GW.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{b as m,e as c}from"./runtime-chunk-M6FFVLT6.js";import"./runtime-chunk-F4XMOADV.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as d}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import{Bc as p,Ec as u,Fc as l}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var g=(t,e)=>e.some(e=>e instanceof RegExp?e.test(t):e===t);var w=class{constructor({url:t,context:e},a,i,r){if(this.controlsManager=a,this.shared=i,this.condition=r,!t)throw new Error("Missing property");this.url=t.startsWith("mailto:")?t:function(t,e){if(e={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripTextFragment:!0,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeSingleSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...e},t=t.trim(),/^data:/i.test(t))return((t,{stripHash:e})=>{let a=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(t);if(!a)throw new Error(`Invalid URL: ${t}`);let{type:i,data:r,hash:s}=a.groups,o=i.split(";");s=e?"":s;let n=!1;"base64"===o[o.length-1]&&(o.pop(),n=!0);let h=(o.shift()||"").toLowerCase(),m=[...o.map(t=>{let[e,a=""]=t.split("=").map(t=>t.trim());return"charset"===e&&(a=a.toLowerCase(),"us-ascii"===a)?"":`${e}${a?`=${a}`:""}`}).filter(Boolean)];return n&&m.push("base64"),(m.length>0||h&&"text/plain"!==h)&&m.unshift(h),`data:${m.join(";")},${n?r.trim():r}${s?`#${s}`:""}`})(t,e);if(/^view-source:/i.test(t))throw new Error("`view-source:` is not supported as it is a non-standard protocol");let a=t.startsWith("//");!a&&/^\.*\//.test(t)||(t=t.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,e.defaultProtocol));let i=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(e.forceHttp&&"https:"===i.protocol&&(i.protocol="http:"),e.forceHttps&&"http:"===i.protocol&&(i.protocol="https:"),e.stripAuthentication&&(i.username="",i.password=""),e.stripHash?i.hash="":e.stripTextFragment&&(i.hash=i.hash.replace(/#?:~:text.*?$/i,"")),i.pathname){let t=/\b[a-z][a-z\d+\-.]{1,50}:\/\//g,e=0,a="";for(;;){let r=t.exec(i.pathname);if(!r)break;let s=r[0],o=r.index;a+=i.pathname.slice(e,o).replace(/\/{2,}/g,"/"),a+=s,e=o+s.length}a+=i.pathname.slice(e,i.pathname.length).replace(/\/{2,}/g,"/"),i.pathname=a}if(i.pathname)try{i.pathname=decodeURI(i.pathname)}catch{}if(!0===e.removeDirectoryIndex&&(e.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let t=i.pathname.split("/"),a=t[t.length-1];g(a,e.removeDirectoryIndex)&&(t=t.slice(0,-1),i.pathname=t.slice(1).join("/")+"/")}if(i.hostname&&(i.hostname=i.hostname.replace(/\.$/,""),e.stripWWW&&/^www\.(?!www\.)[a-z\-\d]{1,63}\.[a-z.\-\d]{2,63}$/.test(i.hostname)&&(i.hostname=i.hostname.replace(/^www\./,""))),Array.isArray(e.removeQueryParameters))for(let t of[...i.searchParams.keys()])g(t,e.removeQueryParameters)&&i.searchParams.delete(t);if(!0===e.removeQueryParameters&&(i.search=""),e.sortQueryParameters){i.searchParams.sort();try{i.search=decodeURIComponent(i.search)}catch{}}e.removeTrailingSlash&&(i.pathname=i.pathname.replace(/\/$/,""));let r=t;return t=i.toString(),!e.removeSingleSlash&&"/"===i.pathname&&!r.endsWith("/")&&""===i.hash&&(t=t.replace(/\/$/,"")),(e.removeTrailingSlash||"/"===i.pathname)&&""===i.hash&&e.removeSingleSlash&&(t=t.replace(/\/$/,"")),a&&!e.normalizeProtocol&&(t=t.replace(/^http:\/\//,"//")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\/\//,"")),t}(t,{removeTrailingSlash:!1,removeSingleSlash:!1,stripWWW:!1}),this.context=e??"tab"}dispatch(){if(!1===c(this.shared,this.condition))return!1;n?window.location.assign(this.url):("tab"===this.context||o&&"none"===this.context?window.open(this.url,"_blank"):"window"===this.context?window.open(this.url,"_blank",`width=${window.innerWidth}, height=${window.innerHeight}`):window.open(this.url,"_parent"),this.controlsManager.orbitControls?.onPointerUp(r[0]),s())}},f=class{constructor(t,e,a,i,r){this.data=t,this.page=e,this.shared=a,this.eventManager=i,this.condition=r}dispatch(){if(!1===c(this.shared,this.condition))return!1;clearTimeout(this.timeoutId),delete this.timeoutId,this.timeoutId=window.setTimeout(()=>{this.shared.reset(this.shared.data,!0),a(this.page,this.shared,!0),this.eventManager.reset(),this.eventManager.controlsManager.gameControl?.reset(!0),this.page.switchToPlayCamera(),this.eventManager.controlsManager.requestRender(),delete this.timeoutId},1e3*(this.data.delay??0))}dispose(){clearTimeout(this.timeoutId),delete this.timeoutId}},v={type:"beginState"},C={type:"completeState",isfromEntity:!1},y={type:"requestRender"},I=class extends p{constructor(t,e,a,i){super(),this.data=t,this.page=e,this.shared=a,this.condition=i,this.toggleIsForward=!1,this.posStart=new l,this.posEnd=new l,this.qStart=new u,this.qEnd=new u,this.zoomStart=1,this.zoomEnd=1}init(){}get playing(){return!0===this.runner?.isPlaying}buildAnimation(a=!1){if(!this.data.animate)return;let i=this.page.scene.find(this.data.targetCamera);if(!i||!i.visible)throw new ReferenceError("Target camera not founded or not visible");this.posStart.copy(this.page.activeCamera.position),this.qStart.copy(this.page.activeCamera.quaternion),this.zoomStart=this.page.activeCamera.zoom;let r={duration:this.data.duration,delay:0,delayDirection:"start-once",direction:"normal",repeat:0,ease:e(this.data)},s=t=>{let e=this.page.activeCamera;e.position.lerpVectors(this.posStart,this.posEnd,t),e.quaternion.slerpQuaternions(this.qStart,this.qEnd,t),e.zoom=this.zoomStart+(this.zoomEnd-this.zoomStart)*t,e.wasMovedBySwitchCameraAction=!0,e.updateMatrix(),e.updateMatrixWorld(),e.updateProjectionMatrix(),e.dispatchEvent(y),1===t&&e.dispatchEvent(C)};this.runner=new t(r,s,()=>{"Toggle"!==this.data.runMode||this.toggleIsForward?(this.posEnd.copy(i.position),this.qEnd.copy(i.quaternion),this.zoomEnd=i.zoom,this.fromCamera=this.page.activeCamera,this.switchCamera(i.uuid)):this.fromCamera&&(this.posEnd.copy(this.fromCamera.position),this.qEnd.copy(this.fromCamera.quaternion),this.zoomEnd=this.fromCamera.zoom,this.switchCamera(this.fromCamera.uuid)),this.page.activeCamera.dispatchEvent(v),s(0)})}update(t){this.runner?.update(t),!0!==this.runner?.isPlaying&&i.remove(this)}start(){!this.runner||(this.runner.start(i.time),i.add(this))}switchCamera(t){let e=this.page.activeCamera,a=this.page.scene.find(t);if(!a||!a.visible)throw new ReferenceError("Target camera not founded or not visible");this.page.switchActiveCamera(a),e.dispatchEvent({type:"cameraChange",camera:a})}play(){if(!1===c(this.shared,this.condition))return!1;if(!this.playing&&this.page.activeCamera.uuid!==this.data.targetCamera)try{clearTimeout(this.timeoutId),this.timeoutId=window.setTimeout(()=>{delete this.timeoutId,this.data.animate?(this.buildAnimation(),this.start()):this.switchCamera(this.data.targetCamera)},1e3*this.data.delay)}catch{}}pause(){this.runner?.stop(),i.remove(this),clearTimeout(this.timeoutId),delete this.timeoutId}toggle(t){if(!1===c(this.shared,this.condition))return!1;if(window.clearTimeout(this.timeoutId),delete this.timeoutId,t!==this.toggleIsForward)try{this.playing?(this.runner?.stop(),this.toggleIsForward=t??!this.toggleIsForward,this.buildAnimation(!0),this.start()):this.timeoutId=window.setTimeout(()=>{this.toggleIsForward=t??!this.toggleIsForward,this.data.animate?(this.runner?.stop(),this.buildAnimation(),this.start()):(this.toggleIsForward?(this.fromCamera=this.page.activeCamera,this.switchCamera(this.data.targetCamera)):this.fromCamera&&this.switchCamera(this.fromCamera.uuid),this.page.activeCamera.dispatchEvent(C),this.page.activeCamera.dispatchEvent(y))},1e3*this.data.delay)}catch{}}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause(),this.toggleIsForward=!1}},S=class{constructor(t,e,a,i){this.data=t,this.page=e,this.shared=a,this.condition=i}dispatch(){if(!1===c(this.shared,this.condition))return!1;("single"===this.data.target?this.data.variableId?[this.data.variableId]:[]:Object.keys(this.shared.getVariables())).forEach(t=>{this.shared.getVariable(t);let e=this.shared.data.variables.data(t)?.value;void 0!==e&&this.shared.updateVariable(t,e),this.shared.enableLocalStorageForPersistentVariables&&localStorage.removeItem(h(t))})}dispose(){}};m("Link",({data:t,eventManager:e,shared:a,actionCondition:i})=>new w(t,e.controlsManager,a,i)),m("Reset",({data:t,page:e,shared:a,eventManager:i,actionCondition:r})=>new f(t,e,a,i,r)),m("SwitchCamera",({data:t,page:e,shared:a,actionCondition:i})=>new I(t,e,a,i)),m("ClearLocalStorage",({data:t,page:e,shared:a,actionCondition:i})=>new S(t,e,a,i)),d("misc-actions");
@@ -1 +1 @@
1
- import{a as t,b as e,c as s,d as i}from"./runtime-chunk-GUIPUTN7.js";import"./runtime-chunk-XXDRC64C.js";import{a as n}from"./runtime-chunk-NBYTQLIB.js";import{h as r}from"./runtime-chunk-QEQMFHXP.js";import"./runtime-chunk-IIHOKKLP.js";import"./runtime-chunk-24H3WFTK.js";import"./runtime-chunk-TU4KDRKR.js";import{a as o,b as a}from"./runtime-chunk-DZNU62CT.js";import{a as h}from"./runtime-chunk-VAVYZ35B.js";import{e as c}from"./runtime-chunk-FQNSP44B.js";import"./runtime-chunk-4BMKE6ES.js";import"./runtime-chunk-DCHCPETD.js";import"./runtime-chunk-YFK3OQ3S.js";import"./runtime-chunk-N4O4HFFU.js";import"./runtime-chunk-QZSA6WBT.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as u,g as m}from"./runtime-chunk-M6FFVLT6.js";import"./runtime-chunk-MPHBANVQ.js";import"./runtime-chunk-RTLL6WIB.js";import{e as v,f as p}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as E}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var d=class{constructor(t,e,s,i,n,r){this.id=t,this.data=e,this.object=s,this.entered=!1,this.actions=u(e,e.actions,i,n,r,s)}disconnect(){m(this.actions)}dispatchEnter(){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),this.entered||(this.entered=!0,this.actions.TimelineAnimation.forEach(t=>t.playFromCurrent()),this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Animation.forEach(t=>t.play()),this.actions.Create.forEach(t=>t.dispatchStart()),this.actions.Particles.forEach(t=>t.dispatchBasic()),this.actions.Destroy.forEach(t=>t.dispatch()),this.actions.SwitchCamera.forEach(t=>t.playFromCurrent()),this.actions.SceneTransition.forEach(t=>t.dispatch()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch()))}dispatchLeave(){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),this.entered&&(this.entered=!1,this.actions.TimelineAnimation.forEach(t=>t.reverseFromCurrent()),this.actions.Create.forEach(t=>t.dispatchStop()),this.actions.Transition.forEach(t=>t.reverseFromCurrent()),this.actions.Particles.forEach(t=>t.reverseFromCurrent()),this.actions.SwitchCamera.forEach(t=>t.reverseFromCurrent()))}dispatchUserEvent(t){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),t?(this.actions.Transition.forEach(t=>t.reverseFromCurrent()),this.actions.Particles.forEach(t=>t.reverseFromCurrent()),this.actions.Animation.forEach(t=>t.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(t=>t.reverseFromCurrent()),this.actions.SwitchCamera.forEach(t=>t.reverseFromCurrent())):(this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Animation.forEach(t=>t.playFromCurrent()),this.actions.TimelineAnimation.forEach(t=>t.playFromCurrent()),this.actions.Create.forEach(t=>t.dispatch()),this.actions.Particles.forEach(t=>t.dispatchBasic()),this.actions.Destroy.forEach(t=>t.dispatch()),this.actions.SwitchCamera.forEach(t=>t.playFromCurrent())),this.actions.SceneTransition.forEach(t=>t.dispatch()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}},f=class extends o{constructor(t,e){super(t),this.eventManager=e,this.eventsPerObjects={},this.objects=[],this.objects2D=[],this._prevObjects=[],this.onMouseDown=t=>{h.length>1||(this.eventContext.updateRaycaster(t),this.handleMouseHoverEvent())},this.onMouseUp=t=>{h.length>1||this.handleMouseHoverEvent(!0)},this.onMouseMove=t=>{h.length>1||(this.eventContext.updateRaycaster(t),this.handleMouseHoverEvent())},this.onUserEvent=({eventName:t,target:e,reverse:s})=>{if(!t||!e)return;let i=n(t);i&&"MouseHover"===i&&(e.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[e.uuid]?.forEach(t=>t.dispatchUserEvent(s)))}}connect(){let{page:t,sharedAssets:e}=this.eventContext,s=(s,i)=>{if(s.visible&&s.data?.events.length){for(let{id:i,data:n}of s.data.events)if(!n.disabled&&"MouseHover"===n.type)try{let r=new d(i,n,s,t,e,this.eventManager);this.eventsPerObjects[s.uuid]?this.eventsPerObjects[s.uuid].push(r):this.eventsPerObjects[s.uuid]=[r]}catch(t){}this.eventsPerObjects[s.uuid]?.length&&this.objects.push(v(s)?i:s)}};if(t.traverseEntity(t=>{(p(t)||t instanceof r)&&t.frame?.traverse(e=>{s(e,t)}),s(t)}),!this.objects.length)return;let{domElement:i}=this.eventContext;this.domEventsNeeded.clear(),c&&(this.domEventsNeeded.add("pointerdown"),i.addEventListener("pointerdown",this.onMouseDown),this.domEventsNeeded.add("pointerup"),i.addEventListener("pointerup",this.onMouseUp)),this.domEventsNeeded.add("pointermove"),i.addEventListener("pointermove",this.onMouseMove),this.objects.forEach(t=>{t.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if(!this.objects.length)return;let{domElement:t}=this.eventContext;this.domEventsNeeded.clear(),c&&(t.removeEventListener("pointerdown",this.onMouseDown),t.removeEventListener("pointerup",this.onMouseUp)),t.removeEventListener("pointermove",this.onMouseMove),Object.values(this.eventsPerObjects).forEach(t=>{t.forEach(t=>{t.disconnect()})}),this.objects.forEach(t=>{t.removeEventListener("userEvent",this.onUserEvent)})}handleMouseHoverEvent(n=!1){let r=[];if(!n){let{stopRaycast:n,raycaster:o,page:a,pointerScreen:h}=this.eventContext,c=!1;if(a.uiCanvas&&(c=s(a,[h.x,h.y],Object.keys(this.eventsPerObjects),t=>{r.push(t)})),n&&!c){let i=t(o,a,this.objects);r=e(i),i.forEach(t=>{p(t.object)&&s(t.object,[t?.uv?.x??0,t?.uv?.y??0],Object.keys(this.eventsPerObjects),t=>{r.push(t)})})}else this.objects.forEach(t=>{let e=i(o,t);e&&(r.push(t),p(t)&&s(t,[e?.uv?.x??0,e?.uv?.y??0],Object.keys(this.eventsPerObjects),t=>{r.push(t)}))})}this._prevObjects.length&&this._prevObjects.forEach(t=>{r.includes(t)||(t.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[t.uuid]?.forEach(t=>t.dispatchLeave()))}),r.length&&r.forEach(t=>{t.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[t.uuid]?.forEach(t=>t.dispatchEnter())}),this._prevObjects=r}};a("MouseHover",({eventContext:t,eventManager:e})=>new f(t,e)),E("mousehover");
1
+ import{a as t,b as e,c as s,d as i}from"./runtime-chunk-HKTFFRM3.js";import"./runtime-chunk-WCFTACIP.js";import{a as n}from"./runtime-chunk-NBYTQLIB.js";import{h as r}from"./runtime-chunk-NHROOVYJ.js";import"./runtime-chunk-SKYMJ662.js";import"./runtime-chunk-IVETVBB5.js";import"./runtime-chunk-TU4KDRKR.js";import{a as o,b as a}from"./runtime-chunk-DZNU62CT.js";import{a as h}from"./runtime-chunk-VAVYZ35B.js";import{e as c}from"./runtime-chunk-FQNSP44B.js";import"./runtime-chunk-ISDQFD3B.js";import"./runtime-chunk-INLZ4T6V.js";import"./runtime-chunk-IDKFOADO.js";import"./runtime-chunk-U4SSOL4Z.js";import"./runtime-chunk-OYIE77GW.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as u,g as m}from"./runtime-chunk-M6FFVLT6.js";import"./runtime-chunk-F4XMOADV.js";import"./runtime-chunk-RTLL6WIB.js";import{e as v,f as p}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as d}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var E=class{constructor(t,e,s,i,n,r){this.id=t,this.data=e,this.object=s,this.entered=!1,this.actions=u(e,e.actions,i,n,r,s)}disconnect(){m(this.actions)}dispatchEnter(){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),this.entered||(this.entered=!0,this.actions.TimelineAnimation.forEach(t=>t.playFromCurrent()),this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Animation.forEach(t=>t.play()),this.actions.Create.forEach(t=>t.dispatchStart()),this.actions.Particles.forEach(t=>t.dispatchBasic()),this.actions.Destroy.forEach(t=>t.dispatch()),this.actions.SwitchCamera.forEach(t=>t.playFromCurrent()),this.actions.SceneTransition.forEach(t=>t.dispatch()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch()))}dispatchLeave(){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),this.entered&&(this.entered=!1,this.actions.TimelineAnimation.forEach(t=>t.reverseFromCurrent()),this.actions.Create.forEach(t=>t.dispatchStop()),this.actions.Transition.forEach(t=>t.reverseFromCurrent()),this.actions.Particles.forEach(t=>t.reverseFromCurrent()),this.actions.SwitchCamera.forEach(t=>t.reverseFromCurrent()))}dispatchUserEvent(t){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),t?(this.actions.Transition.forEach(t=>t.reverseFromCurrent()),this.actions.Particles.forEach(t=>t.reverseFromCurrent()),this.actions.Animation.forEach(t=>t.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(t=>t.reverseFromCurrent()),this.actions.SwitchCamera.forEach(t=>t.reverseFromCurrent())):(this.actions.Transition.forEach(t=>t.playFromCurrent()),this.actions.Animation.forEach(t=>t.playFromCurrent()),this.actions.TimelineAnimation.forEach(t=>t.playFromCurrent()),this.actions.Create.forEach(t=>t.dispatch()),this.actions.Particles.forEach(t=>t.dispatchBasic()),this.actions.Destroy.forEach(t=>t.dispatch()),this.actions.SwitchCamera.forEach(t=>t.playFromCurrent())),this.actions.SceneTransition.forEach(t=>t.dispatch()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}},f=class extends o{constructor(t,e){super(t),this.eventManager=e,this.eventsPerObjects={},this.objects=[],this.objects2D=[],this._prevObjects=[],this.onMouseDown=t=>{h.length>1||(this.eventContext.updateRaycaster(t),this.handleMouseHoverEvent())},this.onMouseUp=t=>{h.length>1||this.handleMouseHoverEvent(!0)},this.onMouseMove=t=>{h.length>1||(this.eventContext.updateRaycaster(t),this.handleMouseHoverEvent())},this.onUserEvent=({eventName:t,target:e,reverse:s})=>{if(!t||!e)return;let i=n(t);i&&"MouseHover"===i&&(e.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[e.uuid]?.forEach(t=>t.dispatchUserEvent(s)))}}connect(){let{page:t,sharedAssets:e}=this.eventContext,s=(s,i)=>{if(s.visible&&s.data?.events.length){for(let{id:i,data:n}of s.data.events)if(!n.disabled&&"MouseHover"===n.type)try{let r=new E(i,n,s,t,e,this.eventManager);this.eventsPerObjects[s.uuid]?this.eventsPerObjects[s.uuid].push(r):this.eventsPerObjects[s.uuid]=[r]}catch(t){}this.eventsPerObjects[s.uuid]?.length&&this.objects.push(v(s)?i:s)}};if(t.traverseEntity(t=>{(p(t)||t instanceof r)&&t.frame?.traverse(e=>{s(e,t)}),s(t)}),!this.objects.length)return;let{domElement:i}=this.eventContext;this.domEventsNeeded.clear(),c&&(this.domEventsNeeded.add("pointerdown"),i.addEventListener("pointerdown",this.onMouseDown),this.domEventsNeeded.add("pointerup"),i.addEventListener("pointerup",this.onMouseUp)),this.domEventsNeeded.add("pointermove"),i.addEventListener("pointermove",this.onMouseMove),this.objects.forEach(t=>{t.addEventListener("userEvent",this.onUserEvent)})}disconnect(){if(!this.objects.length)return;let{domElement:t}=this.eventContext;this.domEventsNeeded.clear(),c&&(t.removeEventListener("pointerdown",this.onMouseDown),t.removeEventListener("pointerup",this.onMouseUp)),t.removeEventListener("pointermove",this.onMouseMove),Object.values(this.eventsPerObjects).forEach(t=>{t.forEach(t=>{t.disconnect()})}),this.objects.forEach(t=>{t.removeEventListener("userEvent",this.onUserEvent)})}handleMouseHoverEvent(n=!1){let r=[];if(!n){let{stopRaycast:n,raycaster:o,page:a,pointerScreen:h}=this.eventContext,c=!1;if(a.uiCanvas&&(c=s(a,[h.x,h.y],Object.keys(this.eventsPerObjects),t=>{r.push(t)})),n&&!c){let i=t(o,a,this.objects);r=e(i),i.forEach(t=>{p(t.object)&&s(t.object,[t?.uv?.x??0,t?.uv?.y??0],Object.keys(this.eventsPerObjects),t=>{r.push(t)})})}else this.objects.forEach(t=>{let e=i(o,t);e&&(r.push(t),p(t)&&s(t,[e?.uv?.x??0,e?.uv?.y??0],Object.keys(this.eventsPerObjects),t=>{r.push(t)}))})}this._prevObjects.length&&this._prevObjects.forEach(t=>{r.includes(t)||(t.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[t.uuid]?.forEach(t=>t.dispatchLeave()))}),r.length&&r.forEach(t=>{t.dispatchEvent({type:"beginEvent",eventName:"MouseHover"}),this.eventsPerObjects[t.uuid]?.forEach(t=>t.dispatchEnter())}),this._prevObjects=r}};a("MouseHover",({eventContext:t,eventManager:e})=>new f(t,e)),d("mousehover");
@@ -1 +1 @@
1
- import{b as e,d as t,e as i}from"./runtime-chunk-GFTBNL2W.js";import{b as n,e as s}from"./runtime-chunk-M6FFVLT6.js";import{b as r,v as o}from"./runtime-chunk-MPHBANVQ.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a,d as l}from"./runtime-chunk-TZCHGFVF.js";import{S as u,k as c}from"./runtime-chunk-K3UQCG3P.js";import{Aa as d,Cc as h,Dc as m,Ec as p,Ed as v,Fc as f,Gd as y,Ic as S,Ja as g,Jc as x,Pc as z,Rc as b,Vd as T,Wc as E,Wd as P,Xd as R,bd as _,dd as C,kd as A,ld as D,nd as F,pd as w,qd as I,te as V}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var N=new E,U=new f,O=new m,L=new m,M=new m,B=class{constructor(e){this.geometry=e.geometry,this.randomFunction=Math.random,this.indexAttribute=this.geometry.index,this.positionAttribute=this.geometry.getAttribute("position"),this.normalAttribute=this.geometry.getAttribute("normal"),this.colorAttribute=this.geometry.getAttribute("color"),this.uvAttribute=this.geometry.getAttribute("uv"),this.weightAttribute=null,this.distribution=null}setWeightAttribute(e){return this.weightAttribute=e?this.geometry.getAttribute(e):null,this}build(){let e=this.indexAttribute,t=this.positionAttribute,i=this.weightAttribute,n=e?e.count/3:t.count/3,s=new Float32Array(n);for(let r=0;r<n;r++){let n=1,o=3*r,a=3*r+1,l=3*r+2;e&&(o=e.getX(o),a=e.getX(a),l=e.getX(l)),i&&(n=i.getX(o)+i.getX(a)+i.getX(l)),N.a.fromBufferAttribute(t,o),N.b.fromBufferAttribute(t,a),N.c.fromBufferAttribute(t,l),n*=N.getArea(),s[r]=n}let r=new Float32Array(n),o=0;for(let e=0;e<n;e++)o+=s[e],r[e]=o;return this.distribution=r,this}setRandomGenerator(e){return this.randomFunction=e,this}sample(e,t,i,n){let s=this._sampleFaceIndex();return this._sampleFace(s,e,t,i,n)}_sampleFaceIndex(){let e=this.distribution[this.distribution.length-1];return this._binarySearch(this.randomFunction()*e)}_binarySearch(e){let t=this.distribution,i=0,n=t.length-1,s=-1;for(;i<=n;){let r=Math.ceil((i+n)/2);if(0===r||t[r-1]<=e&&t[r]>e){s=r;break}e<t[r]?n=r-1:i=r+1}return s}_sampleFace(e,t,i,n,s){let r=this.randomFunction(),o=this.randomFunction();r+o>1&&(r=1-r,o=1-o);let a=this.indexAttribute,l=3*e,u=3*e+1,c=3*e+2;return a&&(l=a.getX(l),u=a.getX(u),c=a.getX(c)),N.a.fromBufferAttribute(this.positionAttribute,l),N.b.fromBufferAttribute(this.positionAttribute,u),N.c.fromBufferAttribute(this.positionAttribute,c),t.set(0,0,0).addScaledVector(N.a,r).addScaledVector(N.b,o).addScaledVector(N.c,1-(r+o)),void 0!==i&&(void 0!==this.normalAttribute?(N.a.fromBufferAttribute(this.normalAttribute,l),N.b.fromBufferAttribute(this.normalAttribute,u),N.c.fromBufferAttribute(this.normalAttribute,c),i.set(0,0,0).addScaledVector(N.a,r).addScaledVector(N.b,o).addScaledVector(N.c,1-(r+o)).normalize()):N.getNormal(i)),void 0!==n&&void 0!==this.colorAttribute&&(N.a.fromBufferAttribute(this.colorAttribute,l),N.b.fromBufferAttribute(this.colorAttribute,u),N.c.fromBufferAttribute(this.colorAttribute,c),U.set(0,0,0).addScaledVector(N.a,r).addScaledVector(N.b,o).addScaledVector(N.c,1-(r+o)),n.r=U.x,n.g=U.y,n.b=U.z),void 0!==s&&void 0!==this.uvAttribute&&(O.fromBufferAttribute(this.uvAttribute,l),L.fromBufferAttribute(this.uvAttribute,u),M.fromBufferAttribute(this.uvAttribute,c),s.set(0,0).addScaledVector(O,r).addScaledVector(L,o).addScaledVector(M,1-(r+o))),this}};function Q(e,t){let i=e,n=new Float32Array(4*t*t);for(let e=0;e<t*t;e++)n[4*e]=i[3*e],n[4*e+1]=i[3*e+1],n[4*e+2]=i[3*e+2],n[4*e+3]=0;let s=new F(n,t,t,g,d);return s.needsUpdate=!0,s}var W=class{constructor(e,t,i,n){this.type="SphereEmitterShape",this.targetMesh=void 0,this.size=e,this.type=i,this.textureSize=function(e){let t=Math.ceil(Math.sqrt(e));return Math.max(t,1)}(t),this.targetMesh="BufferGeometry"===n?.geometry.type||"Mesh"===n?.type&&n&&n.geometry.hasAttribute("position")&&n.geometry.hasAttribute("normal")?n:this.getMesh(i,1);let{positions:s,dataTexture:r,dataTextureNormals:o}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(i,1));this.positionsTexture=r,this.positionsAttribute=s,this.directionsTexture=o}createPositions(e,t){let{positions:i,normals:n}=function(e,t){let i=new D(e.geometry,e.material),n=[],s=[],r=new f,o=new f;null!==i.geometry.index&&(i.geometry=i.geometry.toNonIndexed());let a=new B(i).build();for(let e=0;e<t;e++)a.sample(r,o),n.push(r.x,r.y,r.z),s.push(o.x,o.y,o.z);return{positions:new Float32Array(n),normals:new Float32Array(s)}}(t,e*e);return{dataTexture:Q(i,e),positions:i,dataTextureNormals:Q(n,e)}}getMesh(e,t){let i=null;switch(e){case"SphereEmitterShape":i=new P(.5*t,32,32);break;case"TorusEmitterShape":i=new R(.5*t,.3,15,40);break;case"ConeEmitterShape":i=new y(t,t,15);break;case"BoxEmitterShape":i=new v(t,t,t);break;case"PlaneEmitterShape":i=new T(t,t),i.rotateX(-Math.PI/2);break;default:i=new P(t,32,32)}return new D(i,new A({color:16711680}))}applyToShader(e,t){this.size=(new f).fromArray(t.size.map(e=>"number"==typeof e?e:1)),e.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function k(e){let t={...e},i=u.defaultData;t.forceFieldObjectId&&(t.colliderEntityId=t.forceFieldObjectId);let n={...i.shape,...t.shape},s={...i.renderMaterial,...t.renderMaterial};return{...i,...t,shape:n,renderMaterial:s}}var q=class extends b{constructor(n,s){super(),this.type="ParticleEmitter",this.debugMode=!1,this.worldSpace=!0,this.rootObject=null,this.gpuCompute=null,this.positionSimRT=null,this.velocitySimRT=null,this.emissionRateSimRT=null,this.emitterShape=void 0,this.isEmitting=!1,this.hasBeenReset=!1,this.emittedParticlesAmount=0,this.lastEmitTime=0,this.globalTime=0,this.targetFPS=60,this.previousRatio=1,this.lerpFactor=.4,this.particlesAmount=0,this.noiseStrength=0,this.noiseScale=0,this.isBillboardBased=!0,this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_FORCE_LOCAL_SPACE:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1},this.textureLoader=new V,this.textureRequestId=0,this.currentWorldPosition=new f,this.systemQuaternion=new p,this.worldGravity=new f(0,0,0),this.directionAxis=new f(0,0,0),this.colliderV3=new f(0,0,0),this.colliderQuaternion=new p(0,0,0,1),this.matrixAutoUpdate=!0,this.renderer=n,this.system=s,this.shared=s.context.shared;let r=s.data;this.material=i(n)?e()?.createMaterial(r.renderMaterial,s.context)??t().createMaterial(r.renderMaterial,s.context):t().createMaterial(r.renderMaterial,s.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:r.renderMaterial.color},uColor2:{value:r.renderMaterial.color2},uPosition:{value:new f(0,0,0)},uEmissionData:{value:new f(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new f(0,0,0)},uWorldQuaternion:{value:new x(0,0,0,1)},uRandScaleFactor:{value:r.randomScale??0},uRandRotationFactor:{value:r.randomRotation??0},uRotation:{value:r.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:r.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,r.renderMaterial.texture),this.init(r)}setTexture(e,t){let i=t.data,n=++this.textureRequestId;if("string"==typeof t){let i=this.shared.image(t),s=()=>{if(n!==this.textureRequestId)return;let t=new S(i.img);t.needsUpdate=!0,e.uTexture.value=t};return void(i.loaded?s():i.loadPromise.then(s))}if("string"!=typeof i){let t=new Image;t.onload=()=>{if(n!==this.textureRequestId)return;let i=new S(t);i.needsUpdate=!0,e.uTexture.value=i};let s=new Blob([i],{type:"image/*"}),r=URL.createObjectURL(s);t.src=r}}updateGeometryAttributes(e,t){let n=function(e){let t=new Float32Array(e*e*2);for(let i=0;i<e;i++)for(let n=0;n<e;n++){let s=i*e+n;t[2*s+0]=i/(e-1),t[2*s+1]=n/(e-1)}return t}(t);if(!this.emitterShape?.positionsAttribute)return;let s=new w(n,2);e.geometry.setAttribute("ref",s),i(this.renderer)&&e.geometry.setAttribute("particleRef",s)}applyWorldSpace(){if(!(this.system.started&&this.worldSpace&&this.positionSimRT&&this.velocitySimRT))return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,t){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset)return void this.reset();this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let i=1e3/t,n=this.targetFPS/i,s=this.previousRatio+(n-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=s,this.previousRatio=s;let r=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=r,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0],t=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&t&&this.init(k({...this.system.data,colliderEntityId:null})),!e||e.destroyedInAction)return;e.getWorldPosition(this.colliderV3),0===this.colliderV3.y&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let i=e.data.size;this.colliderV3.fromArray(i),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,t){if(!this.velocitySimRT||!this.positionSimRT)return;"size"===t[2]&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),"sizeEnd"===t[2]&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let i=(e,t)=>{let i=[...this.system.data.shape.size];i[e]=t,this.updateParticleState({shape:{...this.system.data.shape,size:i}})};"shape_size_0"===t[2]&&i(0,e),"shape_size_1"===t[2]&&i(1,e),"shape_size_2"===t[2]&&i(2,e),"speed"===t[2]&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/10),"gravity"===t[2]&&this.worldGravity.set(0,e/100,0),"noiseStrength"===t[2]&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),"noiseScale"===t[2]&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),"direction_x"===t[2]&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),"direction_y"===t[2]&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),"direction_z"===t[2]&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(this.positionSimRT&&this.velocitySimRT){if(this.shouldReInitGPUCompute(e)&&this.init(k(this.system.data)),void 0!==e.life&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),void 0!==e.speed&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/10),void 0!==e.collisionBounce&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),void 0!==e.noiseStrength&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),void 0!==e.noiseScale&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),void 0!==e.noiseSeed&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),void 0!==e.randomMass&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),void 0!==e.renderMaterial?.size){let t=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(t)}if(void 0!==e.renderMaterial?.spriteRotation&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),void 0!==e.shape){let t=e.shape.size??this.system.data.shape.size,i=[Number(this.shared.getVariable(t[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(t[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(t[2],[this.uuid,"particles","shape_size_2"]))],n={...k(this.system.data).shape,size:i};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,n)}if(void 0!==e.gravity&&(this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.velocitySimRT.material.uniforms.uGravity={value:this.worldGravity}),void 0!==e.direction){let t=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(t),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}void 0!==e.randomRotation&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),void 0!==e.randomScale&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(void 0!==e.forceIntensity&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),void 0!==e.forceDambing&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let t=[Number(e[0])*h.DEG2RAD,Number(e[1])*h.DEG2RAD,Number(e[2])*h.DEG2RAD],i=new z(t[0],t[1],t[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(i).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:t,rootObjectType:i,colliderEntityId:n,shape:s,emitTimeDuration:r,emitTimeCycle:o,life:a,directionMode:l,noiseType:u}=e;return void 0!==t||void 0!==i||n||null===n||void 0!==o||void 0!==s||void 0!==a||void 0!==r||void 0!==l||void 0!==u}init(n){this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:n.birthRatePerSec,particleMaxLifeTime:n.life,loopDuration:"infinity"===n.emitTimeCycle?0:n.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn("The maximum number of particles is limited to 100000."),this.particlesAmount=1e5),this.emitterShape=this.createShape(n.shape,this.particlesAmount);let s=setInterval(()=>{if(!this.emitterShape)return;let e=this.emitterShape.positionsTexture.source.data.data;e&&!isNaN(e[0])?clearInterval(s):this.init(n)},100);if(!this.emitterShape)return;let r=this.updateSimulationDefinition(n),o=i(this.renderer)?e().createComputation(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer,this.simFeaturesDefinition):t().createComputation(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),a=o.addVariable("uCurrentPosition",r+"\n\n\n\nuniform sampler2D uOriginalPosition;\nuniform float uTime;\nuniform float uSpeed; \nuniform vec3 uWorldOffset; \nuniform vec4 uWorldQuaternion;\nuniform float uMaxLifeTime;\nuniform vec3 uEmitterSize;\nuniform float uFPSRatio; \n\nfloat random (vec2 st) {\n return fract(sin(dot(st.xy,\n vec2(12.9898,78.233)))*\n 43758.5453123);\n}\nvec3 applyQuaternionToVector( vec4 q, vec3 v ){\n return v + 2.0 * cross( q.xyz, cross( q.xyz, v ) + q.w * v );\n}\n\nvec3 applyForce(vec3 force, float mass) {\n vec3 acceleration = force / mass;\n \n return acceleration;\n }\n \n\nvoid main() {\n vec2 vUv = gl_FragCoord.xy / resolution.xy;\n vec3 position = texture2D( uCurrentPosition, vUv ).xyz;\n float currentLife = texture2D( uCurrentPosition, vUv ).w; \n float isSpawning = texture2D( uCurrentEmissionRate, vUv ).r; \n float isActive = texture2D( uCurrentEmissionRate, vUv ).g; \n float timeStart = texture2D( uCurrentEmissionRate, vUv ).b; \n vec3 originalPosition = ((texture2D( uOriginalPosition, vUv ).xyz) * uEmitterSize);\n vec3 velocity = texture2D( uCurrentVelocity, vUv ).xyz;\n float collisionFlag = texture2D( uCurrentVelocity, vUv ).w; \n float lifeTime = uMaxLifeTime;\n\n \n \n float isColliding = step(0.5, collisionFlag); \n float bounceOffset = 3.0 * isColliding; \n vec3 collisionAdjustedVelocity = velocity * (1.0 + bounceOffset);\n\n \n vec3 fpsVelocity = velocity * min(uFPSRatio, 5.0);\n position += mix(fpsVelocity, collisionAdjustedVelocity, isColliding);\n\n \n \n \n vec3 newPosition = applyQuaternionToVector(uWorldQuaternion, originalPosition) + uWorldOffset;\n originalPosition = mix(originalPosition, newPosition, isSpawning);\n position = mix(position, originalPosition, isSpawning);;\n timeStart = mix(timeStart, uTime, isSpawning);\n\n \n float timeLeft = max(lifeTime - (uTime - timeStart), 0.0);\n float life_Normalize = timeLeft / lifeTime;\n\n \n vec4 activeColor = vec4(position, life_Normalize);\n \n gl_FragColor = mix(vec4(0.0), activeColor, isActive);\n\n}\n",this.emitterShape.positionsTexture),l=o.addVariable("uCurrentVelocity",r+"\n\n\n\nuniform sampler2D uOriginalPosition;\nuniform sampler2D uDirections; \nuniform vec3 uDirectionsAxis;\nuniform vec4 uWorldQuaternion;\nuniform vec3 uGravity; \nuniform float uNoiseStrength; \nuniform float uNoiseScale; \nuniform float uNoiseSeed; \nuniform float particleSize;\nuniform float uSpeed; \nuniform float uRandomMassFactor;\n\n\nuniform vec3 uColliderPos; \nuniform vec3 uColliderSize; \nuniform vec4 uColliderQuaternion; \nuniform vec4 uColliderQuaternionInvert; \nuniform float uBounce; \nuniform float uForceDamping;\nuniform float uForceIntensity;\n\n\n\n\n vec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n }\n \n vec4 mod289(vec4 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n }\n \n vec4 permute(vec4 x) {\n return mod289(((x*34.0)+1.0)*x);\n }\n \n vec4 taylorInvSqrt(vec4 r)\n {\n return 1.79284291400159 - 0.85373472095314 * r;\n }\n \n vec3 fade(vec3 t) {\n return t*t*t*(t*(t*6.0-15.0)+10.0);\n}\n\n float snoise(vec3 v)\n {\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; \n vec3 x3 = x0 - D.yyy; \n \n \n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n \n \n \n float n_ = 0.142857142857; \n vec3 ns = n_ * D.wyz - D.xzx;\n \n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); \n \n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); \n \n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n \n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n \n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n \n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n \n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n \n \n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n \n \n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n }\n \n vec3 snoiseVec3( vec3 x ){\n \n float s = snoise(vec3( x ));\n float s1 = snoise(vec3( x.y - 19.1 , x.z + 33.4 , x.x + 47.2 ));\n float s2 = snoise(vec3( x.z + 74.2 , x.x - 124.5 , x.y + 99.4 ));\n vec3 c = vec3( s , s1 , s2 );\n return c;\n \n }\n \n \n vec3 curlNoise( vec3 p, float seed){\n p += seed;\n const float e = .1;\n vec3 dx = vec3( e , 0.0 , 0.0 );\n vec3 dy = vec3( 0.0 , e , 0.0 );\n vec3 dz = vec3( 0.0 , 0.0 , e );\n \n vec3 p_x0 = snoiseVec3( p - dx );\n vec3 p_x1 = snoiseVec3( p + dx );\n vec3 p_y0 = snoiseVec3( p - dy );\n vec3 p_y1 = snoiseVec3( p + dy );\n vec3 p_z0 = snoiseVec3( p - dz );\n vec3 p_z1 = snoiseVec3( p + dz );\n \n float x = p_y1.z - p_y0.z - p_z1.y + p_z0.y;\n float y = p_z1.x - p_z0.x - p_x1.z + p_x0.z;\n float z = p_x1.y - p_x0.y - p_y1.x + p_y0.x;\n \n const float divisor = 1.0 / ( 2.0 * e );\n return normalize( vec3( x , y , z ) * divisor );\n \n }\n\n\n\nfloat cnoise(vec3 P)\n{\n vec3 Pi0 = floor(P); \n vec3 Pi1 = Pi0 + vec3(1.0); \n Pi0 = mod289(Pi0);\n Pi1 = mod289(Pi1);\n vec3 Pf0 = fract(P); \n vec3 Pf1 = Pf0 - vec3(1.0); \n vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n vec4 iy = vec4(Pi0.yy, Pi1.yy);\n vec4 iz0 = Pi0.zzzz;\n vec4 iz1 = Pi1.zzzz;\n\n vec4 ixy = permute(permute(ix) + iy);\n vec4 ixy0 = permute(ixy + iz0);\n vec4 ixy1 = permute(ixy + iz1);\n\n vec4 gx0 = ixy0 * (1.0 / 7.0);\n vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\n gx0 = fract(gx0);\n vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\n vec4 sz0 = step(gz0, vec4(0.0));\n gx0 -= sz0 * (step(0.0, gx0) - 0.5);\n gy0 -= sz0 * (step(0.0, gy0) - 0.5);\n\n vec4 gx1 = ixy1 * (1.0 / 7.0);\n vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\n gx1 = fract(gx1);\n vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\n vec4 sz1 = step(gz1, vec4(0.0));\n gx1 -= sz1 * (step(0.0, gx1) - 0.5);\n gy1 -= sz1 * (step(0.0, gy1) - 0.5);\n\n vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\n vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\n vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\n vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\n vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\n vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\n vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\n vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\n\n vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n g000 *= norm0.x;\n g010 *= norm0.y;\n g100 *= norm0.z;\n g110 *= norm0.w;\n vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n g001 *= norm1.x;\n g011 *= norm1.y;\n g101 *= norm1.z;\n g111 *= norm1.w;\n\n float n000 = dot(g000, Pf0);\n float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\n float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\n float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\n float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\n float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\n float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\n float n111 = dot(g111, Pf1);\n\n vec3 fade_xyz = fade(Pf0);\n vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\n vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\n float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \n return 2.2 * n_xyz;\n}\n\n\nvec3 fbm_vec3(vec3 p, float frequency, float offset)\n{\n return vec3(\n cnoise((p+vec3(offset))*frequency),\n cnoise((p+vec3(offset+20.0))*frequency),\n cnoise((p+vec3(offset-30.0))*frequency)\n );\n}\n\n\nfloat rand(vec2 co){\n return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);\n}\nvec3 applyQuaternionToVector( vec4 q, vec3 v ){\n return v + 2.0 * cross( q.xyz, cross( q.xyz, v ) + q.w * v );\n } \nvec3 applyForce(vec3 force, float mass) {\n vec3 acceleration = force / mass;\n \n return acceleration;\n}\n\nvec4 conjugate(vec4 q) {\n return vec4(q.w, -q.x, -q.y, -q.z);\n}\n\n\nvec3 ellipsoidNormal(vec3 p, vec3 radii) {\n return normalize(p / (radii * radii));\n}\n\nfloat friction = .3;\n\nvoid main() {\n vec2 vUv = gl_FragCoord.xy / resolution.xy;\n vec3 position = texture2D( uCurrentPosition, vUv ).xyz;\n vec3 originalPosition = texture2D( uOriginalPosition, vUv ).xyz;\n float timeLeft = texture2D( uCurrentPosition, vUv ).w;\n vec3 directions = texture2D( uDirections, vUv ).xyz; \n vec3 velocity = texture2D( uCurrentVelocity, vUv ).xyz;\n float mass = rand(originalPosition.xy) * 0.5 + 0.5;\n float isSpawning = texture2D( uCurrentEmissionRate, vUv ).x; \n float isActive = texture2D( uCurrentEmissionRate, vUv ).y; \n float collisionFlag =texture2D( uCurrentVelocity, vUv ).w; \n\n \n mass = (1.0 - (uRandomMassFactor * mass));\n \n if (isActive == 1.0) {\n \n \n \n #ifdef USE_CURL_NOISE\n if (uNoiseScale > 0.0 ) {\n velocity = curlNoise(position * uNoiseScale * .002, uNoiseSeed) * ( uNoiseStrength + 1.0) * .05 * uSpeed;\n }\n \n if (uNoiseStrength > 0.0 && uNoiseScale == 0.0 ) {\n velocity += curlNoise( position, uNoiseSeed) * uNoiseStrength * 0.05 * uSpeed;\n }\n #endif\n \n #ifdef USE_SIMPLEX_NOISE\n if (uNoiseScale > 0.0 ) {\n velocity = vec3(snoise(position * uNoiseScale * .001) * ( uNoiseStrength + 1.0) * .1);\n velocity *= uSpeed;\n }\n \n if (uNoiseStrength > 0.0 && uNoiseScale == 0.0) {\n velocity += vec3(snoise(position * uNoiseStrength * .001) * .05 * uSpeed);\n }\n #endif\n \n #ifdef USE_FBM_NOISE\n if (uNoiseScale > 0.0 ) {\n velocity = fbm_vec3(position * uNoiseScale * .001, ( uNoiseStrength + 1.0), uNoiseSeed);\n velocity *= uSpeed;\n }\n \n if (uNoiseStrength > 0.0 && uNoiseScale == 0.0 ) { \n velocity += fbm_vec3(position * uNoiseStrength * .001, ( uNoiseStrength + 1.0), uNoiseSeed) * .1 * uSpeed;\n }\n #endif\n\n \n \n #ifdef USE_COLLIDER\n float restitution = max(uBounce * 2., .01); \n \n \n #ifdef USE_SPHERE_COLLIDER \n \n vec3 radii = uColliderSize;\n \n vec3 relPos = position - uColliderPos;\n \n relPos = applyQuaternionToVector(uColliderQuaternionInvert, relPos); \n \n vec3 scaledPos = relPos / radii;\n \n float dist = length(scaledPos); \n \n \n if (dist <= 1. + particleSize / length(radii) && collisionFlag == 0.0) {\n \n vec3 adjustedPos = scaledPos * (1.0 + particleSize / length(radii)); \n \n vec3 normal = ellipsoidNormal(adjustedPos, radii);\n \n normal = applyQuaternionToVector(uColliderQuaternion, normal);\n \n velocity = reflect(velocity, normal) * restitution;\n\n collisionFlag = 1.0;\n } else {\n collisionFlag = 0.0;\n }\n #endif\n\n \n \n #ifdef USE_BOX_COLLIDER\n \n vec3 boxHalfSize = uColliderSize / 2.0;\n \n vec3 localPos = applyQuaternionToVector(uColliderQuaternionInvert, position - uColliderPos); \n \n vec3 localDistance = abs(localPos) - boxHalfSize;\n float distToSurface = max(localDistance.x, max(localDistance.y, localDistance.z)); \n\n \n if (distToSurface <= particleSize * 0.5 && collisionFlag == 0.0) { \n \n vec3 normal;\n if (localDistance.x > localDistance.y && localDistance.x > localDistance.z) {\n normal = vec3(sign(localPos.x), 0.0, 0.0);\n } else if (localDistance.y > localDistance.z) {\n normal = vec3(0.0, sign(localPos.y), 0.0);\n } else {\n normal = vec3(0.0, 0.0, sign(localPos.z));\n } \n \n normal = applyQuaternionToVector(uColliderQuaternion, normal); \n \n velocity = reflect(velocity, normal) * restitution;\n \n collisionFlag = 1.0;\n } else {\n collisionFlag = 0.0;\n }\n #endif \n #endif \n \n\n \n \n #ifdef USE_ATTRACTOR\n\n #ifdef USE_SPHERE_COLLIDER \n \n vec3 radii = uColliderSize;\n \n vec3 relPos = position - uColliderPos;\n \n relPos = applyQuaternionToVector(uColliderQuaternionInvert, relPos); \n \n vec3 scaledPos = relPos / radii;\n \n float distToSurface = length(scaledPos); \n float insideCheck = 1.0;\n\n #endif\n\n\n #ifdef USE_BOX_COLLIDER\n \n vec3 boxHalfSize = uColliderSize / 2.0;\n \n vec3 localPos = applyQuaternionToVector(uColliderQuaternionInvert, position - uColliderPos); \n vec3 localDistance = abs(localPos) - boxHalfSize;\n float distToSurface = max(localDistance.x, max(localDistance.y, localDistance.z));\n float insideCheck = particleSize;\n #endif \n \n \n #ifdef USE_FORCE_LOCAL_SPACE\n if (distToSurface <= insideCheck ) { \n \n #ifdef USE_SPHERE_COLLIDER \n float attractorStrength = (1.0 - distToSurface ) * uForceIntensity; \n #endif\n\n #ifdef USE_BOX_COLLIDER\n float attractorStrength = max((1.0 - insideCheck / distToSurface), 0.) * uForceIntensity; \n #endif\n\n float attractorDamping = uForceDamping; \n \n \n vec3 attractorRadii = uColliderSize;\n \n vec3 relPos = position - uColliderPos;\n \n relPos = applyQuaternionToVector(uColliderQuaternionInvert, relPos); \n \n vec3 scaledPos = relPos / attractorRadii;\n\n \n float attractorRadius = length(scaledPos);\n \n vec3 relativePosition = position - uColliderPos;\n \n vec3 attractorForce = normalize(relativePosition) * attractorStrength;\n \n velocity -= attractorForce;\n \n velocity *= attractorDamping;\n }\n #else \n \n vec3 relativePosition = position - uColliderPos;\n \n vec3 attractorForce = normalize(relativePosition) * uForceIntensity;\n \n velocity -= attractorForce;\n \n velocity *= uForceDamping;\n #endif \n #endif \n \n \n \n #ifdef USE_VORTEX\n \n vec3 boxHalfSize = uColliderSize / 2.0;\n \n vec3 localPos = applyQuaternionToVector(uColliderQuaternionInvert, position - uColliderPos); \n vec3 localDistance = abs(localPos) - boxHalfSize;\n float distToSurface = max(localDistance.x, max(localDistance.y, localDistance.z));\n\n \n if (distToSurface <= particleSize) {\n float vortexStrength = uForceIntensity;\n vec3 localTopCenter = vec3(0.0, 0., 0.0);\n\n \n vec3 vortexCenter = uColliderPos + applyQuaternionToVector(uColliderQuaternion, localTopCenter);\n \n vec3 vortexVector = vortexCenter - position;\n\n \n \n vec3 upVector = vec3(0.0, 1.0, 0.01);\n vec3 rotationAxis = cross(upVector, applyQuaternionToVector(uColliderQuaternion, vortexVector));\n rotationAxis = normalize(rotationAxis);\n\n \n float rotationSpeed = length(vortexVector * vortexStrength * 3.0) ; \n\n vec3 rotationVelocity = rotationAxis * rotationSpeed;\n \n velocity = rotationVelocity * 0.005 ;\n\n \n \n \n vec3 originDirection = applyQuaternionToVector(uWorldQuaternion, directions);\n velocity += applyForce( originDirection * uSpeed * (1. - uForceDamping) , mass * .5);\n }\n #endif \n\n } \n \n\n \n \n \n #ifdef USE_NORMALS\n velocity = mix(velocity, applyQuaternionToVector(uWorldQuaternion, directions) * uSpeed, isSpawning);\n #else\n velocity = mix(velocity, applyQuaternionToVector(uWorldQuaternion, uDirectionsAxis) * uSpeed, isSpawning); \n #endif\n \n \n velocity += applyForce(uGravity, mass * .5) * (1.0 - collisionFlag);\n\n gl_FragColor = vec4(velocity, collisionFlag);\n}\n",this.emitterShape.directionsTexture),u=o.addVariable("uCurrentEmissionRate","\n\n\n\n\nuniform sampler2D uIndex; \nuniform float uLastIndexEmitted; \nuniform float uParticlesToEmit; \nuniform float uTime;\n\nvoid main() {\n vec2 vUv = gl_FragCoord.xy / resolution.xy;\n float particleIndex = texture(uIndex, vUv).x;\n float timeLeft = texture2D( uCurrentPosition, vUv ).w;\n float isActive = texture2D( uCurrentEmissionRate, vUv ).g; \n float timeStart = texture2D( uCurrentEmissionRate, vUv ).b;\n\n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n float emitLowerBound = step(uLastIndexEmitted, particleIndex);\n float emitUpperBound = step(particleIndex, uLastIndexEmitted + uParticlesToEmit - 1.0);\n float emitParticle = emitLowerBound * emitUpperBound; \n\n \n timeStart = mix(timeStart, uTime, emitParticle);\n gl_FragColor = vec4(emitParticle, mix(isActive, 1.0, emitParticle), timeStart, 1.0);\n\n\n}\n",function(e){let t=new Float32Array(4*e*e);for(let i=0;i<e*e;i++)t[4*i]=0,t[4*i+1]=0,t[4*i+2]=0,t[4*i+3]=0;let i=new F(t,e,e,g,d);return i.needsUpdate=!0,i}(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,l,u]),o.setVariableDependencies(l,[a,l,u]),o.setVariableDependencies(u,[a,l,u]);let c=function({size:e}){let t=new Float32Array(4*e*e);for(let i=0;i<e*e;i++)t[4*i]=i,t[4*i+1]=0,t[4*i+2]=0,t[4*i+3]=0;let i=new F(t,e,e,g,d);return i.needsUpdate=!0,i}({size:this.emitterShape.textureSize}),h={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new f(0,0,0)},uWorldQuaternion:{value:new x(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:n.life},uEmitterSize:{value:new f(Number(this.shared.getVariable(n.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(n.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(n.shape.size[2],[this.uuid,"particles","shape_size_2"])))},particleSize:{value:0}};a.material.uniforms=h;let m=this.getDirectionFromVariable(n.direction);this.directionAxis=this.getDirectionAxis(m),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(n.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(n.noiseScale,[this.uuid,"particles","noiseScale"]));let p=n.colliderEntityId&&this.system.getColliderData(n.colliderEntityId),v={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new x(0,0,0,1)},uColliderPos:{value:new f(0,0,0)},uColliderSize:{value:new f(0,0,0)},uForceIntensity:{value:p?p.forceIntensity:0},uForceDamping:{value:p?p.forceDambing:0},uColliderQuaternion:{value:new x(0,0,0,1)},uColliderQuaternionInvert:{value:new x(0,0,0,1)},particleSize:{value:0},uGravity:{value:this.worldGravity},uNoiseStrength:{value:this.noiseStrength},uNoiseScale:{value:this.noiseScale},uNoiseSeed:{value:n.noiseSeed},uRandomMassFactor:{value:n.randomMass},uBounce:{value:n.collisionBounce},uSpeed:{value:Number(this.shared.getVariable(n.speed,[this.uuid,"particles","speed"]))/10}};l.material.uniforms=v;let y={uIndex:{value:c},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};u.material.uniforms=y;let S=[Number(this.shared.getVariable(n.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(n.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(n.shape.size[2],[this.uuid,"particles","shape_size_2"]))],z={...k(this.system.data).shape,size:S};this.emitterShape.applyToShader(a.material.uniforms,z),o.init(),this.gpuCompute=o,this.positionSimRT=a,this.velocitySimRT=l,this.emissionRateSimRT=u,this.material.uniforms.uPosition.value=o.getCurrentRenderTarget(a)?.texture,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0}getDirectionFromVariable(e){return[Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]))]}updateSimulationDefinition(e){if(this.simFeaturesDefinition.USE_COLLIDER=!1,this.simFeaturesDefinition.USE_ATTRACTOR=!1,this.simFeaturesDefinition.USE_VORTEX=!1,this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!1,this.simFeaturesDefinition.USE_BOX_COLLIDER=!1,this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!1,this.simFeaturesDefinition.USE_NORMALS=!1,this.simFeaturesDefinition.USE_CURL_NOISE=!1,this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!1,this.simFeaturesDefinition.USE_FBM_NOISE=!1,e.colliderEntityId&&this.system.colliderEntities.length>0){let t=this.system.getColliderData(e.colliderEntityId);switch(t?.forceType){case"attractor":this.simFeaturesDefinition.USE_ATTRACTOR=!0;break;case"collider":this.simFeaturesDefinition.USE_COLLIDER=!0;break;case"vortex":this.simFeaturesDefinition.USE_VORTEX=!0}let i=t?.colliderType;"sphere"===i&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),"box"===i&&(this.simFeaturesDefinition.USE_BOX_COLLIDER=!0),"helper"===t?.forceRange&&(this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!0)}"normals"===e.directionMode&&(this.simFeaturesDefinition.USE_NORMALS=!0),"curl"===e.noiseType&&(this.simFeaturesDefinition.USE_CURL_NOISE=!0),"simplex"===e.noiseType&&(this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!0),"fbm"===e.noiseType&&(this.simFeaturesDefinition.USE_FBM_NOISE=!0);let t="";for(let[e,i]of Object.entries(this.simFeaturesDefinition))i&&(t+=`#define ${e}\n`);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let i=new f(Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.size[2],[this.uuid,"particles","shape_size_2"])));if("MeshEmitterShape"===e.type){let n=null;return this.system.context.scene.traverseEntity(t=>{t.uuid===e.fromMeshId&&(n=t)}),n?new W(i,t,e.type,n):new W(i,t,"SphereEmitterShape")}return new W(i,t,e.type)}createPrimaryEmitter(e){let t=e*e,i=new I(new T(1,1,1),this.material,t);return i.renderOrder=1,this.updateGeometryAttributes(i,e),this.material.needsUpdate=!0,i.onBeforeRender=()=>{this.applyWorldSpace()},i}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:t,loopDuration:i=0}){return Math.ceil(e*(t+i))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,t){let i=e-this.lastEmitTime,n=1/t;if(i>=n){let t=Math.max(1,Math.floor(i/n));return this.lastEmitTime=e,this.emittedParticlesAmount+t>this.particlesAmount&&(this.emittedParticlesAmount=0),this.emittedParticlesAmount+=t,t}return 0}checkIfAllParticlesAreDead(){return this.lastEmitTime+this.system.data.life+1<this.globalTime}reset(){this.hasBeenReset=!0,this.lastEmitTime=0,this.emittedParticlesAmount=0,this.gpuCompute&&this.init(k(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}},j=class extends o{constructor(e,t,i){super(e,t),this.type="ParticleSystem",this.isParticleSystem=!0,this.geometry=new C,this.actualTime=0,this.currentLoopTime=0,this.started=!1,this.stopped=!1,this.timeoutId=void 0,this.isFrozen=!1,this.isIdle=!0,this.emitter=null,this.colliderEntities=[],this.renderer=null,this.isPreWarm=!1,this._hasOnAfterRenderBeenCalled=!1,this.onAfterRender=e=>{e.warmupInFlight||this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))},this.context=i,this.data={...t,...k(t)},this.geometry.setAttribute("position",new _([],3)),this.material=new A({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new q(e,this),this.add(this.emitter),this.updateParticleState(this.data)}update(e){if(!this.isReady||!this.started||this.isFrozen||this.isIdle)return;this.actualTime+=e,this.stopped||(this.currentLoopTime+=e);let t="one_time"===this.data.emitTimeCycle;if(("loop"===this.data.emitTimeCycle||t)&&this.currentLoopTime>1e3*this.data.emitTimeDuration&&(this.stopped||(this.stop(),t||this.start(1e3*this.data.emitTimeDelay))),this.emitter&&this.started){let t=this.actualTime/1e3;this.emitter.update(t,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(t=>t.identity===e)}getColliderData(e){let t=this.colliderEntities.find(t=>t.identity===e);return t?t.data:null}updateByPatchedOp(e,t,i){super.updateByPatchedOp(e,t,i),r(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...c.drop(e,1).props}}),r(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...c.drop(e,1).props}})}updateState(e,t){super.updateState(e,t),this.updateParticleState(e)}updateParticleState(e){if(this.emitter){if(void 0!==e.colliderEntityId&&null!==e.colliderEntityId){let t=this.context.scene.find(e.colliderEntityId);this.colliderEntities=t?[t]:[]}null===e.colliderEntityId&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){!this.emitter||(this.emitter.updateForceFieldParameters(e),this.stop(),this.start())}start(e=0){this.currentLoopTime=0,e?this.timeoutId=window.setTimeout(()=>{this.start(0)},e):(this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting(this.actualTime/1e3),this._requestRender())}froze(){this.isFrozen=!0,this._requestRender()}unFroze(){this.isFrozen=!1,this._requestRender()}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting(),clearTimeout(this.timeoutId),this._requestRender()}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset(),this._requestRender()}_requestRender(){this.context.shared.requestRender()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}},X=class{constructor(e,t,i,n){this.data=e,this.page=t,this.shared=i,this.condition=n,this.delay=0,this.emission=e.emission,void 0!==e.delay&&(this.delay=e.delay),this.particleSystem=this.page.scene.find(this.data.emitterObjectId)}toggleEmitting(){this.particleSystem.started&&!this.particleSystem.stopped?this.stop(this.delay):this.start(this.delay)}toggleFroze(){this.particleSystem.started&&!this.particleSystem.isFrozen?this.freeze(this.delay):this.unFreeze(this.delay)}start(e=0){e?this.delayTimerId=window.setTimeout(()=>{this.start(0),this.clearDelay()},e):this.particleSystem.start()}stop(e=0){e?this.delayTimerId=window.setTimeout(()=>{this.stop(0),this.clearDelay()},e):this.particleSystem.stop()}freeze(e=0){e?this.delayTimerId=window.setTimeout(()=>{this.freeze(0),this.clearDelay()},e):this.particleSystem.froze()}unFreeze(e=0){e?this.delayTimerId=window.setTimeout(()=>{this.unFreeze(0),this.clearDelay()},e):this.particleSystem.unFroze()}reset(e=0){e?this.delayTimerId=window.setTimeout(()=>{this.reset(0),this.clearDelay()},e):this.particleSystem.reset()}reverseFromCurrent(){switch(this.emission){case"emitToggle":this.toggleEmitting();break;case"pauseToggle":this.toggleFroze()}}dispatchBasic(){if(!1===s(this.shared,this.condition)||!this.particleSystem)return!1;switch(this.emission){case"start":this.start(this.delay);break;case"emitToggle":this.toggleEmitting();break;case"pause":this.freeze(this.delay);break;case"pauseToggle":this.toggleFroze();break;case"stop":this.stop(this.delay);break;case"reset":this.reset(this.delay)}}dispatchConditional(){if(!1===s(this.shared,this.condition)||!this.particleSystem)return!1;switch(this.emission){case"start":this.start(this.delay);break;case"stop":this.stop(this.delay);break;case"reset":this.reset(this.delay)}}dispatchGameControl(e){if(!1===s(this.shared,this.condition)||!this.particleSystem)return!1;"start"===e?this.start(this.delay):this.stop(this.delay)}dispose(){!this.particleSystem||(this.particleSystem.reset(),this.clearDelay())}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}};l("Particle",(e,t,i)=>new j(e,t,i)),n("Particles",({data:e,page:t,shared:i,actionCondition:n})=>new X(e,t,i,n)),a("particles");
1
+ import{b as e,d as t,e as i}from"./runtime-chunk-GFTBNL2W.js";import{b as n,e as s}from"./runtime-chunk-M6FFVLT6.js";import{b as r,v as o}from"./runtime-chunk-F4XMOADV.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a,d as l}from"./runtime-chunk-TZCHGFVF.js";import{S as u,k as c}from"./runtime-chunk-K3UQCG3P.js";import{Aa as d,Cc as h,Dc as m,Ec as p,Ed as v,Fc as f,Gd as y,Ic as S,Ja as g,Jc as x,Pc as z,Rc as b,Vd as T,Wc as E,Wd as R,Xd as P,bd as _,dd as C,kd as A,ld as D,nd as F,pd as w,qd as I,te as V}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var N=new E,U=new f,O=new m,L=new m,M=new m,B=class{constructor(e){this.geometry=e.geometry,this.randomFunction=Math.random,this.indexAttribute=this.geometry.index,this.positionAttribute=this.geometry.getAttribute("position"),this.normalAttribute=this.geometry.getAttribute("normal"),this.colorAttribute=this.geometry.getAttribute("color"),this.uvAttribute=this.geometry.getAttribute("uv"),this.weightAttribute=null,this.distribution=null}setWeightAttribute(e){return this.weightAttribute=e?this.geometry.getAttribute(e):null,this}build(){let e=this.indexAttribute,t=this.positionAttribute,i=this.weightAttribute,n=e?e.count/3:t.count/3,s=new Float32Array(n);for(let r=0;r<n;r++){let n=1,o=3*r,a=3*r+1,l=3*r+2;e&&(o=e.getX(o),a=e.getX(a),l=e.getX(l)),i&&(n=i.getX(o)+i.getX(a)+i.getX(l)),N.a.fromBufferAttribute(t,o),N.b.fromBufferAttribute(t,a),N.c.fromBufferAttribute(t,l),n*=N.getArea(),s[r]=n}let r=new Float32Array(n),o=0;for(let e=0;e<n;e++)o+=s[e],r[e]=o;return this.distribution=r,this}setRandomGenerator(e){return this.randomFunction=e,this}sample(e,t,i,n){let s=this._sampleFaceIndex();return this._sampleFace(s,e,t,i,n)}_sampleFaceIndex(){let e=this.distribution[this.distribution.length-1];return this._binarySearch(this.randomFunction()*e)}_binarySearch(e){let t=this.distribution,i=0,n=t.length-1,s=-1;for(;i<=n;){let r=Math.ceil((i+n)/2);if(0===r||t[r-1]<=e&&t[r]>e){s=r;break}e<t[r]?n=r-1:i=r+1}return s}_sampleFace(e,t,i,n,s){let r=this.randomFunction(),o=this.randomFunction();r+o>1&&(r=1-r,o=1-o);let a=this.indexAttribute,l=3*e,u=3*e+1,c=3*e+2;return a&&(l=a.getX(l),u=a.getX(u),c=a.getX(c)),N.a.fromBufferAttribute(this.positionAttribute,l),N.b.fromBufferAttribute(this.positionAttribute,u),N.c.fromBufferAttribute(this.positionAttribute,c),t.set(0,0,0).addScaledVector(N.a,r).addScaledVector(N.b,o).addScaledVector(N.c,1-(r+o)),void 0!==i&&(void 0!==this.normalAttribute?(N.a.fromBufferAttribute(this.normalAttribute,l),N.b.fromBufferAttribute(this.normalAttribute,u),N.c.fromBufferAttribute(this.normalAttribute,c),i.set(0,0,0).addScaledVector(N.a,r).addScaledVector(N.b,o).addScaledVector(N.c,1-(r+o)).normalize()):N.getNormal(i)),void 0!==n&&void 0!==this.colorAttribute&&(N.a.fromBufferAttribute(this.colorAttribute,l),N.b.fromBufferAttribute(this.colorAttribute,u),N.c.fromBufferAttribute(this.colorAttribute,c),U.set(0,0,0).addScaledVector(N.a,r).addScaledVector(N.b,o).addScaledVector(N.c,1-(r+o)),n.r=U.x,n.g=U.y,n.b=U.z),void 0!==s&&void 0!==this.uvAttribute&&(O.fromBufferAttribute(this.uvAttribute,l),L.fromBufferAttribute(this.uvAttribute,u),M.fromBufferAttribute(this.uvAttribute,c),s.set(0,0).addScaledVector(O,r).addScaledVector(L,o).addScaledVector(M,1-(r+o))),this}};function Q(e,t){let i=e,n=new Float32Array(4*t*t);for(let e=0;e<t*t;e++)n[4*e]=i[3*e],n[4*e+1]=i[3*e+1],n[4*e+2]=i[3*e+2],n[4*e+3]=0;let s=new F(n,t,t,g,d);return s.needsUpdate=!0,s}var W=class{constructor(e,t,i,n){this.type="SphereEmitterShape",this.targetMesh=void 0,this.size=e,this.type=i,this.textureSize=function(e){let t=Math.ceil(Math.sqrt(e));return Math.max(t,1)}(t),this.targetMesh="BufferGeometry"===n?.geometry.type||"Mesh"===n?.type&&n&&n.geometry.hasAttribute("position")&&n.geometry.hasAttribute("normal")?n:this.getMesh(i,1);let{positions:s,dataTexture:r,dataTextureNormals:o}=this.createPositions(this.textureSize,this.targetMesh??this.getMesh(i,1));this.positionsTexture=r,this.positionsAttribute=s,this.directionsTexture=o}createPositions(e,t){let{positions:i,normals:n}=function(e,t){let i=new D(e.geometry,e.material),n=[],s=[],r=new f,o=new f;null!==i.geometry.index&&(i.geometry=i.geometry.toNonIndexed());let a=new B(i).build();for(let e=0;e<t;e++)a.sample(r,o),n.push(r.x,r.y,r.z),s.push(o.x,o.y,o.z);return{positions:new Float32Array(n),normals:new Float32Array(s)}}(t,e*e);return{dataTexture:Q(i,e),positions:i,dataTextureNormals:Q(n,e)}}getMesh(e,t){let i=null;switch(e){case"SphereEmitterShape":i=new R(.5*t,32,32);break;case"TorusEmitterShape":i=new P(.5*t,.3,15,40);break;case"ConeEmitterShape":i=new y(t,t,15);break;case"BoxEmitterShape":i=new v(t,t,t);break;case"PlaneEmitterShape":i=new T(t,t),i.rotateX(-Math.PI/2);break;default:i=new R(t,32,32)}return new D(i,new A({color:16711680}))}applyToShader(e,t){this.size=(new f).fromArray(t.size.map(e=>"number"==typeof e?e:1)),e.uEmitterSize.value=this.size}dispose(){this.positionsTexture.dispose(),this.directionsTexture.dispose(),this.positionsAttribute=new Float32Array}};function k(e){let t={...e},i=u.defaultData;t.forceFieldObjectId&&(t.colliderEntityId=t.forceFieldObjectId);let n={...i.shape,...t.shape},s={...i.renderMaterial,...t.renderMaterial};return{...i,...t,shape:n,renderMaterial:s}}var q=class extends b{constructor(n,s){super(),this.type="ParticleEmitter",this.debugMode=!1,this.worldSpace=!0,this.rootObject=null,this.gpuCompute=null,this.positionSimRT=null,this.velocitySimRT=null,this.emissionRateSimRT=null,this.emitterShape=void 0,this.isEmitting=!1,this.hasBeenReset=!1,this.emittedParticlesAmount=0,this.lastEmitTime=0,this.globalTime=0,this.targetFPS=60,this.previousRatio=1,this.lerpFactor=.4,this.particlesAmount=0,this.noiseStrength=0,this.noiseScale=0,this.isBillboardBased=!0,this.simFeaturesDefinition={USE_COLLIDER:!1,USE_ATTRACTOR:!1,USE_VORTEX:!1,USE_SPHERE_COLLIDER:!1,USE_BOX_COLLIDER:!1,USE_FORCE_LOCAL_SPACE:!1,USE_NORMALS:!1,USE_CURL_NOISE:!0,USE_SIMPLEX_NOISE:!1,USE_FBM_NOISE:!1},this.textureLoader=new V,this.textureRequestId=0,this.currentWorldPosition=new f,this.systemQuaternion=new p,this.worldGravity=new f(0,0,0),this.directionAxis=new f(0,0,0),this.colliderV3=new f(0,0,0),this.colliderQuaternion=new p(0,0,0,1),this.matrixAutoUpdate=!0,this.renderer=n,this.system=s,this.shared=s.context.shared;let r=s.data;this.material=i(n)?e()?.createMaterial(r.renderMaterial,s.context)??t().createMaterial(r.renderMaterial,s.context):t().createMaterial(r.renderMaterial,s.context),this.material.uniforms={uSize:{value:0},uSizeEnd:{value:0},uColor:{value:r.renderMaterial.color},uColor2:{value:r.renderMaterial.color2},uPosition:{value:new f(0,0,0)},uEmissionData:{value:new f(0,0,0)},uTexture:{value:this.defaultTexture},uWorldOffset:{value:new f(0,0,0)},uWorldQuaternion:{value:new x(0,0,0,1)},uRandScaleFactor:{value:r.randomScale??0},uRandRotationFactor:{value:r.randomRotation??0},uRotation:{value:r.renderMaterial.spriteRotation[0]??0},uRotationEnd:{value:r.renderMaterial.spriteRotation[1]??0}},this.setTexture(this.material.uniforms,r.renderMaterial.texture),this.init(r)}setTexture(e,t){let i=t.data,n=++this.textureRequestId;if("string"==typeof t){let i=this.shared.image(t),s=()=>{if(n!==this.textureRequestId)return;let t=new S(i.img);t.needsUpdate=!0,e.uTexture.value=t};return void(i.loaded?s():i.loadPromise.then(s))}if("string"!=typeof i){let t=new Image;t.onload=()=>{if(n!==this.textureRequestId)return;let i=new S(t);i.needsUpdate=!0,e.uTexture.value=i};let s=new Blob([i],{type:"image/*"}),r=URL.createObjectURL(s);t.src=r}}updateGeometryAttributes(e,t){let n=function(e){let t=new Float32Array(e*e*2);for(let i=0;i<e;i++)for(let n=0;n<e;n++){let s=i*e+n;t[2*s+0]=i/(e-1),t[2*s+1]=n/(e-1)}return t}(t);if(!this.emitterShape?.positionsAttribute)return;let s=new w(n,2);e.geometry.setAttribute("ref",s),i(this.renderer)&&e.geometry.setAttribute("particleRef",s)}applyWorldSpace(){if(!(this.system.started&&this.worldSpace&&this.positionSimRT&&this.velocitySimRT))return;let e=this.system;e.getWorldQuaternion(this.systemQuaternion),this.systemQuaternion.invert(),e.getWorldPosition(this.currentWorldPosition),this.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.positionSimRT.material.uniforms.uWorldOffset.value=this.currentWorldPosition,this.systemQuaternion.invert(),this.positionSimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize()),this.velocitySimRT.material.uniforms.uWorldQuaternion.value.copy(this.systemQuaternion.normalize())}update(e,t){if(!this.gpuCompute||!this.positionSimRT||!this.velocitySimRT||!this.emissionRateSimRT||this.hasBeenReset)return;if(this.checkIfAllParticlesAreDead()&&!this.hasBeenReset)return void this.reset();this.applyWorldSpace(),this.globalTime=e,this.positionSimRT.material.uniforms.uTime.value=e,this.emissionRateSimRT.material.uniforms.uTime.value=e;let i=1e3/t,n=this.targetFPS/i,s=this.previousRatio+(n-this.previousRatio)*this.lerpFactor;this.positionSimRT.material.uniforms.uFPSRatio.value=s,this.previousRatio=s;let r=this.isEmitting?this.GoEmitSomeParticles(e,this.system.data.birthRatePerSec):0;this.emissionRateSimRT.material.uniforms.uLastIndexEmitted.value=this.emittedParticlesAmount,this.emissionRateSimRT.material.uniforms.uParticlesToEmit.value=r,this.material.uniforms.uPosition.value=this.gpuCompute.getCurrentRenderTarget(this.positionSimRT)?.texture,this.system.colliderEntities.length>0&&this.renderColliders(),this.gpuCompute.compute()}renderColliders(){if(!this.velocitySimRT)return;let e=this.system.colliderEntities[0],t=this.simFeaturesDefinition.USE_COLLIDER||this.simFeaturesDefinition.USE_ATTRACTOR||this.simFeaturesDefinition.USE_VORTEX;if(e.destroyedInAction&&t&&this.init(k({...this.system.data,colliderEntityId:null})),!e||e.destroyedInAction)return;e.getWorldPosition(this.colliderV3),0===this.colliderV3.y&&(this.colliderV3.y=1e-4),this.velocitySimRT.material.uniforms.uColliderPos.value.copy(this.colliderV3);let i=e.data.size;this.colliderV3.fromArray(i),this.velocitySimRT.material.uniforms.uColliderSize.value.copy(this.simFeaturesDefinition.USE_SPHERE_COLLIDER?this.colliderV3.multiplyScalar(.5):this.colliderV3),e.getWorldQuaternion(this.colliderQuaternion),this.velocitySimRT.material.uniforms.uColliderQuaternion.value.copy(this.colliderQuaternion.normalize()),this.velocitySimRT.material.uniforms.uColliderQuaternionInvert.value.copy(this.colliderQuaternion.normalize().invert())}updateState(e){!this.velocitySimRT||!this.positionSimRT||(e.renderMaterial&&this.updateMaterialState(e.renderMaterial),this.updateParticleState(e))}updateVariableState(e,t){if(!this.velocitySimRT||!this.positionSimRT)return;"size"===t[2]&&this.material.updateState({size:[e,this.material.uniforms.uSizeEnd.value]}),"sizeEnd"===t[2]&&this.material.updateState({size:[this.material.uniforms.uSize.value,e]});let i=(e,t)=>{let i=[...this.system.data.shape.size];i[e]=t,this.updateParticleState({shape:{...this.system.data.shape,size:i}})};"shape_size_0"===t[2]&&i(0,e),"shape_size_1"===t[2]&&i(1,e),"shape_size_2"===t[2]&&i(2,e),"speed"===t[2]&&(this.velocitySimRT.material.uniforms.uSpeed.value=e/10),"gravity"===t[2]&&this.worldGravity.set(0,e/100,0),"noiseStrength"===t[2]&&(this.noiseStrength=e,this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),"noiseScale"===t[2]&&(this.noiseScale=e,this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),"direction_x"===t[2]&&(this.directionAxis=this.getDirectionAxis([Number(e),this.system.data.direction[1],this.system.data.direction[2]])),"direction_y"===t[2]&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],Number(e),this.system.data.direction[2]])),"direction_z"===t[2]&&(this.directionAxis=this.getDirectionAxis([this.system.data.direction[0],this.system.data.direction[1],Number(e)]))}updateMaterialState(e){this.material.updateState({...e,size:e.size?[Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","size"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","sizeEnd"]))]:[0,0]}),e.texture&&(this.setTexture(this.material.uniforms,e.texture),this.material.needsUpdate=!0)}updateParticleState(e){if(this.positionSimRT&&this.velocitySimRT){if(this.shouldReInitGPUCompute(e)&&this.init(k(this.system.data)),void 0!==e.life&&(this.positionSimRT.material.uniforms.uMaxLifeTime.value=e.life),void 0!==e.speed&&(this.velocitySimRT.material.uniforms.uSpeed.value=Number(this.shared.getVariable(e.speed,[this.uuid,"particles","speed"]))/10),void 0!==e.collisionBounce&&(this.velocitySimRT.material.uniforms.uBounce.value=e.collisionBounce),void 0!==e.noiseStrength&&(this.noiseStrength=Number(this.shared.getVariable(e.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.velocitySimRT.material.uniforms.uNoiseStrength.value=this.noiseStrength),void 0!==e.noiseScale&&(this.noiseScale=Number(this.shared.getVariable(e.noiseScale,[this.uuid,"particles","noiseScale"])),this.velocitySimRT.material.uniforms.uNoiseScale.value=this.noiseScale),void 0!==e.noiseSeed&&(this.velocitySimRT.material.uniforms.uNoiseSeed.value=e.noiseSeed),void 0!==e.randomMass&&(this.velocitySimRT.material.uniforms.uRandomMassFactor.value=e.randomMass),void 0!==e.renderMaterial?.size){let t=this.shared.getVariable(e.renderMaterial.size[0],[this.uuid,"particles","size"]);this.velocitySimRT.material.uniforms.particleSize.value=Number(t)}if(void 0!==e.renderMaterial?.spriteRotation&&(this.material.uniforms.uRotation.value=e.renderMaterial.spriteRotation[0],this.material.uniforms.uRotationEnd.value=e.renderMaterial.spriteRotation[1]),void 0!==e.shape){let t=e.shape.size??this.system.data.shape.size,i=[Number(this.shared.getVariable(t[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(t[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(t[2],[this.uuid,"particles","shape_size_2"]))],n={...k(this.system.data).shape,size:i};this.emitterShape?.applyToShader(this.positionSimRT.material.uniforms,n)}if(void 0!==e.gravity&&(this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.velocitySimRT.material.uniforms.uGravity={value:this.worldGravity}),void 0!==e.direction){let t=this.getDirectionFromVariable(e.direction);this.directionAxis=this.getDirectionAxis(t),this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis}void 0!==e.randomRotation&&(this.material.uniforms.uRandRotationFactor.value=e.randomRotation),void 0!==e.randomScale&&(this.material.uniforms.uRandScaleFactor.value=e.randomScale)}}updateForceFieldParameters(e){!this.velocitySimRT||(void 0!==e.forceIntensity&&(this.velocitySimRT.material.uniforms.uForceIntensity.value=e.forceIntensity),void 0!==e.forceDambing&&(this.velocitySimRT.material.uniforms.uForceDamping.value=e.forceDambing))}getDirectionAxis(e){let t=[Number(e[0])*h.DEG2RAD,Number(e[1])*h.DEG2RAD,Number(e[2])*h.DEG2RAD],i=new z(t[0],t[1],t[2],"XYZ");return this.directionAxis.set(0,1,0).applyEuler(i).normalize(),this.velocitySimRT&&(this.velocitySimRT.material.uniforms.uDirectionsAxis.value=this.directionAxis),this.directionAxis}shouldReInitGPUCompute(e){let{birthRatePerSec:t,rootObjectType:i,colliderEntityId:n,shape:s,emitTimeDuration:r,emitTimeCycle:o,life:a,directionMode:l,noiseType:u}=e;return void 0!==t||void 0!==i||n||null===n||void 0!==o||void 0!==s||void 0!==a||void 0!==r||void 0!==l||void 0!==u}init(n){this.dispose(),this.particlesAmount=this.getMaxParticlesAmount({birthRatePerSecond:n.birthRatePerSec,particleMaxLifeTime:n.life,loopDuration:"infinity"===n.emitTimeCycle?0:n.emitTimeDuration}),this.particlesAmount>1e5&&(console.warn("The maximum number of particles is limited to 100000."),this.particlesAmount=1e5),this.emitterShape=this.createShape(n.shape,this.particlesAmount);let s=setInterval(()=>{if(!this.emitterShape)return;let e=this.emitterShape.positionsTexture.source.data.data;e&&!isNaN(e[0])?clearInterval(s):this.init(n)},100);if(!this.emitterShape)return;let r=this.updateSimulationDefinition(n),o=i(this.renderer)?e().createComputation(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer,this.simFeaturesDefinition):t().createComputation(this.emitterShape.textureSize,this.emitterShape.textureSize,this.renderer),a=o.addVariable("uCurrentPosition",r+"\n\n\n\nuniform sampler2D uOriginalPosition;\nuniform float uTime;\nuniform float uSpeed; \nuniform vec3 uWorldOffset; \nuniform vec4 uWorldQuaternion;\nuniform float uMaxLifeTime;\nuniform vec3 uEmitterSize;\nuniform float uFPSRatio; \n\nfloat random (vec2 st) {\n return fract(sin(dot(st.xy,\n vec2(12.9898,78.233)))*\n 43758.5453123);\n}\nvec3 applyQuaternionToVector( vec4 q, vec3 v ){\n return v + 2.0 * cross( q.xyz, cross( q.xyz, v ) + q.w * v );\n}\n\nvec3 applyForce(vec3 force, float mass) {\n vec3 acceleration = force / mass;\n \n return acceleration;\n }\n \n\nvoid main() {\n vec2 vUv = gl_FragCoord.xy / resolution.xy;\n vec3 position = texture2D( uCurrentPosition, vUv ).xyz;\n float currentLife = texture2D( uCurrentPosition, vUv ).w; \n float isSpawning = texture2D( uCurrentEmissionRate, vUv ).r; \n float isActive = texture2D( uCurrentEmissionRate, vUv ).g; \n float timeStart = texture2D( uCurrentEmissionRate, vUv ).b; \n vec3 originalPosition = ((texture2D( uOriginalPosition, vUv ).xyz) * uEmitterSize);\n vec3 velocity = texture2D( uCurrentVelocity, vUv ).xyz;\n float collisionFlag = texture2D( uCurrentVelocity, vUv ).w; \n float lifeTime = uMaxLifeTime;\n\n \n \n float isColliding = step(0.5, collisionFlag); \n float bounceOffset = 3.0 * isColliding; \n vec3 collisionAdjustedVelocity = velocity * (1.0 + bounceOffset);\n\n \n vec3 fpsVelocity = velocity * min(uFPSRatio, 5.0);\n position += mix(fpsVelocity, collisionAdjustedVelocity, isColliding);\n\n \n \n \n vec3 newPosition = applyQuaternionToVector(uWorldQuaternion, originalPosition) + uWorldOffset;\n originalPosition = mix(originalPosition, newPosition, isSpawning);\n position = mix(position, originalPosition, isSpawning);;\n timeStart = mix(timeStart, uTime, isSpawning);\n\n \n float timeLeft = max(lifeTime - (uTime - timeStart), 0.0);\n float life_Normalize = timeLeft / lifeTime;\n\n \n vec4 activeColor = vec4(position, life_Normalize);\n \n gl_FragColor = mix(vec4(0.0), activeColor, isActive);\n\n}\n",this.emitterShape.positionsTexture),l=o.addVariable("uCurrentVelocity",r+"\n\n\n\nuniform sampler2D uOriginalPosition;\nuniform sampler2D uDirections; \nuniform vec3 uDirectionsAxis;\nuniform vec4 uWorldQuaternion;\nuniform vec3 uGravity; \nuniform float uNoiseStrength; \nuniform float uNoiseScale; \nuniform float uNoiseSeed; \nuniform float particleSize;\nuniform float uSpeed; \nuniform float uRandomMassFactor;\n\n\nuniform vec3 uColliderPos; \nuniform vec3 uColliderSize; \nuniform vec4 uColliderQuaternion; \nuniform vec4 uColliderQuaternionInvert; \nuniform float uBounce; \nuniform float uForceDamping;\nuniform float uForceIntensity;\n\n\n\n\n vec3 mod289(vec3 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n }\n \n vec4 mod289(vec4 x) {\n return x - floor(x * (1.0 / 289.0)) * 289.0;\n }\n \n vec4 permute(vec4 x) {\n return mod289(((x*34.0)+1.0)*x);\n }\n \n vec4 taylorInvSqrt(vec4 r)\n {\n return 1.79284291400159 - 0.85373472095314 * r;\n }\n \n vec3 fade(vec3 t) {\n return t*t*t*(t*(t*6.0-15.0)+10.0);\n}\n\n float snoise(vec3 v)\n {\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; \n vec3 x3 = x0 - D.yyy; \n \n \n i = mod289(i);\n vec4 p = permute( permute( permute(\n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 ))\n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n \n \n \n float n_ = 0.142857142857; \n vec3 ns = n_ * D.wyz - D.xzx;\n \n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); \n \n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); \n \n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n \n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n \n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n \n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n \n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n \n \n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n \n \n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1),\n dot(p2,x2), dot(p3,x3) ) );\n }\n \n vec3 snoiseVec3( vec3 x ){\n \n float s = snoise(vec3( x ));\n float s1 = snoise(vec3( x.y - 19.1 , x.z + 33.4 , x.x + 47.2 ));\n float s2 = snoise(vec3( x.z + 74.2 , x.x - 124.5 , x.y + 99.4 ));\n vec3 c = vec3( s , s1 , s2 );\n return c;\n \n }\n \n \n vec3 curlNoise( vec3 p, float seed){\n p += seed;\n const float e = .1;\n vec3 dx = vec3( e , 0.0 , 0.0 );\n vec3 dy = vec3( 0.0 , e , 0.0 );\n vec3 dz = vec3( 0.0 , 0.0 , e );\n \n vec3 p_x0 = snoiseVec3( p - dx );\n vec3 p_x1 = snoiseVec3( p + dx );\n vec3 p_y0 = snoiseVec3( p - dy );\n vec3 p_y1 = snoiseVec3( p + dy );\n vec3 p_z0 = snoiseVec3( p - dz );\n vec3 p_z1 = snoiseVec3( p + dz );\n \n float x = p_y1.z - p_y0.z - p_z1.y + p_z0.y;\n float y = p_z1.x - p_z0.x - p_x1.z + p_x0.z;\n float z = p_x1.y - p_x0.y - p_y1.x + p_y0.x;\n \n const float divisor = 1.0 / ( 2.0 * e );\n return normalize( vec3( x , y , z ) * divisor );\n \n }\n\n\n\nfloat cnoise(vec3 P)\n{\n vec3 Pi0 = floor(P); \n vec3 Pi1 = Pi0 + vec3(1.0); \n Pi0 = mod289(Pi0);\n Pi1 = mod289(Pi1);\n vec3 Pf0 = fract(P); \n vec3 Pf1 = Pf0 - vec3(1.0); \n vec4 ix = vec4(Pi0.x, Pi1.x, Pi0.x, Pi1.x);\n vec4 iy = vec4(Pi0.yy, Pi1.yy);\n vec4 iz0 = Pi0.zzzz;\n vec4 iz1 = Pi1.zzzz;\n\n vec4 ixy = permute(permute(ix) + iy);\n vec4 ixy0 = permute(ixy + iz0);\n vec4 ixy1 = permute(ixy + iz1);\n\n vec4 gx0 = ixy0 * (1.0 / 7.0);\n vec4 gy0 = fract(floor(gx0) * (1.0 / 7.0)) - 0.5;\n gx0 = fract(gx0);\n vec4 gz0 = vec4(0.5) - abs(gx0) - abs(gy0);\n vec4 sz0 = step(gz0, vec4(0.0));\n gx0 -= sz0 * (step(0.0, gx0) - 0.5);\n gy0 -= sz0 * (step(0.0, gy0) - 0.5);\n\n vec4 gx1 = ixy1 * (1.0 / 7.0);\n vec4 gy1 = fract(floor(gx1) * (1.0 / 7.0)) - 0.5;\n gx1 = fract(gx1);\n vec4 gz1 = vec4(0.5) - abs(gx1) - abs(gy1);\n vec4 sz1 = step(gz1, vec4(0.0));\n gx1 -= sz1 * (step(0.0, gx1) - 0.5);\n gy1 -= sz1 * (step(0.0, gy1) - 0.5);\n\n vec3 g000 = vec3(gx0.x,gy0.x,gz0.x);\n vec3 g100 = vec3(gx0.y,gy0.y,gz0.y);\n vec3 g010 = vec3(gx0.z,gy0.z,gz0.z);\n vec3 g110 = vec3(gx0.w,gy0.w,gz0.w);\n vec3 g001 = vec3(gx1.x,gy1.x,gz1.x);\n vec3 g101 = vec3(gx1.y,gy1.y,gz1.y);\n vec3 g011 = vec3(gx1.z,gy1.z,gz1.z);\n vec3 g111 = vec3(gx1.w,gy1.w,gz1.w);\n\n vec4 norm0 = taylorInvSqrt(vec4(dot(g000, g000), dot(g010, g010), dot(g100, g100), dot(g110, g110)));\n g000 *= norm0.x;\n g010 *= norm0.y;\n g100 *= norm0.z;\n g110 *= norm0.w;\n vec4 norm1 = taylorInvSqrt(vec4(dot(g001, g001), dot(g011, g011), dot(g101, g101), dot(g111, g111)));\n g001 *= norm1.x;\n g011 *= norm1.y;\n g101 *= norm1.z;\n g111 *= norm1.w;\n\n float n000 = dot(g000, Pf0);\n float n100 = dot(g100, vec3(Pf1.x, Pf0.yz));\n float n010 = dot(g010, vec3(Pf0.x, Pf1.y, Pf0.z));\n float n110 = dot(g110, vec3(Pf1.xy, Pf0.z));\n float n001 = dot(g001, vec3(Pf0.xy, Pf1.z));\n float n101 = dot(g101, vec3(Pf1.x, Pf0.y, Pf1.z));\n float n011 = dot(g011, vec3(Pf0.x, Pf1.yz));\n float n111 = dot(g111, Pf1);\n\n vec3 fade_xyz = fade(Pf0);\n vec4 n_z = mix(vec4(n000, n100, n010, n110), vec4(n001, n101, n011, n111), fade_xyz.z);\n vec2 n_yz = mix(n_z.xy, n_z.zw, fade_xyz.y);\n float n_xyz = mix(n_yz.x, n_yz.y, fade_xyz.x); \n return 2.2 * n_xyz;\n}\n\n\nvec3 fbm_vec3(vec3 p, float frequency, float offset)\n{\n return vec3(\n cnoise((p+vec3(offset))*frequency),\n cnoise((p+vec3(offset+20.0))*frequency),\n cnoise((p+vec3(offset-30.0))*frequency)\n );\n}\n\n\nfloat rand(vec2 co){\n return fract(sin(dot(co, vec2(12.9898, 78.233))) * 43758.5453);\n}\nvec3 applyQuaternionToVector( vec4 q, vec3 v ){\n return v + 2.0 * cross( q.xyz, cross( q.xyz, v ) + q.w * v );\n } \nvec3 applyForce(vec3 force, float mass) {\n vec3 acceleration = force / mass;\n \n return acceleration;\n}\n\nvec4 conjugate(vec4 q) {\n return vec4(q.w, -q.x, -q.y, -q.z);\n}\n\n\nvec3 ellipsoidNormal(vec3 p, vec3 radii) {\n return normalize(p / (radii * radii));\n}\n\nfloat friction = .3;\n\nvoid main() {\n vec2 vUv = gl_FragCoord.xy / resolution.xy;\n vec3 position = texture2D( uCurrentPosition, vUv ).xyz;\n vec3 originalPosition = texture2D( uOriginalPosition, vUv ).xyz;\n float timeLeft = texture2D( uCurrentPosition, vUv ).w;\n vec3 directions = texture2D( uDirections, vUv ).xyz; \n vec3 velocity = texture2D( uCurrentVelocity, vUv ).xyz;\n float mass = rand(originalPosition.xy) * 0.5 + 0.5;\n float isSpawning = texture2D( uCurrentEmissionRate, vUv ).x; \n float isActive = texture2D( uCurrentEmissionRate, vUv ).y; \n float collisionFlag =texture2D( uCurrentVelocity, vUv ).w; \n\n \n mass = (1.0 - (uRandomMassFactor * mass));\n \n if (isActive == 1.0) {\n \n \n \n #ifdef USE_CURL_NOISE\n if (uNoiseScale > 0.0 ) {\n velocity = curlNoise(position * uNoiseScale * .002, uNoiseSeed) * ( uNoiseStrength + 1.0) * .05 * uSpeed;\n }\n \n if (uNoiseStrength > 0.0 && uNoiseScale == 0.0 ) {\n velocity += curlNoise( position, uNoiseSeed) * uNoiseStrength * 0.05 * uSpeed;\n }\n #endif\n \n #ifdef USE_SIMPLEX_NOISE\n if (uNoiseScale > 0.0 ) {\n velocity = vec3(snoise(position * uNoiseScale * .001) * ( uNoiseStrength + 1.0) * .1);\n velocity *= uSpeed;\n }\n \n if (uNoiseStrength > 0.0 && uNoiseScale == 0.0) {\n velocity += vec3(snoise(position * uNoiseStrength * .001) * .05 * uSpeed);\n }\n #endif\n \n #ifdef USE_FBM_NOISE\n if (uNoiseScale > 0.0 ) {\n velocity = fbm_vec3(position * uNoiseScale * .001, ( uNoiseStrength + 1.0), uNoiseSeed);\n velocity *= uSpeed;\n }\n \n if (uNoiseStrength > 0.0 && uNoiseScale == 0.0 ) { \n velocity += fbm_vec3(position * uNoiseStrength * .001, ( uNoiseStrength + 1.0), uNoiseSeed) * .1 * uSpeed;\n }\n #endif\n\n \n \n #ifdef USE_COLLIDER\n float restitution = max(uBounce * 2., .01); \n \n \n #ifdef USE_SPHERE_COLLIDER \n \n vec3 radii = uColliderSize;\n \n vec3 relPos = position - uColliderPos;\n \n relPos = applyQuaternionToVector(uColliderQuaternionInvert, relPos); \n \n vec3 scaledPos = relPos / radii;\n \n float dist = length(scaledPos); \n \n \n if (dist <= 1. + particleSize / length(radii) && collisionFlag == 0.0) {\n \n vec3 adjustedPos = scaledPos * (1.0 + particleSize / length(radii)); \n \n vec3 normal = ellipsoidNormal(adjustedPos, radii);\n \n normal = applyQuaternionToVector(uColliderQuaternion, normal);\n \n velocity = reflect(velocity, normal) * restitution;\n\n collisionFlag = 1.0;\n } else {\n collisionFlag = 0.0;\n }\n #endif\n\n \n \n #ifdef USE_BOX_COLLIDER\n \n vec3 boxHalfSize = uColliderSize / 2.0;\n \n vec3 localPos = applyQuaternionToVector(uColliderQuaternionInvert, position - uColliderPos); \n \n vec3 localDistance = abs(localPos) - boxHalfSize;\n float distToSurface = max(localDistance.x, max(localDistance.y, localDistance.z)); \n\n \n if (distToSurface <= particleSize * 0.5 && collisionFlag == 0.0) { \n \n vec3 normal;\n if (localDistance.x > localDistance.y && localDistance.x > localDistance.z) {\n normal = vec3(sign(localPos.x), 0.0, 0.0);\n } else if (localDistance.y > localDistance.z) {\n normal = vec3(0.0, sign(localPos.y), 0.0);\n } else {\n normal = vec3(0.0, 0.0, sign(localPos.z));\n } \n \n normal = applyQuaternionToVector(uColliderQuaternion, normal); \n \n velocity = reflect(velocity, normal) * restitution;\n \n collisionFlag = 1.0;\n } else {\n collisionFlag = 0.0;\n }\n #endif \n #endif \n \n\n \n \n #ifdef USE_ATTRACTOR\n\n #ifdef USE_SPHERE_COLLIDER \n \n vec3 radii = uColliderSize;\n \n vec3 relPos = position - uColliderPos;\n \n relPos = applyQuaternionToVector(uColliderQuaternionInvert, relPos); \n \n vec3 scaledPos = relPos / radii;\n \n float distToSurface = length(scaledPos); \n float insideCheck = 1.0;\n\n #endif\n\n\n #ifdef USE_BOX_COLLIDER\n \n vec3 boxHalfSize = uColliderSize / 2.0;\n \n vec3 localPos = applyQuaternionToVector(uColliderQuaternionInvert, position - uColliderPos); \n vec3 localDistance = abs(localPos) - boxHalfSize;\n float distToSurface = max(localDistance.x, max(localDistance.y, localDistance.z));\n float insideCheck = particleSize;\n #endif \n \n \n #ifdef USE_FORCE_LOCAL_SPACE\n if (distToSurface <= insideCheck ) { \n \n #ifdef USE_SPHERE_COLLIDER \n float attractorStrength = (1.0 - distToSurface ) * uForceIntensity; \n #endif\n\n #ifdef USE_BOX_COLLIDER\n float attractorStrength = max((1.0 - insideCheck / distToSurface), 0.) * uForceIntensity; \n #endif\n\n float attractorDamping = uForceDamping; \n \n \n vec3 attractorRadii = uColliderSize;\n \n vec3 relPos = position - uColliderPos;\n \n relPos = applyQuaternionToVector(uColliderQuaternionInvert, relPos); \n \n vec3 scaledPos = relPos / attractorRadii;\n\n \n float attractorRadius = length(scaledPos);\n \n vec3 relativePosition = position - uColliderPos;\n \n vec3 attractorForce = normalize(relativePosition) * attractorStrength;\n \n velocity -= attractorForce;\n \n velocity *= attractorDamping;\n }\n #else \n \n vec3 relativePosition = position - uColliderPos;\n \n vec3 attractorForce = normalize(relativePosition) * uForceIntensity;\n \n velocity -= attractorForce;\n \n velocity *= uForceDamping;\n #endif \n #endif \n \n \n \n #ifdef USE_VORTEX\n \n vec3 boxHalfSize = uColliderSize / 2.0;\n \n vec3 localPos = applyQuaternionToVector(uColliderQuaternionInvert, position - uColliderPos); \n vec3 localDistance = abs(localPos) - boxHalfSize;\n float distToSurface = max(localDistance.x, max(localDistance.y, localDistance.z));\n\n \n if (distToSurface <= particleSize) {\n float vortexStrength = uForceIntensity;\n vec3 localTopCenter = vec3(0.0, 0., 0.0);\n\n \n vec3 vortexCenter = uColliderPos + applyQuaternionToVector(uColliderQuaternion, localTopCenter);\n \n vec3 vortexVector = vortexCenter - position;\n\n \n \n vec3 upVector = vec3(0.0, 1.0, 0.01);\n vec3 rotationAxis = cross(upVector, applyQuaternionToVector(uColliderQuaternion, vortexVector));\n rotationAxis = normalize(rotationAxis);\n\n \n float rotationSpeed = length(vortexVector * vortexStrength * 3.0) ; \n\n vec3 rotationVelocity = rotationAxis * rotationSpeed;\n \n velocity = rotationVelocity * 0.005 ;\n\n \n \n \n vec3 originDirection = applyQuaternionToVector(uWorldQuaternion, directions);\n velocity += applyForce( originDirection * uSpeed * (1. - uForceDamping) , mass * .5);\n }\n #endif \n\n } \n \n\n \n \n \n #ifdef USE_NORMALS\n velocity = mix(velocity, applyQuaternionToVector(uWorldQuaternion, directions) * uSpeed, isSpawning);\n #else\n velocity = mix(velocity, applyQuaternionToVector(uWorldQuaternion, uDirectionsAxis) * uSpeed, isSpawning); \n #endif\n \n \n velocity += applyForce(uGravity, mass * .5) * (1.0 - collisionFlag);\n\n gl_FragColor = vec4(velocity, collisionFlag);\n}\n",this.emitterShape.directionsTexture),u=o.addVariable("uCurrentEmissionRate","\n\n\n\n\nuniform sampler2D uIndex; \nuniform float uLastIndexEmitted; \nuniform float uParticlesToEmit; \nuniform float uTime;\n\nvoid main() {\n vec2 vUv = gl_FragCoord.xy / resolution.xy;\n float particleIndex = texture(uIndex, vUv).x;\n float timeLeft = texture2D( uCurrentPosition, vUv ).w;\n float isActive = texture2D( uCurrentEmissionRate, vUv ).g; \n float timeStart = texture2D( uCurrentEmissionRate, vUv ).b;\n\n\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n float emitLowerBound = step(uLastIndexEmitted, particleIndex);\n float emitUpperBound = step(particleIndex, uLastIndexEmitted + uParticlesToEmit - 1.0);\n float emitParticle = emitLowerBound * emitUpperBound; \n\n \n timeStart = mix(timeStart, uTime, emitParticle);\n gl_FragColor = vec4(emitParticle, mix(isActive, 1.0, emitParticle), timeStart, 1.0);\n\n\n}\n",function(e){let t=new Float32Array(4*e*e);for(let i=0;i<e*e;i++)t[4*i]=0,t[4*i+1]=0,t[4*i+2]=0,t[4*i+3]=0;let i=new F(t,e,e,g,d);return i.needsUpdate=!0,i}(this.emitterShape.textureSize));o.setVariableDependencies(a,[a,l,u]),o.setVariableDependencies(l,[a,l,u]),o.setVariableDependencies(u,[a,l,u]);let c=function({size:e}){let t=new Float32Array(4*e*e);for(let i=0;i<e*e;i++)t[4*i]=i,t[4*i+1]=0,t[4*i+2]=0,t[4*i+3]=0;let i=new F(t,e,e,g,d);return i.needsUpdate=!0,i}({size:this.emitterShape.textureSize}),h={uOriginalPosition:{value:this.emitterShape.positionsTexture},uWorldOffset:{value:new f(0,0,0)},uWorldQuaternion:{value:new x(0,0,0,1)},uTime:{value:0},uFPSRatio:{value:1},uMaxLifeTime:{value:n.life},uEmitterSize:{value:new f(Number(this.shared.getVariable(n.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(n.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(n.shape.size[2],[this.uuid,"particles","shape_size_2"])))},particleSize:{value:0}};a.material.uniforms=h;let m=this.getDirectionFromVariable(n.direction);this.directionAxis=this.getDirectionAxis(m),this.worldGravity.set(0,Number(this.shared.getVariable(this.system.data.gravity,[this.uuid,"particles","gravity"]))/100,0),this.noiseStrength=Number(this.shared.getVariable(n.noiseStrength,[this.uuid,"particles","noiseStrength"])),this.noiseScale=Number(this.shared.getVariable(n.noiseScale,[this.uuid,"particles","noiseScale"]));let p=n.colliderEntityId&&this.system.getColliderData(n.colliderEntityId),v={uOriginalPosition:{value:this.emitterShape.positionsTexture},uDirections:{value:this.emitterShape.directionsTexture},uDirectionsAxis:{value:this.directionAxis},uWorldQuaternion:{value:new x(0,0,0,1)},uColliderPos:{value:new f(0,0,0)},uColliderSize:{value:new f(0,0,0)},uForceIntensity:{value:p?p.forceIntensity:0},uForceDamping:{value:p?p.forceDambing:0},uColliderQuaternion:{value:new x(0,0,0,1)},uColliderQuaternionInvert:{value:new x(0,0,0,1)},particleSize:{value:0},uGravity:{value:this.worldGravity},uNoiseStrength:{value:this.noiseStrength},uNoiseScale:{value:this.noiseScale},uNoiseSeed:{value:n.noiseSeed},uRandomMassFactor:{value:n.randomMass},uBounce:{value:n.collisionBounce},uSpeed:{value:Number(this.shared.getVariable(n.speed,[this.uuid,"particles","speed"]))/10}};l.material.uniforms=v;let y={uIndex:{value:c},uTime:{value:0},uLastIndexEmitted:{value:0},uParticlesToEmit:{value:0}};u.material.uniforms=y;let S=[Number(this.shared.getVariable(n.shape.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(n.shape.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(n.shape.size[2],[this.uuid,"particles","shape_size_2"]))],z={...k(this.system.data).shape,size:S};this.emitterShape.applyToShader(a.material.uniforms,z),o.init(),this.gpuCompute=o,this.positionSimRT=a,this.velocitySimRT=l,this.emissionRateSimRT=u,this.material.uniforms.uPosition.value=o.getCurrentRenderTarget(a)?.texture,this.rootObject=this.createPrimaryEmitter(this.emitterShape.textureSize),this.add(this.rootObject),this.material.needsUpdate=!0}getDirectionFromVariable(e){return[Number(this.shared.getVariable(e[0],[this.uuid,"particles","direction_x"])),Number(this.shared.getVariable(e[1],[this.uuid,"particles","direction_y"])),Number(this.shared.getVariable(e[2],[this.uuid,"particles","direction_z"]))]}updateSimulationDefinition(e){if(this.simFeaturesDefinition.USE_COLLIDER=!1,this.simFeaturesDefinition.USE_ATTRACTOR=!1,this.simFeaturesDefinition.USE_VORTEX=!1,this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!1,this.simFeaturesDefinition.USE_BOX_COLLIDER=!1,this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!1,this.simFeaturesDefinition.USE_NORMALS=!1,this.simFeaturesDefinition.USE_CURL_NOISE=!1,this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!1,this.simFeaturesDefinition.USE_FBM_NOISE=!1,e.colliderEntityId&&this.system.colliderEntities.length>0){let t=this.system.getColliderData(e.colliderEntityId);switch(t?.forceType){case"attractor":this.simFeaturesDefinition.USE_ATTRACTOR=!0;break;case"collider":this.simFeaturesDefinition.USE_COLLIDER=!0;break;case"vortex":this.simFeaturesDefinition.USE_VORTEX=!0}let i=t?.colliderType;"sphere"===i&&(this.simFeaturesDefinition.USE_SPHERE_COLLIDER=!0),"box"===i&&(this.simFeaturesDefinition.USE_BOX_COLLIDER=!0),"helper"===t?.forceRange&&(this.simFeaturesDefinition.USE_FORCE_LOCAL_SPACE=!0)}"normals"===e.directionMode&&(this.simFeaturesDefinition.USE_NORMALS=!0),"curl"===e.noiseType&&(this.simFeaturesDefinition.USE_CURL_NOISE=!0),"simplex"===e.noiseType&&(this.simFeaturesDefinition.USE_SIMPLEX_NOISE=!0),"fbm"===e.noiseType&&(this.simFeaturesDefinition.USE_FBM_NOISE=!0);let t="";for(let[e,i]of Object.entries(this.simFeaturesDefinition))i&&(t+=`#define ${e}\n`);return t}createShape(e,t){this.emitterShape&&this.emitterShape.dispose();let i=new f(Number(this.shared.getVariable(e.size[0],[this.uuid,"particles","shape_size_0"])),Number(this.shared.getVariable(e.size[1],[this.uuid,"particles","shape_size_1"])),Number(this.shared.getVariable(e.size[2],[this.uuid,"particles","shape_size_2"])));if("MeshEmitterShape"===e.type){let n=null;return this.system.context.scene.traverseEntity(t=>{t.uuid===e.fromMeshId&&(n=t)}),n?new W(i,t,e.type,n):new W(i,t,"SphereEmitterShape")}return new W(i,t,e.type)}createPrimaryEmitter(e){let t=e*e,i=new I(new T(1,1,1),this.material,t);return i.renderOrder=1,this.updateGeometryAttributes(i,e),this.material.needsUpdate=!0,i.onBeforeRender=()=>{this.applyWorldSpace()},i}getMaxParticlesAmount({birthRatePerSecond:e,particleMaxLifeTime:t,loopDuration:i=0}){return Math.ceil(e*(t+i))}dispose(){!this.gpuCompute||(this.rootObject?.parent?.remove(this.rootObject),this.gpuCompute.dispose(),this.material.nodeMaterialDispose(),this.emitterShape?.dispose())}GoEmitSomeParticles(e,t){let i=e-this.lastEmitTime,n=1/t;if(i>=n){let t=Math.max(1,Math.floor(i/n));return this.lastEmitTime=e,this.emittedParticlesAmount+t>this.particlesAmount&&(this.emittedParticlesAmount=0),this.emittedParticlesAmount+=t,t}return 0}checkIfAllParticlesAreDead(){return this.lastEmitTime+this.system.data.life+1<this.globalTime}reset(){this.hasBeenReset=!0,this.lastEmitTime=0,this.emittedParticlesAmount=0,this.gpuCompute&&this.init(k(this.system.data))}startEmitting(e){this.isEmitting=!0,this.hasBeenReset=!1,this.lastEmitTime=e}stopEmitting(){this.isEmitting=!1}},j=class extends o{constructor(e,t,i){super(e,t),this.type="ParticleSystem",this.isParticleSystem=!0,this.geometry=new C,this.actualTime=0,this.currentLoopTime=0,this.started=!1,this.stopped=!1,this.timeoutId=void 0,this.isFrozen=!1,this.isIdle=!0,this.emitter=null,this.colliderEntities=[],this.renderer=null,this.isPreWarm=!1,this._hasOnAfterRenderBeenCalled=!1,this.onAfterRender=e=>{e.warmupInFlight||this._hasOnAfterRenderBeenCalled||(this._hasOnAfterRenderBeenCalled=!0,this.init(e))},this.context=i,this.data={...t,...k(t)},this.geometry.setAttribute("position",new _([],3)),this.material=new A({colorWrite:!1}),this.frustumCulled=!1}init(e){this.renderer=e,this.emitter=new q(e,this),this.add(this.emitter),this.updateParticleState(this.data)}update(e){if(!this.isReady||!this.started||this.isFrozen||this.isIdle)return;this.actualTime+=e,this.stopped||(this.currentLoopTime+=e);let t="one_time"===this.data.emitTimeCycle;if(("loop"===this.data.emitTimeCycle||t)&&this.currentLoopTime>1e3*this.data.emitTimeDuration&&(this.stopped||(this.stop(),t||this.start(1e3*this.data.emitTimeDelay))),this.emitter&&this.started){let t=this.actualTime/1e3;this.emitter.update(t,e)}this.scale.set(1,1,1),this.updateMatrix()}isReady(){return!!this.emitter}hasCollider(e){return this.colliderEntities.some(t=>t.identity===e)}getColliderData(e){let t=this.colliderEntities.find(t=>t.identity===e);return t?t.data:null}updateByPatchedOp(e,t,i){super.updateByPatchedOp(e,t,i),r(e.path,["renderMaterial"])&&this.updateParticleState({renderMaterial:{...this.data.renderMaterial,...c.drop(e,1).props}}),r(e.path,["shape"])&&this.updateParticleState({shape:{...this.data.shape,...c.drop(e,1).props}})}updateState(e,t){super.updateState(e,t),this.updateParticleState(e)}updateParticleState(e){if(this.emitter){if(void 0!==e.colliderEntityId&&null!==e.colliderEntityId){let t=this.context.scene.find(e.colliderEntityId);this.colliderEntities=t?[t]:[]}null===e.colliderEntityId&&(this.colliderEntities=[]),this.emitter.updateState(e),e.emitTimeCycle&&this.started&&this.start()}}updateFromColliderEntity(e){!this.emitter||(this.emitter.updateForceFieldParameters(e),this.stop(),this.start())}start(e=0){this.currentLoopTime=0,e?this.timeoutId=window.setTimeout(()=>{this.start(0)},e):(this.started=!0,this.stopped=!1,this.isFrozen=!1,this.emitter?.startEmitting(this.actualTime/1e3),this._requestRender())}froze(){this.isFrozen=!0,this._requestRender()}unFroze(){this.isFrozen=!1,this._requestRender()}stop(){this.stopped=!0,this.currentLoopTime=0,this.emitter?.stopEmitting(),clearTimeout(this.timeoutId),this._requestRender()}reset(){this.started=!1,this.stopped=!1,this.emitter?.reset(),this._requestRender()}_requestRender(){this.context.shared.requestRender()}wakeUp(){this.isIdle=!1}sleep(){this.isIdle=!0,this.reset()}},X=class{constructor(e,t,i,n){this.data=e,this.page=t,this.shared=i,this.condition=n,this.delay=0,this.emission=e.emission,void 0!==e.delay&&(this.delay=e.delay),this.particleSystem=this.page.scene.find(this.data.emitterObjectId)}toggleEmitting(){this.particleSystem.started&&!this.particleSystem.stopped?this.stop(this.delay):this.start(this.delay)}toggleFroze(){this.particleSystem.started&&!this.particleSystem.isFrozen?this.freeze(this.delay):this.unFreeze(this.delay)}start(e=0){e?this.delayTimerId=window.setTimeout(()=>{this.start(0),this.clearDelay()},e):this.particleSystem.start()}stop(e=0){e?this.delayTimerId=window.setTimeout(()=>{this.stop(0),this.clearDelay()},e):this.particleSystem.stop()}freeze(e=0){e?this.delayTimerId=window.setTimeout(()=>{this.freeze(0),this.clearDelay()},e):this.particleSystem.froze()}unFreeze(e=0){e?this.delayTimerId=window.setTimeout(()=>{this.unFreeze(0),this.clearDelay()},e):this.particleSystem.unFroze()}reset(e=0){e?this.delayTimerId=window.setTimeout(()=>{this.reset(0),this.clearDelay()},e):this.particleSystem.reset()}reverseFromCurrent(){switch(this.emission){case"emitToggle":this.toggleEmitting();break;case"pauseToggle":this.toggleFroze()}}dispatchBasic(){if(!1===s(this.shared,this.condition)||!this.particleSystem)return!1;switch(this.emission){case"start":this.start(this.delay);break;case"emitToggle":this.toggleEmitting();break;case"pause":this.freeze(this.delay);break;case"pauseToggle":this.toggleFroze();break;case"stop":this.stop(this.delay);break;case"reset":this.reset(this.delay)}}dispatchConditional(){if(!1===s(this.shared,this.condition)||!this.particleSystem)return!1;switch(this.emission){case"start":this.start(this.delay);break;case"stop":this.stop(this.delay);break;case"reset":this.reset(this.delay)}}dispatchGameControl(e){if(!1===s(this.shared,this.condition)||!this.particleSystem)return!1;"start"===e?this.start(this.delay):this.stop(this.delay)}dispose(){!this.particleSystem||(this.particleSystem.reset(),this.clearDelay())}clearDelay(){this.delayTimerId&&(clearTimeout(this.delayTimerId),delete this.delayTimerId)}};l("Particle",(e,t,i)=>new j(e,t,i)),n("Particles",({data:e,page:t,shared:i,actionCondition:n})=>new X(e,t,i,n)),a("particles");
@@ -1 +1 @@
1
- import{A as e,B as t,C as s,D as i,E as n,ia as a,r,s as o,t as l,u as h,v as u,w as p,z as c}from"./runtime-chunk-QZSA6WBT.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{g as d,u as m}from"./runtime-chunk-MPHBANVQ.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as g,f,h as y}from"./runtime-chunk-TZCHGFVF.js";import{ia as v,ja as w,ka as S}from"./runtime-chunk-K3UQCG3P.js";import{Cc as x,Dc as _,Fc as b,Oc as P,Zc as C,dd as D}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var M=class extends a{constructor(e,t,s){super(e,t,s),this.isPathObject=!0,this._shapeId=null,this._lastShapeParams=null,this._lastShape=null,this._context=s}get profileShape(){return this._lastShape??void 0}updateState(e,t){super.updateState(e,t),this.updateShape(),this.refreshAttachedCloners(t)}updateShape(){let e,a={...this.data.geometry.extrusion.shape};for(let e in a)"string"==typeof a[e]&&(a[e]=this._context.shared.getVariable(a[e],[this.uuid,"geometry","extrusion","shape",e]));if("Custom"===a.type){let t=a.shapeId;if(t!==this._shapeId&&this.detachShape(),t){this._shapeId=t;let s=this._context.scene.find(t);s?.data&&(s.attachedPaths.add(this),e=s.geometry.userData?.shape),e||this._context.scene.addPendingCommand(()=>this.updateShape())}}else if(null!==this._lastShape&&this._sameShapeParams(a))e=this._lastShape;else{let r;switch(a.type){case"Rectangle":r=i;break;case"Ellipse":r=t;break;case"Polygon":r=s;break;case"Star":r=n;break;default:throw new Error(`Unknown shape type: ${a.type}`)}e=r.create({parameters:a}).userData.shape,this._lastShapeParams=a,this._lastShape=e??null}let r=this.geometry;if(e&&r.inputs){if(this._lastShape=e,"Custom"===a.type&&(this._lastShapeParams=null),r.inputs.shapeData===e)return;r.inputs.shapeData=e,r.build()}}_sameShapeParams(e){let t=this._lastShapeParams;if(null===t)return!1;for(let s in e)if(!Object.is(e[s],t[s]))return!1;for(let s in t)if(!(s in e))return!1;return!0}detachShape(){null!==this._shapeId&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}supportsInPlaceGeometryUpdate(){return!1}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let s=this.geometry.getAttribute("position");void 0!==s&&s.count>0?m(s,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:s.count,e,t):super.updateEntityBoxSize(e,t)}},A=new P,I=new P,k=(new P).makeScale(1,1,-1),T=new b,E=new b,O=new b,R=new b,z=new b,B=new b,j=new b,F=new WeakMap,G=new WeakMap;function V(e){e.setIndex(null),e.setAttribute("position",new C(new Float32Array(0),3)),e.setAttribute("normal",new C(new Float32Array(0),3)),e.setAttribute("uv",new C(new Float32Array(0),2)),e.setDrawRange(0,0)}var U=class extends D{constructor(e){super(),this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&1===this.inputs.parameters.extrusion.depth}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&1===e.depth&&function(e){let t=2*Math.PI;return(e%t+t)%t===(0%t+t)%t}(e.twist)&&e.startScale===e.endScale)}build(){let{points:t,matrices:s}=this._getSampledPath();if(t.length<2)return void V(this);let{depth:i,offset:n}=this.inputs.parameters.extrusion;i=Math.max(0,Math.min(i,1)),n=Math.max(0,Math.min(n,1));let a=this.inputs.path.isClosed?t.length:t.length-1,r=Math.floor(n*a),o=this.inputs.path.isClosed?Math.ceil((i+n)*a):Math.ceil(Math.min(1,i+n)*a),l=Math.min(Math.max(2,o-r+1),a+2),h=[],u=[];for(let e=0;e<l;e++){let i=this.inputs.path.isClosed?(e+r)%t.length:Math.min(e+r,t.length-1);h.push(t[i].clone()),u.push(s[i].clone())}let p=(e,t,s)=>{h[e]=h[e].clone().lerp(h[t],s),u[e]=function(e,t,s){let i=[new b,new b,new b],n=[new b,new b,new b];return e.extractBasis(i[0],i[1],i[2]),t.extractBasis(n[0],n[1],n[2]),i.forEach((e,t)=>{let i=n[t],a=x.lerp(e.length(),i.length(),s);e.lerp(i,s).setLength(a)}),(new P).makeBasis(i[0],i[1],i[2])}(u[e],u[t],s)},d=0,m=n*a%1;(!this.inputs.path.isClosed||i<=1)&&(m||0===n)&&(d=m,p(0,1,d));let g=0,f=(n+i)*a%1;if((this.inputs.path.isClosed&&i<=1||!this.inputs.path.isClosed&&n+i<1)&&f&&(g=f,p(h.length-1,h.length-2,1-g)),0===i){let e=h.length-1;h[e].copy(h[0]),u[e].copy(u[0])}this._applyPathModifiers(u,d,g);let{bevel:y,bevelSides:v}=this.inputs.parameters.extrusion,w=5;"Custom"===this.inputs.parameters.extrusion.shape.type&&(w="low"===this.inputs.parameters.extrusion.shape.shapeQuality?5:12);let{regions:S,infos:_,vertices:D}=this._getShapePoints(w),M=y>0?this.inputs.parameters.extrusion.capType:"flat",I="round"===M?e(this.inputs.shapeData,y,v,w,this.inputs.ownerId):void 0,T="round"===M&&void 0===I?"flat":M,E=void 0!==I?I.positions.length/3:0,O=0,R=0;_.sort((e,t)=>e.start-t.start),_.forEach(e=>{e.verticesStart=O,e.verticesCount=e.continuous.reduce((e,t,s)=>e+(0!==s&&t?1:2),0),R+=e.verticesCount,O=R});let z,B=R*l,j=0;this._isOpenEnded()&&"flat"===T&&(z=this._getSurfaceTesselation(S),j=z.vertexCount);let F=B+2*j+2*E,G=B+2*j,U={positions:new Float32Array(3*F),normals:new Float32Array(3*F),uvs:new Float32Array(2*F)},N=0;_.forEach(e=>{N+=e.count});let H=N*(l-1)*6+(z?2*z.elementCount*3:0)+(void 0!==I?2*I.indices.length:0),q=new Uint32Array(H),Z=0;if(_.forEach(e=>{Z=this._extrudeRegion(e,D,u,h,U,q,Z,this._isGeometryClosed()&&!this._isOpenEnded())}),z&&(Z=this._closeEnd(z,B,q,Z,U,u[0],h[0],!1),Z=this._closeEnd(z,B+j,q,Z,U,u[u.length-1],h[h.length-1],!0)),void 0!==I){let e={positions:U.positions,normals:U.normals,uvs:U.uvs,indices:q};c(I,e,G,Z,A.copy(u[0]).setPosition(h[0]).multiply(k),(e,t,s)=>[s,1e-4]),Z+=I.indices.length,G+=E,c(I,e,G,Z,A.copy(u[u.length-1]).setPosition(h[h.length-1]),(e,t,s)=>[s,1]),Z+=I.indices.length}this.setAttribute("position",new C(U.positions,3)),this.setAttribute("normal",new C(U.normals,3)),this.setAttribute("uv",new C(U.uvs,2)),this._setIndexFromUint32(q)}_setIndexFromUint32(e){let t=!1;for(let s=e.length-1;s>=0;--s)if(e[s]>=65535){t=!0;break}this.setIndex(new C(t?e:new Uint16Array(e),1))}_getSampledPath(){let e=this.inputs.path,t=d(e),s=F.get(t);if(void 0===s||s.subdivisions!==e.subdivisions||s.subdivisionMode!==e.subdivisionMode){let i=this._extractPathPoints(t),n=i.length<2?[]:this._computeBasisMatrices(i);s={subdivisions:e.subdivisions,subdivisionMode:e.subdivisionMode,points:i,matrices:n},F.set(t,s)}return s}_extractPathPoints(e){let t=this.inputs.path.subdivisions,s="uniform"===this.inputs.path.subdivisionMode?e.getSpacedPoints(4*t):e.getPoints(t);if(s.length<2)return[];let i=[s[0]];return s.forEach(e=>{i[i.length-1].distanceToSquared(e)>.001&&i.push(e)}),this.inputs.path.isClosed&&i[i.length-1].distanceTo(i[0])<.001&&i.pop(),i}_computeBasisMatrices(e){let t=[],s=e.length,i=this.inputs.path.isClosed,n=new b,a=new b,r=new b,o=new b,l=new b(0,1,0);for(let h=0;h<s;h++){let u,p,c=e[h];u=0===h?i?e[s-1]:T.copy(c).multiplyScalar(2).sub(e[1]):e[h-1],p=h===s-1?i?e[0]:T.copy(c).multiplyScalar(2).sub(e[h-1]):e[h+1],E.subVectors(c,u).normalize(),O.subVectors(p,c).normalize();let d=R.addVectors(E,O);d.lengthSq()<1e-10&&(d.copy(O),d.dot(r)<0&&d.negate()),d.normalize(),r.copy(d),0===h&&(d.equals(l)||z.copy(d).negate().equals(l))&&l.set(0,0,1);let m=B.crossVectors(l,d).normalize(),g=j.crossVectors(d,m).normalize();l.copy(g),o.copy(m),0===h&&(n.copy(g),a.copy(d));let f=(new P).makeBasis(m,g,d);t.push(f)}let h=i?a:r,u=i?n:new b(0,1,0),p=h.clone().cross(o).normalize(),c=Math.acos(u.dot(p));if(isNaN(c))return t;let d=u.clone().cross(p);h.dot(d)>0&&(c*=-1);for(let e=1;e<t.length;e++)t[e].multiply(I.makeRotationZ(c*e/t.length));return t}_applyPathModifiers(e,t,s){let i=e.length,{angle:n,twist:a,startScale:r,endScale:o}=this.inputs.parameters.extrusion,l=new P,h=new P;return e.forEach((e,u)=>{let p=0===u?0:u===i-1?1:(u-t)/(i-(0===s?0:1)-(t+(1-s)));l.makeRotationZ(x.lerp(n,n+a,p)*x.DEG2RAD);let c=x.lerp(r,o,p);h.makeScale(c,c,c),e.multiply(l).multiply(h)}),e}_getShapePoints(e,t=r.ODD){let s=this.inputs.shapeData,i=G.get(s);return(void 0===i||i.curveSegments!==e||i.windingRule!==t)&&(i={curveSegments:e,windingRule:t,shapePoints:this._computeShapePoints(e,t)},G.set(s,i)),i.shapePoints}_getSurfaceTesselation(e){let t,s=G.get(this.inputs.shapeData);if(void 0!==s?.surfaceTesselation)return s.surfaceTesselation;try{t=l({windingRule:r.ODD,elementType:o.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:e})}catch{t=p}return void 0!==s&&(s.surfaceTesselation=t),t}_computeShapePoints(e=12,t=r.ODD){let s,i,n=this.inputs.shapeData,a=n.extractShapePointsToFlatArray([],e),p=n.shapeHoles.map(t=>{let s=t.extractShapePointsToFlatArray([],e),i=[];for(let e=s.length-1;e>=1;e-=2){let t=s[e-1],n=s[e-0];i.push(t,n)}return i});try{s=l({windingRule:t,elementType:o.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]})}catch{s=h}try{i=l({windingRule:r.ODD,elementType:o.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...p]})}catch{i=u}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(i){s.elementCount+=i.elementCount;for(let e=0;e<i.elements.length;e++){let t=i.elements[e],n=e%2==0?s.vertexCount:0;s.elements.push(t+n)}for(let e=0;e<i.vertexIndices.length;e++){let t=i.vertexIndices[e],n=s.vertexCount;s.vertexIndices.push(t+n)}for(let e=0;e<i.vertices.length;e++){let t=i.vertices[e];s.vertices.push(t)}}let d=1/0,m=-1/0,g=1/0,f=-1/0;for(let e=0,t=s.vertexCount;e<t;e++){let t=2*e,i=s.vertices[t+0],n=s.vertices[t+1];i<d&&(d=i),i>m&&(m=i),n<g&&(g=n),n>f&&(f=n)}let y=[];for(let e=s.elementCount-1;e>=0;e--){let t=e>=c,i=2*e,a=s.elements[i+0],r=s.elements[i+1],o=a+r,l={start:a,count:r,normals:[],isHole:t,continuous:[],verticesStart:0,verticesCount:0};y.push(l);let h=a,u=o-1,p=a+1,d=n.roundedCurves.length;do{let e=h-a,i=s.vertices[2*u+0],c=s.vertices[2*u+1],m=s.vertices[2*h+0],g=s.vertices[2*h+1],f=s.vertices[2*p+0],y=s.vertices[2*p+1],v=m-i,w=g-c,S=Math.sqrt(v*v+w*w);v/=S,w/=S;let x=m-f,_=g-y,b=Math.sqrt(x*x+_*_);x/=b,_/=b,l.normals[2*e+0]=-_,l.normals[2*e+1]=x;let P=s.vertexIndices[h];if(Array.isArray(P))l.continuous[e]=!1;else{let[t,s]=n.getCurveIndexFromVertexId(P-1,!0);if(s>0&&s<1)l.continuous[e]=!0;else{let i=1===s?t+1:t-1;i=(i+d)%d;let a=1===s?0:1,r=n.roundedCurves[t].getTangent(s),o=n.roundedCurves[i].getTangent(a);l.continuous[e]=r.dot(o)>.95}}t&&(l.normals[2*e+0]*=-1,l.normals[2*e+1]*=-1),[u,h,p]=[h,p,p+1],p>=o&&(p-=r)}while(p!==a+1)}return{regions:[a,...p],infos:y,vertices:s.vertices}}_insertVertex(e,t,s,i,n){let a=2*t,r=3*t;e.positions[r+0]=s.x,e.positions[r+1]=s.y,e.positions[r+2]=s.z,e.normals[r+0]=i.x,e.normals[r+1]=i.y,e.normals[r+2]=i.z,e.uvs[a+0]=n.x,e.uvs[a+1]=n.y}_extrudeRegion(e,t,s,i,n,a,r,o){let l=e.wallTemplate;if(void 0===l){l=[];for(let s=0;s<e.count;s++){let i,n,a=2*(e.start+s),r=t[a+0],o=t[a+1];if(e.continuous[s])i=e.normals[2*s+0],n=e.normals[2*s+1];else{let l=0===s?2*(e.start+e.count-1):a-2,h=r-t[l+0];i=-(o-t[l+1]),n=h,e.isHole||(i=-i,n=-n)}let h=0===s?1:s/e.count;if(l.push(r,o,i,n,h,0),!e.continuous[s]||0===s)if(0===s)l.push(r,o,e.normals[0],e.normals[1],0,1);else{let u=s===e.count-1?2*e.start:a+2,p=t[u+0]-r;i=-(t[u+1]-o),n=p,e.isHole||(i=-i,n=-n),l.push(r,o,i,n,h,1)}}e.wallTemplate=l}let h=s.length,u=l.length,p=n.positions,c=n.normals,d=n.uvs;for(let t=0;t<h;t++){let n=s[t].elements,a=n[0],r=n[1],o=n[2],m=n[4],g=n[5],f=n[6],y=n[12],v=n[13],w=n[14],S=i[t],x=t/(h-1),_=0,b=0,P=0,C=e.verticesStart*h+e.verticesCount*t;for(let e=0;e<u;e+=6){if(0===l[e+5]){let t=l[e+0],s=l[e+1];_=a*t+m*s+y+S.x,b=r*t+g*s+v+S.y,P=o*t+f*s+w+S.z}let t=l[e+2],s=l[e+3],i=a*t+m*s+y,n=r*t+g*s+v,h=o*t+f*s+w,u=1/(Math.sqrt(i*i+n*n+h*h)||1);i*=u,n*=u,h*=u;let D=2*C,M=3*C;p[M+0]=_,p[M+1]=b,p[M+2]=P,c[M+0]=i,c[M+1]=n,c[M+2]=h,d[D+0]=l[e+4],d[D+1]=x,C++}}let m=e.wallQuadPattern;if(void 0===m){m=[];let t=0;for(let s=0;s<e.count;s++)(!e.continuous[s]||0===s)&&t++,m.push(t,s===e.count-1?0:t+1),t++;e.wallQuadPattern=m}let g=h-1,f=m.length,y=e.isHole;for(let t=0;t<g;t++){let s=e.verticesStart*h+e.verticesCount*t,i=s+e.verticesCount;for(let e=0;e<f;e+=2){let t=s+m[e],n=s+m[e+1],o=i+m[e+1],l=i+m[e];y?(a[r++]=t,a[r++]=o,a[r++]=n,a[r++]=t,a[r++]=l,a[r++]=o):(a[r++]=t,a[r++]=n,a[r++]=o,a[r++]=t,a[r++]=o,a[r++]=l)}}return r}_closeEnd(e,t,s,i,n,a,r,o){let l=e.vertexCount,h=new b(0,0,o?-1:1).applyMatrix4(a),u=new b,p=new _;for(let s=0;s<l;s++){let i=2*s;u.set(e.vertices[i+0],e.vertices[i+1],0).applyMatrix4(a).add(r),this._insertVertex(n,t+s,u,h,p)}let c=e.elements;for(let n=0;n<e.elementCount;n++){let e=3*n;s[i++]=c[e+0]+t,s[i++]=c[e+(o?1:2)]+t,s[i++]=c[e+(o?2:1)]+t}return i}};f("PathGeometry",(e,t,s)=>new M(e,t,s)),y("PathGeometry",class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,s){let i=Object.assign({},s?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},e.parameters),n=Math.abs(i.width),a=Math.abs(i.height??i.width),r=Math.abs(i.depth??0),o=e.shapeData??s?.shapeData??t.create({parameters:{...w,width:"number"==typeof w.width?w.width:100,height:"number"==typeof w.height?w.height:100}}).userData.shape;return{ownerId:e.ownerId??s?.ownerId,path:e.path??v.defaultData(),parameters:Object.assign(i,{width:n,height:a,depth:r,extrusion:{...S,...i.extrusion}}),shapeData:o}}static build(e){if(e.path.points.length>=2){let t=new U(e);return Object.assign(t,{userData:{...e,type:"PathGeometry"}})}{let t=new D;return V(t),Object.assign(t,{userData:{...e,type:"PathGeometry"}})}}}),g("3d-paths");
1
+ import{A as e,B as t,C as s,D as i,E as n,ia as a,r,s as o,t as l,u as h,v as u,w as p,z as c}from"./runtime-chunk-OYIE77GW.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{g as d,u as m}from"./runtime-chunk-F4XMOADV.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as g,f,h as y}from"./runtime-chunk-TZCHGFVF.js";import{ia as v,ja as w,ka as S}from"./runtime-chunk-K3UQCG3P.js";import{Cc as x,Dc as _,Fc as b,Oc as C,Zc as P,dd as D}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var M=class extends a{constructor(e,t,s){super(e,t,s),this.isPathObject=!0,this._shapeId=null,this._lastShapeParams=null,this._lastShape=null,this._context=s}get profileShape(){return this._lastShape??void 0}updateState(e,t){super.updateState(e,t),this.updateShape(),this.refreshAttachedCloners(t)}updateShape(){let e,a={...this.data.geometry.extrusion.shape};for(let e in a)"string"==typeof a[e]&&(a[e]=this._context.shared.getVariable(a[e],[this.uuid,"geometry","extrusion","shape",e]));if("Custom"===a.type){let t=a.shapeId;if(t!==this._shapeId&&this.detachShape(),t){this._shapeId=t;let s=this._context.scene.find(t);s?.data&&(s.attachedPaths.add(this),e=s.geometry.userData?.shape),e||this._context.scene.addPendingCommand(()=>this.updateShape())}}else if(null!==this._lastShape&&this._sameShapeParams(a))e=this._lastShape;else{let r;switch(a.type){case"Rectangle":r=i;break;case"Ellipse":r=t;break;case"Polygon":r=s;break;case"Star":r=n;break;default:throw new Error(`Unknown shape type: ${a.type}`)}e=r.create({parameters:a}).userData.shape,this._lastShapeParams=a,this._lastShape=e??null}let r=this.geometry;if(e&&r.inputs){if(this._lastShape=e,"Custom"===a.type&&(this._lastShapeParams=null),r.inputs.shapeData===e)return;r.inputs.shapeData=e,r.build()}}_sameShapeParams(e){let t=this._lastShapeParams;if(null===t)return!1;for(let s in e)if(!Object.is(e[s],t[s]))return!1;for(let s in t)if(!(s in e))return!1;return!0}detachShape(){null!==this._shapeId&&this._context.scene.find(this._shapeId)?.attachedPaths.delete(this)}supportsInPlaceGeometryUpdate(){return!1}createGeometryDelayed(e){this.geometryCreateDeleyed=e.shared,this.updateShape(),this.refreshAttachedPaths(e)}updateTransformState(e,t){return super.updateTransformState(e,t)}updateGeometryInteractions(e,t){super.updateGeometryInteractions(e,t),this.updateShape()}updateEntityBoxSize(e,t){let s=this.geometry.getAttribute("position");void 0!==s&&s.count>0?m(s,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:s.count,e,t):super.updateEntityBoxSize(e,t)}},I=new C,A=new C,k=(new C).makeScale(1,1,-1),O=new b,T=new b,E=new b,R=new b,z=new b,j=new b,B=new b,F=new WeakMap,G=new WeakMap;function V(e){e.setIndex(null),e.setAttribute("position",new P(new Float32Array(0),3)),e.setAttribute("normal",new P(new Float32Array(0),3)),e.setAttribute("uv",new P(new Float32Array(0),2)),e.setDrawRange(0,0)}var U=class extends D{constructor(e){super(),this.type="PathExtrusionGeometry",this.inputs=e,this.build()}_isGeometryClosed(){return this.inputs.path.isClosed&&1===this.inputs.parameters.extrusion.depth}_isOpenEnded(){let e=this.inputs.parameters.extrusion;return!(this.inputs.path.isClosed&&1===e.depth&&function(e){let t=2*Math.PI;return(e%t+t)%t===(0%t+t)%t}(e.twist)&&e.startScale===e.endScale)}build(){let{points:t,matrices:s}=this._getSampledPath();if(t.length<2)return void V(this);let{depth:i,offset:n}=this.inputs.parameters.extrusion;i=Math.max(0,Math.min(i,1)),n=Math.max(0,Math.min(n,1));let a=this.inputs.path.isClosed?t.length:t.length-1,r=Math.floor(n*a),o=this.inputs.path.isClosed?Math.ceil((i+n)*a):Math.ceil(Math.min(1,i+n)*a),l=Math.min(Math.max(2,o-r+1),a+2),h=[],u=[];for(let e=0;e<l;e++){let i=this.inputs.path.isClosed?(e+r)%t.length:Math.min(e+r,t.length-1);h.push(t[i].clone()),u.push(s[i].clone())}let p=(e,t,s)=>{h[e]=h[e].clone().lerp(h[t],s),u[e]=function(e,t,s){let i=[new b,new b,new b],n=[new b,new b,new b];return e.extractBasis(i[0],i[1],i[2]),t.extractBasis(n[0],n[1],n[2]),i.forEach((e,t)=>{let i=n[t],a=x.lerp(e.length(),i.length(),s);e.lerp(i,s).setLength(a)}),(new C).makeBasis(i[0],i[1],i[2])}(u[e],u[t],s)},d=0,m=n*a%1;(!this.inputs.path.isClosed||i<=1)&&(m||0===n)&&(d=m,p(0,1,d));let g=0,f=(n+i)*a%1;if((this.inputs.path.isClosed&&i<=1||!this.inputs.path.isClosed&&n+i<1)&&f&&(g=f,p(h.length-1,h.length-2,1-g)),0===i){let e=h.length-1;h[e].copy(h[0]),u[e].copy(u[0])}this._applyPathModifiers(u,d,g);let{bevel:y,bevelSides:v}=this.inputs.parameters.extrusion,w=5;"Custom"===this.inputs.parameters.extrusion.shape.type&&(w="low"===this.inputs.parameters.extrusion.shape.shapeQuality?5:12);let{regions:S,infos:_,vertices:D}=this._getShapePoints(w),M=y>0?this.inputs.parameters.extrusion.capType:"flat",A="round"===M?e(this.inputs.shapeData,y,v,w,this.inputs.ownerId):void 0,O="round"===M&&void 0===A?"flat":M,T=void 0!==A?A.positions.length/3:0,E=0,R=0;_.sort((e,t)=>e.start-t.start),_.forEach(e=>{e.verticesStart=E,e.verticesCount=e.continuous.reduce((e,t,s)=>e+(0!==s&&t?1:2),0),R+=e.verticesCount,E=R});let z,j=R*l,B=0;this._isOpenEnded()&&"flat"===O&&(z=this._getSurfaceTesselation(S),B=z.vertexCount);let F=j+2*B+2*T,G=j+2*B,U={positions:new Float32Array(3*F),normals:new Float32Array(3*F),uvs:new Float32Array(2*F)},N=0;_.forEach(e=>{N+=e.count});let q=N*(l-1)*6+(z?2*z.elementCount*3:0)+(void 0!==A?2*A.indices.length:0),H=new Uint32Array(q),L=0;if(_.forEach(e=>{L=this._extrudeRegion(e,D,u,h,U,H,L,this._isGeometryClosed()&&!this._isOpenEnded())}),z&&(L=this._closeEnd(z,j,H,L,U,u[0],h[0],!1),L=this._closeEnd(z,j+B,H,L,U,u[u.length-1],h[h.length-1],!0)),void 0!==A){let e={positions:U.positions,normals:U.normals,uvs:U.uvs,indices:H};c(A,e,G,L,I.copy(u[0]).setPosition(h[0]).multiply(k),(e,t,s)=>[s,1e-4]),L+=A.indices.length,G+=T,c(A,e,G,L,I.copy(u[u.length-1]).setPosition(h[h.length-1]),(e,t,s)=>[s,1]),L+=A.indices.length}this.setAttribute("position",new P(U.positions,3)),this.setAttribute("normal",new P(U.normals,3)),this.setAttribute("uv",new P(U.uvs,2)),this._setIndexFromUint32(H)}_setIndexFromUint32(e){let t=!1;for(let s=e.length-1;s>=0;--s)if(e[s]>=65535){t=!0;break}this.setIndex(new P(t?e:new Uint16Array(e),1))}_getSampledPath(){let e=this.inputs.path,t=d(e),s=F.get(t);if(void 0===s||s.subdivisions!==e.subdivisions||s.subdivisionMode!==e.subdivisionMode){let i=this._extractPathPoints(t),n=i.length<2?[]:this._computeBasisMatrices(i);s={subdivisions:e.subdivisions,subdivisionMode:e.subdivisionMode,points:i,matrices:n},F.set(t,s)}return s}_extractPathPoints(e){let t=this.inputs.path.subdivisions,s="uniform"===this.inputs.path.subdivisionMode?e.getSpacedPoints(4*t):e.getPoints(t);if(s.length<2)return[];let i=[s[0]];return s.forEach(e=>{i[i.length-1].distanceToSquared(e)>.001&&i.push(e)}),this.inputs.path.isClosed&&i[i.length-1].distanceTo(i[0])<.001&&i.pop(),i}_computeBasisMatrices(e){let t=[],s=e.length,i=this.inputs.path.isClosed,n=new b,a=new b,r=new b,o=new b,l=new b(0,1,0);for(let h=0;h<s;h++){let u,p,c=e[h];u=0===h?i?e[s-1]:O.copy(c).multiplyScalar(2).sub(e[1]):e[h-1],p=h===s-1?i?e[0]:O.copy(c).multiplyScalar(2).sub(e[h-1]):e[h+1],T.subVectors(c,u).normalize(),E.subVectors(p,c).normalize();let d=R.addVectors(T,E);d.lengthSq()<1e-10&&(d.copy(E),d.dot(r)<0&&d.negate()),d.normalize(),r.copy(d),0===h&&(d.equals(l)||z.copy(d).negate().equals(l))&&l.set(0,0,1);let m=j.crossVectors(l,d).normalize(),g=B.crossVectors(d,m).normalize();l.copy(g),o.copy(m),0===h&&(n.copy(g),a.copy(d));let f=(new C).makeBasis(m,g,d);t.push(f)}let h=i?a:r,u=i?n:new b(0,1,0),p=h.clone().cross(o).normalize(),c=Math.acos(u.dot(p));if(isNaN(c))return t;let d=u.clone().cross(p);h.dot(d)>0&&(c*=-1);for(let e=1;e<t.length;e++)t[e].multiply(A.makeRotationZ(c*e/t.length));return t}_applyPathModifiers(e,t,s){let i=e.length,{angle:n,twist:a,startScale:r,endScale:o}=this.inputs.parameters.extrusion,l=new C,h=new C;return e.forEach((e,u)=>{let p=0===u?0:u===i-1?1:(u-t)/(i-(0===s?0:1)-(t+(1-s)));l.makeRotationZ(x.lerp(n,n+a,p)*x.DEG2RAD);let c=x.lerp(r,o,p);h.makeScale(c,c,c),e.multiply(l).multiply(h)}),e}_getShapePoints(e,t=r.ODD){let s=this.inputs.shapeData,i=G.get(s);return(void 0===i||i.curveSegments!==e||i.windingRule!==t)&&(i={curveSegments:e,windingRule:t,shapePoints:this._computeShapePoints(e,t)},G.set(s,i)),i.shapePoints}_getSurfaceTesselation(e){let t,s=G.get(this.inputs.shapeData);if(void 0!==s?.surfaceTesselation)return s.surfaceTesselation;try{t=l({windingRule:r.ODD,elementType:o.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:e})}catch{t=p}return void 0!==s&&(s.surfaceTesselation=t),t}_computeShapePoints(e=12,t=r.ODD){let s,i,n=this.inputs.shapeData,a=n.extractShapePointsToFlatArray([],e),p=n.shapeHoles.map(t=>{let s=t.extractShapePointsToFlatArray([],e),i=[];for(let e=s.length-1;e>=1;e-=2){let t=s[e-1],n=s[e-0];i.push(t,n)}return i});try{s=l({windingRule:t,elementType:o.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[a]})}catch{s=h}try{i=l({windingRule:r.ODD,elementType:o.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...p]})}catch{i=u}if(!s)throw new Error("error generating geometry");let c=s.elementCount;if(i){s.elementCount+=i.elementCount;for(let e=0;e<i.elements.length;e++){let t=i.elements[e],n=e%2==0?s.vertexCount:0;s.elements.push(t+n)}for(let e=0;e<i.vertexIndices.length;e++){let t=i.vertexIndices[e],n=s.vertexCount;s.vertexIndices.push(t+n)}for(let e=0;e<i.vertices.length;e++){let t=i.vertices[e];s.vertices.push(t)}}let d=1/0,m=-1/0,g=1/0,f=-1/0;for(let e=0,t=s.vertexCount;e<t;e++){let t=2*e,i=s.vertices[t+0],n=s.vertices[t+1];i<d&&(d=i),i>m&&(m=i),n<g&&(g=n),n>f&&(f=n)}let y=[];for(let e=s.elementCount-1;e>=0;e--){let t=e>=c,i=2*e,a=s.elements[i+0],r=s.elements[i+1],o=a+r,l={start:a,count:r,normals:[],isHole:t,continuous:[],verticesStart:0,verticesCount:0};y.push(l);let h=a,u=o-1,p=a+1,d=n.roundedCurves.length;do{let e=h-a,i=s.vertices[2*u+0],c=s.vertices[2*u+1],m=s.vertices[2*h+0],g=s.vertices[2*h+1],f=s.vertices[2*p+0],y=s.vertices[2*p+1],v=m-i,w=g-c,S=Math.sqrt(v*v+w*w);v/=S,w/=S;let x=m-f,_=g-y,b=Math.sqrt(x*x+_*_);x/=b,_/=b,l.normals[2*e+0]=-_,l.normals[2*e+1]=x;let C=s.vertexIndices[h];if(Array.isArray(C))l.continuous[e]=!1;else{let[t,s]=n.getCurveIndexFromVertexId(C-1,!0);if(s>0&&s<1)l.continuous[e]=!0;else{let i=1===s?t+1:t-1;i=(i+d)%d;let a=1===s?0:1,r=n.roundedCurves[t].getTangent(s),o=n.roundedCurves[i].getTangent(a);l.continuous[e]=r.dot(o)>.95}}t&&(l.normals[2*e+0]*=-1,l.normals[2*e+1]*=-1),[u,h,p]=[h,p,p+1],p>=o&&(p-=r)}while(p!==a+1)}return{regions:[a,...p],infos:y,vertices:s.vertices}}_insertVertex(e,t,s,i,n){let a=2*t,r=3*t;e.positions[r+0]=s.x,e.positions[r+1]=s.y,e.positions[r+2]=s.z,e.normals[r+0]=i.x,e.normals[r+1]=i.y,e.normals[r+2]=i.z,e.uvs[a+0]=n.x,e.uvs[a+1]=n.y}_extrudeRegion(e,t,s,i,n,a,r,o){let l=e.wallTemplate;if(void 0===l){l=[];for(let s=0;s<e.count;s++){let i,n,a=2*(e.start+s),r=t[a+0],o=t[a+1];if(e.continuous[s])i=e.normals[2*s+0],n=e.normals[2*s+1];else{let l=0===s?2*(e.start+e.count-1):a-2,h=r-t[l+0];i=-(o-t[l+1]),n=h,e.isHole||(i=-i,n=-n)}let h=0===s?1:s/e.count;if(l.push(r,o,i,n,h,0),!e.continuous[s]||0===s)if(0===s)l.push(r,o,e.normals[0],e.normals[1],0,1);else{let u=s===e.count-1?2*e.start:a+2,p=t[u+0]-r;i=-(t[u+1]-o),n=p,e.isHole||(i=-i,n=-n),l.push(r,o,i,n,h,1)}}e.wallTemplate=l}let h=s.length,u=l.length,p=n.positions,c=n.normals,d=n.uvs;for(let t=0;t<h;t++){let n=s[t].elements,a=n[0],r=n[1],o=n[2],m=n[4],g=n[5],f=n[6],y=n[12],v=n[13],w=n[14],S=i[t],x=t/(h-1),_=0,b=0,C=0,P=e.verticesStart*h+e.verticesCount*t;for(let e=0;e<u;e+=6){if(0===l[e+5]){let t=l[e+0],s=l[e+1];_=a*t+m*s+y+S.x,b=r*t+g*s+v+S.y,C=o*t+f*s+w+S.z}let t=l[e+2],s=l[e+3],i=a*t+m*s+y,n=r*t+g*s+v,h=o*t+f*s+w,u=1/(Math.sqrt(i*i+n*n+h*h)||1);i*=u,n*=u,h*=u;let D=2*P,M=3*P;p[M+0]=_,p[M+1]=b,p[M+2]=C,c[M+0]=i,c[M+1]=n,c[M+2]=h,d[D+0]=l[e+4],d[D+1]=x,P++}}let m=e.wallQuadPattern;if(void 0===m){m=[];let t=0;for(let s=0;s<e.count;s++)(!e.continuous[s]||0===s)&&t++,m.push(t,s===e.count-1?0:t+1),t++;e.wallQuadPattern=m}let g=h-1,f=m.length,y=e.isHole;for(let t=0;t<g;t++){let s=e.verticesStart*h+e.verticesCount*t,i=s+e.verticesCount;for(let e=0;e<f;e+=2){let t=s+m[e],n=s+m[e+1],o=i+m[e+1],l=i+m[e];y?(a[r++]=t,a[r++]=o,a[r++]=n,a[r++]=t,a[r++]=l,a[r++]=o):(a[r++]=t,a[r++]=n,a[r++]=o,a[r++]=t,a[r++]=o,a[r++]=l)}}return r}_closeEnd(e,t,s,i,n,a,r,o){let l=e.vertexCount,h=new b(0,0,o?-1:1).applyMatrix4(a),u=new b,p=new _;for(let s=0;s<l;s++){let i=2*s;u.set(e.vertices[i+0],e.vertices[i+1],0).applyMatrix4(a).add(r),this._insertVertex(n,t+s,u,h,p)}let c=e.elements;for(let n=0;n<e.elementCount;n++){let e=3*n;s[i++]=c[e+0]+t,s[i++]=c[e+(o?1:2)]+t,s[i++]=c[e+(o?2:1)]+t}return i}};f("PathGeometry",(e,t,s)=>new M(e,t,s)),y("PathGeometry",class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,s){let i=Object.assign({},s?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},e.parameters),n=Math.abs(i.width),a=Math.abs(i.height??i.width),r=Math.abs(i.depth??0),o=e.shapeData??s?.shapeData??t.create({parameters:{...w,width:"number"==typeof w.width?w.width:100,height:"number"==typeof w.height?w.height:100}}).userData.shape;return{ownerId:e.ownerId??s?.ownerId,path:e.path??v.defaultData(),parameters:Object.assign(i,{width:n,height:a,depth:r,extrusion:{...S,...i.extrusion}}),shapeData:o}}static build(e){if(e.path.points.length>=2){let t=new U(e);return Object.assign(t,{userData:{...e,type:"PathGeometry"}})}{let t=new D;return V(t),Object.assign(t,{userData:{...e,type:"PathGeometry"}})}}}),g("3d-paths");
@@ -1 +1 @@
1
- import{h as t}from"./runtime-chunk-QEQMFHXP.js";import"./runtime-chunk-IIHOKKLP.js";import"./runtime-chunk-24H3WFTK.js";import"./runtime-chunk-TU4KDRKR.js";import{a as i,b as s}from"./runtime-chunk-DZNU62CT.js";import"./runtime-chunk-4BMKE6ES.js";import"./runtime-chunk-DCHCPETD.js";import"./runtime-chunk-N4O4HFFU.js";import"./runtime-chunk-QZSA6WBT.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as e,g as a}from"./runtime-chunk-M6FFVLT6.js";import"./runtime-chunk-MPHBANVQ.js";import"./runtime-chunk-RTLL6WIB.js";import{f as n}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as r}from"./runtime-chunk-TZCHGFVF.js";import{u as o}from"./runtime-chunk-K3UQCG3P.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var c=class{constructor(t,i,s,a,n,r,o,c){this.eventId=t,this.id=i,this.data=s,this.dataEvent=a,this.object=n,this.stage=!1,this.actions=e(a,s.actions,r,o,c,n,"Toggle")}disconnect(){a(this.actions)}dispatchIn(){this.actions.Audio.forEach(t=>t.dispatchBasic()),this.actions.Particles.forEach(t=>t.dispatchBasic()),this.actions.Video.forEach(t=>t.dispatchBasic()),this.actions.Create.forEach(t=>t.dispatch()),this.actions.Destroy.forEach(t=>t.dispatch()),this.actions.Reset.forEach(t=>t.dispatch()),this.actions.Link.forEach(t=>t.dispatch()),this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),this.actions.Transition.forEach(t=>t.play()),this.actions.Animation.forEach(t=>t.play()),this.actions.SwitchCamera.forEach(t=>t.play()),this.actions.SceneTransition.forEach(t=>t.dispatch()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}dispatchOut(){this.actions.Transition.forEach(t=>t.play())}},h=class extends i{constructor(t,i){super(t),this.eventManager=i,this.breakpoints=[],this.resize=(t,i)=>{this.breakpoints.forEach(s=>{let e,a=o.deviceToSize(s.data.size),n="horizontal"===s.dataEvent.orientation?t:i;switch(s.data.operator){case"<":e=n<a[0];break;case">":e=n>a[0];break;case"<>":e=n>a[0]&&n<a[1]}s.stage!==e&&(s.stage=e,s.stage?s.dispatchIn():s.dispatchOut())})},this.onResizeObserver=new ResizeObserver(t=>{for(let i of t){let{width:t,height:s}=i.contentRect;this.resize(t,s)}})}connect(){let{page:i,sharedAssets:s,domElement:e}=this.eventContext;this.onResizeObserver.observe(e);let a=t=>{if(t.visible&&t.data?.events.length)for(let{data:e,id:a}of t.data.events)e.disabled||"Resize"===e.type&&e.breakpoints.forEach(({data:n,id:r})=>{try{let o=new c(a,r,n,e,t,i,s,this.eventManager);this.breakpoints.push(o)}catch(t){}})};i.traverseEntity(i=>{(n(i)||i instanceof t)&&i.frame?.traverse(t=>{a(t)}),a(i)})}disconnect(){this.onResizeObserver.disconnect(),this.breakpoints.forEach(t=>{t.disconnect()}),this.breakpoints=[]}};s("Resize",({eventContext:t,eventManager:i})=>new h(t,i)),r("resize");
1
+ import{h as t}from"./runtime-chunk-NHROOVYJ.js";import"./runtime-chunk-SKYMJ662.js";import"./runtime-chunk-IVETVBB5.js";import"./runtime-chunk-TU4KDRKR.js";import{a as i,b as s}from"./runtime-chunk-DZNU62CT.js";import"./runtime-chunk-ISDQFD3B.js";import"./runtime-chunk-INLZ4T6V.js";import"./runtime-chunk-U4SSOL4Z.js";import"./runtime-chunk-OYIE77GW.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as e,g as a}from"./runtime-chunk-M6FFVLT6.js";import"./runtime-chunk-F4XMOADV.js";import"./runtime-chunk-RTLL6WIB.js";import{f as n}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as r}from"./runtime-chunk-TZCHGFVF.js";import{u as o}from"./runtime-chunk-K3UQCG3P.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var c=class{constructor(t,i,s,a,n,r,o,c){this.eventId=t,this.id=i,this.data=s,this.dataEvent=a,this.object=n,this.stage=!1,this.actions=e(a,s.actions,r,o,c,n,"Toggle")}disconnect(){a(this.actions)}dispatchIn(){this.actions.Audio.forEach(t=>t.dispatchBasic()),this.actions.Particles.forEach(t=>t.dispatchBasic()),this.actions.Video.forEach(t=>t.dispatchBasic()),this.actions.Create.forEach(t=>t.dispatch()),this.actions.Destroy.forEach(t=>t.dispatch()),this.actions.Reset.forEach(t=>t.dispatch()),this.actions.Link.forEach(t=>t.dispatch()),this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),this.actions.Transition.forEach(t=>t.play()),this.actions.Animation.forEach(t=>t.play()),this.actions.SwitchCamera.forEach(t=>t.play()),this.actions.SceneTransition.forEach(t=>t.dispatch()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}dispatchOut(){this.actions.Transition.forEach(t=>t.play())}},h=class extends i{constructor(t,i){super(t),this.eventManager=i,this.breakpoints=[],this.resize=(t,i)=>{this.breakpoints.forEach(s=>{let e,a=o.deviceToSize(s.data.size),n="horizontal"===s.dataEvent.orientation?t:i;switch(s.data.operator){case"<":e=n<a[0];break;case">":e=n>a[0];break;case"<>":e=n>a[0]&&n<a[1]}s.stage!==e&&(s.stage=e,s.stage?s.dispatchIn():s.dispatchOut())})},this.onResizeObserver=new ResizeObserver(t=>{for(let i of t){let{width:t,height:s}=i.contentRect;this.resize(t,s)}})}connect(){let{page:i,sharedAssets:s,domElement:e}=this.eventContext;this.onResizeObserver.observe(e);let a=t=>{if(t.visible&&t.data?.events.length)for(let{data:e,id:a}of t.data.events)e.disabled||"Resize"===e.type&&e.breakpoints.forEach(({data:n,id:r})=>{try{let o=new c(a,r,n,e,t,i,s,this.eventManager);this.breakpoints.push(o)}catch(t){}})};i.traverseEntity(i=>{(n(i)||i instanceof t)&&i.frame?.traverse(t=>{a(t)}),a(i)})}disconnect(){this.onResizeObserver.disconnect(),this.breakpoints.forEach(t=>{t.disconnect()}),this.breakpoints=[]}};s("Resize",({eventContext:t,eventManager:i})=>new h(t,i)),r("resize");
@@ -1 +1 @@
1
- import{a as t}from"./runtime-chunk-WIHWNZGM.js";import"./runtime-chunk-QEQMFHXP.js";import"./runtime-chunk-IIHOKKLP.js";import"./runtime-chunk-24H3WFTK.js";import"./runtime-chunk-TU4KDRKR.js";import"./runtime-chunk-4BMKE6ES.js";import"./runtime-chunk-DCHCPETD.js";import"./runtime-chunk-N4O4HFFU.js";import"./runtime-chunk-QZSA6WBT.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{b as e,e as i}from"./runtime-chunk-M6FFVLT6.js";import"./runtime-chunk-MPHBANVQ.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var n=class{constructor(t,e,i,a,n){this.data=t,this.page=e,this.eventManager=i,this.shared=a,this.condition=n,this.timeOutId=-1,this.scene=e.scene}dispatch(){if(!1===i(this.shared,this.condition))return!1;this.data.target!==this.page.uuid&&(window.clearTimeout(this.timeOutId),this.timeOutId=window.setTimeout(()=>{this.play()},1e3*this.data.delay))}dispose(){window.clearTimeout(this.timeOutId)}play(){if(this.scene.children.every(t=>t.uuid!==this.data.target||t.data.uiScene))return;"fade"===this.data.transition&&this.data.duration>0&&this.eventManager.eventContext.renderer.renderFromSceneForSceneTransitionPass(this.scene,this.scene.activeCamera,1e3*this.data.duration),this.eventManager.deactivate(),this.eventManager.controlsManager.deactivate();let e=this.scene.activeCamera;this.scene.updatePage(this.data.target),this.scene.traverseVisibleEntity(t=>{"ParticleSystem"===t.type&&(t.sleep(),t.wakeUp(),t.data.autoPlay?t.start():t.stop())}),this.scene.activePage.switchToPlayCamera(),this.scene.activeCamera.copyViewPlaneSize(e),t(this.scene.activePage,this.shared),this.eventManager.activate(),this.eventManager.controlsManager.activate(this.eventManager)}};e("SceneTransition",({data:t,page:e,eventManager:i,shared:a,actionCondition:s})=>new n(t,e,i,a,s)),a("scene-transition");
1
+ import{a as t}from"./runtime-chunk-JFIELPCR.js";import"./runtime-chunk-NHROOVYJ.js";import"./runtime-chunk-SKYMJ662.js";import"./runtime-chunk-IVETVBB5.js";import"./runtime-chunk-TU4KDRKR.js";import"./runtime-chunk-ISDQFD3B.js";import"./runtime-chunk-INLZ4T6V.js";import"./runtime-chunk-U4SSOL4Z.js";import"./runtime-chunk-OYIE77GW.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{b as e,e as i}from"./runtime-chunk-M6FFVLT6.js";import"./runtime-chunk-F4XMOADV.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var n=class{constructor(t,e,i,a,n){this.data=t,this.page=e,this.eventManager=i,this.shared=a,this.condition=n,this.timeOutId=-1,this.scene=e.scene}dispatch(){if(!1===i(this.shared,this.condition))return!1;this.data.target!==this.page.uuid&&(window.clearTimeout(this.timeOutId),this.timeOutId=window.setTimeout(()=>{this.play()},1e3*this.data.delay))}dispose(){window.clearTimeout(this.timeOutId)}play(){if(this.scene.children.every(t=>t.uuid!==this.data.target||t.data.uiScene))return;"fade"===this.data.transition&&this.data.duration>0&&this.eventManager.eventContext.renderer.renderFromSceneForSceneTransitionPass(this.scene,this.scene.activeCamera,1e3*this.data.duration),this.eventManager.deactivate(),this.eventManager.controlsManager.deactivate();let e=this.scene.activeCamera;this.scene.updatePage(this.data.target),this.scene.traverseVisibleEntity(t=>{"ParticleSystem"===t.type&&(t.sleep(),t.wakeUp(),t.data.autoPlay?t.start():t.stop())}),this.scene.activePage.switchToPlayCamera(),this.scene.activeCamera.copyViewPlaneSize(e),t(this.scene.activePage,this.shared),this.eventManager.activate(),this.eventManager.controlsManager.activate(this.eventManager)}};e("SceneTransition",({data:t,page:e,eventManager:i,shared:a,actionCondition:s})=>new n(t,e,i,a,s)),a("scene-transition");
@@ -1 +1 @@
1
- import{a as t}from"./runtime-chunk-GGSUJEGZ.js";import{a as e}from"./runtime-chunk-NBYTQLIB.js";import{h as i}from"./runtime-chunk-QEQMFHXP.js";import"./runtime-chunk-IIHOKKLP.js";import"./runtime-chunk-24H3WFTK.js";import"./runtime-chunk-TU4KDRKR.js";import{a as s,b as r}from"./runtime-chunk-DZNU62CT.js";import"./runtime-chunk-4BMKE6ES.js";import"./runtime-chunk-DCHCPETD.js";import"./runtime-chunk-N4O4HFFU.js";import"./runtime-chunk-QZSA6WBT.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as n,g as o}from"./runtime-chunk-M6FFVLT6.js";import"./runtime-chunk-MPHBANVQ.js";import"./runtime-chunk-RTLL6WIB.js";import{f as h}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var c=class{constructor(t,e,i,s,r,o){this.id=t,this.data=e,this.object=i,this.scrollCounter=0,this.actions=n(e,e.actions,s,r,o,i)}connect(){this.scrollCounter=0}disconnect(){o(this.actions)}dispatch(t){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())});let e=t>0?1:-1;this.scrollCounter+=e,this.scrollCounter=Math.min(Math.max(this.scrollCounter,0),this.data.steps);let i=this.scrollCounter/this.data.steps;this.actions.Transition.forEach(t=>t.seek(i)),this.actions.Animation.forEach(t=>t.seek(e)),this.actions.TimelineAnimation.forEach(t=>t.seek(i)),this.actions.Create.forEach(t=>t.dispatchThrottled()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}dispatchUserEvent(t){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),t?(this.actions.Transition.forEach(t=>t.reverseFromCurrent()),this.actions.Animation.forEach(t=>t.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(t=>t.reverseFromCurrent())):(this.actions.Transition.forEach(t=>{t.playFromCurrent()}),this.actions.Animation.forEach(t=>{t.playFromCurrent()}),this.actions.TimelineAnimation.forEach(t=>{t.playFromCurrent()})),this.actions.Create.forEach(t=>t.dispatchThrottled()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}},l=class{constructor(t,e,i,s,r,o,h){this.id=t,this.data=e,this.object=i,this.domElement=o,this.eventManager=h,this.scrollStart=0,this.scrollEnd=0,this.deferred=new Set,this.settleDriver={update:()=>this.settleDeferred()},this.actions=n(e,e.actions,s,r,h,i)}getStickyParentElement(){let t=this.domElement;for(;t;){if("sticky"===window.getComputedStyle(t).position)return t;t=t.parentElement}return null}computeScrollBounds(){let t=this.getStickyParentElement(),e=t?.parentElement,i=this.domElement.getBoundingClientRect(),s={top:i.top,bottom:i.bottom,left:i.left,right:i.right,width:i.width,height:i.height};if(e){let r=e.getBoundingClientRect(),n=window.getComputedStyle(t),o=parseFloat(n.marginTop)+parseFloat(n.marginBottom),h=parseFloat(n.top),a=parseFloat(n.bottom),c=r.height-o;if(isNaN(h)){if(!isNaN(a)){let t=document.body.clientHeight??window.innerHeight,e=window.innerWidth-(document.documentElement.clientWidth??window.innerWidth);i.bottom===t-a?(s.top+=r.top-i.height+a+e,s.bottom+=r.top-i.height+a+e):i.bottom<t-a&&(s.top-=c-i.height,s.bottom-=c-i.height)}}else i.top===h?(s.top+=r.top-h,s.bottom+=r.top-h):i.top<0&&(s.top-=c-i.height,s.bottom-=c-i.height)}let r=document.body,n=document.documentElement,o=window.pageYOffset||n.scrollTop||r.scrollTop,h=n.clientTop||r.clientTop||0,a=Math.round(s.top+o-h);if("enter"===this.data.startFrom){let t=window.innerHeight,e=s.height,i=this.data.enterAnchor,r="top"===i?t:"bottom"===i?t-e:t-.5*e;this.scrollStart=a-r}else this.scrollStart=0;this.scrollStart+=this.data.startOffset??0,this.scrollEnd=this.scrollStart+(this.data.endAfter??400),this.box=s}connect(){this.computeScrollBounds(),this.settle()}disconnect(){t.remove(this.settleDriver),this.deferred.clear(),o(this.actions)}handleResize(){this.computeScrollBounds(),this.settle()}settle(){this.computeScroll({x:window.scrollX,y:window.scrollY},{settle:!0})}settleDeferred(){let e=[...this.deferred].filter(t=>!t.contested);e.length&&(e.forEach(t=>this.deferred.delete(t)),this.seekTransitions(e,this.scaleAt(window.scrollY))),0===this.deferred.size&&t.remove(this.settleDriver)}scaleAt(t){let e=this.scrollEnd-this.scrollStart;return Math.min(1,Math.max(0,(t-this.scrollStart)/e))}seekTransitions(t,e){t.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),t.forEach(t=>t.seek(e))}get isInvalidBox(){return void 0===this.box||0===this.box.width&&0===this.box.height&&0===this.box.top&&0===this.box.bottom}computeScroll({x:e,y:i},{settle:s=!1}={}){let r=this.actions.Transition;s?(r=r.filter(t=>!t.contested||(this.deferred.add(t),!1)),this.deferred.size&&t.add(this.settleDriver)):(this.deferred.clear(),t.remove(this.settleDriver));let n=this.scaleAt(i);this.seekTransitions(r,n),this.actions.Animation.forEach(t=>t.seek(n)),this.actions.TimelineAnimation.forEach(t=>t.seek(n)),this.actions.Create.forEach(t=>t.dispatchThrottled()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}dispatch(t){this.isInvalidBox&&this.computeScrollBounds(),this.computeScroll(t)}dispatchUserEvent(t){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),t?(this.actions.Transition.forEach(t=>t.reverseFromCurrent()),this.actions.Animation.forEach(t=>t.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(t=>t.reverseFromCurrent())):(this.actions.Transition.forEach(t=>{t.playFromCurrent()}),this.actions.Animation.forEach(t=>{t.playFromCurrent()}),this.actions.TimelineAnimation.forEach(t=>{t.playFromCurrent()})),this.actions.Create.forEach(t=>t.dispatchThrottled()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}},d=class extends s{constructor(t,i){super(t),this.managers=i,this.wheelEventsPerObject=new Map,this.scrollEventsPerObject=new Map,this.isInview=!0,this.handleResize=()=>{[...this.scrollEventsPerObject.entries()].forEach(([t,e])=>{e.forEach(t=>t.handleResize())})},this.onScroll=t=>{if(!this.isInview)return;let e={y:window.scrollY,x:window.scrollX};[...this.scrollEventsPerObject.entries()].forEach(([t,i])=>{t.dispatchEvent({type:"beginEvent",eventName:"Scroll",scroll:e}),i.forEach(t=>t.dispatch(e))})},this.onWheel=t=>{!this.isInview||t.ctrlKey||[...this.wheelEventsPerObject.entries()].forEach(([e,i])=>{e.dispatchEvent({type:"beginEvent",eventName:"Scroll",deltaY:t.deltaY}),i.forEach(e=>e.dispatch(t.deltaY))})},this.onUserEvent=({eventName:t,target:i,reverse:s})=>{if(!t||!i)return;let r=e(t);r&&"Scroll"===r&&(i.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.wheelEventsPerObject.get(i)?.forEach(t=>{t.dispatchUserEvent(s)}))}}connect(){let{page:t,sharedAssets:e,domElement:s,isExport:r}=this.eventContext,n=i=>{if(i.data?.events.length)for(let{id:n,data:o}of i.data.events)if(!o.disabled&&"Scroll"===o.type)if("load"!==o.trigger&&r){let r=new l(n,o,i,t,e,s,this.managers);this.scrollEventsPerObject.has(i)?this.scrollEventsPerObject.get(i)?.push(r):this.scrollEventsPerObject.set(i,[r])}else{let s=new c(n,o,i,t,e,this.managers);this.wheelEventsPerObject.has(i)?this.wheelEventsPerObject.get(i)?.push(s):this.wheelEventsPerObject.set(i,[s])}};t.traverseEntity(t=>{(h(t)||t instanceof i)&&t.frame?.traverse(t=>{n(t)}),n(t)}),this.intersectionObserver=new IntersectionObserver(t=>{let e=t[0];e&&(this.isInview=e.isIntersecting)},{root:null}),this.intersectionObserver.observe(this.eventContext.domElement),[...this.wheelEventsPerObject.entries()].forEach(([t,e])=>{e.forEach(t=>t.connect()),t.addEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([t,e])=>{e.forEach(t=>t.connect()),t.addEventListener("userEvent",this.onUserEvent)}),[...this.wheelEventsPerObject.values()].some(t=>t.length)&&(this.domEventsNeeded.add("wheel"),window.addEventListener("wheel",this.onWheel)),[...this.scrollEventsPerObject.values()].some(t=>t.length)&&(this.domEventsNeeded.add("scroll"),window.addEventListener("scroll",this.onScroll),window.addEventListener("resize",this.handleResize))}disconnect(){window.removeEventListener("wheel",this.onWheel),window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.handleResize),this.intersectionObserver.unobserve(this.eventContext.domElement),this.domEventsNeeded.clear(),[...this.wheelEventsPerObject.entries()].forEach(([t,e])=>{e.forEach(t=>t.disconnect()),t.removeEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([t,e])=>{e.forEach(t=>t.disconnect()),t.removeEventListener("userEvent",this.onUserEvent)})}};r("Scroll",({eventContext:t,eventManager:e})=>new d(t,e)),a("scroll");
1
+ import{a as t}from"./runtime-chunk-GGSUJEGZ.js";import{a as e}from"./runtime-chunk-NBYTQLIB.js";import{h as i}from"./runtime-chunk-NHROOVYJ.js";import"./runtime-chunk-SKYMJ662.js";import"./runtime-chunk-IVETVBB5.js";import"./runtime-chunk-TU4KDRKR.js";import{a as s,b as r}from"./runtime-chunk-DZNU62CT.js";import"./runtime-chunk-ISDQFD3B.js";import"./runtime-chunk-INLZ4T6V.js";import"./runtime-chunk-U4SSOL4Z.js";import"./runtime-chunk-OYIE77GW.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as n,g as o}from"./runtime-chunk-M6FFVLT6.js";import"./runtime-chunk-F4XMOADV.js";import"./runtime-chunk-RTLL6WIB.js";import{f as h}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var c=class{constructor(t,e,i,s,r,o){this.id=t,this.data=e,this.object=i,this.scrollCounter=0,this.actions=n(e,e.actions,s,r,o,i)}connect(){this.scrollCounter=0}disconnect(){o(this.actions)}dispatch(t){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())});let e=t>0?1:-1;this.scrollCounter+=e,this.scrollCounter=Math.min(Math.max(this.scrollCounter,0),this.data.steps);let i=this.scrollCounter/this.data.steps;this.actions.Transition.forEach(t=>t.seek(i)),this.actions.Animation.forEach(t=>t.seek(e)),this.actions.TimelineAnimation.forEach(t=>t.seek(i)),this.actions.Create.forEach(t=>t.dispatchThrottled()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}dispatchUserEvent(t){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),t?(this.actions.Transition.forEach(t=>t.reverseFromCurrent()),this.actions.Animation.forEach(t=>t.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(t=>t.reverseFromCurrent())):(this.actions.Transition.forEach(t=>{t.playFromCurrent()}),this.actions.Animation.forEach(t=>{t.playFromCurrent()}),this.actions.TimelineAnimation.forEach(t=>{t.playFromCurrent()})),this.actions.Create.forEach(t=>t.dispatchThrottled()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}},l=class{constructor(t,e,i,s,r,o,h){this.id=t,this.data=e,this.object=i,this.domElement=o,this.eventManager=h,this.scrollStart=0,this.scrollEnd=0,this.deferred=new Set,this.settleDriver={update:()=>this.settleDeferred()},this.actions=n(e,e.actions,s,r,h,i)}getStickyParentElement(){let t=this.domElement;for(;t;){if("sticky"===window.getComputedStyle(t).position)return t;t=t.parentElement}return null}computeScrollBounds(){let t=this.getStickyParentElement(),e=t?.parentElement,i=this.domElement.getBoundingClientRect(),s={top:i.top,bottom:i.bottom,left:i.left,right:i.right,width:i.width,height:i.height};if(e){let r=e.getBoundingClientRect(),n=window.getComputedStyle(t),o=parseFloat(n.marginTop)+parseFloat(n.marginBottom),h=parseFloat(n.top),a=parseFloat(n.bottom),c=r.height-o;if(isNaN(h)){if(!isNaN(a)){let t=document.body.clientHeight??window.innerHeight,e=window.innerWidth-(document.documentElement.clientWidth??window.innerWidth);i.bottom===t-a?(s.top+=r.top-i.height+a+e,s.bottom+=r.top-i.height+a+e):i.bottom<t-a&&(s.top-=c-i.height,s.bottom-=c-i.height)}}else i.top===h?(s.top+=r.top-h,s.bottom+=r.top-h):i.top<0&&(s.top-=c-i.height,s.bottom-=c-i.height)}let r=document.body,n=document.documentElement,o=window.pageYOffset||n.scrollTop||r.scrollTop,h=n.clientTop||r.clientTop||0,a=Math.round(s.top+o-h);if("enter"===this.data.startFrom){let t=window.innerHeight,e=s.height,i=this.data.enterAnchor,r="top"===i?t:"bottom"===i?t-e:t-.5*e;this.scrollStart=a-r}else this.scrollStart=0;this.scrollStart+=this.data.startOffset??0,this.scrollEnd=this.scrollStart+(this.data.endAfter??400),this.box=s}connect(){this.computeScrollBounds(),this.settle()}disconnect(){t.remove(this.settleDriver),this.deferred.clear(),o(this.actions)}handleResize(){this.computeScrollBounds(),this.settle()}settle(){this.computeScroll({x:window.scrollX,y:window.scrollY},{settle:!0})}settleDeferred(){let e=[...this.deferred].filter(t=>!t.contested);e.length&&(e.forEach(t=>this.deferred.delete(t)),this.seekTransitions(e,this.scaleAt(window.scrollY))),0===this.deferred.size&&t.remove(this.settleDriver)}scaleAt(t){let e=this.scrollEnd-this.scrollStart;return Math.min(1,Math.max(0,(t-this.scrollStart)/e))}seekTransitions(t,e){t.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),t.forEach(t=>t.seek(e))}get isInvalidBox(){return void 0===this.box||0===this.box.width&&0===this.box.height&&0===this.box.top&&0===this.box.bottom}computeScroll({x:e,y:i},{settle:s=!1}={}){let r=this.actions.Transition;s?(r=r.filter(t=>!t.contested||(this.deferred.add(t),!1)),this.deferred.size&&t.add(this.settleDriver)):(this.deferred.clear(),t.remove(this.settleDriver));let n=this.scaleAt(i);this.seekTransitions(r,n),this.actions.Animation.forEach(t=>t.seek(n)),this.actions.TimelineAnimation.forEach(t=>t.seek(n)),this.actions.Create.forEach(t=>t.dispatchThrottled()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}dispatch(t){this.isInvalidBox&&this.computeScrollBounds(),this.computeScroll(t)}dispatchUserEvent(t){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())}),t?(this.actions.Transition.forEach(t=>t.reverseFromCurrent()),this.actions.Animation.forEach(t=>t.reverseFromCurrent()),this.actions.TimelineAnimation.forEach(t=>t.reverseFromCurrent())):(this.actions.Transition.forEach(t=>{t.playFromCurrent()}),this.actions.Animation.forEach(t=>{t.playFromCurrent()}),this.actions.TimelineAnimation.forEach(t=>{t.playFromCurrent()})),this.actions.Create.forEach(t=>t.dispatchThrottled()),this.actions.SetVariable.forEach(t=>t.checkConditions()),this.actions.SetVariable.forEach(t=>t.dispatch()),this.actions.DynamicVariablePlay.forEach(t=>t.dispatch()),this.actions.ClearLocalStorage.forEach(t=>t.dispatch()),this.actions.UserAPI.forEach(t=>t.dispatch())}},d=class extends s{constructor(t,i){super(t),this.managers=i,this.wheelEventsPerObject=new Map,this.scrollEventsPerObject=new Map,this.isInview=!0,this.handleResize=()=>{[...this.scrollEventsPerObject.entries()].forEach(([t,e])=>{e.forEach(t=>t.handleResize())})},this.onScroll=t=>{if(!this.isInview)return;let e={y:window.scrollY,x:window.scrollX};[...this.scrollEventsPerObject.entries()].forEach(([t,i])=>{t.dispatchEvent({type:"beginEvent",eventName:"Scroll",scroll:e}),i.forEach(t=>t.dispatch(e))})},this.onWheel=t=>{!this.isInview||t.ctrlKey||[...this.wheelEventsPerObject.entries()].forEach(([e,i])=>{e.dispatchEvent({type:"beginEvent",eventName:"Scroll",deltaY:t.deltaY}),i.forEach(e=>e.dispatch(t.deltaY))})},this.onUserEvent=({eventName:t,target:i,reverse:s})=>{if(!t||!i)return;let r=e(t);r&&"Scroll"===r&&(i.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.wheelEventsPerObject.get(i)?.forEach(t=>{t.dispatchUserEvent(s)}))}}connect(){let{page:t,sharedAssets:e,domElement:s,isExport:r}=this.eventContext,n=i=>{if(i.data?.events.length)for(let{id:n,data:o}of i.data.events)if(!o.disabled&&"Scroll"===o.type)if("load"!==o.trigger&&r){let r=new l(n,o,i,t,e,s,this.managers);this.scrollEventsPerObject.has(i)?this.scrollEventsPerObject.get(i)?.push(r):this.scrollEventsPerObject.set(i,[r])}else{let s=new c(n,o,i,t,e,this.managers);this.wheelEventsPerObject.has(i)?this.wheelEventsPerObject.get(i)?.push(s):this.wheelEventsPerObject.set(i,[s])}};t.traverseEntity(t=>{(h(t)||t instanceof i)&&t.frame?.traverse(t=>{n(t)}),n(t)}),this.intersectionObserver=new IntersectionObserver(t=>{let e=t[0];e&&(this.isInview=e.isIntersecting)},{root:null}),this.intersectionObserver.observe(this.eventContext.domElement),[...this.wheelEventsPerObject.entries()].forEach(([t,e])=>{e.forEach(t=>t.connect()),t.addEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([t,e])=>{e.forEach(t=>t.connect()),t.addEventListener("userEvent",this.onUserEvent)}),[...this.wheelEventsPerObject.values()].some(t=>t.length)&&(this.domEventsNeeded.add("wheel"),window.addEventListener("wheel",this.onWheel)),[...this.scrollEventsPerObject.values()].some(t=>t.length)&&(this.domEventsNeeded.add("scroll"),window.addEventListener("scroll",this.onScroll),window.addEventListener("resize",this.handleResize))}disconnect(){window.removeEventListener("wheel",this.onWheel),window.removeEventListener("scroll",this.onScroll),window.removeEventListener("resize",this.handleResize),this.intersectionObserver.unobserve(this.eventContext.domElement),this.domEventsNeeded.clear(),[...this.wheelEventsPerObject.entries()].forEach(([t,e])=>{e.forEach(t=>t.disconnect()),t.removeEventListener("userEvent",this.onUserEvent)}),[...this.scrollEventsPerObject.entries()].forEach(([t,e])=>{e.forEach(t=>t.disconnect()),t.removeEventListener("userEvent",this.onUserEvent)})}};r("Scroll",({eventContext:t,eventManager:e})=>new d(t,e)),a("scroll");
@@ -0,0 +1 @@
1
+ import{k as m}from"./runtime-chunk-WLH55Q7G.js";import"./runtime-chunk-MVS4EJZ3.js";import"./runtime-chunk-2JD7RQUT.js";import"./runtime-chunk-462PSYFK.js";import"./runtime-chunk-4BGTCDLP.js";import"./runtime-chunk-INLZ4T6V.js";import"./runtime-chunk-IDKFOADO.js";import"./runtime-chunk-U4SSOL4Z.js";import"./runtime-chunk-OYIE77GW.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import"./runtime-chunk-F4XMOADV.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as n,f as r}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";r("ShapeBlendGeometry",(n,r,t)=>new m(n,r,t)),n("shape-blends");
@@ -0,0 +1,2 @@
1
+ 
2
+ ���t{,�k~�ac��aG��sk��K��oV���.5�� ( �VK$�8���Xz�"�E
@@ -1 +1 @@
1
- import{a as t}from"./runtime-chunk-YDJBLHAS.js";import{a as e,b as r}from"./runtime-chunk-T53JMQSH.js";import{F as i,o as n}from"./runtime-chunk-QZSA6WBT.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import"./runtime-chunk-MPHBANVQ.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as s,f as a,h as o}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import{Dc as h,Jd as l,Ld as u,Nd as c,Qd as f,Qe as d,Rd as p,Sd as g,Tc as y}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var m=class{constructor(){this.type="ShapePath",this.color=new y,this.subPaths=[],this.currentPath=null}moveTo(t,e){return this.currentPath=new f,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,i){return this.currentPath?.quadraticCurveTo(t,e,r,i),this}bezierCurveTo(t,e,r,i,n,s){return this.currentPath?.bezierCurveTo(t,e,r,i,n,s),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let t={loc:0,t:0};function e(e,i,n,s){let a=e.x,o=i.x,h=n.x,l=s.x,u=e.y,c=i.y,f=n.y,d=s.y,p=(l-h)*(u-f)-(d-f)*(a-h),g=(d-f)*(o-a)-(l-h)*(c-u),y=p/g,m=((o-a)*(u-f)-(c-u)*(a-h))/g;if(0===g&&0!==p||y<=0||y>=1||m<0||m>1)return null;if(0===p&&0===g){for(let h=0;h<2;h++){if(r(0===h?n:s,e,i),0===t.loc){let e=0===h?n:s;return{x:e.x,y:e.y,t:t.t}}if(2===t.loc)return{x:+(a+t.t*(o-a)).toPrecision(10),y:+(u+t.t*(c-u)).toPrecision(10),t:t.t}}return null}for(let a=0;a<2;a++)if(r(0===a?n:s,e,i),0===t.loc){let e=0===a?n:s;return{x:e.x,y:e.y,t:t.t}}return{x:+(a+y*(o-a)).toPrecision(10),y:+(u+y*(c-u)).toPrecision(10),t:y}}function r(e,r,i){let n,s=i.x-r.x,a=i.y-r.y,o=e.x-r.x,h=e.y-r.y,l=s*h-o*a;return e.x===r.x&&e.y===r.y?(t.loc=0,void(t.t=0)):e.x===i.x&&e.y===i.y?(t.loc=1,void(t.t=1)):void(l<-Number.EPSILON?t.loc=3:l>Number.EPSILON?t.loc=4:s*o<0||a*h<0?t.loc=5:Math.sqrt(s*s+a*a)<Math.sqrt(o*o+h*h)?t.loc=6:(n=0!==s?o/s:h/a,t.loc=2,t.t=n))}let i=0,n=999999999,s=-999999999,a=[];this.subPaths.forEach(t=>{let e=t.getPoints(),r=-999999999,o=999999999,l=-999999999,u=999999999;for(let t=0;t<e.length;t++){let i=e[t];i.y>r&&(r=i.y),i.y<o&&(o=i.y),i.x>l&&(l=i.x),i.x<u&&(u=i.x)}s<=l&&(s=l+1),n>=u&&(n=u-1),e.length&&a.push({curves:t.curves,points:e,isCW:g.isClockWise(e),identifier:i++,boundingBox:new d(new h(u,o),new h(l,r))})});let o=a.map(t=>function(t,r,i,n,s){(null==s||""===s)&&(s="nonzero");let a=new h;t.boundingBox.getCenter(a);let o=function(t,r,i){let n=new h;r.getCenter(n);let s=[];return i.forEach(r=>{r.boundingBox.containsPoint(n)&&function(t,r){let i=[],n=[];for(let s=1;s<t.length;s++){let a=t[s-1],o=t[s];for(let t=1;t<r.length;t++){let s=e(a,o,r[t-1],r[t]);null!==s&&void 0===i.find(t=>t.t<=s.t+Number.EPSILON&&t.t>=s.t-Number.EPSILON)&&(i.push(s),n.push(new h(s.x,s.y)))}}return n}(t,r.points).forEach(t=>{s.push({identifier:r.identifier,isCW:r.isCW,point:t})})}),s.sort((t,e)=>t.point.x-e.point.x),s}([new h(i,a.y),new h(n,a.y)],t.boundingBox,r);o.sort((t,e)=>t.point.x-e.point.x);let l=[],u=[];o.forEach(e=>{e.identifier===t.identifier?l.push(e):u.push(e)});let c=l[0].point.x,f=[],d=0;for(;d<u.length&&u[d].point.x<c;)f.length>0&&f[f.length-1]===u[d].identifier?f.pop():f.push(u[d].identifier),d++;if(f.push(t.identifier),"evenodd"===s){let e=f.length%2==0,r=f[f.length-2];return{identifier:t.identifier,isHole:e,for:r}}if("nonzero"===s){let e=!0,i=null,n=null;for(let t=0;t<f.length;t++){let s=f[t];r[s]&&(e?(n=r[s].isCW,e=!1,i=s):n!==r[s].isCW&&(n=r[s].isCW,e=!0))}return{identifier:t.identifier,isHole:e,for:i}}console.warn('fill-rule: "'+s+'" is currently not implemented.')}(t,a,n,s,this.userData?.style.fillRule)),l=[];return a.forEach(t=>{let e=o[t.identifier];if(e&&!e.isHole){let e=new p;e.curves=t.curves,o.filter(e=>e?.isHole&&e.for===t.identifier).forEach(t=>{if(t){let r=a[t.identifier],i=new f;i.curves=r.curves,e.holes.push(i)}}),l.push(e)}}),l}},x=new class{async load(t,e,i=()=>{}){let{load:n}=await r;n(t,(t,r)=>{t||!r?i(t??"Something went wrong"):e(r)})}async parse(t){let{parse:e,Bidi:i}=await r;try{let r=e(t),n=new i,s=t=>r.charToGlyphIndex(t.char);return n.registerModifier("glyphIndex",null,s),n.applyFeatures(r,r.defaultRenderOptions.features),{font:r,bidi:n}}catch(t){console.error(t)}}};function w(t,e){return e.state.glyphIndex===t||e.state.fina===t||e.state.medi===t||e.state.init===t}a("TextGeometry",(e,r,i)=>new t(e,r,i));var b={create:(t,e)=>new i(t,e)};o("TextGeometry",b),o("InputGeometry",b),n(class{constructor(t){this._arrayBuffer=new ArrayBuffer(1),this._isLoaded=!1,this._intercepted=!1,this._layoutErrorWarned=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=this.load(t)}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=this.load(t)}async load(t){try{this._layoutErrorWarned=!1;let r=await async function(t){let r,i,n=!1;if(t.url?(r=await async function(t){let e;try{e=await fetch(t)}catch(e){throw new Error(`could not fetch the font at ${t}: ${e}`)}if(!e.ok)throw new Error(`${e.status} ${e.statusText} fetching the font at ${t}`);return await e.arrayBuffer()}(t.url),i=t.url,n=t.url.startsWith("/")):t.data&&(r=t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength)),r){if(!e)return{font:void 0,url:i,intercepted:n,arr:r,bidi:null};{let t=await x.parse(r);if(t)return{font:t.font,url:i,intercepted:n,arr:r,bidi:t.bidi}}}}(t);r&&(this._arrayBuffer=r.arr,this._url=r.url,this.font=r.font,this._intercepted=r.intercepted,this._isLoaded=!0,this._bidi=r.bidi)}catch(e){console.warn(`Could not load the font "${t.url??"(inline data)"}"`,e)}}warnLayoutError(t){this._layoutErrorWarned||(this._layoutErrorWarned=!0,console.warn(`Text layout failed for the font "${this._url??"(inline data)"}"`,t))}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let i=this._bidi;i.getTextGlyphs(e);let n=i.tokenizer.tokens,s=[],a=0,o=r.length===n.length;for(let i=0;i<r.length;i++){let h=r[i].index,l=String.fromCharCode(r[i].unicode),u=n[a];if(w(h,u)||o)s.push({char:l,index:h,replacements:[u.state.glyphIndex],replacementChars:[u.char]}),a++;else{let r=u.char,i="",n=[u.state.glyphIndex],o=[],c=!1;for(;!c;)a++,i=e.charAt(a),r+=i,n.push(t.charToGlyphIndex(i)),o=t.stringToGlyphs(r),1===o.length&&o[0].index===h&&(c=!0),a>e.length&&(c=!0);s.push({char:l,index:h,replacements:n,replacementChars:Array.from(r)}),a++}}return s}generateShapes(t,e,r){if(!this._isLoaded)return;let i=this.font,n=e.fontSize/this.unitsPerEm,s=e.fontSize*e.lineHeight,a=t.map(t=>this.getTextWidth(t,e)),o="string"==typeof e.width?Number(r.getVariable(e.width)):e.width,h="string"==typeof e.height?Number(r.getVariable(e.height)):e.height,l=this.getCharWidth("\n",e),u=1===e.horizontalAlign?l:0,c=this.getLineInitialOffsetX(a[0],o,e.horizontalAlign,t[0],l),f=this.getLineInitialOffsetY(s,t.length,h,n,e.verticalAlign),d=[],p=t.map(()=>[]),g=t.map(()=>[]);for(let h=0;h<t.length;h++){let y=t[h],m={features:{liga:!0},letterSpacing:e.letterSpacing},x=[];try{x=i.stringToGlyphs(y,m)}catch(t){this.warnLayoutError(t)}c=this.getLineInitialOffsetX(a[h],o,e.horizontalAlign,y,l);let w=[];try{w=this.reverseLigaturesTable(i,y,x)}catch(t){this.warnLayoutError(t)}let b=this.computeSpaceWidthForLine(t,h,e,r),P=0,S=x[0];S&&2===e.horizontalAlign&&void 0!==S.leftSideBearing&&(c-=S.leftSideBearing*n);try{this.font?.forEachGlyph(y,c,f,e.fontSize,m,(t,r,s,a,o)=>{let l=0===t.index?"\n":t.unicode?String.fromCharCode(t.unicode):void 0,c=w[P],f=0;if("\n"===l)f=u;else if(" "===l)f=b;else{let i=this.createPath(t,n,r,s,e);i&&(f=i.offsetX,d.push(i.path))}if(c&&1!==c.replacements.length){let t=c.replacements.map(t=>(i.glyphs.get(t).advanceWidth??0)*n),e=t.reduce((t,e)=>t+e,0),a=t.map(t=>t/e),o=r;for(let t=0;t<a.length;t++){let e=f*a[t];g[h].push([o,s]),p[h].push(e),o+=e}}else g[h].push([r,s]),p[h].push(f);P++})}catch(t){this.warnLayoutError(t)}f-=s}let y=[];for(let t=0,e=d.length;t<e;t++)y.push(...d[t].toShapes());return{shapes:y,charWidths:p,lineWidths:a,charCoords:g}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,r,i,n){return(3===r||2===r)&&i.indexOf("\n")>=0&&(t-=n),3===r?.5*e-.5*t:2===r?e-t:0}getLineInitialOffsetY(t,e,r,i,n){let s=e*t,a=t-Math.abs(this.ascender-this.descender)*i,o=-this.ascender*i-a/2;return 3===n?-(r-s-o):2===n?-(.5*r-.5*s-o):o}createPath(t,e,r,i,n){let s=t.getPath(r,-i,n.fontSize,{kerning:!1,letterSpacing:n.letterSpacing});if(!s)return void console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");let a=new m,o=(t.advanceWidth??1)*e;if(t)for(let t of s.commands){let e=a.currentPath?.currentPoint;if(!e||"Z"===t.type||e.x!==t.x||-e.y!==t.y)switch(t.type){case"M":a.moveTo(t.x,-t.y);break;case"L":a.lineTo(t.x,-t.y);break;case"Q":a.quadraticCurveTo(t.x1,-t.y1,t.x,-t.y);break;case"C":a.bezierCurveTo(t.x1,-t.y1,t.x2,-t.y2,t.x,-t.y)}}return a.subPaths.forEach(t=>{let e=function(t){if(t.length){let e=t[0];if(e instanceof u)return e.v1;if(e instanceof l||e instanceof c)return e.v0}}(t.curves);void 0!==e&&t.currentPoint.distanceTo(e)>0&&t.lineTo(e.x,e.y)}),{offsetX:o,path:a}}getCharWidth(t,e){try{return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}catch(t){return this.warnLayoutError(t),0}}getTextWidth(t,e){try{return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}catch(t){return this.warnLayoutError(t),0}}computeSpaceWidthForLine(t,e,r,i){let n=this.getCharWidth(" ",r),s=t[e];if(s){let a=this.countSpaces(s.trimEnd());if(4===r.horizontalAlign&&e<t.length-1&&a)return(("string"==typeof r.width?Number(i.getVariable(r.width)):r.width)-(this.getTextWidth(s,r)-a*n))/a}return n}countSpaces(t){return(t.match(/ /g)||[]).length}}),s("text");
1
+ import{a as t}from"./runtime-chunk-2JD7RQUT.js";import{a as e,b as r}from"./runtime-chunk-T53JMQSH.js";import{F as i,o as n}from"./runtime-chunk-OYIE77GW.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import"./runtime-chunk-F4XMOADV.js";import"./runtime-chunk-RTLL6WIB.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-EFBUAWKV.js";import{a as s,f as a,h as o}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-K3UQCG3P.js";import{Dc as h,Jd as l,Ld as u,Nd as c,Qd as f,Qe as d,Rd as p,Sd as g,Tc as y}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var m=class{constructor(){this.type="ShapePath",this.color=new y,this.subPaths=[],this.currentPath=null}moveTo(t,e){return this.currentPath=new f,this.subPaths.push(this.currentPath),this.currentPath.moveTo(t,e),this}lineTo(t,e){return this.currentPath?.lineTo(t,e),this}quadraticCurveTo(t,e,r,i){return this.currentPath?.quadraticCurveTo(t,e,r,i),this}bezierCurveTo(t,e,r,i,n,s){return this.currentPath?.bezierCurveTo(t,e,r,i,n,s),this}splineThru(t){return this.currentPath?.splineThru(t),this}toShapes(){let t={loc:0,t:0};function e(e,i,n,s){let a=e.x,o=i.x,h=n.x,l=s.x,u=e.y,c=i.y,f=n.y,d=s.y,p=(l-h)*(u-f)-(d-f)*(a-h),g=(d-f)*(o-a)-(l-h)*(c-u),y=p/g,m=((o-a)*(u-f)-(c-u)*(a-h))/g;if(0===g&&0!==p||y<=0||y>=1||m<0||m>1)return null;if(0===p&&0===g){for(let h=0;h<2;h++){if(r(0===h?n:s,e,i),0===t.loc){let e=0===h?n:s;return{x:e.x,y:e.y,t:t.t}}if(2===t.loc)return{x:+(a+t.t*(o-a)).toPrecision(10),y:+(u+t.t*(c-u)).toPrecision(10),t:t.t}}return null}for(let a=0;a<2;a++)if(r(0===a?n:s,e,i),0===t.loc){let e=0===a?n:s;return{x:e.x,y:e.y,t:t.t}}return{x:+(a+y*(o-a)).toPrecision(10),y:+(u+y*(c-u)).toPrecision(10),t:y}}function r(e,r,i){let n,s=i.x-r.x,a=i.y-r.y,o=e.x-r.x,h=e.y-r.y,l=s*h-o*a;return e.x===r.x&&e.y===r.y?(t.loc=0,void(t.t=0)):e.x===i.x&&e.y===i.y?(t.loc=1,void(t.t=1)):void(l<-Number.EPSILON?t.loc=3:l>Number.EPSILON?t.loc=4:s*o<0||a*h<0?t.loc=5:Math.sqrt(s*s+a*a)<Math.sqrt(o*o+h*h)?t.loc=6:(n=0!==s?o/s:h/a,t.loc=2,t.t=n))}let i=0,n=999999999,s=-999999999,a=[];this.subPaths.forEach(t=>{let e=t.getPoints(),r=-999999999,o=999999999,l=-999999999,u=999999999;for(let t=0;t<e.length;t++){let i=e[t];i.y>r&&(r=i.y),i.y<o&&(o=i.y),i.x>l&&(l=i.x),i.x<u&&(u=i.x)}s<=l&&(s=l+1),n>=u&&(n=u-1),e.length&&a.push({curves:t.curves,points:e,isCW:g.isClockWise(e),identifier:i++,boundingBox:new d(new h(u,o),new h(l,r))})});let o=a.map(t=>function(t,r,i,n,s){(null==s||""===s)&&(s="nonzero");let a=new h;t.boundingBox.getCenter(a);let o=function(t,r,i){let n=new h;r.getCenter(n);let s=[];return i.forEach(r=>{r.boundingBox.containsPoint(n)&&function(t,r){let i=[],n=[];for(let s=1;s<t.length;s++){let a=t[s-1],o=t[s];for(let t=1;t<r.length;t++){let s=e(a,o,r[t-1],r[t]);null!==s&&void 0===i.find(t=>t.t<=s.t+Number.EPSILON&&t.t>=s.t-Number.EPSILON)&&(i.push(s),n.push(new h(s.x,s.y)))}}return n}(t,r.points).forEach(t=>{s.push({identifier:r.identifier,isCW:r.isCW,point:t})})}),s.sort((t,e)=>t.point.x-e.point.x),s}([new h(i,a.y),new h(n,a.y)],t.boundingBox,r);o.sort((t,e)=>t.point.x-e.point.x);let l=[],u=[];o.forEach(e=>{e.identifier===t.identifier?l.push(e):u.push(e)});let c=l[0].point.x,f=[],d=0;for(;d<u.length&&u[d].point.x<c;)f.length>0&&f[f.length-1]===u[d].identifier?f.pop():f.push(u[d].identifier),d++;if(f.push(t.identifier),"evenodd"===s){let e=f.length%2==0,r=f[f.length-2];return{identifier:t.identifier,isHole:e,for:r}}if("nonzero"===s){let e=!0,i=null,n=null;for(let t=0;t<f.length;t++){let s=f[t];r[s]&&(e?(n=r[s].isCW,e=!1,i=s):n!==r[s].isCW&&(n=r[s].isCW,e=!0))}return{identifier:t.identifier,isHole:e,for:i}}console.warn('fill-rule: "'+s+'" is currently not implemented.')}(t,a,n,s,this.userData?.style.fillRule)),l=[];return a.forEach(t=>{let e=o[t.identifier];if(e&&!e.isHole){let e=new p;e.curves=t.curves,o.filter(e=>e?.isHole&&e.for===t.identifier).forEach(t=>{if(t){let r=a[t.identifier],i=new f;i.curves=r.curves,e.holes.push(i)}}),l.push(e)}}),l}},x=new class{async load(t,e,i=()=>{}){let{load:n}=await r;n(t,(t,r)=>{t||!r?i(t??"Something went wrong"):e(r)})}async parse(t){let{parse:e,Bidi:i}=await r;try{let r=e(t),n=new i,s=t=>r.charToGlyphIndex(t.char);return n.registerModifier("glyphIndex",null,s),n.applyFeatures(r,r.defaultRenderOptions.features),{font:r,bidi:n}}catch(t){console.error(t)}}};function w(t,e){return e.state.glyphIndex===t||e.state.fina===t||e.state.medi===t||e.state.init===t}a("TextGeometry",(e,r,i)=>new t(e,r,i));var b={create:(t,e)=>new i(t,e)};o("TextGeometry",b),o("InputGeometry",b),n(class{constructor(t){this._arrayBuffer=new ArrayBuffer(1),this._isLoaded=!1,this._intercepted=!1,this._layoutErrorWarned=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=this.load(t)}update(t){this._isLoaded=!1,this._isUserFont=t.isUserFont??!1,this._loadingPromise=this.load(t)}async load(t){try{this._layoutErrorWarned=!1;let r=await async function(t){let r,i,n=!1;if(t.url?(r=await async function(t){let e;try{e=await fetch(t)}catch(e){throw new Error(`could not fetch the font at ${t}: ${e}`)}if(!e.ok)throw new Error(`${e.status} ${e.statusText} fetching the font at ${t}`);return await e.arrayBuffer()}(t.url),i=t.url,n=t.url.startsWith("/")):t.data&&(r=t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength)),r){if(!e)return{font:void 0,url:i,intercepted:n,arr:r,bidi:null};{let t=await x.parse(r);if(t)return{font:t.font,url:i,intercepted:n,arr:r,bidi:t.bidi}}}}(t);r&&(this._arrayBuffer=r.arr,this._url=r.url,this.font=r.font,this._intercepted=r.intercepted,this._isLoaded=!0,this._bidi=r.bidi)}catch(e){console.warn(`Could not load the font "${t.url??"(inline data)"}"`,e)}}warnLayoutError(t){this._layoutErrorWarned||(this._layoutErrorWarned=!0,console.warn(`Text layout failed for the font "${this._url??"(inline data)"}"`,t))}get url(){return this._url}get intercepted(){return this._intercepted}get isLoaded(){return this._isLoaded}get loadingPromise(){return this._loadingPromise}reverseLigaturesTable(t,e,r){if(!this._bidi)return[];let i=this._bidi;i.getTextGlyphs(e);let n=i.tokenizer.tokens,s=[],a=0,o=r.length===n.length;for(let i=0;i<r.length;i++){let h=r[i].index,l=String.fromCharCode(r[i].unicode),u=n[a];if(w(h,u)||o)s.push({char:l,index:h,replacements:[u.state.glyphIndex],replacementChars:[u.char]}),a++;else{let r=u.char,i="",n=[u.state.glyphIndex],o=[],c=!1;for(;!c;)a++,i=e.charAt(a),r+=i,n.push(t.charToGlyphIndex(i)),o=t.stringToGlyphs(r),1===o.length&&o[0].index===h&&(c=!0),a>e.length&&(c=!0);s.push({char:l,index:h,replacements:n,replacementChars:Array.from(r)}),a++}}return s}generateShapes(t,e,r){if(!this._isLoaded)return;let i=this.font,n=e.fontSize/this.unitsPerEm,s=e.fontSize*e.lineHeight,a=t.map(t=>this.getTextWidth(t,e)),o="string"==typeof e.width?Number(r.getVariable(e.width)):e.width,h="string"==typeof e.height?Number(r.getVariable(e.height)):e.height,l=this.getCharWidth("\n",e),u=1===e.horizontalAlign?l:0,c=this.getLineInitialOffsetX(a[0],o,e.horizontalAlign,t[0],l),f=this.getLineInitialOffsetY(s,t.length,h,n,e.verticalAlign),d=[],p=t.map(()=>[]),g=t.map(()=>[]);for(let h=0;h<t.length;h++){let y=t[h],m={features:{liga:!0},letterSpacing:e.letterSpacing},x=[];try{x=i.stringToGlyphs(y,m)}catch(t){this.warnLayoutError(t)}c=this.getLineInitialOffsetX(a[h],o,e.horizontalAlign,y,l);let w=[];try{w=this.reverseLigaturesTable(i,y,x)}catch(t){this.warnLayoutError(t)}let b=this.computeSpaceWidthForLine(t,h,e,r),P=0,v=x[0];v&&2===e.horizontalAlign&&void 0!==v.leftSideBearing&&(c-=v.leftSideBearing*n);try{this.font?.forEachGlyph(y,c,f,e.fontSize,m,(t,r,s,a,o)=>{let l=0===t.index?"\n":t.unicode?String.fromCharCode(t.unicode):void 0,c=w[P],f=0;if("\n"===l)f=u;else if(" "===l)f=b;else{let i=this.createPath(t,n,r,s,e);i&&(f=i.offsetX,d.push(i.path))}if(c&&1!==c.replacements.length){let t=c.replacements.map(t=>(i.glyphs.get(t).advanceWidth??0)*n),e=t.reduce((t,e)=>t+e,0),a=t.map(t=>t/e),o=r;for(let t=0;t<a.length;t++){let e=f*a[t];g[h].push([o,s]),p[h].push(e),o+=e}}else g[h].push([r,s]),p[h].push(f);P++})}catch(t){this.warnLayoutError(t)}f-=s}let y=[];for(let t=0,e=d.length;t<e;t++)y.push(...d[t].toShapes());return{shapes:y,charWidths:p,lineWidths:a,charCoords:g}}get isUserFont(){return this._isUserFont}get arrayBuffer(){return this._arrayBuffer}get ascender(){return this.font?.ascender??0}get descender(){return this.font?.descender??0}get familyName(){return this.font?.names.fontFamily??""}get subfamilyName(){return this.font?.names.fontSubfamily??""}get unitsPerEm(){return this.font?.unitsPerEm??1}getLineInitialOffsetX(t,e,r,i,n){return(3===r||2===r)&&i.indexOf("\n")>=0&&(t-=n),3===r?.5*e-.5*t:2===r?e-t:0}getLineInitialOffsetY(t,e,r,i,n){let s=e*t,a=t-Math.abs(this.ascender-this.descender)*i,o=-this.ascender*i-a/2;return 3===n?-(r-s-o):2===n?-(.5*r-.5*s-o):o}createPath(t,e,r,i,n){let s=t.getPath(r,-i,n.fontSize,{kerning:!1,letterSpacing:n.letterSpacing});if(!s)return void console.error('THREE.Font: character "'+t+'" does not exists in font family '+this.familyName+".");let a=new m,o=(t.advanceWidth??1)*e;if(t)for(let t of s.commands){let e=a.currentPath?.currentPoint;if(!e||"Z"===t.type||e.x!==t.x||-e.y!==t.y)switch(t.type){case"M":a.moveTo(t.x,-t.y);break;case"L":a.lineTo(t.x,-t.y);break;case"Q":a.quadraticCurveTo(t.x1,-t.y1,t.x,-t.y);break;case"C":a.bezierCurveTo(t.x1,-t.y1,t.x2,-t.y2,t.x,-t.y)}}return a.subPaths.forEach(t=>{let e=function(t){if(t.length){let e=t[0];if(e instanceof u)return e.v1;if(e instanceof l||e instanceof c)return e.v0}}(t.curves);void 0!==e&&t.currentPoint.distanceTo(e)>0&&t.lineTo(e.x,e.y)}),{offsetX:o,path:a}}getCharWidth(t,e){try{return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}catch(t){return this.warnLayoutError(t),0}}getTextWidth(t,e){try{return this.font?.getAdvanceWidth(t,e.fontSize,{kerning:!0,letterSpacing:e.letterSpacing})??0}catch(t){return this.warnLayoutError(t),0}}computeSpaceWidthForLine(t,e,r,i){let n=this.getCharWidth(" ",r),s=t[e];if(s){let a=this.countSpaces(s.trimEnd());if(4===r.horizontalAlign&&e<t.length-1&&a)return(("string"==typeof r.width?Number(i.getVariable(r.width)):r.width)-(this.getTextWidth(s,r)-a*n))/a}return n}countSpaces(t){return(t.match(/ /g)||[]).length}}),s("text");