@splinetool/runtime 2.0.11 → 2.0.13

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 (270) hide show
  1. package/build/{runtime-chunk-H3NZ2DPE.js → runtime-chunk-2GAIM5RJ.js} +1 -1
  2. package/build/runtime-chunk-2GAIM5RJ.js.br +0 -0
  3. package/build/runtime-chunk-2GAIM5RJ.js.gz +0 -0
  4. package/build/{runtime-chunk-ALDD75EK.js → runtime-chunk-2S2NQ44M.js} +1 -1
  5. package/build/runtime-chunk-2S2NQ44M.js.br +0 -0
  6. package/build/runtime-chunk-2S2NQ44M.js.gz +0 -0
  7. package/build/{runtime-chunk-7UK5TXXX.js → runtime-chunk-3IBXKX7I.js} +1 -1
  8. package/build/runtime-chunk-3IBXKX7I.js.br +0 -0
  9. package/build/runtime-chunk-3IBXKX7I.js.gz +0 -0
  10. package/build/{runtime-chunk-5GCT2MXQ.js → runtime-chunk-4GNBET46.js} +1 -1
  11. package/build/runtime-chunk-4GNBET46.js.br +0 -0
  12. package/build/runtime-chunk-4GNBET46.js.gz +0 -0
  13. package/build/{runtime-chunk-CSQ34B7E.js → runtime-chunk-5POGWSQZ.js} +1 -1
  14. package/build/runtime-chunk-5POGWSQZ.js.br +0 -0
  15. package/build/runtime-chunk-5POGWSQZ.js.gz +0 -0
  16. package/build/{runtime-chunk-MQKKQEK3.js → runtime-chunk-A7IMJ4FJ.js} +1 -1
  17. package/build/runtime-chunk-A7IMJ4FJ.js.br +0 -0
  18. package/build/{runtime-chunk-MQKKQEK3.js.gz → runtime-chunk-A7IMJ4FJ.js.gz} +0 -0
  19. package/build/{runtime-chunk-DX665HUE.js → runtime-chunk-ALTKMFUV.js} +1 -1
  20. package/build/runtime-chunk-ALTKMFUV.js.br +0 -0
  21. package/build/runtime-chunk-ALTKMFUV.js.gz +0 -0
  22. package/build/{runtime-chunk-DA36J6OU.js → runtime-chunk-BEWQ5BW5.js} +1 -1
  23. package/build/runtime-chunk-BEWQ5BW5.js.br +0 -0
  24. package/build/runtime-chunk-BEWQ5BW5.js.gz +0 -0
  25. package/build/{runtime-chunk-HLXTXF7I.js → runtime-chunk-ESL2VL5C.js} +1 -1
  26. package/build/runtime-chunk-ESL2VL5C.js.br +0 -0
  27. package/build/runtime-chunk-ESL2VL5C.js.gz +0 -0
  28. package/build/{runtime-chunk-4ENGAWL7.js → runtime-chunk-F5CUMYOK.js} +1 -1
  29. package/build/runtime-chunk-F5CUMYOK.js.br +0 -0
  30. package/build/runtime-chunk-F5CUMYOK.js.gz +0 -0
  31. package/build/{runtime-chunk-BY4Y72LZ.js → runtime-chunk-HKFPEE5F.js} +1 -1
  32. package/build/runtime-chunk-HKFPEE5F.js.br +0 -0
  33. package/build/runtime-chunk-HKFPEE5F.js.gz +0 -0
  34. package/build/{runtime-chunk-FJ3HZ257.js → runtime-chunk-ITI3UXPR.js} +1 -1
  35. package/build/runtime-chunk-ITI3UXPR.js.br +0 -0
  36. package/build/runtime-chunk-ITI3UXPR.js.gz +0 -0
  37. package/build/{runtime-chunk-O6F5QJHF.js → runtime-chunk-JIIVUL2M.js} +1 -1
  38. package/build/runtime-chunk-JIIVUL2M.js.br +0 -0
  39. package/build/runtime-chunk-JIIVUL2M.js.gz +0 -0
  40. package/build/{runtime-chunk-K3MY5TZT.js → runtime-chunk-JLL5C22M.js} +1 -1
  41. package/build/runtime-chunk-JLL5C22M.js.br +0 -0
  42. package/build/runtime-chunk-JLL5C22M.js.gz +0 -0
  43. package/build/{runtime-chunk-XT53PDQV.js → runtime-chunk-JSOWOATQ.js} +1 -1
  44. package/build/runtime-chunk-JSOWOATQ.js.br +0 -0
  45. package/build/runtime-chunk-JSOWOATQ.js.gz +0 -0
  46. package/build/{runtime-chunk-DQMOB5OU.js → runtime-chunk-MJYVLFQT.js} +1 -1
  47. package/build/runtime-chunk-MJYVLFQT.js.br +0 -0
  48. package/build/runtime-chunk-MJYVLFQT.js.gz +0 -0
  49. package/build/{runtime-chunk-FYQSEYL5.js → runtime-chunk-OUQPS3VD.js} +1 -1
  50. package/build/runtime-chunk-OUQPS3VD.js.br +0 -0
  51. package/build/runtime-chunk-OUQPS3VD.js.gz +0 -0
  52. package/build/{runtime-chunk-FBNDPGTS.js → runtime-chunk-PS74VRLB.js} +1 -1
  53. package/build/runtime-chunk-PS74VRLB.js.br +0 -0
  54. package/build/runtime-chunk-PS74VRLB.js.gz +0 -0
  55. package/build/{runtime-chunk-CUGQPKPQ.js → runtime-chunk-QMMGYOLW.js} +1 -1
  56. package/build/runtime-chunk-QMMGYOLW.js.br +0 -0
  57. package/build/runtime-chunk-QMMGYOLW.js.gz +0 -0
  58. package/build/{runtime-chunk-OWPKF7IL.js → runtime-chunk-SJQBQYDG.js} +1 -1
  59. package/build/runtime-chunk-SJQBQYDG.js.br +0 -0
  60. package/build/runtime-chunk-SJQBQYDG.js.gz +0 -0
  61. package/build/{runtime-chunk-NHLFGFU5.js → runtime-chunk-T4UMOSIQ.js} +1 -1
  62. package/build/runtime-chunk-T4UMOSIQ.js.br +0 -0
  63. package/build/runtime-chunk-T4UMOSIQ.js.gz +0 -0
  64. package/build/{runtime-chunk-I5YVCEFL.js → runtime-chunk-VAANBQKN.js} +1 -1
  65. package/build/runtime-chunk-VAANBQKN.js.br +0 -0
  66. package/build/runtime-chunk-VAANBQKN.js.gz +0 -0
  67. package/build/{runtime-chunk-AVO7AFZY.js → runtime-chunk-WILQUYJ4.js} +1 -1
  68. package/build/runtime-chunk-WILQUYJ4.js.br +0 -0
  69. package/build/runtime-chunk-WILQUYJ4.js.gz +0 -0
  70. package/build/{runtime-chunk-T7HEAOAP.js → runtime-chunk-WWYY25M2.js} +1 -1
  71. package/build/runtime-chunk-WWYY25M2.js.br +0 -0
  72. package/build/runtime-chunk-WWYY25M2.js.gz +0 -0
  73. package/build/{runtime-chunk-Q23Z6MJP.js → runtime-chunk-XUHTMJJD.js} +1 -1
  74. package/build/runtime-chunk-XUHTMJJD.js.br +0 -0
  75. package/build/runtime-chunk-XUHTMJJD.js.gz +0 -0
  76. package/build/{runtime-chunk-LEHYVJOU.js → runtime-chunk-YH55FWRI.js} +1 -1
  77. package/build/runtime-chunk-YH55FWRI.js.br +0 -0
  78. package/build/runtime-chunk-YH55FWRI.js.gz +0 -0
  79. package/build/{runtime-classicRuntime-K34VIFGP.js → runtime-classicRuntime-ZJP7UOQK.js} +1 -1
  80. package/build/runtime-classicRuntime-ZJP7UOQK.js.br +0 -0
  81. package/build/runtime-classicRuntime-ZJP7UOQK.js.gz +0 -0
  82. package/build/{runtime-cloners-3Y3EIRQD.js → runtime-cloners-V4TFNW2E.js} +1 -1
  83. package/build/runtime-cloners-V4TFNW2E.js.br +0 -0
  84. package/build/runtime-cloners-V4TFNW2E.js.gz +0 -0
  85. package/build/{runtime-components-OIRGNZ53.js → runtime-components-P5ZGYATF.js} +1 -1
  86. package/build/runtime-components-P5ZGYATF.js.br +0 -0
  87. package/build/runtime-components-P5ZGYATF.js.gz +0 -0
  88. package/build/{runtime-createDestroy-IXF6AHPT.js → runtime-createDestroy-MAV4GFE6.js} +1 -1
  89. package/build/runtime-createDestroy-MAV4GFE6.js.br +0 -0
  90. package/build/runtime-createDestroy-MAV4GFE6.js.gz +0 -0
  91. package/build/{runtime-dragDrop-XMMLZ4DN.js → runtime-dragDrop-IZ74WMYA.js} +1 -1
  92. package/build/runtime-dragDrop-IZ74WMYA.js.br +0 -0
  93. package/build/runtime-dragDrop-IZ74WMYA.js.gz +0 -0
  94. package/build/{runtime-gameControls-AJVDYQ34.js → runtime-gameControls-ALSYS4GT.js} +1 -1
  95. package/build/runtime-gameControls-ALSYS4GT.js.br +0 -0
  96. package/build/runtime-gameControls-ALSYS4GT.js.gz +0 -0
  97. package/build/{runtime-hair-LL7HBW3N.js → runtime-hair-PML4TDM4.js} +1 -1
  98. package/build/runtime-hair-PML4TDM4.js.br +1 -0
  99. package/build/runtime-hair-PML4TDM4.js.gz +0 -0
  100. package/build/{runtime-mergeStaticGeometries-SLURKUQL.js → runtime-mergeStaticGeometries-OPJK4T22.js} +1 -1
  101. package/build/runtime-mergeStaticGeometries-OPJK4T22.js.br +0 -0
  102. package/build/runtime-mergeStaticGeometries-OPJK4T22.js.gz +0 -0
  103. package/build/{runtime-miscActions-MYXVSOXT.js → runtime-miscActions-JZQXYHKG.js} +1 -1
  104. package/build/runtime-miscActions-JZQXYHKG.js.br +0 -0
  105. package/build/runtime-miscActions-JZQXYHKG.js.gz +0 -0
  106. package/build/{runtime-mouseHover-VNG5G3EV.js → runtime-mouseHover-FM43SWSA.js} +1 -1
  107. package/build/runtime-mouseHover-FM43SWSA.js.br +0 -0
  108. package/build/runtime-mouseHover-FM43SWSA.js.gz +0 -0
  109. package/build/{runtime-particles-WY5ERTQY.js → runtime-particles-NY5M47HQ.js} +1 -1
  110. package/build/runtime-particles-NY5M47HQ.js.br +0 -0
  111. package/build/runtime-particles-NY5M47HQ.js.gz +0 -0
  112. package/build/{runtime-paths-EBK4AK5D.js → runtime-paths-LU43LMTP.js} +1 -1
  113. package/build/runtime-paths-LU43LMTP.js.br +0 -0
  114. package/build/runtime-paths-LU43LMTP.js.gz +0 -0
  115. package/build/{runtime-resize-ARFL653M.js → runtime-resize-BWOD7P3W.js} +1 -1
  116. package/build/runtime-resize-BWOD7P3W.js.br +0 -0
  117. package/build/runtime-resize-BWOD7P3W.js.gz +0 -0
  118. package/build/{runtime-sceneTransition-U767Q26P.js → runtime-sceneTransition-4R6LM4MA.js} +1 -1
  119. package/build/runtime-sceneTransition-4R6LM4MA.js.br +0 -0
  120. package/build/runtime-sceneTransition-4R6LM4MA.js.gz +0 -0
  121. package/build/{runtime-scroll-PJN2KY5P.js → runtime-scroll-KEVND4W5.js} +1 -1
  122. package/build/runtime-scroll-KEVND4W5.js.br +0 -0
  123. package/build/runtime-scroll-KEVND4W5.js.gz +0 -0
  124. package/build/runtime-shapeBlends-LXJ4P3XD.js +1 -0
  125. package/build/runtime-shapeBlends-LXJ4P3XD.js.br +0 -0
  126. package/build/runtime-shapeBlends-LXJ4P3XD.js.gz +0 -0
  127. package/build/{runtime-text-BIQDLMVM.js → runtime-text-43V5BJGN.js} +1 -1
  128. package/build/runtime-text-43V5BJGN.js.br +0 -0
  129. package/build/runtime-text-43V5BJGN.js.gz +0 -0
  130. package/build/{runtime-textInputs-PBVRLIAG.js → runtime-textInputs-WPBZO7XI.js} +1 -1
  131. package/build/runtime-textInputs-WPBZO7XI.js.br +0 -0
  132. package/build/runtime-textInputs-WPBZO7XI.js.gz +0 -0
  133. package/build/{runtime-timeline-FZBQAKBM.js → runtime-timeline-AERFJWNC.js} +1 -1
  134. package/build/runtime-timeline-AERFJWNC.js.br +0 -0
  135. package/build/runtime-timeline-AERFJWNC.js.gz +0 -0
  136. package/build/{runtime-tracking-OGGWBM2F.js → runtime-tracking-T55DMPAI.js} +1 -1
  137. package/build/runtime-tracking-T55DMPAI.js.br +0 -0
  138. package/build/runtime-tracking-T55DMPAI.js.gz +0 -0
  139. package/build/{runtime-transitions-UZMSVIQQ.js → runtime-transitions-SLQEEKRO.js} +1 -1
  140. package/build/runtime-transitions-SLQEEKRO.js.br +0 -0
  141. package/build/runtime-transitions-SLQEEKRO.js.gz +0 -0
  142. package/build/{runtime-ui2d-3SFWWIHX.js → runtime-ui2d-FPEODT3M.js} +1 -1
  143. package/build/runtime-ui2d-FPEODT3M.js.br +0 -0
  144. package/build/runtime-ui2d-FPEODT3M.js.gz +0 -0
  145. package/build/{runtime-vectorShapes-LG23IGW6.js → runtime-vectorShapes-ZXLM5DCY.js} +1 -1
  146. package/build/runtime-vectorShapes-ZXLM5DCY.js.br +0 -0
  147. package/build/runtime-vectorShapes-ZXLM5DCY.js.gz +0 -0
  148. package/build/{runtime-webgpu-HA7LX6HX.js → runtime-webgpu-WHAEJKRX.js} +1 -1
  149. package/build/runtime-webgpu-WHAEJKRX.js.br +0 -0
  150. package/build/runtime-webgpu-WHAEJKRX.js.gz +0 -0
  151. package/build/runtime.cjs +5 -5
  152. package/build/runtime.js +1 -1
  153. package/build/runtime.js.br +0 -0
  154. package/build/runtime.js.gz +0 -0
  155. package/build/runtime.standalone.js +1 -1
  156. package/build/runtime.standalone.js.br +0 -0
  157. package/build/runtime.standalone.js.gz +0 -0
  158. package/build/runtime.standalone.webgl.js +1 -1
  159. package/build/runtime.standalone.webgl.js.br +0 -0
  160. package/build/runtime.standalone.webgl.js.gz +0 -0
  161. package/build/runtime.standalone.webgpu.js +1 -1
  162. package/build/runtime.standalone.webgpu.js.br +0 -0
  163. package/build/runtime.standalone.webgpu.js.gz +0 -0
  164. package/build/runtime.standalone.webgpu.micro.js +1 -1
  165. package/build/runtime.standalone.webgpu.micro.js.br +0 -0
  166. package/build/runtime.standalone.webgpu.micro.js.gz +0 -0
  167. package/build/runtime.standalone.webgpu.min.js +1 -1
  168. package/build/runtime.standalone.webgpu.min.js.br +0 -0
  169. package/build/runtime.standalone.webgpu.min.js.gz +0 -0
  170. package/package.json +1 -1
  171. package/build/runtime-chunk-4ENGAWL7.js.br +0 -0
  172. package/build/runtime-chunk-4ENGAWL7.js.gz +0 -0
  173. package/build/runtime-chunk-5GCT2MXQ.js.br +0 -0
  174. package/build/runtime-chunk-5GCT2MXQ.js.gz +0 -0
  175. package/build/runtime-chunk-7UK5TXXX.js.br +0 -0
  176. package/build/runtime-chunk-7UK5TXXX.js.gz +0 -0
  177. package/build/runtime-chunk-ALDD75EK.js.br +0 -0
  178. package/build/runtime-chunk-ALDD75EK.js.gz +0 -0
  179. package/build/runtime-chunk-AVO7AFZY.js.br +0 -0
  180. package/build/runtime-chunk-AVO7AFZY.js.gz +0 -0
  181. package/build/runtime-chunk-BY4Y72LZ.js.br +0 -0
  182. package/build/runtime-chunk-BY4Y72LZ.js.gz +0 -0
  183. package/build/runtime-chunk-CSQ34B7E.js.br +0 -0
  184. package/build/runtime-chunk-CSQ34B7E.js.gz +0 -0
  185. package/build/runtime-chunk-CUGQPKPQ.js.br +0 -0
  186. package/build/runtime-chunk-CUGQPKPQ.js.gz +0 -0
  187. package/build/runtime-chunk-DA36J6OU.js.br +0 -0
  188. package/build/runtime-chunk-DA36J6OU.js.gz +0 -0
  189. package/build/runtime-chunk-DQMOB5OU.js.br +0 -0
  190. package/build/runtime-chunk-DQMOB5OU.js.gz +0 -0
  191. package/build/runtime-chunk-DX665HUE.js.br +0 -0
  192. package/build/runtime-chunk-DX665HUE.js.gz +0 -0
  193. package/build/runtime-chunk-FBNDPGTS.js.br +0 -0
  194. package/build/runtime-chunk-FBNDPGTS.js.gz +0 -0
  195. package/build/runtime-chunk-FJ3HZ257.js.br +0 -0
  196. package/build/runtime-chunk-FJ3HZ257.js.gz +0 -0
  197. package/build/runtime-chunk-FYQSEYL5.js.br +0 -0
  198. package/build/runtime-chunk-FYQSEYL5.js.gz +0 -0
  199. package/build/runtime-chunk-H3NZ2DPE.js.br +0 -0
  200. package/build/runtime-chunk-H3NZ2DPE.js.gz +0 -0
  201. package/build/runtime-chunk-HLXTXF7I.js.br +0 -0
  202. package/build/runtime-chunk-HLXTXF7I.js.gz +0 -0
  203. package/build/runtime-chunk-I5YVCEFL.js.br +0 -0
  204. package/build/runtime-chunk-I5YVCEFL.js.gz +0 -0
  205. package/build/runtime-chunk-K3MY5TZT.js.br +0 -0
  206. package/build/runtime-chunk-K3MY5TZT.js.gz +0 -0
  207. package/build/runtime-chunk-LEHYVJOU.js.br +0 -0
  208. package/build/runtime-chunk-LEHYVJOU.js.gz +0 -0
  209. package/build/runtime-chunk-MQKKQEK3.js.br +0 -0
  210. package/build/runtime-chunk-NHLFGFU5.js.br +0 -0
  211. package/build/runtime-chunk-NHLFGFU5.js.gz +0 -0
  212. package/build/runtime-chunk-O6F5QJHF.js.br +0 -0
  213. package/build/runtime-chunk-O6F5QJHF.js.gz +0 -0
  214. package/build/runtime-chunk-OWPKF7IL.js.br +0 -0
  215. package/build/runtime-chunk-OWPKF7IL.js.gz +0 -0
  216. package/build/runtime-chunk-Q23Z6MJP.js.br +0 -0
  217. package/build/runtime-chunk-Q23Z6MJP.js.gz +0 -0
  218. package/build/runtime-chunk-T7HEAOAP.js.br +0 -0
  219. package/build/runtime-chunk-T7HEAOAP.js.gz +0 -0
  220. package/build/runtime-chunk-XT53PDQV.js.br +0 -0
  221. package/build/runtime-chunk-XT53PDQV.js.gz +0 -0
  222. package/build/runtime-classicRuntime-K34VIFGP.js.br +0 -0
  223. package/build/runtime-classicRuntime-K34VIFGP.js.gz +0 -0
  224. package/build/runtime-cloners-3Y3EIRQD.js.br +0 -1
  225. package/build/runtime-cloners-3Y3EIRQD.js.gz +0 -0
  226. package/build/runtime-components-OIRGNZ53.js.br +0 -0
  227. package/build/runtime-components-OIRGNZ53.js.gz +0 -0
  228. package/build/runtime-createDestroy-IXF6AHPT.js.br +0 -0
  229. package/build/runtime-createDestroy-IXF6AHPT.js.gz +0 -0
  230. package/build/runtime-dragDrop-XMMLZ4DN.js.br +0 -0
  231. package/build/runtime-dragDrop-XMMLZ4DN.js.gz +0 -0
  232. package/build/runtime-gameControls-AJVDYQ34.js.br +0 -0
  233. package/build/runtime-gameControls-AJVDYQ34.js.gz +0 -0
  234. package/build/runtime-hair-LL7HBW3N.js.br +0 -2
  235. package/build/runtime-hair-LL7HBW3N.js.gz +0 -0
  236. package/build/runtime-mergeStaticGeometries-SLURKUQL.js.br +0 -0
  237. package/build/runtime-mergeStaticGeometries-SLURKUQL.js.gz +0 -0
  238. package/build/runtime-miscActions-MYXVSOXT.js.br +0 -0
  239. package/build/runtime-miscActions-MYXVSOXT.js.gz +0 -0
  240. package/build/runtime-mouseHover-VNG5G3EV.js.br +0 -0
  241. package/build/runtime-mouseHover-VNG5G3EV.js.gz +0 -0
  242. package/build/runtime-particles-WY5ERTQY.js.br +0 -0
  243. package/build/runtime-particles-WY5ERTQY.js.gz +0 -0
  244. package/build/runtime-paths-EBK4AK5D.js.br +0 -0
  245. package/build/runtime-paths-EBK4AK5D.js.gz +0 -0
  246. package/build/runtime-resize-ARFL653M.js.br +0 -0
  247. package/build/runtime-resize-ARFL653M.js.gz +0 -0
  248. package/build/runtime-sceneTransition-U767Q26P.js.br +0 -0
  249. package/build/runtime-sceneTransition-U767Q26P.js.gz +0 -0
  250. package/build/runtime-scroll-PJN2KY5P.js.br +0 -0
  251. package/build/runtime-scroll-PJN2KY5P.js.gz +0 -0
  252. package/build/runtime-shapeBlends-QL2RV3WU.js +0 -1
  253. package/build/runtime-shapeBlends-QL2RV3WU.js.br +0 -4
  254. package/build/runtime-shapeBlends-QL2RV3WU.js.gz +0 -0
  255. package/build/runtime-text-BIQDLMVM.js.br +0 -0
  256. package/build/runtime-text-BIQDLMVM.js.gz +0 -0
  257. package/build/runtime-textInputs-PBVRLIAG.js.br +0 -0
  258. package/build/runtime-textInputs-PBVRLIAG.js.gz +0 -0
  259. package/build/runtime-timeline-FZBQAKBM.js.br +0 -0
  260. package/build/runtime-timeline-FZBQAKBM.js.gz +0 -0
  261. package/build/runtime-tracking-OGGWBM2F.js.br +0 -0
  262. package/build/runtime-tracking-OGGWBM2F.js.gz +0 -0
  263. package/build/runtime-transitions-UZMSVIQQ.js.br +0 -0
  264. package/build/runtime-transitions-UZMSVIQQ.js.gz +0 -0
  265. package/build/runtime-ui2d-3SFWWIHX.js.br +0 -0
  266. package/build/runtime-ui2d-3SFWWIHX.js.gz +0 -0
  267. package/build/runtime-vectorShapes-LG23IGW6.js.br +0 -0
  268. package/build/runtime-vectorShapes-LG23IGW6.js.gz +0 -0
  269. package/build/runtime-webgpu-HA7LX6HX.js.br +0 -0
  270. package/build/runtime-webgpu-HA7LX6HX.js.gz +0 -0
@@ -1 +1 @@
1
- import"./runtime-chunk-DX665HUE.js";import{g as t}from"./runtime-chunk-HLXTXF7I.js";import"./runtime-chunk-K3MY5TZT.js";import"./runtime-chunk-NTUTXO7Q.js";import{a as e}from"./runtime-chunk-4ENGAWL7.js";import{a}from"./runtime-chunk-R43XZP65.js";import"./runtime-chunk-CSQ34B7E.js";import"./runtime-chunk-ALDD75EK.js";import"./runtime-chunk-FYQSEYL5.js";import"./runtime-chunk-Q23Z6MJP.js";import"./runtime-chunk-TU4KDRKR.js";import"./runtime-chunk-FTVQTRM7.js";import{a as i,b as r}from"./runtime-chunk-VAVYZ35B.js";import{a as s,c as o}from"./runtime-chunk-FQNSP44B.js";import"./runtime-chunk-AVO7AFZY.js";import"./runtime-chunk-LEHYVJOU.js";import"./runtime-chunk-I5YVCEFL.js";import"./runtime-chunk-DA36J6OU.js";import{aa as n}from"./runtime-chunk-BY4Y72LZ.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{b as h,e as m}from"./runtime-chunk-WGBR2HLR.js";import"./runtime-chunk-MQKKQEK3.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as c}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.js";import{Bc as p,Ec as d,Fc as l}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var u=(t,e)=>e.some(e=>e instanceof RegExp?e.test(t):e===t);var g=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];u(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()])u(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===m(this.shared,this.condition))return!1;o?window.location.assign(this.url):("tab"===this.context||s&&"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(i[0]),r())}},w=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===m(this.shared,this.condition))return!1;clearTimeout(this.timeoutId),delete this.timeoutId,this.timeoutId=window.setTimeout(()=>{this.shared.reset(this.shared.data,!0),e(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}},f={type:"beginState"},v={type:"completeState",isfromEntity:!1},C={type:"requestRender"},y=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 d,this.qEnd=new d,this.zoomStart=1,this.zoomEnd=1}init(){}get playing(){return this.animation&&this.animation.began&&!this.animation.completed}buildAnimation(e=!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");let r={t:0};this.posStart.copy(this.page.activeCamera.position),this.qStart.copy(this.page.activeCamera.quaternion),this.zoomStart=this.page.activeCamera.zoom,this.animation=a({targets:r,t:1,...t(this.data),update:()=>{0===r.t&&("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(f));let t=this.page.activeCamera;t.position.lerpVectors(this.posStart,this.posEnd,r.t),t.quaternion.slerpQuaternions(this.qStart,this.qEnd,r.t),t.zoom=this.zoomStart+(this.zoomEnd-this.zoomStart)*r.t,t.wasMovedBySwitchCameraAction=!0,t.updateMatrix(),t.updateMatrixWorld(),t.updateProjectionMatrix(),t.dispatchEvent(C),1===r.t&&t.dispatchEvent(v)}})}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===m(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.animation?.play()):this.switchCamera(this.data.targetCamera)},1e3*this.data.delay)}catch{}}pause(){this.animation?.pause(),clearTimeout(this.timeoutId),delete this.timeoutId}toggle(t){if(!1===m(this.shared,this.condition))return!1;if(window.clearTimeout(this.timeoutId),delete this.timeoutId,t!==this.toggleIsForward)try{this.playing?(this.animation?.pause(),this.toggleIsForward=t??!this.toggleIsForward,this.buildAnimation(!0),this.animation?.play()):this.timeoutId=window.setTimeout(()=>{this.toggleIsForward=t??!this.toggleIsForward,this.data.animate?(this.animation?.pause(),this.buildAnimation(),this.animation?.play()):(this.toggleIsForward?(this.fromCamera=this.page.activeCamera,this.switchCamera(this.data.targetCamera)):this.fromCamera&&this.switchCamera(this.fromCamera.uuid),this.page.activeCamera.dispatchEvent(v),this.page.activeCamera.dispatchEvent(C))},1e3*this.data.delay)}catch{}}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause(),this.toggleIsForward=!1}},E=class{constructor(t,e,a,i){this.data=t,this.page=e,this.shared=a,this.condition=i}dispatch(){if(!1===m(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(n(t))})}dispose(){}};h("Link",({data:t,eventManager:e,shared:a,actionCondition:i})=>new g(t,e.controlsManager,a,i)),h("Reset",({data:t,page:e,shared:a,eventManager:i,actionCondition:r})=>new w(t,e,a,i,r)),h("SwitchCamera",({data:t,page:e,shared:a,actionCondition:i})=>new y(t,e,a,i)),h("ClearLocalStorage",({data:t,page:e,shared:a,actionCondition:i})=>new E(t,e,a,i)),c("misc-actions");
1
+ import"./runtime-chunk-ALTKMFUV.js";import{g as t}from"./runtime-chunk-ESL2VL5C.js";import"./runtime-chunk-JLL5C22M.js";import"./runtime-chunk-NTUTXO7Q.js";import{a as e}from"./runtime-chunk-F5CUMYOK.js";import{a}from"./runtime-chunk-R43XZP65.js";import"./runtime-chunk-5POGWSQZ.js";import"./runtime-chunk-2S2NQ44M.js";import"./runtime-chunk-OUQPS3VD.js";import"./runtime-chunk-XUHTMJJD.js";import"./runtime-chunk-TU4KDRKR.js";import"./runtime-chunk-FTVQTRM7.js";import{a as i,b as r}from"./runtime-chunk-VAVYZ35B.js";import{a as s,c as o}from"./runtime-chunk-FQNSP44B.js";import"./runtime-chunk-WILQUYJ4.js";import"./runtime-chunk-YH55FWRI.js";import"./runtime-chunk-VAANBQKN.js";import"./runtime-chunk-BEWQ5BW5.js";import{aa as n}from"./runtime-chunk-HKFPEE5F.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{b as h,e as m}from"./runtime-chunk-WGBR2HLR.js";import"./runtime-chunk-A7IMJ4FJ.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as c}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.js";import{Bc as p,Ec as d,Fc as l}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var u=(t,e)=>e.some(e=>e instanceof RegExp?e.test(t):e===t);var g=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];u(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()])u(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===m(this.shared,this.condition))return!1;o?window.location.assign(this.url):("tab"===this.context||s&&"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(i[0]),r())}},w=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===m(this.shared,this.condition))return!1;clearTimeout(this.timeoutId),delete this.timeoutId,this.timeoutId=window.setTimeout(()=>{this.shared.reset(this.shared.data,!0),e(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}},f={type:"beginState"},v={type:"completeState",isfromEntity:!1},C={type:"requestRender"},y=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 d,this.qEnd=new d,this.zoomStart=1,this.zoomEnd=1}init(){}get playing(){return this.animation&&this.animation.began&&!this.animation.completed}buildAnimation(e=!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");let r={t:0};this.posStart.copy(this.page.activeCamera.position),this.qStart.copy(this.page.activeCamera.quaternion),this.zoomStart=this.page.activeCamera.zoom,this.animation=a({targets:r,t:1,...t(this.data),update:()=>{0===r.t&&("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(f));let t=this.page.activeCamera;t.position.lerpVectors(this.posStart,this.posEnd,r.t),t.quaternion.slerpQuaternions(this.qStart,this.qEnd,r.t),t.zoom=this.zoomStart+(this.zoomEnd-this.zoomStart)*r.t,t.wasMovedBySwitchCameraAction=!0,t.updateMatrix(),t.updateMatrixWorld(),t.updateProjectionMatrix(),t.dispatchEvent(C),1===r.t&&t.dispatchEvent(v)}})}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===m(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.animation?.play()):this.switchCamera(this.data.targetCamera)},1e3*this.data.delay)}catch{}}pause(){this.animation?.pause(),clearTimeout(this.timeoutId),delete this.timeoutId}toggle(t){if(!1===m(this.shared,this.condition))return!1;if(window.clearTimeout(this.timeoutId),delete this.timeoutId,t!==this.toggleIsForward)try{this.playing?(this.animation?.pause(),this.toggleIsForward=t??!this.toggleIsForward,this.buildAnimation(!0),this.animation?.play()):this.timeoutId=window.setTimeout(()=>{this.toggleIsForward=t??!this.toggleIsForward,this.data.animate?(this.animation?.pause(),this.buildAnimation(),this.animation?.play()):(this.toggleIsForward?(this.fromCamera=this.page.activeCamera,this.switchCamera(this.data.targetCamera)):this.fromCamera&&this.switchCamera(this.fromCamera.uuid),this.page.activeCamera.dispatchEvent(v),this.page.activeCamera.dispatchEvent(C))},1e3*this.data.delay)}catch{}}playFromCurrent(){this.toggle(!0)}reverseFromCurrent(){this.toggle(!1)}dispose(){this.pause(),this.toggleIsForward=!1}},I=class{constructor(t,e,a,i){this.data=t,this.page=e,this.shared=a,this.condition=i}dispatch(){if(!1===m(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(n(t))})}dispose(){}};h("Link",({data:t,eventManager:e,shared:a,actionCondition:i})=>new g(t,e.controlsManager,a,i)),h("Reset",({data:t,page:e,shared:a,eventManager:i,actionCondition:r})=>new w(t,e,a,i,r)),h("SwitchCamera",({data:t,page:e,shared:a,actionCondition:i})=>new y(t,e,a,i)),h("ClearLocalStorage",({data:t,page:e,shared:a,actionCondition:i})=>new I(t,e,a,i)),c("misc-actions");
@@ -1 +1 @@
1
- import{a as t,b as e,c as s,d as i}from"./runtime-chunk-XT53PDQV.js";import"./runtime-chunk-7UK5TXXX.js";import{a as n}from"./runtime-chunk-NBYTQLIB.js";import{h as r}from"./runtime-chunk-ALDD75EK.js";import"./runtime-chunk-FYQSEYL5.js";import"./runtime-chunk-Q23Z6MJP.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-AVO7AFZY.js";import"./runtime-chunk-I5YVCEFL.js";import"./runtime-chunk-T7HEAOAP.js";import"./runtime-chunk-DA36J6OU.js";import"./runtime-chunk-BY4Y72LZ.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as u,g as m}from"./runtime-chunk-WGBR2HLR.js";import"./runtime-chunk-MQKKQEK3.js";import{e as v,f as E}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as p}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.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=>{(E(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=>{E(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),E(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)),p("mousehover");
1
+ import{a as t,b as e,c as s,d as i}from"./runtime-chunk-JSOWOATQ.js";import"./runtime-chunk-3IBXKX7I.js";import{a as n}from"./runtime-chunk-NBYTQLIB.js";import{h as r}from"./runtime-chunk-2S2NQ44M.js";import"./runtime-chunk-OUQPS3VD.js";import"./runtime-chunk-XUHTMJJD.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-WILQUYJ4.js";import"./runtime-chunk-VAANBQKN.js";import"./runtime-chunk-WWYY25M2.js";import"./runtime-chunk-BEWQ5BW5.js";import"./runtime-chunk-HKFPEE5F.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as u,g as m}from"./runtime-chunk-WGBR2HLR.js";import"./runtime-chunk-A7IMJ4FJ.js";import{e as v,f as E}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as p}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.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=>{(E(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=>{E(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),E(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)),p("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-WGBR2HLR.js";import{b as r,v as o}from"./runtime-chunk-MQKKQEK3.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a,d as l}from"./runtime-chunk-TZCHGFVF.js";import{T as u,l as c}from"./runtime-chunk-D3BWEUN6.js";import{Aa as h,Cc as d,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 D,ld as A,nd as w,pd as F,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,Q=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 B(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 w(n,t,t,g,h);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 A(e.geometry,e.material),n=[],s=[],r=new f,o=new f;null!==i.geometry.index&&(i.geometry=i.geometry.toNonIndexed());let a=new Q(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:B(i,e),positions:i,dataTextureNormals:B(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 A(i,new D({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 F(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])*d.DEG2RAD,Number(e[1])*d.DEG2RAD,Number(e[2])*d.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 w(t,e,e,g,h);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 w(t,e,e,g,h);return i.needsUpdate=!0,i}({size:this.emitterShape.textureSize}),d={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=d;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 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 D({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-WGBR2HLR.js";import{b as r,v as o}from"./runtime-chunk-A7IMJ4FJ.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a,d as l}from"./runtime-chunk-TZCHGFVF.js";import{T as u,l as c}from"./runtime-chunk-D3BWEUN6.js";import{Aa as h,Cc as d,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 w,pd as F,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,Q=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 B(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 w(n,t,t,g,h);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 Q(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:B(i,e),positions:i,dataTextureNormals:B(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 F(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])*d.DEG2RAD,Number(e[1])*d.DEG2RAD,Number(e[2])*d.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 w(t,e,e,g,h);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 w(t,e,e,g,h);return i.needsUpdate=!0,i}({size:this.emitterShape.textureSize}),d={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=d;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 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,ea as t,q as s,r as i,s as n,t as a,u as r,v as o,w as l,x as h,y as u,z as p}from"./runtime-chunk-BY4Y72LZ.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{g as c,u as d}from"./runtime-chunk-MQKKQEK3.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as m,f as g,h as y}from"./runtime-chunk-TZCHGFVF.js";import{ja as f,ka as v,la as w}from"./runtime-chunk-D3BWEUN6.js";import{Cc as x,Dc as S,Fc as b,Gc as _,Oc as C,Zc as P,dd as M}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var A=class extends t{constructor(e,t,s){super(e,t,s),this.isPathObject=!0,this._shapeId=null,this._lastShapeParams=null,this._lastShape=null,this._context=s}updateState(e,t){super.updateState(e,t),this.updateShape(),this.refreshAttachedCloners(t)}updateShape(){let t,s={...this.data.geometry.extrusion.shape};for(let e in s)"string"==typeof s[e]&&(s[e]=this._context.shared.getVariable(s[e],[this.uuid,"geometry","extrusion","shape",e]));if("Custom"===s.type){let e=s.shapeId;if(e!==this._shapeId&&this.detachShape(),e){this._shapeId=e;let s=this._context.scene.find(e);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else if(null!==this._lastShape&&this._sameShapeParams(s))t=this._lastShape;else{let i;switch(s.type){case"Rectangle":i=p;break;case"Ellipse":i=h;break;case"Polygon":i=u;break;case"Star":i=e;break;default:throw new Error(`Unknown shape type: ${s.type}`)}t=i.create({parameters:s}).userData.shape,this._lastShapeParams=s,this._lastShape=t??null}let i=this.geometry;t&&i.inputs&&(i.inputs.shapeData=t,i.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?d(s,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:s.count,e,t):super.updateEntityBoxSize(e,t)}},D=new C,k=new C,O=new C,I=new b,E=new b,R=new b,T=new b,z=new b,j=new b,U=new b,G=new WeakMap,B=new WeakMap,F=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 N=class extends M{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:e,matrices:t}=this._getSampledPath();if(e.length<2)return void V(this);let{depth:s,offset:i}=this.inputs.parameters.extrusion;s=Math.max(0,Math.min(s,1)),i=Math.max(0,Math.min(i,1));let n=this.inputs.path.isClosed?e.length:e.length-1,a=Math.floor(i*n),r=this.inputs.path.isClosed?Math.ceil((s+i)*n):Math.ceil(Math.min(1,s+i)*n),o=Math.min(Math.max(2,r-a+1),n+2),h=[],u=[];for(let s=0;s<o;s++){let i=this.inputs.path.isClosed?(s+a)%e.length:Math.min(s+a,e.length-1);h.push(e[i].clone()),u.push(t[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)},c=0,d=i*n%1;(!this.inputs.path.isClosed||s<=1)&&(d||0===i)&&(c=d,p(0,1,c));let m=0,g=(i+s)*n%1;if((this.inputs.path.isClosed&&s<=1||!this.inputs.path.isClosed&&i+s<1)&&g&&(m=g,p(h.length-1,h.length-2,1-m)),0===s){let e=h.length-1;h[e].copy(h[0]),u[e].copy(u[0])}this._applyPathModifiers(u,c,m);let{bevel:y,bevelSides:f}=this.inputs.parameters.extrusion,v=y>0?this.inputs.parameters.extrusion.capType:"flat",w=5;"Custom"===this.inputs.parameters.extrusion.shape.type&&(w="low"===this.inputs.parameters.extrusion.shape.shapeQuality?5:12);let S,{regions:_,infos:M,vertices:A}=this._getShapePoints(w),O=0;if("round"===v){let e=this.inputs.shapeData,t=F.get(e);void 0!==t&&t.bevel===y&&t.curveSegments===w&&t.bevelSides===f?S=t.geometry:(S=new l(e,2*y,y,w,f,void 0,!0),F.set(e,{bevel:y,curveSegments:w,bevelSides:f,geometry:S})),O=S.getAttribute("position").count}let I=0,E=0;M.sort((e,t)=>e.start-t.start),M.forEach(e=>{e.verticesStart=I,e.verticesCount=e.continuous.reduce((e,t,s)=>e+(0!==s&&t?1:2),0),E+=e.verticesCount,I=E});let R,T=E*o,z=0;this._isOpenEnded()&&"flat"===v&&(R=this._getSurfaceTesselation(_),z=R.vertexCount);let j=T+2*z+2*O,U=T+2*z,G={positions:new Float32Array(3*j),normals:new Float32Array(3*j),uvs:new Float32Array(2*j)},B=S?S.getIndex().array:null,N=0;M.forEach(e=>{N+=e.count});let Z=N*(o-1)*6+(R?2*R.elementCount*3:0)+(B?2*B.length:0),H=new Uint32Array(Z),Q=0;if(M.forEach(e=>{Q=this._extrudeRegion(e,A,u,h,G,H,Q,this._isGeometryClosed()&&!this._isOpenEnded())}),R&&(Q=this._closeEnd(R,T,H,Q,G,u[0],h[0],!1),Q=this._closeEnd(R,T+z,H,Q,G,u[u.length-1],h[h.length-1],!0)),S){G.positions.set(S.getAttribute("position").array,3*U),G.normals.set(S.getAttribute("normal").array,3*U),G.uvs.set(S.getAttribute("uv").array,2*U);for(let e=U;e<U+O;e++)G.uvs[2*e+1]=1e-4;let e=Q;for(let e=0;e<B.length;e++)H[Q++]=B[e]+U;U+=O,G.positions.set(S.getAttribute("position").array,3*U),G.normals.set(S.getAttribute("normal").array,3*U),G.uvs.set(S.getAttribute("uv").array,2*U);let t=Q;for(let e=0;e<B.length;e++)H[Q++]=B[e]+U;this.setAttribute("position",new P(G.positions,3)),this.setAttribute("normal",new P(G.normals,3)),this.setAttribute("uv",new P(G.uvs,2)),this._setIndexFromUint32(H);let s=D;s.copy(u[u.length-1]).setPosition(h[h.length-1]),this.applyMatrix4OnRange(s,U,j),s.copy(u[0]).setPosition(h[0]).multiply(k.makeScale(1,1,-1)),this.applyMatrix4OnRange(s,U-O,U),this.reverseIndicesOnRange(e,t)}else this.setAttribute("position",new P(G.positions,3)),this.setAttribute("normal",new P(G.normals,3)),this.setAttribute("uv",new P(G.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=c(e),s=G.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},G.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[e.length-2]:I.copy(c).multiplyScalar(2).sub(e[1]):e[h-1],p=h===s-1?i?e[1]:I.copy(c).multiplyScalar(2).sub(e[h-1]):e[h+1],E.subVectors(c,u).normalize(),R.subVectors(p,c).normalize();let d=T.addVectors(E,R).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=U.crossVectors(d,m).normalize();l.copy(g),o.copy(m),0===h&&(n.copy(g),a.copy(d));let y=(new C).makeBasis(m,g,d);t.push(y)}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(O.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=s.ODD){let i=this.inputs.shapeData,n=B.get(i);return(void 0===n||n.curveSegments!==e||n.windingRule!==t)&&(n={curveSegments:e,windingRule:t,shapePoints:this._computeShapePoints(e,t)},B.set(i,n)),n.shapePoints}_getSurfaceTesselation(e){let t,a=B.get(this.inputs.shapeData);if(void 0!==a?.surfaceTesselation)return a.surfaceTesselation;try{t=n({windingRule:s.ODD,elementType:i.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:e})}catch{t=o}return void 0!==a&&(a.surfaceTesselation=t),t}_computeShapePoints(e=12,t=s.ODD){let o,l,h=this.inputs.shapeData,u=h.extractShapePointsToFlatArray([],e),p=h.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{o=n({windingRule:t,elementType:i.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[u]})}catch{o=a}try{l=n({windingRule:s.ODD,elementType:i.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...p]})}catch{l=r}if(!o)throw new Error("error generating geometry");let c=o.elementCount;if(l){o.elementCount+=l.elementCount;for(let e=0;e<l.elements.length;e++){let t=l.elements[e],s=e%2==0?o.vertexCount:0;o.elements.push(t+s)}for(let e=0;e<l.vertexIndices.length;e++){let t=l.vertexIndices[e],s=o.vertexCount;o.vertexIndices.push(t+s)}for(let e=0;e<l.vertices.length;e++){let t=l.vertices[e];o.vertices.push(t)}}let d=1/0,m=-1/0,g=1/0,y=-1/0;for(let e=0,t=o.vertexCount;e<t;e++){let t=2*e,s=o.vertices[t+0],i=o.vertices[t+1];s<d&&(d=s),s>m&&(m=s),i<g&&(g=i),i>y&&(y=i)}let f=[];for(let e=o.elementCount-1;e>=0;e--){let t=e>=c,s=2*e,i=o.elements[s+0],n=o.elements[s+1],a=i+n,r={start:i,count:n,normals:[],isHole:t,continuous:[],verticesStart:0,verticesCount:0};f.push(r);let l=i,u=a-1,p=i+1,d=h.roundedCurves.length;do{let e=l-i,s=o.vertices[2*u+0],c=o.vertices[2*u+1],m=o.vertices[2*l+0],g=o.vertices[2*l+1],y=o.vertices[2*p+0],f=o.vertices[2*p+1],v=m-s,w=g-c,x=Math.sqrt(v*v+w*w);v/=x,w/=x;let S=m-y,b=g-f,_=Math.sqrt(S*S+b*b);S/=_,b/=_,r.normals[2*e+0]=-b,r.normals[2*e+1]=S;let C=o.vertexIndices[l];if(Array.isArray(C))r.continuous[e]=!1;else{let[t,s]=h.getCurveIndexFromVertexId(C-1,!0);if(s>0&&s<1)r.continuous[e]=!0;else{let i=1===s?t+1:t-1;i=(i+d)%d;let n=1===s?0:1,a=h.roundedCurves[t].getTangent(s),o=h.roundedCurves[i].getTangent(n);r.continuous[e]=a.dot(o)>.95}}t&&(r.normals[2*e+0]*=-1,r.normals[2*e+1]*=-1),[u,l,p]=[l,p,p+1],p>=a&&(p-=n)}while(p!==i+1)}return{regions:[u,...p],infos:f,vertices:o.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],y=n[6],f=n[12],v=n[13],w=n[14],x=i[t],S=t/(h-1),b=0,_=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];b=a*t+m*s+f+x.x,_=r*t+g*s+v+x.y,C=o*t+y*s+w+x.z}let t=l[e+2],s=l[e+3],i=a*t+m*s+f,n=r*t+g*s+v,h=o*t+y*s+w,u=1/(Math.sqrt(i*i+n*n+h*h)||1);i*=u,n*=u,h*=u;let M=2*P,A=3*P;p[A+0]=b,p[A+1]=_,p[A+2]=C,c[A+0]=i,c[A+1]=n,c[A+2]=h,d[M+0]=l[e+4],d[M+1]=S,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,y=m.length,f=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<y;e+=2){let t=s+m[e],n=s+m[e+1],o=i+m[e+1],l=i+m[e];f?(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 S;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}applyMatrix4OnRange(e,t,s){let i,n,a,r,o=e.elements,l=(new _).getNormalMatrix(e).elements,h=this.attributes.position,u=this.attributes.normal;if(!h||!u)return;let p=h.array,c=u.array,d=h.itemSize;for(let e=t*d,h=s*d;e<h;e+=d)i=p[e+0],n=p[e+1],a=p[e+2],r=1/(o[3]*i+o[7]*n+o[11]*a+o[15]),p[e+0]=(o[0]*i+o[4]*n+o[8]*a+o[12])*r,p[e+1]=(o[1]*i+o[5]*n+o[9]*a+o[13])*r,p[e+2]=(o[2]*i+o[6]*n+o[10]*a+o[14])*r,i=c[e+0],n=c[e+1],a=c[e+2],c[e+0]=l[0]*i+l[3]*n+l[6]*a,c[e+1]=l[1]*i+l[4]*n+l[7]*a,c[e+2]=l[2]*i+l[5]*n+l[8]*a;h.needsUpdate=!0,u.needsUpdate=!0}reverseIndicesOnRange(e,t){let s=this.index;if(s){for(let i=e;i<t;i+=3){let e=s.getX(i),t=s.getX(i+1),n=s.getX(i+2);s.setXYZ(i,n,t,e)}s.needsUpdate=!0}}};g("PathGeometry",(e,t,s)=>new A(e,t,s)),y("PathGeometry",class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let s=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},e.parameters),i=Math.abs(s.width),n=Math.abs(s.height??s.width),a=Math.abs(s.depth??0),r=t?.shapeData??h.create({parameters:{...v,width:"number"==typeof v.width?v.width:100,height:"number"==typeof v.height?v.height:100}}).userData.shape;return{path:e.path??f.defaultData(),parameters:Object.assign(s,{width:i,height:n,depth:a,extrusion:{...w,...s.extrusion}}),shapeData:r}}static build(e){if(e.path.points.length>=2){let t=new N(e);return Object.assign(t,{userData:{...e,type:"PathGeometry"}})}{let t=new M;return V(t),Object.assign(t,{userData:{...e,type:"PathGeometry"}})}}}),m("3d-paths");
1
+ import{A as e,ea as t,q as s,r as i,s as n,t as a,u as r,v as o,w as l,x as h,y as u,z as p}from"./runtime-chunk-HKFPEE5F.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{g as c,u as d}from"./runtime-chunk-A7IMJ4FJ.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as m,f as g,h as y}from"./runtime-chunk-TZCHGFVF.js";import{ja as f,ka as v,la as w}from"./runtime-chunk-D3BWEUN6.js";import{Cc as x,Dc as S,Fc as b,Gc as _,Oc as P,Zc as C,dd as M}from"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var A=class extends t{constructor(e,t,s){super(e,t,s),this.isPathObject=!0,this._shapeId=null,this._lastShapeParams=null,this._lastShape=null,this._context=s}updateState(e,t){super.updateState(e,t),this.updateShape(),this.refreshAttachedCloners(t)}updateShape(){let t,s={...this.data.geometry.extrusion.shape};for(let e in s)"string"==typeof s[e]&&(s[e]=this._context.shared.getVariable(s[e],[this.uuid,"geometry","extrusion","shape",e]));if("Custom"===s.type){let e=s.shapeId;if(e!==this._shapeId&&this.detachShape(),e){this._shapeId=e;let s=this._context.scene.find(e);s?.data&&(s.attachedPaths.add(this),t=s.geometry.userData?.shape),t||this._context.scene.addPendingCommand(()=>this.updateShape())}}else if(null!==this._lastShape&&this._sameShapeParams(s))t=this._lastShape;else{let i;switch(s.type){case"Rectangle":i=p;break;case"Ellipse":i=h;break;case"Polygon":i=u;break;case"Star":i=e;break;default:throw new Error(`Unknown shape type: ${s.type}`)}t=i.create({parameters:s}).userData.shape,this._lastShapeParams=s,this._lastShape=t??null}let i=this.geometry;t&&i.inputs&&(i.inputs.shapeData=t,i.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?d(s,this.geometry.drawRange.start,this.geometry.drawRange.count<1/0?this.geometry.drawRange.count:s.count,e,t):super.updateEntityBoxSize(e,t)}},D=new P,k=new P,I=new P,O=new b,E=new b,R=new b,T=new b,z=new b,j=new b,F=new b,U=new WeakMap,G=new WeakMap,B=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 N=class extends M{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:e,matrices:t}=this._getSampledPath();if(e.length<2)return void V(this);let{depth:s,offset:i}=this.inputs.parameters.extrusion;s=Math.max(0,Math.min(s,1)),i=Math.max(0,Math.min(i,1));let n=this.inputs.path.isClosed?e.length:e.length-1,a=Math.floor(i*n),r=this.inputs.path.isClosed?Math.ceil((s+i)*n):Math.ceil(Math.min(1,s+i)*n),o=Math.min(Math.max(2,r-a+1),n+2),h=[],u=[];for(let s=0;s<o;s++){let i=this.inputs.path.isClosed?(s+a)%e.length:Math.min(s+a,e.length-1);h.push(e[i].clone()),u.push(t[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)},c=0,d=i*n%1;(!this.inputs.path.isClosed||s<=1)&&(d||0===i)&&(c=d,p(0,1,c));let m=0,g=(i+s)*n%1;if((this.inputs.path.isClosed&&s<=1||!this.inputs.path.isClosed&&i+s<1)&&g&&(m=g,p(h.length-1,h.length-2,1-m)),0===s){let e=h.length-1;h[e].copy(h[0]),u[e].copy(u[0])}this._applyPathModifiers(u,c,m);let{bevel:y,bevelSides:f}=this.inputs.parameters.extrusion,v=y>0?this.inputs.parameters.extrusion.capType:"flat",w=5;"Custom"===this.inputs.parameters.extrusion.shape.type&&(w="low"===this.inputs.parameters.extrusion.shape.shapeQuality?5:12);let S,{regions:_,infos:M,vertices:A}=this._getShapePoints(w),I=0;if("round"===v){let e=this.inputs.shapeData,t=B.get(e);void 0!==t&&t.bevel===y&&t.curveSegments===w&&t.bevelSides===f?S=t.geometry:(S=new l(e,2*y,y,w,f,void 0,!0),B.set(e,{bevel:y,curveSegments:w,bevelSides:f,geometry:S})),I=S.getAttribute("position").count}let O=0,E=0;M.sort((e,t)=>e.start-t.start),M.forEach(e=>{e.verticesStart=O,e.verticesCount=e.continuous.reduce((e,t,s)=>e+(0!==s&&t?1:2),0),E+=e.verticesCount,O=E});let R,T=E*o,z=0;this._isOpenEnded()&&"flat"===v&&(R=this._getSurfaceTesselation(_),z=R.vertexCount);let j=T+2*z+2*I,F=T+2*z,U={positions:new Float32Array(3*j),normals:new Float32Array(3*j),uvs:new Float32Array(2*j)},G=S?S.getIndex().array:null,N=0;M.forEach(e=>{N+=e.count});let H=N*(o-1)*6+(R?2*R.elementCount*3:0)+(G?2*G.length:0),Z=new Uint32Array(H),q=0;if(M.forEach(e=>{q=this._extrudeRegion(e,A,u,h,U,Z,q,this._isGeometryClosed()&&!this._isOpenEnded())}),R&&(q=this._closeEnd(R,T,Z,q,U,u[0],h[0],!1),q=this._closeEnd(R,T+z,Z,q,U,u[u.length-1],h[h.length-1],!0)),S){U.positions.set(S.getAttribute("position").array,3*F),U.normals.set(S.getAttribute("normal").array,3*F),U.uvs.set(S.getAttribute("uv").array,2*F);for(let e=F;e<F+I;e++)U.uvs[2*e+1]=1e-4;let e=q;for(let e=0;e<G.length;e++)Z[q++]=G[e]+F;F+=I,U.positions.set(S.getAttribute("position").array,3*F),U.normals.set(S.getAttribute("normal").array,3*F),U.uvs.set(S.getAttribute("uv").array,2*F);let t=q;for(let e=0;e<G.length;e++)Z[q++]=G[e]+F;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(Z);let s=D;s.copy(u[u.length-1]).setPosition(h[h.length-1]),this.applyMatrix4OnRange(s,F,j),s.copy(u[0]).setPosition(h[0]).multiply(k.makeScale(1,1,-1)),this.applyMatrix4OnRange(s,F-I,F),this.reverseIndicesOnRange(e,t)}else 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(Z)}_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=c(e),s=U.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},U.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[e.length-2]:O.copy(c).multiplyScalar(2).sub(e[1]):e[h-1],p=h===s-1?i?e[1]:O.copy(c).multiplyScalar(2).sub(e[h-1]):e[h+1],E.subVectors(c,u).normalize(),R.subVectors(p,c).normalize();let d=T.addVectors(E,R).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=F.crossVectors(d,m).normalize();l.copy(g),o.copy(m),0===h&&(n.copy(g),a.copy(d));let y=(new P).makeBasis(m,g,d);t.push(y)}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=s.ODD){let i=this.inputs.shapeData,n=G.get(i);return(void 0===n||n.curveSegments!==e||n.windingRule!==t)&&(n={curveSegments:e,windingRule:t,shapePoints:this._computeShapePoints(e,t)},G.set(i,n)),n.shapePoints}_getSurfaceTesselation(e){let t,a=G.get(this.inputs.shapeData);if(void 0!==a?.surfaceTesselation)return a.surfaceTesselation;try{t=n({windingRule:s.ODD,elementType:i.POLYGONS,polySize:3,vertexSize:2,strict:!0,contours:e})}catch{t=o}return void 0!==a&&(a.surfaceTesselation=t),t}_computeShapePoints(e=12,t=s.ODD){let o,l,h=this.inputs.shapeData,u=h.extractShapePointsToFlatArray([],e),p=h.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{o=n({windingRule:t,elementType:i.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[u]})}catch{o=a}try{l=n({windingRule:s.ODD,elementType:i.BOUNDARY_CONTOURS,vertexSize:2,strict:!0,contours:[...p]})}catch{l=r}if(!o)throw new Error("error generating geometry");let c=o.elementCount;if(l){o.elementCount+=l.elementCount;for(let e=0;e<l.elements.length;e++){let t=l.elements[e],s=e%2==0?o.vertexCount:0;o.elements.push(t+s)}for(let e=0;e<l.vertexIndices.length;e++){let t=l.vertexIndices[e],s=o.vertexCount;o.vertexIndices.push(t+s)}for(let e=0;e<l.vertices.length;e++){let t=l.vertices[e];o.vertices.push(t)}}let d=1/0,m=-1/0,g=1/0,y=-1/0;for(let e=0,t=o.vertexCount;e<t;e++){let t=2*e,s=o.vertices[t+0],i=o.vertices[t+1];s<d&&(d=s),s>m&&(m=s),i<g&&(g=i),i>y&&(y=i)}let f=[];for(let e=o.elementCount-1;e>=0;e--){let t=e>=c,s=2*e,i=o.elements[s+0],n=o.elements[s+1],a=i+n,r={start:i,count:n,normals:[],isHole:t,continuous:[],verticesStart:0,verticesCount:0};f.push(r);let l=i,u=a-1,p=i+1,d=h.roundedCurves.length;do{let e=l-i,s=o.vertices[2*u+0],c=o.vertices[2*u+1],m=o.vertices[2*l+0],g=o.vertices[2*l+1],y=o.vertices[2*p+0],f=o.vertices[2*p+1],v=m-s,w=g-c,x=Math.sqrt(v*v+w*w);v/=x,w/=x;let S=m-y,b=g-f,_=Math.sqrt(S*S+b*b);S/=_,b/=_,r.normals[2*e+0]=-b,r.normals[2*e+1]=S;let P=o.vertexIndices[l];if(Array.isArray(P))r.continuous[e]=!1;else{let[t,s]=h.getCurveIndexFromVertexId(P-1,!0);if(s>0&&s<1)r.continuous[e]=!0;else{let i=1===s?t+1:t-1;i=(i+d)%d;let n=1===s?0:1,a=h.roundedCurves[t].getTangent(s),o=h.roundedCurves[i].getTangent(n);r.continuous[e]=a.dot(o)>.95}}t&&(r.normals[2*e+0]*=-1,r.normals[2*e+1]*=-1),[u,l,p]=[l,p,p+1],p>=a&&(p-=n)}while(p!==i+1)}return{regions:[u,...p],infos:f,vertices:o.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],y=n[6],f=n[12],v=n[13],w=n[14],x=i[t],S=t/(h-1),b=0,_=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];b=a*t+m*s+f+x.x,_=r*t+g*s+v+x.y,P=o*t+y*s+w+x.z}let t=l[e+2],s=l[e+3],i=a*t+m*s+f,n=r*t+g*s+v,h=o*t+y*s+w,u=1/(Math.sqrt(i*i+n*n+h*h)||1);i*=u,n*=u,h*=u;let M=2*C,A=3*C;p[A+0]=b,p[A+1]=_,p[A+2]=P,c[A+0]=i,c[A+1]=n,c[A+2]=h,d[M+0]=l[e+4],d[M+1]=S,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,y=m.length,f=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<y;e+=2){let t=s+m[e],n=s+m[e+1],o=i+m[e+1],l=i+m[e];f?(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 S;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}applyMatrix4OnRange(e,t,s){let i,n,a,r,o=e.elements,l=(new _).getNormalMatrix(e).elements,h=this.attributes.position,u=this.attributes.normal;if(!h||!u)return;let p=h.array,c=u.array,d=h.itemSize;for(let e=t*d,h=s*d;e<h;e+=d)i=p[e+0],n=p[e+1],a=p[e+2],r=1/(o[3]*i+o[7]*n+o[11]*a+o[15]),p[e+0]=(o[0]*i+o[4]*n+o[8]*a+o[12])*r,p[e+1]=(o[1]*i+o[5]*n+o[9]*a+o[13])*r,p[e+2]=(o[2]*i+o[6]*n+o[10]*a+o[14])*r,i=c[e+0],n=c[e+1],a=c[e+2],c[e+0]=l[0]*i+l[3]*n+l[6]*a,c[e+1]=l[1]*i+l[4]*n+l[7]*a,c[e+2]=l[2]*i+l[5]*n+l[8]*a;h.needsUpdate=!0,u.needsUpdate=!0}reverseIndicesOnRange(e,t){let s=this.index;if(s){for(let i=e;i<t;i+=3){let e=s.getX(i),t=s.getX(i+1),n=s.getX(i+2);s.setXYZ(i,n,t,e)}s.needsUpdate=!0}}};g("PathGeometry",(e,t,s)=>new A(e,t,s)),y("PathGeometry",class{static create(e){return this.build(this.normalizeInputs(e))}static normalizeInputs(e,t){let s=Object.assign({},t?.parameters??{width:100,height:100,depth:1,subdivisions:12,roundness:0,extrudeBevelSize:0,extrudeBevelSegments:3},e.parameters),i=Math.abs(s.width),n=Math.abs(s.height??s.width),a=Math.abs(s.depth??0),r=t?.shapeData??h.create({parameters:{...v,width:"number"==typeof v.width?v.width:100,height:"number"==typeof v.height?v.height:100}}).userData.shape;return{path:e.path??f.defaultData(),parameters:Object.assign(s,{width:i,height:n,depth:a,extrusion:{...w,...s.extrusion}}),shapeData:r}}static build(e){if(e.path.points.length>=2){let t=new N(e);return Object.assign(t,{userData:{...e,type:"PathGeometry"}})}{let t=new M;return V(t),Object.assign(t,{userData:{...e,type:"PathGeometry"}})}}}),m("3d-paths");
@@ -1 +1 @@
1
- import{h as t}from"./runtime-chunk-ALDD75EK.js";import"./runtime-chunk-FYQSEYL5.js";import"./runtime-chunk-Q23Z6MJP.js";import"./runtime-chunk-TU4KDRKR.js";import{a as i,b as s}from"./runtime-chunk-DZNU62CT.js";import"./runtime-chunk-AVO7AFZY.js";import"./runtime-chunk-I5YVCEFL.js";import"./runtime-chunk-DA36J6OU.js";import"./runtime-chunk-BY4Y72LZ.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as e,g as a}from"./runtime-chunk-WGBR2HLR.js";import"./runtime-chunk-MQKKQEK3.js";import{f as n}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as r}from"./runtime-chunk-TZCHGFVF.js";import{u as o}from"./runtime-chunk-D3BWEUN6.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)}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.toggle()),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.toggle()})}},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-2S2NQ44M.js";import"./runtime-chunk-OUQPS3VD.js";import"./runtime-chunk-XUHTMJJD.js";import"./runtime-chunk-TU4KDRKR.js";import{a as i,b as s}from"./runtime-chunk-DZNU62CT.js";import"./runtime-chunk-WILQUYJ4.js";import"./runtime-chunk-VAANBQKN.js";import"./runtime-chunk-BEWQ5BW5.js";import"./runtime-chunk-HKFPEE5F.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as e,g as a}from"./runtime-chunk-WGBR2HLR.js";import"./runtime-chunk-A7IMJ4FJ.js";import{f as n}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as r}from"./runtime-chunk-TZCHGFVF.js";import{u as o}from"./runtime-chunk-D3BWEUN6.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)}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.toggle()),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.toggle()})}},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-4ENGAWL7.js";import"./runtime-chunk-ALDD75EK.js";import"./runtime-chunk-FYQSEYL5.js";import"./runtime-chunk-Q23Z6MJP.js";import"./runtime-chunk-TU4KDRKR.js";import"./runtime-chunk-AVO7AFZY.js";import"./runtime-chunk-I5YVCEFL.js";import"./runtime-chunk-DA36J6OU.js";import"./runtime-chunk-BY4Y72LZ.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{b as e,e as i}from"./runtime-chunk-WGBR2HLR.js";import"./runtime-chunk-MQKKQEK3.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.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-F5CUMYOK.js";import"./runtime-chunk-2S2NQ44M.js";import"./runtime-chunk-OUQPS3VD.js";import"./runtime-chunk-XUHTMJJD.js";import"./runtime-chunk-TU4KDRKR.js";import"./runtime-chunk-WILQUYJ4.js";import"./runtime-chunk-VAANBQKN.js";import"./runtime-chunk-BEWQ5BW5.js";import"./runtime-chunk-HKFPEE5F.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{b as e,e as i}from"./runtime-chunk-WGBR2HLR.js";import"./runtime-chunk-A7IMJ4FJ.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.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-NBYTQLIB.js";import{h as e}from"./runtime-chunk-ALDD75EK.js";import"./runtime-chunk-FYQSEYL5.js";import"./runtime-chunk-Q23Z6MJP.js";import"./runtime-chunk-TU4KDRKR.js";import{a as i,b as s}from"./runtime-chunk-DZNU62CT.js";import"./runtime-chunk-AVO7AFZY.js";import"./runtime-chunk-I5YVCEFL.js";import"./runtime-chunk-DA36J6OU.js";import"./runtime-chunk-BY4Y72LZ.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as n,g as o}from"./runtime-chunk-WGBR2HLR.js";import"./runtime-chunk-MQKKQEK3.js";import{f as r}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var h=class{constructor(t,e,i,s,o,r){this.id=t,this.data=e,this.object=i,this.scrollCounter=0,this.actions=n(e,e.actions,s,o,r,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())}},c=class{constructor(t,e,i,s,o,r,a){this.id=t,this.data=e,this.object=i,this.domElement=r,this.eventManager=a,this.scrollStart=0,this.scrollEnd=0,this.actions=n(e,e.actions,s,o,a,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 n=e.getBoundingClientRect(),o=window.getComputedStyle(t),r=parseFloat(o.marginTop)+parseFloat(o.marginBottom),a=parseFloat(o.top),h=parseFloat(o.bottom),c=n.height-r;if(isNaN(a)){if(!isNaN(h)){let t=document.body.clientHeight??window.innerHeight,e=window.innerWidth-(document.documentElement.clientWidth??window.innerWidth);i.bottom===t-h?(s.top+=n.top-i.height+h+e,s.bottom+=n.top-i.height+h+e):i.bottom<t-h&&(s.top-=c-i.height,s.bottom-=c-i.height)}}else i.top===a?(s.top+=n.top-a,s.bottom+=n.top-a):i.top<0&&(s.top-=c-i.height,s.bottom-=c-i.height)}let n=document.body,o=document.documentElement,r=window.pageYOffset||o.scrollTop||n.scrollTop,a=o.clientTop||n.clientTop||0,h=Math.round(s.top+r-a);if("enter"===this.data.startFrom){let t=window.innerHeight,e=s.height,i=this.data.enterAnchor,n="top"===i?t:"bottom"===i?t-e:t-.5*e;this.scrollStart=h-n}else this.scrollStart=0;this.scrollStart+=this.data.startOffset??0,this.scrollEnd=this.scrollStart+(this.data.endAfter??400),this.box=s,this.computeScroll({x:window.scrollX,y:window.scrollY})}connect(){this.computeScrollBounds()}disconnect(){o(this.actions)}handleResize(){this.computeScrollBounds()}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:t,y:e}){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())});let i=this.scrollEnd-this.scrollStart,s=Math.min(1,Math.max(0,(e-this.scrollStart)/i));this.actions.Transition.forEach(t=>t.seek(s)),this.actions.Animation.forEach(t=>t.seek(s)),this.actions.TimelineAnimation.forEach(t=>t.seek(s)),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())}},l=class extends i{constructor(e,i){super(e),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:e,target:i,reverse:s})=>{if(!e||!i)return;let n=t(e);n&&"Scroll"===n&&(i.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.wheelEventsPerObject.get(i)?.forEach(t=>{t.dispatchUserEvent(s)}))}}connect(){let{page:t,sharedAssets:i,domElement:s,isExport:n}=this.eventContext,o=e=>{if(e.data?.events.length)for(let{id:o,data:r}of e.data.events)if(!r.disabled&&"Scroll"===r.type)if("load"!==r.trigger&&n){let n=new c(o,r,e,t,i,s,this.managers);this.scrollEventsPerObject.has(e)?this.scrollEventsPerObject.get(e)?.push(n):this.scrollEventsPerObject.set(e,[n])}else{let s=new h(o,r,e,t,i,this.managers);this.wheelEventsPerObject.has(e)?this.wheelEventsPerObject.get(e)?.push(s):this.wheelEventsPerObject.set(e,[s])}};t.traverseEntity(t=>{(r(t)||t instanceof e)&&t.frame?.traverse(t=>{o(t)}),o(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)})}};s("Scroll",({eventContext:t,eventManager:e})=>new l(t,e)),a("scroll");
1
+ import{a as t}from"./runtime-chunk-NBYTQLIB.js";import{h as e}from"./runtime-chunk-2S2NQ44M.js";import"./runtime-chunk-OUQPS3VD.js";import"./runtime-chunk-XUHTMJJD.js";import"./runtime-chunk-TU4KDRKR.js";import{a as i,b as s}from"./runtime-chunk-DZNU62CT.js";import"./runtime-chunk-WILQUYJ4.js";import"./runtime-chunk-VAANBQKN.js";import"./runtime-chunk-BEWQ5BW5.js";import"./runtime-chunk-HKFPEE5F.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import{f as n,g as o}from"./runtime-chunk-WGBR2HLR.js";import"./runtime-chunk-A7IMJ4FJ.js";import{f as r}from"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";var h=class{constructor(t,e,i,s,o,r){this.id=t,this.data=e,this.object=i,this.scrollCounter=0,this.actions=n(e,e.actions,s,o,r,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())}},c=class{constructor(t,e,i,s,o,r,a){this.id=t,this.data=e,this.object=i,this.domElement=r,this.eventManager=a,this.scrollStart=0,this.scrollEnd=0,this.actions=n(e,e.actions,s,o,a,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 n=e.getBoundingClientRect(),o=window.getComputedStyle(t),r=parseFloat(o.marginTop)+parseFloat(o.marginBottom),a=parseFloat(o.top),h=parseFloat(o.bottom),c=n.height-r;if(isNaN(a)){if(!isNaN(h)){let t=document.body.clientHeight??window.innerHeight,e=window.innerWidth-(document.documentElement.clientWidth??window.innerWidth);i.bottom===t-h?(s.top+=n.top-i.height+h+e,s.bottom+=n.top-i.height+h+e):i.bottom<t-h&&(s.top-=c-i.height,s.bottom-=c-i.height)}}else i.top===a?(s.top+=n.top-a,s.bottom+=n.top-a):i.top<0&&(s.top-=c-i.height,s.bottom-=c-i.height)}let n=document.body,o=document.documentElement,r=window.pageYOffset||o.scrollTop||n.scrollTop,a=o.clientTop||n.clientTop||0,h=Math.round(s.top+r-a);if("enter"===this.data.startFrom){let t=window.innerHeight,e=s.height,i=this.data.enterAnchor,n="top"===i?t:"bottom"===i?t-e:t-.5*e;this.scrollStart=h-n}else this.scrollStart=0;this.scrollStart+=this.data.startOffset??0,this.scrollEnd=this.scrollStart+(this.data.endAfter??400),this.box=s,this.computeScroll({x:window.scrollX,y:window.scrollY})}connect(){this.computeScrollBounds()}disconnect(){o(this.actions)}handleResize(){this.computeScrollBounds()}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:t,y:e}){this.actions.Transition.forEach(t=>{t.object.currentTransitionEvent!==this&&(t.object.currentTransitionEvent=this,t.init())});let i=this.scrollEnd-this.scrollStart,s=Math.min(1,Math.max(0,(e-this.scrollStart)/i));this.actions.Transition.forEach(t=>t.seek(s)),this.actions.Animation.forEach(t=>t.seek(s)),this.actions.TimelineAnimation.forEach(t=>t.seek(s)),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())}},l=class extends i{constructor(e,i){super(e),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:e,target:i,reverse:s})=>{if(!e||!i)return;let n=t(e);n&&"Scroll"===n&&(i.dispatchEvent({type:"beginEvent",eventName:"Scroll"}),this.wheelEventsPerObject.get(i)?.forEach(t=>{t.dispatchUserEvent(s)}))}}connect(){let{page:t,sharedAssets:i,domElement:s,isExport:n}=this.eventContext,o=e=>{if(e.data?.events.length)for(let{id:o,data:r}of e.data.events)if(!r.disabled&&"Scroll"===r.type)if("load"!==r.trigger&&n){let n=new c(o,r,e,t,i,s,this.managers);this.scrollEventsPerObject.has(e)?this.scrollEventsPerObject.get(e)?.push(n):this.scrollEventsPerObject.set(e,[n])}else{let s=new h(o,r,e,t,i,this.managers);this.wheelEventsPerObject.has(e)?this.wheelEventsPerObject.get(e)?.push(s):this.wheelEventsPerObject.set(e,[s])}};t.traverseEntity(t=>{(r(t)||t instanceof e)&&t.frame?.traverse(t=>{o(t)}),o(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)})}};s("Scroll",({eventContext:t,eventManager:e})=>new l(t,e)),a("scroll");
@@ -0,0 +1 @@
1
+ import{k as m}from"./runtime-chunk-ITI3UXPR.js";import"./runtime-chunk-JIIVUL2M.js";import"./runtime-chunk-QMMGYOLW.js";import"./runtime-chunk-2GAIM5RJ.js";import"./runtime-chunk-YH55FWRI.js";import"./runtime-chunk-VAANBQKN.js";import"./runtime-chunk-WWYY25M2.js";import"./runtime-chunk-BEWQ5BW5.js";import"./runtime-chunk-HKFPEE5F.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import"./runtime-chunk-A7IMJ4FJ.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as n,f as r}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.js";import"./runtime-chunk-BVVSZMXD.js";import"./runtime-chunk-ML3Z74BL.js";r("ShapeBlendGeometry",(n,r,t)=>new m(n,r,t)),n("shape-blends");
@@ -1 +1 @@
1
- import{a as t}from"./runtime-chunk-CUGQPKPQ.js";import{a as e,b as r}from"./runtime-chunk-T53JMQSH.js";import{B as i,n}from"./runtime-chunk-BY4Y72LZ.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import"./runtime-chunk-MQKKQEK3.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as s,f as a,h as o}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.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");
1
+ import{a as t}from"./runtime-chunk-QMMGYOLW.js";import{a as e,b as r}from"./runtime-chunk-T53JMQSH.js";import{B as i,n}from"./runtime-chunk-HKFPEE5F.js";import"./runtime-chunk-4YV3EXSU.js";import"./runtime-chunk-NSD7DU3P.js";import"./runtime-chunk-A7IMJ4FJ.js";import"./runtime-chunk-2PT2WH66.js";import"./runtime-chunk-4KZXQGUQ.js";import"./runtime-chunk-VGEECQH4.js";import{a as s,f as a,h as o}from"./runtime-chunk-TZCHGFVF.js";import"./runtime-chunk-D3BWEUN6.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");