@cimplify/sdk 0.109.0 → 0.110.2

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 (337) hide show
  1. package/dist/advanced.d.mts +4 -4
  2. package/dist/advanced.d.ts +4 -4
  3. package/dist/{audio-XU2sFNyO.d.mts → audio-DhvyjqdA.d.mts} +2 -2
  4. package/dist/{audio-8Igdy2WK.d.ts → audio-m0w8cnxq.d.ts} +2 -2
  5. package/dist/avatars.js +21 -21
  6. package/dist/avatars.mjs +3 -3
  7. package/dist/{backend-L4d_Ha0J.d.mts → backend-gUCzs5Kg.d.mts} +16 -2
  8. package/dist/{backend-L4d_Ha0J.d.ts → backend-gUCzs5Kg.d.ts} +16 -2
  9. package/dist/{catalogue-BeBFWlHF.d.mts → catalogue-CPTMyBUz.d.mts} +2 -2
  10. package/dist/{catalogue-DLLsfuNg.d.ts → catalogue-OTuS5zp-.d.ts} +2 -2
  11. package/dist/{chunk-HF2MZKP2.mjs → chunk-22BD3RHN.mjs} +6 -3
  12. package/dist/{chunk-B54P6RL2.js → chunk-2AQ237Y4.js} +30 -30
  13. package/dist/{chunk-W3VVG4NL.js → chunk-2O2CG465.js} +14 -2
  14. package/dist/{chunk-UPHTPBNQ.mjs → chunk-2QTQ6BUH.mjs} +1 -1
  15. package/dist/{chunk-BS65NRDW.js → chunk-3S6WPBZL.js} +16 -16
  16. package/dist/{chunk-PEZYNYJE.js → chunk-3TUOUP5T.js} +3 -3
  17. package/dist/{chunk-EB6EAOM5.mjs → chunk-3VEH23I5.mjs} +7 -10
  18. package/dist/{chunk-FB6YH2WW.js → chunk-4C7I3ELN.js} +4 -4
  19. package/dist/{chunk-UQYO3OM7.js → chunk-4ZDR72SG.js} +1 -2
  20. package/dist/{chunk-HPKKCUHU.js → chunk-52YS45RR.js} +13 -13
  21. package/dist/{chunk-6YVELDFK.mjs → chunk-5BYDGGWO.mjs} +1 -1
  22. package/dist/{chunk-YN24DET4.js → chunk-5HFMY3D7.js} +10 -10
  23. package/dist/{chunk-4CVB2ZTC.js → chunk-5LH2QN3T.js} +32 -29
  24. package/dist/{chunk-4A24F4ZV.mjs → chunk-5YFBGGCK.mjs} +4 -1
  25. package/dist/{chunk-NLAT3DB2.mjs → chunk-6DAEZKIG.mjs} +1 -1
  26. package/dist/{chunk-F6CHJXXK.mjs → chunk-6DATW7TB.mjs} +3 -3
  27. package/dist/{chunk-4RYATNVK.mjs → chunk-6H254EVP.mjs} +6 -11
  28. package/dist/{chunk-32U4BVJA.mjs → chunk-6PJWXIFX.mjs} +1 -1
  29. package/dist/{chunk-BHAGIIBI.js → chunk-6WUBSMTX.js} +82 -85
  30. package/dist/{chunk-EPYFN2A3.js → chunk-7AAIAVAA.js} +24 -20
  31. package/dist/{chunk-HZC27ICH.mjs → chunk-7BHW5GTC.mjs} +3 -3
  32. package/dist/{chunk-MB425DVA.mjs → chunk-7IQQQENP.mjs} +2 -2
  33. package/dist/{chunk-DJUUL67Z.js → chunk-7KFTYENS.js} +296 -296
  34. package/dist/{chunk-XLQSNQMP.js → chunk-7SM6XSPZ.js} +339 -339
  35. package/dist/{chunk-NBH64BDP.mjs → chunk-A33OORT7.mjs} +13 -1
  36. package/dist/{chunk-G2SXLGFY.js → chunk-A7BU3BK4.js} +7 -7
  37. package/dist/{chunk-ZNWS7NOW.mjs → chunk-A7V4L2IT.mjs} +2 -2
  38. package/dist/{chunk-O3SITS4R.mjs → chunk-AGV33FWC.mjs} +4 -4
  39. package/dist/{chunk-Z2DE3EHS.js → chunk-AHNR3BXI.js} +7 -7
  40. package/dist/{chunk-UQ4BHMLS.mjs → chunk-AQ5RLBU2.mjs} +5 -5
  41. package/dist/{chunk-J4HU2YQB.js → chunk-AQOE6WCG.js} +2 -2
  42. package/dist/{chunk-X57B7VQC.js → chunk-AYJPHKYV.js} +22 -22
  43. package/dist/{chunk-6XTWY6MH.js → chunk-AZAXD44P.js} +126 -42
  44. package/dist/{chunk-QDW4EPWS.mjs → chunk-BBGKQIJJ.mjs} +1 -1
  45. package/dist/{chunk-NHYTO4VU.js → chunk-BP4JLSUA.js} +111 -120
  46. package/dist/{chunk-7INQVOHY.mjs → chunk-BU6OK542.mjs} +25 -8
  47. package/dist/{chunk-W23VX5MY.js → chunk-CVSRWM6W.js} +5 -5
  48. package/dist/{chunk-A7DK7QAG.mjs → chunk-CYBMFMJD.mjs} +1 -1
  49. package/dist/{chunk-BOTUAHP2.mjs → chunk-DS2VU4WW.mjs} +5 -20
  50. package/dist/{chunk-HMMFNLXZ.js → chunk-DSAG7T5P.js} +2 -2
  51. package/dist/{chunk-7GG4KNTL.mjs → chunk-E65WCTIG.mjs} +8 -4
  52. package/dist/{chunk-WXDVEXTW.mjs → chunk-ECDK6QBF.mjs} +1 -1
  53. package/dist/{chunk-5IRV36MS.mjs → chunk-EIB4OWVQ.mjs} +1 -1
  54. package/dist/{chunk-JLJ4FD5H.js → chunk-EQUZYCGO.js} +18 -18
  55. package/dist/{chunk-AKTWH3KJ.mjs → chunk-F3UJ6ZRM.mjs} +2 -2
  56. package/dist/{chunk-J6HRY5EQ.js → chunk-F63N2ZTQ.js} +232 -232
  57. package/dist/{chunk-MUEFTPNN.js → chunk-FE6VCE4K.js} +34 -34
  58. package/dist/{chunk-2UYTS7SL.mjs → chunk-GCX7TY4D.mjs} +16 -16
  59. package/dist/{chunk-QDLMIHUH.js → chunk-GDB6TCSD.js} +7 -7
  60. package/dist/{chunk-7S7LDFGH.js → chunk-GDZT5LZ5.js} +12 -12
  61. package/dist/{chunk-TB2LS4CE.mjs → chunk-GHS6MIL6.mjs} +7 -11
  62. package/dist/{chunk-7OHZ56N7.mjs → chunk-GXKI64OT.mjs} +4 -4
  63. package/dist/{chunk-HRSIIDOZ.js → chunk-H3OQKK6X.js} +41 -41
  64. package/dist/{chunk-56BM75QX.js → chunk-H5DFSCJ6.js} +2 -2
  65. package/dist/{chunk-LMK775I4.mjs → chunk-HAGEIC2L.mjs} +1 -1
  66. package/dist/{chunk-6FZDMICK.js → chunk-HAJ4JRFO.js} +15 -15
  67. package/dist/{chunk-AWR2G5QN.js → chunk-HDR72GB6.js} +6 -11
  68. package/dist/{chunk-PTT6KIM6.js → chunk-HSEO6TPU.js} +9 -9
  69. package/dist/{chunk-CQSA2D2O.js → chunk-I5FOHCLH.js} +4 -31
  70. package/dist/{chunk-TMFB55IR.js → chunk-J2U6PJSO.js} +3 -30
  71. package/dist/{chunk-W77VO6LP.js → chunk-J5AJNY2N.js} +13 -13
  72. package/dist/{chunk-UKA7LHIT.js → chunk-JR3TNEQC.js} +98 -98
  73. package/dist/{chunk-P2O34BIO.mjs → chunk-JURRXY2J.mjs} +1 -1
  74. package/dist/{chunk-PKMVOVUA.mjs → chunk-K3HW5I2A.mjs} +1 -1
  75. package/dist/{chunk-BXUGKBMK.mjs → chunk-KDQOR4QQ.mjs} +1 -14
  76. package/dist/{chunk-KVZSYGTX.mjs → chunk-KGHJH5KJ.mjs} +1 -1
  77. package/dist/{chunk-3AKWZF3X.mjs → chunk-KK6HYVBI.mjs} +1 -1
  78. package/dist/{chunk-K6GK5B5J.js → chunk-KMKWGXMK.js} +6 -6
  79. package/dist/{chunk-EH4UG7IL.mjs → chunk-KU7O4IXU.mjs} +4 -4
  80. package/dist/{chunk-IHRMR3WV.mjs → chunk-KVFNRJOR.mjs} +9 -9
  81. package/dist/{chunk-HBZQ5HSV.mjs → chunk-LIV3KXJG.mjs} +1 -1
  82. package/dist/{chunk-S75PBSSL.mjs → chunk-ME6HGG4I.mjs} +92 -8
  83. package/dist/{chunk-FKYZCXFM.js → chunk-MIPO6F72.js} +3 -3
  84. package/dist/{chunk-MFWIHTEN.js → chunk-MTIHEW2M.js} +5 -5
  85. package/dist/{chunk-M53GR3ZV.mjs → chunk-NHJUGZUR.mjs} +43 -5
  86. package/dist/{chunk-FAYK2MN6.js → chunk-NZTKLY2W.js} +14 -18
  87. package/dist/{chunk-EQW6PFC2.js → chunk-O2ICABUD.js} +2 -2
  88. package/dist/{chunk-5PW6DVHF.js → chunk-OIVVQQ22.js} +55 -37
  89. package/dist/{chunk-GBJ5CW3A.js → chunk-PKOZXD2Q.js} +30 -30
  90. package/dist/{chunk-NGN3JE5A.js → chunk-PQTQKNKD.js} +16 -7
  91. package/dist/{chunk-PCVVQNBD.js → chunk-QS6TRHMR.js} +5 -5
  92. package/dist/{chunk-DXZZ27CV.js → chunk-RKBLPGPV.js} +245 -207
  93. package/dist/{chunk-765P2G7G.mjs → chunk-RUVGVNOF.mjs} +1 -1
  94. package/dist/{chunk-NJ7ZWH4U.mjs → chunk-SAFJIGYB.mjs} +1 -1
  95. package/dist/{chunk-AOPH2IZV.js → chunk-SKQFLBDD.js} +60 -22
  96. package/dist/{chunk-BUUA5XJV.js → chunk-TWM6DLYF.js} +2 -2
  97. package/dist/{chunk-YPL5TKI4.mjs → chunk-U6UVWEAK.mjs} +1 -1
  98. package/dist/{chunk-6YQDHXPL.mjs → chunk-UCEPNO6N.mjs} +46 -9
  99. package/dist/{chunk-U7RULAEP.mjs → chunk-UG5BTOTF.mjs} +2 -2
  100. package/dist/{chunk-MITGBWV7.mjs → chunk-UGH37BQW.mjs} +1 -1
  101. package/dist/{chunk-URRZ2SMI.mjs → chunk-V7ZRH3PY.mjs} +2 -2
  102. package/dist/{chunk-3H76N7G5.mjs → chunk-VBGHBL3E.mjs} +8 -17
  103. package/dist/{chunk-AZC2LTUI.js → chunk-VVE3Y76O.js} +2 -2
  104. package/dist/{chunk-BRAA7U3I.mjs → chunk-W65JIRI4.mjs} +1 -1
  105. package/dist/{chunk-KU4EDEKA.js → chunk-WKWTDZS7.js} +9 -9
  106. package/dist/{chunk-NTTHAXHI.js → chunk-X5A5FOWW.js} +11 -8
  107. package/dist/{chunk-ODL55PYL.mjs → chunk-XD2PMH46.mjs} +16 -7
  108. package/dist/{chunk-OADW5BSV.js → chunk-XK6UDWJS.js} +2 -2
  109. package/dist/{chunk-7ZTEVNXO.mjs → chunk-Y65LXQGA.mjs} +8 -8
  110. package/dist/{chunk-Z3PGQRTX.mjs → chunk-Y66WVMO5.mjs} +3 -30
  111. package/dist/{chunk-VZAJDN5C.mjs → chunk-Y7JWLB25.mjs} +1 -1
  112. package/dist/{chunk-ZJGPD42I.js → chunk-YCDXAJKU.js} +3 -3
  113. package/dist/{chunk-NCTLCSLE.mjs → chunk-Z3A3AFVU.mjs} +1 -1
  114. package/dist/{chunk-AEEF3T2E.mjs → chunk-ZCY6YKKP.mjs} +3 -3
  115. package/dist/{chunk-M5FWHML6.js → chunk-ZMIL4ZOA.js} +5 -18
  116. package/dist/{chunk-D3JMTFOX.mjs → chunk-ZR5ULMN2.mjs} +1 -1
  117. package/dist/{client-CO8lw80Q.d.mts → client-CX_WR0-J.d.mts} +2 -2
  118. package/dist/{client-C9hsiaki.d.ts → client-dqOhP9Nc.d.ts} +2 -2
  119. package/dist/{courier-CJasuxTU.d.ts → courier-Cnn-edJ4.d.ts} +5 -5
  120. package/dist/{courier-C2Vo2VlH.d.mts → courier-FmGfkvIN.d.mts} +5 -5
  121. package/dist/{crowd-D1ljcic8.d.ts → crowd-DdHFbqKK.d.ts} +1 -1
  122. package/dist/{crowd-B37S1apB.d.mts → crowd-hOVSAmA3.d.mts} +1 -1
  123. package/dist/{danfo-BsaPzhGi.d.mts → danfo-BEBapFlX.d.mts} +3 -3
  124. package/dist/{danfo-CCv23CPy.d.ts → danfo-UQ_PTIIx.d.ts} +3 -3
  125. package/dist/{elements-Bsfk7CPw.d.ts → elements-DdsRig-2.d.mts} +20 -0
  126. package/dist/{elements-Bsfk7CPw.d.mts → elements-DdsRig-2.d.ts} +20 -0
  127. package/dist/engines/godot.d.mts +1 -1
  128. package/dist/engines/godot.d.ts +1 -1
  129. package/dist/engines/wasm.d.mts +1 -1
  130. package/dist/engines/wasm.d.ts +1 -1
  131. package/dist/fallback-KDB4Y2CE.mjs +6 -0
  132. package/dist/fallback-Y26TQENE.js +19 -0
  133. package/dist/{five-a-side-DP84gMuh.d.mts → five-a-side-Bv1AOUy3.d.mts} +4 -4
  134. package/dist/{five-a-side-DO8SDqMb.d.ts → five-a-side-EC51SJY1.d.ts} +4 -4
  135. package/dist/{fluid-BkxNBD2t.d.ts → fluid-ARr0qUIL.d.ts} +168 -4
  136. package/dist/{fluid-BZ42EMds.d.mts → fluid-DLlEj2cs.d.mts} +168 -4
  137. package/dist/game/conformance.d.mts +7 -7
  138. package/dist/game/conformance.d.ts +7 -7
  139. package/dist/game/conformance.js +39 -41
  140. package/dist/game/conformance.mjs +17 -19
  141. package/dist/game/heap.d.mts +3 -3
  142. package/dist/game/heap.d.ts +3 -3
  143. package/dist/game/heap.js +13 -15
  144. package/dist/game/heap.mjs +4 -6
  145. package/dist/game/kit/canvas.d.mts +33 -34
  146. package/dist/game/kit/canvas.d.ts +33 -34
  147. package/dist/game/kit/canvas.js +569 -570
  148. package/dist/game/kit/canvas.mjs +52 -53
  149. package/dist/game/kit/courier.d.mts +9 -9
  150. package/dist/game/kit/courier.d.ts +9 -9
  151. package/dist/game/kit/courier.js +20 -20
  152. package/dist/game/kit/courier.mjs +17 -17
  153. package/dist/game/kit/danfo.d.mts +7 -7
  154. package/dist/game/kit/danfo.d.ts +7 -7
  155. package/dist/game/kit/danfo.js +30 -30
  156. package/dist/game/kit/danfo.mjs +15 -15
  157. package/dist/game/kit/engine.d.mts +12 -12
  158. package/dist/game/kit/engine.d.ts +12 -12
  159. package/dist/game/kit/engine.js +40 -41
  160. package/dist/game/kit/engine.mjs +11 -12
  161. package/dist/game/kit/five-a-side.d.mts +7 -7
  162. package/dist/game/kit/five-a-side.d.ts +7 -7
  163. package/dist/game/kit/five-a-side.js +24 -24
  164. package/dist/game/kit/five-a-side.mjs +14 -14
  165. package/dist/game/kit/frontier.d.mts +7 -7
  166. package/dist/game/kit/frontier.d.ts +7 -7
  167. package/dist/game/kit/genesis.d.mts +7 -7
  168. package/dist/game/kit/genesis.d.ts +7 -7
  169. package/dist/game/kit/ludo.d.mts +8 -8
  170. package/dist/game/kit/ludo.d.ts +8 -8
  171. package/dist/game/kit/ludo.js +24 -24
  172. package/dist/game/kit/ludo.mjs +14 -14
  173. package/dist/game/kit/runner.d.mts +8 -8
  174. package/dist/game/kit/runner.d.ts +8 -8
  175. package/dist/game/kit/runner.js +22 -22
  176. package/dist/game/kit/runner.mjs +14 -14
  177. package/dist/game/kit/shootout.d.mts +9 -9
  178. package/dist/game/kit/shootout.d.ts +9 -9
  179. package/dist/game/kit/shootout.js +33 -34
  180. package/dist/game/kit/shootout.mjs +18 -19
  181. package/dist/game/kit/tycoon.d.mts +9 -9
  182. package/dist/game/kit/tycoon.d.ts +9 -9
  183. package/dist/game/kit/tycoon.js +38 -38
  184. package/dist/game/kit/tycoon.mjs +14 -14
  185. package/dist/game/kit/word.d.mts +7 -7
  186. package/dist/game/kit/word.d.ts +7 -7
  187. package/dist/game/kit/word.js +22 -22
  188. package/dist/game/kit/word.mjs +14 -14
  189. package/dist/game/kit/worlds.d.mts +10 -10
  190. package/dist/game/kit/worlds.d.ts +10 -10
  191. package/dist/game/kit/worlds.js +22 -22
  192. package/dist/game/kit/worlds.mjs +17 -17
  193. package/dist/game/kit.d.mts +31 -32
  194. package/dist/game/kit.d.ts +31 -32
  195. package/dist/game/kit.js +523 -524
  196. package/dist/game/kit.mjs +38 -39
  197. package/dist/game/prepared.d.mts +6 -7
  198. package/dist/game/prepared.d.ts +6 -7
  199. package/dist/game/prepared.js +23 -24
  200. package/dist/game/prepared.mjs +12 -13
  201. package/dist/{game-BZAfgKV6.d.mts → game-Bx8onkhX.d.mts} +5 -97
  202. package/dist/{game-UoJWopvD.d.ts → game-fgQy2YIm.d.ts} +5 -97
  203. package/dist/game.d.mts +56 -18
  204. package/dist/game.d.ts +56 -18
  205. package/dist/game.js +922 -927
  206. package/dist/game.mjs +16 -17
  207. package/dist/{graphics-DNIAV5Mi.d.ts → graphics-C6YjWYvP.d.ts} +1 -1
  208. package/dist/{graphics-CGJDdtdT.d.mts → graphics-Dk2yQnYN.d.mts} +1 -1
  209. package/dist/{guest-CMCZeyh5.d.mts → guest-DrsA00XD.d.mts} +2 -7
  210. package/dist/{guest-CB458Hgw.d.ts → guest-wIdfoT05.d.ts} +2 -7
  211. package/dist/{hit-stop-D2Ca-i9-.d.mts → hit-stop-BKkVwTq7.d.mts} +1 -1
  212. package/dist/{hit-stop-Ca1OYk15.d.ts → hit-stop-D-8pPYnM.d.ts} +1 -1
  213. package/dist/{hot-B9BTmDz6.d.ts → hot-Crn9XpHJ.d.ts} +1 -1
  214. package/dist/{hot-B_L-GEHZ.d.mts → hot-DH3nOhQD.d.mts} +1 -1
  215. package/dist/{index-C3KORE2U.d.mts → index-6gkHMGAq.d.mts} +2 -2
  216. package/dist/{index-DPeyo938.d.ts → index-B8ybCKJI.d.ts} +3 -3
  217. package/dist/{index-DFDeJxFQ.d.ts → index-B98Xac8e.d.ts} +2 -2
  218. package/dist/{index-Cv_rL5X0.d.ts → index-B_ByTtIT.d.ts} +2 -2
  219. package/dist/{index-D8ZDzms9.d.mts → index-DHjNHb1c.d.mts} +3 -3
  220. package/dist/{index-C76o9Pj4.d.mts → index-DbAN_VQE.d.mts} +2 -2
  221. package/dist/index.d.mts +8 -8
  222. package/dist/index.d.ts +8 -8
  223. package/dist/interactives-authoring.js +12 -1
  224. package/dist/interactives-authoring.mjs +12 -1
  225. package/dist/interactives-canvas.global.js +14 -39
  226. package/dist/interactives-guest.d.mts +2 -2
  227. package/dist/interactives-guest.d.ts +2 -2
  228. package/dist/interactives-guest.js +10 -10
  229. package/dist/interactives-guest.mjs +6 -6
  230. package/dist/interactives-jsc.global.js +4 -23
  231. package/dist/interactives-meters.d.mts +11 -11
  232. package/dist/interactives-meters.d.ts +11 -11
  233. package/dist/interactives-meters.js +65 -66
  234. package/dist/interactives-meters.mjs +17 -18
  235. package/dist/interactives-production.d.mts +5 -5
  236. package/dist/interactives-production.d.ts +5 -5
  237. package/dist/interactives-production.js +15 -16
  238. package/dist/interactives-production.mjs +3 -4
  239. package/dist/interactives-record.d.mts +3 -9
  240. package/dist/interactives-record.d.ts +3 -9
  241. package/dist/interactives-record.js +45 -65
  242. package/dist/interactives-record.mjs +19 -39
  243. package/dist/interactives-runtime.d.mts +3 -3
  244. package/dist/interactives-runtime.d.ts +3 -3
  245. package/dist/interactives-runtime.js +101 -105
  246. package/dist/interactives-runtime.mjs +6 -6
  247. package/dist/interactives-studio-kernel.global.js +1 -1
  248. package/dist/interactives-studio.d.mts +7 -7
  249. package/dist/interactives-studio.d.ts +7 -7
  250. package/dist/interactives-studio.js +136 -82
  251. package/dist/interactives-studio.mjs +65 -11
  252. package/dist/interactives-web.d.mts +14 -14
  253. package/dist/interactives-web.d.ts +14 -14
  254. package/dist/interactives-web.js +201 -198
  255. package/dist/interactives-web.mjs +33 -34
  256. package/dist/interactives.d.mts +7 -28
  257. package/dist/interactives.d.ts +7 -28
  258. package/dist/interactives.js +267 -313
  259. package/dist/interactives.mjs +26 -24
  260. package/dist/{juice-Dfgc1B1q.d.ts → juice-CoHxlpKA.d.ts} +1 -1
  261. package/dist/{juice-CsnrmTOk.d.mts → juice-DQztFS43.d.mts} +1 -1
  262. package/dist/{launch-CCsmv8HC.d.mts → launch-T2f4_Di4.d.mts} +6 -6
  263. package/dist/{launch-8W_Tojpz.d.ts → launch-d6oreMzR.d.ts} +6 -6
  264. package/dist/{local-DA_HpPOj.d.mts → local-D8_I6UeL.d.mts} +0 -5
  265. package/dist/{local-_mD0x-p_.d.ts → local-VZkqsCzR.d.ts} +0 -5
  266. package/dist/{ludo-BVHycBP-.d.ts → ludo-B8ClkDqr.d.ts} +4 -4
  267. package/dist/{ludo-BRaTcI3E.d.mts → ludo-BOuohQ-M.d.mts} +4 -4
  268. package/dist/{native-CcMUV7rL.d.mts → native-BodxSh03.d.mts} +2 -2
  269. package/dist/{native-3f4Ht82c.d.ts → native-DUHMT8gA.d.ts} +2 -2
  270. package/dist/{online-CCy8pwOn.d.ts → online-XeymeM9s.d.ts} +1 -1
  271. package/dist/{online-smW2BO3Y.d.mts → online-d7W_Al9a.d.mts} +1 -1
  272. package/dist/{play-BhHHX1jD.d.ts → play-BRRlfLhX.d.ts} +5 -5
  273. package/dist/{play-Bn7NfGNE.d.mts → play-ClrMd_e8.d.mts} +5 -5
  274. package/dist/{policy-Dvnzg8ki.d.mts → policy-CCw8tXLm.d.mts} +19 -19
  275. package/dist/{policy-b3MVXMQu.d.ts → policy-CMqOSQIu.d.ts} +19 -19
  276. package/dist/{ports-CNeZdgVm.d.mts → ports-B_0v_P3A.d.mts} +1 -1
  277. package/dist/{ports-Vno6MDaR.d.ts → ports-CGU_3e_0.d.ts} +1 -1
  278. package/dist/{prefetch-BFg6lJyD.d.ts → prefetch-BHnicOQj.d.ts} +3 -3
  279. package/dist/{prefetch-BOoKX3qx.d.mts → prefetch-CBXgYacv.d.mts} +3 -3
  280. package/dist/{price-BIKJla_G.d.mts → price-BOzexBww.d.mts} +1 -1
  281. package/dist/{price-D1gE7Ek6.d.ts → price-C1h9sPxE.d.ts} +1 -1
  282. package/dist/react.d.mts +16 -16
  283. package/dist/react.d.ts +16 -16
  284. package/dist/react.js +29 -18
  285. package/dist/react.mjs +26 -15
  286. package/dist/{runner-BAG8EglP.d.ts → runner-CQcLL7By.d.ts} +6 -6
  287. package/dist/{runner-CKtKtIzc.d.mts → runner-D46Yj-wE.d.mts} +6 -6
  288. package/dist/{runtime-DfZp1Kwg.d.mts → runtime-BRWfkf_q.d.mts} +1 -8
  289. package/dist/{runtime-yHPgIJV-.d.ts → runtime-DyuBMkKM.d.ts} +1 -8
  290. package/dist/{scheduling-CnRAhWQL.d.ts → scheduling-D2ajXpMC.d.ts} +1 -1
  291. package/dist/{scheduling-lHyYoCa7.d.mts → scheduling-DSRbbaZb.d.mts} +1 -1
  292. package/dist/{server-DxcxjER1.d.ts → server-D29IIuDV.d.ts} +2 -2
  293. package/dist/{server-lU3Sznd4.d.mts → server-DQMWPnc8.d.mts} +2 -2
  294. package/dist/server.d.mts +4 -4
  295. package/dist/server.d.ts +4 -4
  296. package/dist/{shootout-rK-oblpb.d.ts → shootout-BJZeX6FG.d.ts} +6 -6
  297. package/dist/{shootout-D998OWa-.d.mts → shootout-tcZd1Rxt.d.mts} +6 -6
  298. package/dist/styles.css +1 -1
  299. package/dist/{template-Byaueo34.d.mts → template-AhCdB1kW.d.mts} +3 -3
  300. package/dist/{template-BXE2L654.d.ts → template-BkEGVTQj.d.ts} +3 -3
  301. package/dist/{terrain-vgYkJPNx.d.ts → terrain-BMxEc6Oc.d.ts} +3 -3
  302. package/dist/{terrain-CR0NQZPl.d.mts → terrain-C-XC1Oui.d.mts} +3 -3
  303. package/dist/testing/msw.d.mts +3 -3
  304. package/dist/testing/msw.d.ts +3 -3
  305. package/dist/testing/suite.d.mts +6 -6
  306. package/dist/testing/suite.d.ts +6 -6
  307. package/dist/testing.d.mts +5 -5
  308. package/dist/testing.d.ts +5 -5
  309. package/dist/{tick-transport-Q_8syS8J.d.mts → tick-transport-C8QEh8Uw.d.mts} +1 -1
  310. package/dist/{tick-transport-xpMcMTs2.d.ts → tick-transport-UjHY3xK1.d.ts} +1 -1
  311. package/dist/{tree-BsXFWKQ6.d.mts → tree-C-Io2Hbx.d.mts} +1 -1
  312. package/dist/{tree-DW9x29Vv.d.ts → tree-CP_qSW4H.d.ts} +1 -1
  313. package/dist/{tycoon-BMAE5Wea.d.mts → tycoon-B5KHk2Xx.d.mts} +5 -5
  314. package/dist/{tycoon-dWvWTbE4.d.ts → tycoon-hmHo-3HX.d.ts} +5 -5
  315. package/dist/{types-AkQEePZo.d.mts → types-BQkxPwZP.d.mts} +1 -1
  316. package/dist/{types-BWaZJDla.d.ts → types-D_f6UUxM.d.ts} +1 -1
  317. package/dist/utils.d.mts +3 -3
  318. package/dist/utils.d.ts +3 -3
  319. package/dist/{weave-delivery-3G03LdMM.d.mts → weave-delivery-CW-Kstut.d.mts} +10 -1
  320. package/dist/{weave-delivery-3G03LdMM.d.ts → weave-delivery-CW-Kstut.d.ts} +10 -1
  321. package/dist/{web-C8B9uVx_.d.ts → web-Dss74a7v.d.ts} +7 -7
  322. package/dist/{web-BqSEfX2o.d.mts → web-f9ZQPoyw.d.mts} +7 -7
  323. package/dist/{weight-BDABC8cN.d.ts → weight-CPGjsgjV.d.ts} +3 -3
  324. package/dist/{weight-Cee73u3d.d.mts → weight-tF1ODR1p.d.mts} +3 -3
  325. package/dist/{word-DB2CcI9q.d.mts → word-BcX9Jcmv.d.mts} +3 -3
  326. package/dist/{word-C1Q8oXuy.d.ts → word-C7sVPLHm.d.ts} +3 -3
  327. package/dist/{world-Bmh7K4tQ.d.ts → world-PvILHDR1.d.ts} +1 -1
  328. package/dist/{world-CPEjuctH.d.mts → world-qekkXjJv.d.mts} +1 -1
  329. package/dist/{worlds-ShY5h6Z_.d.ts → worlds-Br2Pb0Cs.d.ts} +6 -6
  330. package/dist/{worlds-CQgN3GnR.d.mts → worlds-D5ydYr7d.d.mts} +6 -6
  331. package/package.json +1 -1
  332. package/dist/chunk-2LKAOU3L.mjs +0 -96
  333. package/dist/chunk-UWPQL2IQ.js +0 -104
  334. package/dist/fallback-Q5YYIMVJ.js +0 -20
  335. package/dist/fallback-XGBE3RXC.mjs +0 -7
  336. package/dist/split-Di9wBpNx.d.mts +0 -68
  337. package/dist/split-Di9wBpNx.d.ts +0 -68
@@ -1,4 +1,4 @@
1
- import { events, setEmitRow, setPoolEngine, COMPUTE_SPACE_CPU, listPoolAddress, writeWideArg, hasData, COMPUTE_DEFERRED, routeEvents, readDataReport, dataTables, COMPUTE_STOPPED } from './chunk-7GG4KNTL.mjs';
1
+ import { events, setEmitRow, setPoolEngine, COMPUTE_SPACE_CPU, listPoolAddress, writeWideArg, hasData, COMPUTE_DEFERRED, routeEvents, readDataReport, dataTables, COMPUTE_STOPPED } from './chunk-E65WCTIG.mjs';
2
2
  import { noise3, noise2, parseProgram, STORAGE_F32, STORAGE_I32, STORAGE_U32, STORAGE_U8, isSimd, SIMD_TEMPS, CellGrid, QuerySearch, simdScalarize } from './chunk-MOBSBXVE.mjs';
3
3
  import { FMATH_CONSTANTS, Op, evalLane, KERNEL_EXPORT_NAMES, KERNEL_DATA_EXPORT_NAMES, ATTACH_SPAWN_TABLE, SPAWN_STATS_WORDS, ATTACH_UI, ATTACH_AUDIO, ATTACH_VOXELS, ATTACH_CHEMISTRY_GRID, DATA_REPORT_HEADER, RING_HEADER_WORDS, DEFAULT_EVENT_CAPACITY, crossRow, stageEndingOp, f32From, f32Bits, RING_COUNT, RING_DROPPED, XOP, xopRange, XOP_RANGE, laneSignature, XOP_GATHER, XOP_FIELD, XOP_QUERY, XOP_QSHAPE, XOP_QFILTER, XOP_QSTOP, CROSS_OP, DATA_LIST, DATA_KEYOF, DATA_ROWOF, DATA_FLOAD, DATA_ROWS, DATA_PGET, DATA_PSET, DATA_TALLY, DATA_SEND, DATA_PICK, QUERY_FILTERED, QUERY_SHAPE, recurSub, XOP_COMPONENTS_EDGES, LOOP_COUNT_F32, QUERY_SPHERE } from './chunk-SMK6JU2F.mjs';
4
4
  import { instantiateApproved } from './chunk-N4RGGDEL.mjs';
@@ -1,5 +1,5 @@
1
1
  import { addSceneCamera, BoxBatch, BOX_Y, BOX_SX, BOX_SY, BOX_SZ, BOX_X, BOX_Z } from './chunk-QDYFLATW.mjs';
2
- import { templateFrameStamp, digestInts } from './chunk-KVZSYGTX.mjs';
2
+ import { templateFrameStamp, digestInts } from './chunk-KGHJH5KJ.mjs';
3
3
  import { FRAME_STEP_SECONDS_SLOT } from './chunk-IDLW4NWA.mjs';
4
4
  import { __export } from './chunk-25T4JHEA.mjs';
5
5
 
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkEPYFN2A3_js = require('./chunk-EPYFN2A3.js');
4
- var chunkW3VVG4NL_js = require('./chunk-W3VVG4NL.js');
3
+ var chunk7AAIAVAA_js = require('./chunk-7AAIAVAA.js');
4
+ var chunk2O2CG465_js = require('./chunk-2O2CG465.js');
5
5
  var chunkPTRNO5UD_js = require('./chunk-PTRNO5UD.js');
6
6
  var chunk2V7IL4HC_js = require('./chunk-2V7IL4HC.js');
7
7
 
8
8
  // src/game/scenery/engine.ts
9
- var ENGINE_SPLAT_EXPORT_NAMES = [
9
+ var ENGINE_SPLAT_BODY_EXPORT_NAMES = ["engine_splat_edit", "engine_splat_bind", "engine_splat_hero_budget", "engine_splat_drape", "engine_splat_motion_rows", "engine_splat_motion"], ENGINE_SPLAT_EXPORT_NAMES = [
10
10
  "engine_splat_open",
11
11
  "engine_splat_close",
12
12
  "engine_splat_provide",
@@ -15,7 +15,37 @@ var ENGINE_SPLAT_EXPORT_NAMES = [
15
15
  "engine_splat_requests",
16
16
  "engine_splat_set_transform",
17
17
  "engine_splat_registers"
18
- ], NULL = 0, F32_BYTES = 4, EYE_OFFSET_BYTES = 0, TRANSFORM_OFFSET_BYTES = 16, SCRATCH_BYTES = (16) + 8 * (4);
18
+ ], NULL = 0, F32_BYTES = 4, EYE_OFFSET_BYTES = 0, TRANSFORM_OFFSET_BYTES = 16, BODY_OFFSET_BYTES = (16) + 8 * (4), BODY_WORDS = Math.max(3, 3, 14), SCRATCH_BYTES = BODY_OFFSET_BYTES + BODY_WORDS * (4);
19
+ function refused(what, code) {
20
+ if (code < 0) throw new chunk2V7IL4HC_js.GameError("invalid_argument", `the engine refused the ${what} (${code})`);
21
+ }
22
+ var EngineSceneryBodies = class {
23
+ constructor(exports, render, stage, stageOwned) {
24
+ this.exports = exports;
25
+ this.render = render;
26
+ this.stage = stage;
27
+ this.stageOwned = stageOwned;
28
+ }
29
+ edit(scene, region, values) {
30
+ refused("splat edit", this.exports.engine_splat_edit(scene, region, this.stage(values)));
31
+ }
32
+ bind(scene, root) {
33
+ refused("splat rig", this.exports.engine_splat_bind(scene, this.render(), root));
34
+ }
35
+ heroBudget(scene, caps) {
36
+ refused("hero budget", this.exports.engine_splat_hero_budget(scene, caps === null ? (0) : this.stage(caps)));
37
+ }
38
+ drape(scene, cloths, cloth, region, rest) {
39
+ let baked = rest === null ? (0) : this.stageOwned(new Uint8Array(rest.buffer, rest.byteOffset, rest.byteLength));
40
+ refused("splat drape", this.exports.engine_splat_drape(scene, cloths, cloth, region, baked, rest?.length ?? 0));
41
+ }
42
+ motionRows(scene) {
43
+ return this.exports.engine_splat_motion_rows(scene);
44
+ }
45
+ motion(scene, table, columns, reachMillimetres, mask) {
46
+ refused("splat motion", this.exports.engine_splat_motion(scene, table, columns === null ? (0) : this.stage(columns), reachMillimetres, mask));
47
+ }
48
+ };
19
49
  function engineSplatExports(runtime) {
20
50
  let symbols = runtime.symbols;
21
51
  return ENGINE_SPLAT_EXPORT_NAMES.every((name) => typeof symbols[name] == "function") ? symbols : null;
@@ -32,6 +62,14 @@ var EngineScenery = class {
32
62
  this.floats = new Float32Array(0);
33
63
  this.words = new Uint32Array(0);
34
64
  this.bytes = new Uint8Array(0);
65
+ let symbols = runtime.symbols;
66
+ this.bodies = ENGINE_SPLAT_BODY_EXPORT_NAMES.every((name) => typeof symbols[name] == "function") ? new EngineSceneryBodies(symbols, render, (values) => this.stageBody(values), (values) => this.stage(values)) : null;
67
+ }
68
+ stageBody(values) {
69
+ let pointer = this.ensureScratch() + BODY_OFFSET_BYTES;
70
+ this.views();
71
+ let at = pointer >>> 2;
72
+ return values instanceof Float32Array ? this.floats.set(values, at) : this.words.set(values, at), pointer;
35
73
  }
36
74
  views() {
37
75
  let buffer = this.runtime.memory.buffer;
@@ -39,12 +77,12 @@ var EngineScenery = class {
39
77
  }
40
78
  ensureScratch() {
41
79
  if (this.scratch !== (0)) return this.scratch;
42
- let bytes = Math.max(SCRATCH_BYTES, chunkW3VVG4NL_js.COLUMN_ALIGN), pointer = this.runtime.exports.engine_alloc(bytes, chunkW3VVG4NL_js.COLUMN_ALIGN);
80
+ let bytes = Math.max(SCRATCH_BYTES, chunk2O2CG465_js.COLUMN_ALIGN), pointer = this.runtime.exports.engine_alloc(bytes, chunk2O2CG465_js.COLUMN_ALIGN);
43
81
  if (pointer === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold scenery buffers");
44
82
  return this.scratch = pointer, this.scratchBytes = bytes, pointer;
45
83
  }
46
84
  stage(source) {
47
- let pointer = this.runtime.exports.engine_alloc(Math.max(source.byteLength, 1), chunkW3VVG4NL_js.COLUMN_ALIGN);
85
+ let pointer = this.runtime.exports.engine_alloc(Math.max(source.byteLength, 1), chunk2O2CG465_js.COLUMN_ALIGN);
48
86
  if (pointer === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold scenery data");
49
87
  return this.views(), this.bytes.set(source, pointer), pointer;
50
88
  }
@@ -83,10 +121,10 @@ var EngineScenery = class {
83
121
  registers(scene) {
84
122
  let pointer = this.exports.engine_splat_registers(scene);
85
123
  if (pointer === (0)) throw new chunk2V7IL4HC_js.GameError("unknown_resource", "scenery is closed");
86
- return this.views(), this.words.subarray(pointer >>> 2, (pointer >>> 2) + 16);
124
+ return this.views(), this.words.subarray(pointer >>> 2, (pointer >>> 2) + 20);
87
125
  }
88
126
  close(scene) {
89
- this.exports.engine_splat_close(scene, this.render()), this.live--, !(this.live > 0 || this.scratch === (0)) && (this.runtime.exports.engine_free(this.scratch, this.scratchBytes, chunkW3VVG4NL_js.COLUMN_ALIGN), this.scratch = (0), this.scratchBytes = 0);
127
+ this.exports.engine_splat_close(scene, this.render()), this.live--, !(this.live > 0 || this.scratch === (0)) && (this.runtime.exports.engine_free(this.scratch, this.scratchBytes, chunk2O2CG465_js.COLUMN_ALIGN), this.scratch = (0), this.scratchBytes = 0);
90
128
  }
91
129
  };
92
130
 
@@ -126,12 +164,12 @@ var EngineWorldStreaming = class {
126
164
  }
127
165
  ensure(block, bytes) {
128
166
  if (block.bytes >= bytes) return block.pointer;
129
- if (block.pointer !== (0) && this.runtime.exports.engine_free(block.pointer, block.bytes, chunkW3VVG4NL_js.COLUMN_ALIGN), block.bytes = Math.max(bytes, chunkW3VVG4NL_js.COLUMN_ALIGN), block.pointer = this.runtime.exports.engine_alloc(block.bytes, chunkW3VVG4NL_js.COLUMN_ALIGN), block.pointer === (0))
167
+ if (block.pointer !== (0) && this.runtime.exports.engine_free(block.pointer, block.bytes, chunk2O2CG465_js.COLUMN_ALIGN), block.bytes = Math.max(bytes, chunk2O2CG465_js.COLUMN_ALIGN), block.pointer = this.runtime.exports.engine_alloc(block.bytes, chunk2O2CG465_js.COLUMN_ALIGN), block.pointer === (0))
130
168
  throw block.bytes = 0, new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold world streaming buffers");
131
169
  return block.pointer;
132
170
  }
133
171
  stage(source) {
134
- let pointer = this.runtime.exports.engine_alloc(Math.max(source.byteLength, 1), chunkW3VVG4NL_js.COLUMN_ALIGN);
172
+ let pointer = this.runtime.exports.engine_alloc(Math.max(source.byteLength, 1), chunk2O2CG465_js.COLUMN_ALIGN);
135
173
  if (pointer === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold world data");
136
174
  return this.views(), this.bytes.set(source, pointer), pointer;
137
175
  }
@@ -153,7 +191,7 @@ var EngineWorldStreaming = class {
153
191
  return this.runtime.exports.engine_free(scratch, (64), 1), this.lazySupport;
154
192
  }
155
193
  open(world, materials, tier) {
156
- let list = this.ensure(this.scratch, Math.max(materials.length, chunkEPYFN2A3_js.STREAM_COLLIDER_FLOATS) * (4)), pointer = this.stage(world);
194
+ let list = this.ensure(this.scratch, Math.max(materials.length, chunk7AAIAVAA_js.STREAM_COLLIDER_FLOATS) * (4)), pointer = this.stage(world);
157
195
  this.views();
158
196
  for (let i = 0; i < materials.length; i++) this.words[(list >>> 2) + i] = materials[i];
159
197
  let stream = this.exports.engine_stream_open(this.render(), pointer, world.byteLength, list, materials.length, tier);
@@ -162,35 +200,35 @@ var EngineWorldStreaming = class {
162
200
  }
163
201
  provide(stream, pack) {
164
202
  let code = this.exports.engine_stream_provide(stream, this.stage(pack), pack.byteLength);
165
- if (code === chunkEPYFN2A3_js.STREAM_PACK_CONTENDED) return code;
203
+ if (code === chunk7AAIAVAA_js.STREAM_PACK_CONTENDED) return code;
166
204
  if (code < 0) throw new chunk2V7IL4HC_js.GameError("invalid_argument", `the engine refused a world pack (${code})`);
167
205
  return code;
168
206
  }
169
207
  update(stream, eye) {
170
- let pointer = this.ensure(this.eye, chunkEPYFN2A3_js.STREAM_EYE_FLOATS * (4));
208
+ let pointer = this.ensure(this.eye, chunk7AAIAVAA_js.STREAM_EYE_FLOATS * (4));
171
209
  this.views();
172
210
  let at = pointer >>> 2;
173
- for (let i = 0; i < chunkEPYFN2A3_js.STREAM_EYE_FLOATS; i++) this.floats[at + i] = eye[i];
211
+ for (let i = 0; i < chunk7AAIAVAA_js.STREAM_EYE_FLOATS; i++) this.floats[at + i] = eye[i];
174
212
  this.exports.engine_stream_update(stream, this.render(), pointer);
175
213
  }
176
214
  registers(stream) {
177
215
  let pointer = this.exports.engine_stream_registers(stream);
178
216
  if (pointer === (0)) throw new chunk2V7IL4HC_js.GameError("unknown_resource", "world stream is closed");
179
- return this.views(), this.words.subarray(pointer >>> 2, (pointer >>> 2) + chunkEPYFN2A3_js.STREAM_REGISTER_BLOCK_WORDS);
217
+ return this.views(), this.words.subarray(pointer >>> 2, (pointer >>> 2) + chunk7AAIAVAA_js.STREAM_REGISTER_BLOCK_WORDS);
180
218
  }
181
219
  openLogic(stream, stepSeconds, budget, actors) {
182
- this.ensure(this.actors, Math.max(actors, 1) * chunkEPYFN2A3_js.STREAM_ACTOR_FLOATS * (4)), this.ensure(this.ops, Math.max(budget, 1) * (4));
220
+ this.ensure(this.actors, Math.max(actors, 1) * chunk7AAIAVAA_js.STREAM_ACTOR_FLOATS * (4)), this.ensure(this.ops, Math.max(budget, 1) * (4));
183
221
  let radius = this.exports.engine_stream_open_logic(stream, stepSeconds, budget, actors);
184
222
  if (radius < 0) throw new chunk2V7IL4HC_js.GameError("invalid_argument", `the engine refused world colliders (${radius})`);
185
223
  return radius;
186
224
  }
187
225
  stepLogic(stream, actors, count, ops) {
188
- let actorPointer = this.ensure(this.actors, Math.max(count, 1) * chunkEPYFN2A3_js.STREAM_ACTOR_FLOATS * (4)), opsPointer = this.ensure(this.ops, Math.max(ops.length, 1) * (4));
226
+ let actorPointer = this.ensure(this.actors, Math.max(count, 1) * chunk7AAIAVAA_js.STREAM_ACTOR_FLOATS * (4)), opsPointer = this.ensure(this.ops, Math.max(ops.length, 1) * (4));
189
227
  this.views();
190
- let at = actorPointer >>> 2, floats = count * chunkEPYFN2A3_js.STREAM_ACTOR_FLOATS;
228
+ let at = actorPointer >>> 2, floats = count * chunk7AAIAVAA_js.STREAM_ACTOR_FLOATS;
191
229
  for (let i = 0; i < floats; i++) this.floats[at + i] = actors[i];
192
230
  let n = this.exports.engine_stream_step_logic(stream, actorPointer, count, opsPointer, ops.length);
193
- if (n === chunkEPYFN2A3_js.STREAM_PACK_CONTENDED) return n;
231
+ if (n === chunk7AAIAVAA_js.STREAM_PACK_CONTENDED) return n;
194
232
  if (n < 0) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", `world collider step failed (${n})`);
195
233
  this.views();
196
234
  let from = opsPointer >>> 2;
@@ -198,16 +236,16 @@ var EngineWorldStreaming = class {
198
236
  return n;
199
237
  }
200
238
  collider(stream, index, out) {
201
- let pointer = this.ensure(this.scratch, chunkEPYFN2A3_js.STREAM_COLLIDER_FLOATS * (4));
239
+ let pointer = this.ensure(this.scratch, chunk7AAIAVAA_js.STREAM_COLLIDER_FLOATS * (4));
202
240
  if (this.exports.engine_stream_collider(stream, index, pointer) < 0) throw new chunk2V7IL4HC_js.GameError("unknown_resource", `world collider ${index} does not exist`);
203
241
  this.views();
204
242
  let at = pointer >>> 2;
205
- for (let i = 0; i < chunkEPYFN2A3_js.STREAM_COLLIDER_FLOATS; i++) out[i] = this.floats[at + i];
243
+ for (let i = 0; i < chunk7AAIAVAA_js.STREAM_COLLIDER_FLOATS; i++) out[i] = this.floats[at + i];
206
244
  }
207
245
  close(stream) {
208
246
  chunkPTRNO5UD_js.noteInspectorStream((0)), this.exports.engine_stream_close(stream, this.render());
209
247
  for (let block of [this.eye, this.actors, this.ops, this.scratch])
210
- block.pointer !== (0) && this.runtime.exports.engine_free(block.pointer, block.bytes, chunkW3VVG4NL_js.COLUMN_ALIGN), block.pointer = (0), block.bytes = 0;
248
+ block.pointer !== (0) && this.runtime.exports.engine_free(block.pointer, block.bytes, chunk2O2CG465_js.COLUMN_ALIGN), block.pointer = (0), block.bytes = 0;
211
249
  }
212
250
  };
213
251
 
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkZ2DE3EHS_js = require('./chunk-Z2DE3EHS.js');
3
+ var chunkAHNR3BXI_js = require('./chunk-AHNR3BXI.js');
4
4
 
5
5
  // src/avatars/draw.ts
6
6
  var INK = [31, 26, 28], WHITE = [255, 255, 255], BLACK = [0, 0, 0], MOUTH = [122, 44, 52], BLUSH = [224, 106, 106], DEVICE = [201, 207, 214], COMIC_STROKE = 1.8, COMIC_STROKE_SMALL = 2.6, PRECISION = 100, BYTE_MAX = 255, HEX_RADIX = 16, MULBERRY_STEP = 1831565813, LUMA_R = 0.2126, LUMA_G = 0.7152, LUMA_B = 0.0722, HIGHLIGHT = 0.16, HIGHLIGHT_DARK = 0.1, SHADOW = 0.22, SHADOW_DARK = 0.06, DEPIGMENTED = [241, 216, 200], SCLERA = [251, 248, 244], UNIT = 4294967296;
@@ -352,7 +352,7 @@ function avatarRenderUrl(source, apiBase, options) {
352
352
  }
353
353
  }
354
354
  function drawnAvatarUri(source, options) {
355
- let face = chunkZ2DE3EHS_js.avatarFace(source);
355
+ let face = chunkAHNR3BXI_js.avatarFace(source);
356
356
  return face === null ? null : avatarSvgUri(avatarSvg(face, options));
357
357
  }
358
358
 
@@ -1,4 +1,4 @@
1
- import { DIGEST_BYTES, unhexAt, hexAt } from './chunk-URRZ2SMI.mjs';
1
+ import { DIGEST_BYTES, unhexAt, hexAt } from './chunk-V7ZRH3PY.mjs';
2
2
 
3
3
  // src/interactives/parts/format.ts
4
4
  var PART_MAGIC = 1414680643, PART_VERSION = 1, PART_HEADER_BYTES = 8, MANIFEST_MAGIC = 1296126019, MANIFEST_VERSION = 1, MANIFEST_HEADER_BYTES = 24, MANIFEST_PART_BYTES = DIGEST_BYTES + 8, SEGMENT_BYTES = 16, MAX_MANIFEST_PARTS = 65535, MAX_ASSET_BYTES = 512 * 1024 * 1024, PartKind = {
@@ -1,20 +1,20 @@
1
1
  import { allocatePrimitive, planeGeometry, primitiveDesc } from './chunk-GHPUYD4I.mjs';
2
2
  import { fsin, fcos, fpow, fatan2, uaddCarry, usubBorrow, umulhi, fexp, facos, fasin, flog, STARTER_CATALOGUE } from './chunk-TJCAE7RC.mjs';
3
3
  import { LOCKSTEP_INPUT_ACTION, decodeLockstepRecord } from './chunk-RQXN5A34.mjs';
4
- import { CurveKind, kernel, registerNativeTwin, skill, sight, input, encodeArchetype, deterministicCos, curve2, consider, behaviour2, archetype, actionIndex, action2, GameAi, DEFAULT_STEERING, DEFAULT_SKILL, lenSq, vec2, add, despawn, gradient, curve, len, CHEMISTRY_GROUPS, clamp, defaultKernelRunner, lerp, scale, dot, sub, qrotate, qconj, cross, normalize, qmul, lut, hash32, rand01, negate } from './chunk-IHRMR3WV.mjs';
4
+ import { CurveKind, kernel, registerNativeTwin, skill, sight, input, encodeArchetype, deterministicCos, curve2, consider, behaviour2, archetype, actionIndex, action2, GameAi, DEFAULT_STEERING, DEFAULT_SKILL, lenSq, vec2, add, despawn, gradient, curve, len, CHEMISTRY_GROUPS, clamp, defaultKernelRunner, lerp, scale, dot, sub, qrotate, qconj, cross, normalize, qmul, lut, hash32, rand01, negate } from './chunk-KVFNRJOR.mjs';
5
5
  import { Ease, ease } from './chunk-KDTVOLHI.mjs';
6
- import { SeededRandom, StreamPredictor } from './chunk-HF2MZKP2.mjs';
7
- import { PrefetchLayer, FLOW_WORDS } from './chunk-6YVELDFK.mjs';
8
- import { BRUSH, TERRAIN_REGISTER, TERRAIN_SOURCE, NOISE } from './chunk-HZC27ICH.mjs';
9
- import { PHASE_WINDUP, PHASE_STRIKE, PHASE_RECOVER, PHASE_IDLE, BUILTIN_INPUTS, AiEventKind, AI_NONE, AI_MAX_GAME_SLOTS, AI_EVENT_WORDS, compileWasmKernel, wasmKernelImports } from './chunk-765P2G7G.mjs';
6
+ import { SeededRandom, StreamPredictor } from './chunk-22BD3RHN.mjs';
7
+ import { PrefetchLayer, FLOW_WORDS } from './chunk-5BYDGGWO.mjs';
8
+ import { BRUSH, TERRAIN_REGISTER, TERRAIN_SOURCE, NOISE } from './chunk-7BHW5GTC.mjs';
9
+ import { PHASE_WINDUP, PHASE_STRIKE, PHASE_RECOVER, PHASE_IDLE, BUILTIN_INPUTS, AiEventKind, AI_NONE, AI_MAX_GAME_SLOTS, AI_EVENT_WORDS, compileWasmKernel, wasmKernelImports } from './chunk-RUVGVNOF.mjs';
10
10
  import { Vec3, settleDoubleFields, Vec2 } from './chunk-XPG3N5CF.mjs';
11
11
  import { mat4Copy, mat4Frustum, mat4Orthographic, mat4Invert, mat4Multiply } from './chunk-KIZOA5LX.mjs';
12
- import { wasmInstantiates, programShape } from './chunk-5IRV36MS.mjs';
13
- import { TIER_INDEX } from './chunk-7GG4KNTL.mjs';
12
+ import { wasmInstantiates, programShape } from './chunk-EIB4OWVQ.mjs';
13
+ import { TIER_INDEX } from './chunk-E65WCTIG.mjs';
14
14
  import { parseProgram, STORAGE_F32, STORAGE_U32, KernelVm } from './chunk-MOBSBXVE.mjs';
15
15
  import { exp } from './chunk-SMK6JU2F.mjs';
16
16
  import { suggest } from './chunk-F6XRYEM3.mjs';
17
- import { ChunkPriority, prefetchSlots, PREFETCH_BUDGET_SHARE } from './chunk-URRZ2SMI.mjs';
17
+ import { ChunkPriority, prefetchSlots, PREFETCH_BUDGET_SHARE } from './chunk-V7ZRH3PY.mjs';
18
18
  import { GameError } from './chunk-XJIHN3BY.mjs';
19
19
  import { __export } from './chunk-25T4JHEA.mjs';
20
20
 
@@ -10437,6 +10437,43 @@ function scriptedPath(keys, fps = (60)) {
10437
10437
  return out;
10438
10438
  }
10439
10439
 
10440
+ // src/game/scenery/twin.ts
10441
+ var CAPTURED = { hue: 0, saturation: 1, gain: 1 };
10442
+ function regionKey(region) {
10443
+ let id = Number(region);
10444
+ return Number.isInteger(id) && region.trim() !== "" ? id : region;
10445
+ }
10446
+ var SplatTwin = class {
10447
+ constructor(options) {
10448
+ this.touched = [];
10449
+ this.current = null;
10450
+ this.body = options.body, this.variants = options.variants, this.looks = options.looks;
10451
+ let first = options.selected ?? options.variants.find((variant) => variant.available)?.variant_id;
10452
+ first !== void 0 && this.select(first);
10453
+ }
10454
+ /** The selected variant, whose id goes to the cart or purchase intent. */
10455
+ get selected() {
10456
+ return this.current;
10457
+ }
10458
+ /** Whether a variant has a look of its own, so a picker can mark the ones the capture cannot show. */
10459
+ shows(variantId) {
10460
+ let variant = this.variants.find((candidate) => candidate.variant_id === variantId);
10461
+ return variant !== void 0 && this.lookOf(variant) !== null;
10462
+ }
10463
+ lookOf(variant) {
10464
+ return this.looks[variant.variant_id] ?? this.looks[variant.name] ?? null;
10465
+ }
10466
+ /** Shows a variant. It does not refuse an unavailable one: a shopper may look at a sold-out colour. */
10467
+ select(variantId) {
10468
+ let variant = this.variants.find((candidate) => candidate.variant_id === variantId);
10469
+ if (variant === void 0) throw new GameError("invalid_argument", `this product has no variant ${variantId}`);
10470
+ let look = this.lookOf(variant) ?? {}, regions = Object.keys(look);
10471
+ for (let region of this.touched) region in look || this.body.edit(regionKey(region), CAPTURED);
10472
+ for (let region of regions) this.body.edit(regionKey(region), look[region]);
10473
+ return this.touched = regions, this.current = variant, variant;
10474
+ }
10475
+ };
10476
+
10440
10477
  // src/game/scenes/compile.ts
10441
10478
  var MM = 1e3, STEPS = 64, DEGREES_PER_STEP = 360 / (64), MAX_COUNT = 1024, MAX_SEED = 4294967295, MAX_CANDIDATES = 64, MAX_ITERATIONS = 256, MAX_TRIES = 32, DEFAULT_WITHIN = 2, DEFAULT_CANDIDATES = 12, DEFAULT_ITERATIONS = 32, DEFAULT_TRIES = 4, DEFAULT_RADIUS = 0.3, DEFAULT_EYE = 1.6, DEFAULT_CELL2 = 0.25, MIN_MITER = 0.2, AREA = "area", COMPASS = { north: 0, east: 16, south: 32, west: 48 }, EDGES = ["north", "south", "east", "west"], SIDES = ["center", "left", "right"], RELATIONS = ["near", "along", "facing", "on", "inside", "reachable_from", "visible_from"], OBJECT_FIELDS = /* @__PURE__ */ new Set(["kind", "count", "at", "yaw", "within", "offset", "clear", "no_overlap", "in_bounds", "spacing", ...RELATIONS]);
10442
10479
  function mm(v) {
@@ -11008,4 +11045,4 @@ function noise(port, kind, x, y, z, seed = 0) {
11008
11045
  return port.noise(NOISE[kind], x, y, z, seed);
11009
11046
  }
11010
11047
 
11011
- export { AircraftInput, ArcCurve, BatchedMesh, BoatInput, Box3, CHEMISTRY_AI_CAPABILITY, CHEMISTRY_PROMPT, CHEMISTRY_SCHEMA, CHEMISTRY_TEMPLATE, CRAFT_VIRTUAL_CONTROLS, CameraProjection, CatmullRomCurve3, CrossfadeTransition, CubicBezierCurve, CubicBezierCurve3, Curve, Curve2, Curve3, CurvePath, CurvePath3, Cylindrical, EllipseCurve, FX_HALF, FX_MAX, FX_MIN, FX_ONE, Frustum, FunctionCurve3, HelicopterInput, KERNEL_STD_SOURCES, LIFE_SIZE, LIFE_TINT, LineCurve, LineCurve3, MAT3_SIZE, MAX_FORMULA, MAX_KNOWN_CHARS, MAX_NAME, MAX_SPECIES, MAX_TERMS, Noise, PARTICLE_FIELDS, PARTICLE_LOOK_FIELDS, PROPOSAL_SCHEMA, Path, Plane, PrefetchReach, QuadraticBezierCurve, QuadraticBezierCurve3, REGENERATING_FIELDS, Ray, SCENE_FLAG_PINNED, SCENE_FLAG_SUPPORTED, SCENE_FLAG_VIOLATING, SCENE_HEADER_BYTES, SCENE_OUTPUT_MAGIC, SCENE_OUTPUT_VERSION, SCENE_PLACEMENT_BYTES, SCENE_SOLVER_EXPORTS, SCENE_VIOLATION_BYTES, STEER_AGENT_FIELDS, STEER_DIRECTION, STEER_FACE, STEER_SEEK, STEER_STOP, ScatterColumns, ScreenTransition, Shape, ShapePath, ShapeUtils, Sphere, Spherical, SplineCurve, TRANSITION_PROGRESS, Terrain, TickLockstepLink, TiltSteering, TreeModel, Triangle, VirtualSlider, VirtualStick, WAKE_NEVER, aabbOverlap, addf, ai_exports, allocateFrenetFrames, angleDiff, angleOf2, applyEnvironmentPreset, applyMatrix4, approach, argmax, arriveVelocity, basisFrom, biquadBandpass, biquadHighpass, biquadLowpass, biquadNotch, biquadPeaking, biquadStep, blendOver, capsuleGeometry, capsuleSize, centerGeometry, chemistryAiSection, chemistryAiToml, circleGeometry, circleSize, clampf, closestInAabb, closestInObb, closestOnSegment, closestOnTriangle, closestSegments, compileScene, computeBoundingBox, computeBoundingSphere, computeTangents, computeVertexNormals, coneGeometry, contourArea, copyCurvePoint, createSceneSolver, curl2, curl3, curlForce, cylinderShellGeometry, cylinderShellSize, dcBlock, dct16, dct8, dct8x8, decay, decodePlacements, dense, denseQ8, denseRelu, denseTable, dirOf2, divf, dodecahedronGeometry, dragPos, dragVel, earcut, earcutDeviation, edgeComponents, edgesGeometry, ema, encodeNavTile, environmentTexture, eulerStep, expSmooth, expSmooth2, expSmooth3, extrudeGeometry, f32x2, f32x3, f32x4, fbm2, fbm3, fromHalf, fx64Add, fx64Cos, fx64Div, fx64FromF32, fx64FromFx, fx64FromInt, fx64Lt, fx64Mul, fx64Neg, fx64Sin, fx64Sqrt, fx64Sub, fx64ToF32, fx64ToFx, fxAbs, fxAdd, fxCos, fxDiv, fxFloor, fxFrac, fxFromF32, fxFromInt, fxLerp, fxMul, fxNeg, fxSin, fxSqrt, fxSub, fxToF32, fxToInt, gridComponents, gridPropagate, gridReach, headingFrom, hslToRgb, hsvToRgb, i32x2, i32x3, i32x4, icosahedronGeometry, idct16, idct8, idct8x8, inCone, inPolygon, inTriangle, interceptTime, interceptTime2, isClockWise, isSceneDefinition, kernelRecording, knownMaterials, latheGeometry, latheSize, launchAngles, launchSpeed, leakyRelu, limitLength2, linearToOklab, linearToSrgb, linearToSrgb3, luminance, madf, mat3Determinant, mat3FromMat4, mat3Identity, mat3Invert, mat3Multiply, mat3NormalMatrix, mat3SetUvTransform, mat3Transpose, mergeGeometries, mergeVertices, mixOklab, model, moveToward, moveToward2, moveToward3, mulf, noise, octahedronGeometry, oklabToLinear, oklabToOklch, oklchToOklab, onePole, onePoleAlpha, openPlanet, openTerrain, packAnimation, packRotation, parametricGeometry, parametricSize, particleColours, particleLook, particleMotion, particleMotions, particleRules, particleStep, particleVelocity, pidStep, planeBounce, planeFromPoints, planeGridGeometry, planeGridSize, poissonPoint, polyhedronGeometry, premultiply, projectilePos, projectileVel, proposalText, proposeReaction, qAngle, qClampSwingTwist, qForward, qFromAxisAngle, qFromEuler, qFromTo, qIntegrate, qLookRotation, qRight, qRotateToward, qSwingTwist, qToAxisAngle, qToEuler, qUp, qnlerp, qnormalize, qslerp, quadDragStep, quantize, randBits, randChance, randCosHemisphere, randExp, randGaussian, randHemisphere, randInBall, randInDisc, randInt, randNormal, randNormal2, randOnCircle, randOnSphere, randPermute, randRange, randShuffle, randUnit, randWeighted, rayAabb, rayPlane, raySphere, rayTriangle, reactionRequest, readKernelLibrary, readSceneHeader, reflectVelocity, regenerate, regenerating, relu, rgbToHsl, rgbToHsv, ridged2, ridged3, ringGeometry, ringSize, rk2Step, rngKey, rotate2, rotateToward, roundedBoxGeometry, scene, scriptedPath, segmentDistSq, segmentedBoxGeometry, segmentedBoxSize, separationPush, sh4Add, sh4Basis, sh4Eval, sh4Irradiance, sh4Project, sh4Rotate, sh4Scale, sh9Add, sh9Basis, sh9Eval, sh9Irradiance, sh9Project, sh9Rotate, sh9Scale, shapeGeometry, sigmoid, simplex2, simplex2d, simplex3, simplex3d, simplex4, simulateStreaming, smoothDamp, smoothDamp2, smoothDamp3, softmax, softplus, sphPoly6, sphSpikyGrad, sphViscosityLap, sphereAabbOverlap, sphereImpulse, sphereSectorGeometry, sphereSectorSize, spheresOverlap, springForce, springStep, sqrtf, srgbToLinear, srgbToLinear3, statsAdd, statsSampleVariance, statsVariance, steerAccelerate, steerAgent, steerAgents, subf, sweepSpherePlane, tanhf, tetrahedronGeometry, texBricks, texCells, texFbm, texNoise, texNormal, texRamp, texRemap, texRidged, texRings, texTiles, texWeave, textGeometry, textShapes, toHalf, toNonIndexed, torusGeometry, torusKnotGeometry, torusKnotSize, torusSize, transitionEffect, translateGeometry, triangulateShape, tubeGeometry, tubeSize, unpremultiply, vabs, vadd, vand, vclamp, vcross, vdiv, vdot, veq, verletStep, vfloat, vfloor, vhmax, vhmin, vint, vlane, vle, vlength, vlerp, vlt, vmax, vmin, vmul, vmuladd, vne, vneg, vnormalize, vnot, vor, vselect, vshl, vshr, vshuffle, vsqrt, vsub, vsum, vtovec, vushr, vwith, vxor, warp2, warp3, wireframeGeometry, worley2, worley3, wrapAngle, writeCapsule, writeCircle, writeCylinderShell, writeLathe, writeParametric, writePlaneGrid, writeRing, writeSegmentedBox, writeSphereSector, writeTorus, writeTorusKnot, writeTube, yawDegrees, yawStep };
11048
+ export { AircraftInput, ArcCurve, BatchedMesh, BoatInput, Box3, CHEMISTRY_AI_CAPABILITY, CHEMISTRY_PROMPT, CHEMISTRY_SCHEMA, CHEMISTRY_TEMPLATE, CRAFT_VIRTUAL_CONTROLS, CameraProjection, CatmullRomCurve3, CrossfadeTransition, CubicBezierCurve, CubicBezierCurve3, Curve, Curve2, Curve3, CurvePath, CurvePath3, Cylindrical, EllipseCurve, FX_HALF, FX_MAX, FX_MIN, FX_ONE, Frustum, FunctionCurve3, HelicopterInput, KERNEL_STD_SOURCES, LIFE_SIZE, LIFE_TINT, LineCurve, LineCurve3, MAT3_SIZE, MAX_FORMULA, MAX_KNOWN_CHARS, MAX_NAME, MAX_SPECIES, MAX_TERMS, Noise, PARTICLE_FIELDS, PARTICLE_LOOK_FIELDS, PROPOSAL_SCHEMA, Path, Plane, PrefetchReach, QuadraticBezierCurve, QuadraticBezierCurve3, REGENERATING_FIELDS, Ray, SCENE_FLAG_PINNED, SCENE_FLAG_SUPPORTED, SCENE_FLAG_VIOLATING, SCENE_HEADER_BYTES, SCENE_OUTPUT_MAGIC, SCENE_OUTPUT_VERSION, SCENE_PLACEMENT_BYTES, SCENE_SOLVER_EXPORTS, SCENE_VIOLATION_BYTES, STEER_AGENT_FIELDS, STEER_DIRECTION, STEER_FACE, STEER_SEEK, STEER_STOP, ScatterColumns, ScreenTransition, Shape, ShapePath, ShapeUtils, Sphere, Spherical, SplatTwin, SplineCurve, TRANSITION_PROGRESS, Terrain, TickLockstepLink, TiltSteering, TreeModel, Triangle, VirtualSlider, VirtualStick, WAKE_NEVER, aabbOverlap, addf, ai_exports, allocateFrenetFrames, angleDiff, angleOf2, applyEnvironmentPreset, applyMatrix4, approach, argmax, arriveVelocity, basisFrom, biquadBandpass, biquadHighpass, biquadLowpass, biquadNotch, biquadPeaking, biquadStep, blendOver, capsuleGeometry, capsuleSize, centerGeometry, chemistryAiSection, chemistryAiToml, circleGeometry, circleSize, clampf, closestInAabb, closestInObb, closestOnSegment, closestOnTriangle, closestSegments, compileScene, computeBoundingBox, computeBoundingSphere, computeTangents, computeVertexNormals, coneGeometry, contourArea, copyCurvePoint, createSceneSolver, curl2, curl3, curlForce, cylinderShellGeometry, cylinderShellSize, dcBlock, dct16, dct8, dct8x8, decay, decodePlacements, dense, denseQ8, denseRelu, denseTable, dirOf2, divf, dodecahedronGeometry, dragPos, dragVel, earcut, earcutDeviation, edgeComponents, edgesGeometry, ema, encodeNavTile, environmentTexture, eulerStep, expSmooth, expSmooth2, expSmooth3, extrudeGeometry, f32x2, f32x3, f32x4, fbm2, fbm3, fromHalf, fx64Add, fx64Cos, fx64Div, fx64FromF32, fx64FromFx, fx64FromInt, fx64Lt, fx64Mul, fx64Neg, fx64Sin, fx64Sqrt, fx64Sub, fx64ToF32, fx64ToFx, fxAbs, fxAdd, fxCos, fxDiv, fxFloor, fxFrac, fxFromF32, fxFromInt, fxLerp, fxMul, fxNeg, fxSin, fxSqrt, fxSub, fxToF32, fxToInt, gridComponents, gridPropagate, gridReach, headingFrom, hslToRgb, hsvToRgb, i32x2, i32x3, i32x4, icosahedronGeometry, idct16, idct8, idct8x8, inCone, inPolygon, inTriangle, interceptTime, interceptTime2, isClockWise, isSceneDefinition, kernelRecording, knownMaterials, latheGeometry, latheSize, launchAngles, launchSpeed, leakyRelu, limitLength2, linearToOklab, linearToSrgb, linearToSrgb3, luminance, madf, mat3Determinant, mat3FromMat4, mat3Identity, mat3Invert, mat3Multiply, mat3NormalMatrix, mat3SetUvTransform, mat3Transpose, mergeGeometries, mergeVertices, mixOklab, model, moveToward, moveToward2, moveToward3, mulf, noise, octahedronGeometry, oklabToLinear, oklabToOklch, oklchToOklab, onePole, onePoleAlpha, openPlanet, openTerrain, packAnimation, packRotation, parametricGeometry, parametricSize, particleColours, particleLook, particleMotion, particleMotions, particleRules, particleStep, particleVelocity, pidStep, planeBounce, planeFromPoints, planeGridGeometry, planeGridSize, poissonPoint, polyhedronGeometry, premultiply, projectilePos, projectileVel, proposalText, proposeReaction, qAngle, qClampSwingTwist, qForward, qFromAxisAngle, qFromEuler, qFromTo, qIntegrate, qLookRotation, qRight, qRotateToward, qSwingTwist, qToAxisAngle, qToEuler, qUp, qnlerp, qnormalize, qslerp, quadDragStep, quantize, randBits, randChance, randCosHemisphere, randExp, randGaussian, randHemisphere, randInBall, randInDisc, randInt, randNormal, randNormal2, randOnCircle, randOnSphere, randPermute, randRange, randShuffle, randUnit, randWeighted, rayAabb, rayPlane, raySphere, rayTriangle, reactionRequest, readKernelLibrary, readSceneHeader, reflectVelocity, regenerate, regenerating, relu, rgbToHsl, rgbToHsv, ridged2, ridged3, ringGeometry, ringSize, rk2Step, rngKey, rotate2, rotateToward, roundedBoxGeometry, scene, scriptedPath, segmentDistSq, segmentedBoxGeometry, segmentedBoxSize, separationPush, sh4Add, sh4Basis, sh4Eval, sh4Irradiance, sh4Project, sh4Rotate, sh4Scale, sh9Add, sh9Basis, sh9Eval, sh9Irradiance, sh9Project, sh9Rotate, sh9Scale, shapeGeometry, sigmoid, simplex2, simplex2d, simplex3, simplex3d, simplex4, simulateStreaming, smoothDamp, smoothDamp2, smoothDamp3, softmax, softplus, sphPoly6, sphSpikyGrad, sphViscosityLap, sphereAabbOverlap, sphereImpulse, sphereSectorGeometry, sphereSectorSize, spheresOverlap, springForce, springStep, sqrtf, srgbToLinear, srgbToLinear3, statsAdd, statsSampleVariance, statsVariance, steerAccelerate, steerAgent, steerAgents, subf, sweepSpherePlane, tanhf, tetrahedronGeometry, texBricks, texCells, texFbm, texNoise, texNormal, texRamp, texRemap, texRidged, texRings, texTiles, texWeave, textGeometry, textShapes, toHalf, toNonIndexed, torusGeometry, torusKnotGeometry, torusKnotSize, torusSize, transitionEffect, translateGeometry, triangulateShape, tubeGeometry, tubeSize, unpremultiply, vabs, vadd, vand, vclamp, vcross, vdiv, vdot, veq, verletStep, vfloat, vfloor, vhmax, vhmin, vint, vlane, vle, vlength, vlerp, vlt, vmax, vmin, vmul, vmuladd, vne, vneg, vnormalize, vnot, vor, vselect, vshl, vshr, vshuffle, vsqrt, vsub, vsum, vtovec, vushr, vwith, vxor, warp2, warp3, wireframeGeometry, worley2, worley3, wrapAngle, writeCapsule, writeCircle, writeCylinderShell, writeLathe, writeParametric, writePlaneGrid, writeRing, writeSegmentedBox, writeSphereSector, writeTorus, writeTorusKnot, writeTube, yawDegrees, yawStep };
@@ -1,6 +1,6 @@
1
- import { ProgressiveFeed, decodeProgressive, decodeManifest, SegmentOp, segmentOutput, PartFormatError, applyDelta, decodePart, soleSpan, assembleInto } from './chunk-YPL5TKI4.mjs';
1
+ import { ProgressiveFeed, decodeProgressive, decodeManifest, SegmentOp, segmentOutput, PartFormatError, applyDelta, decodePart, soleSpan, assembleInto } from './chunk-U6UVWEAK.mjs';
2
2
  import { chunkResolved, chunkNeeded } from './chunk-LYEZZEEF.mjs';
3
- import { ChunkPriority } from './chunk-URRZ2SMI.mjs';
3
+ import { ChunkPriority } from './chunk-V7ZRH3PY.mjs';
4
4
 
5
5
  // src/interactives/runtime/asset-parts.ts
6
6
  var AssetParts = class {
@@ -1,4 +1,4 @@
1
- import { TAG_BYTES, MessageTag, BRIDGE_LIMITS } from './chunk-URRZ2SMI.mjs';
1
+ import { TAG_BYTES, MessageTag, BRIDGE_LIMITS } from './chunk-V7ZRH3PY.mjs';
2
2
 
3
3
  // src/interactives/runtime/tree.ts
4
4
  var TreeError = class extends Error {
@@ -72,7 +72,7 @@ var SESSION_PROTOCOL_VERSION = 1, BRIDGE_PROTOCOL_VERSION = 1, ENGINE_CORE_UNIT
72
72
  camera_place: 91,
73
73
  camera_identify: 92,
74
74
  camera_identified: 93
75
- }, FrameTouchKind = { take: 0, progressive: 1, prefetch: 2, pipeline: 3, chunk: 4, deferred: 5 }, DEFERRED_TOUCH_PREFIX = "deferred:", CHUNK_TOUCH_PREFIX = "chunk:", PIPELINE_TOUCH_PREFIX = "pipeline:", FRAME_MARK_HEADER_BYTES = 13, HEAP_OFFSET = 9, MAX_HEAP_BYTES = 4294967295, FRAME_TOUCH_HEADER_BYTES = 4, FRAME_OFFSET = 1, OUTSTANDING_OFFSET = 5, TOUCH_COUNT_OFFSET = 7, MAX_FRAME_TOUCHES = 65535, markEncoder = new TextEncoder(), markDecoder = new TextDecoder();
75
+ }, FrameTouchKind = { take: 0, progressive: 1, prefetch: 2, pipeline: 3, chunk: 4 }, CHUNK_TOUCH_PREFIX = "chunk:", PIPELINE_TOUCH_PREFIX = "pipeline:", FRAME_MARK_HEADER_BYTES = 13, HEAP_OFFSET = 9, MAX_HEAP_BYTES = 4294967295, FRAME_TOUCH_HEADER_BYTES = 4, FRAME_OFFSET = 1, OUTSTANDING_OFFSET = 5, TOUCH_COUNT_OFFSET = 7, MAX_FRAME_TOUCHES = 65535, markEncoder = new TextEncoder(), markDecoder = new TextDecoder();
76
76
  function encodeFrameMark(mark) {
77
77
  let paths = mark.touches.slice(0, (65535)).map((touch) => markEncoder.encode(touch.path)), size = (13) + paths.reduce((sum, path) => sum + (4) + path.length, 0), bytes = new Uint8Array(size), view = new DataView(bytes.buffer);
78
78
  bytes[0] = MessageTag.frame_mark, view.setUint32((1), mark.frame, true), view.setUint16((5), Math.min(mark.outstanding, (65535)), true), view.setUint16((7), paths.length, true), view.setUint32((9), Math.min(Math.max(mark.heap ?? 0, 0), (4294967295)), true);
@@ -268,4 +268,4 @@ function unhex(text, out) {
268
268
  return true;
269
269
  }
270
270
 
271
- export { BRIDGE_LIMITS, BRIDGE_PROTOCOL_VERSION, CHUNK_COUNT_BYTES, CHUNK_FAILED_BYTES, CHUNK_FAILURE_BY_CODE, CHUNK_RELEASE_ENTRY_BYTES, CHUNK_REQUESTS_VERSION, CHUNK_REQUEST_ENTRY_BYTES, CHUNK_TOUCH_PREFIX, ChunkBatch, ChunkFailure, ChunkPriority, DEFERRED_TOUCH_PREFIX, DIGEST_BYTES, ENGINE_CORE_THREADS_UNIT, ENGINE_CORE_UNIT, FrameTouchKind, INSPECTOR_BYTES, INSPECTOR_HIDDEN, INSPECTOR_SHOWN, LIFECYCLE_BYTES, LIFECYCLE_BY_CODE, LifecycleCode, MAX_CHUNK_BATCH, MILESTONE_BYTES, MILESTONE_BY_CODE, MessageTag, MessageWriter, Milestone, PING_BYTES, PIPELINE_TOUCH_PREFIX, PONG_BYTES, PREFETCH_BUDGET_SHARE, PREFETCH_SLOT_SHARE, RUNTIME_WASM_SUFFIX, SESSION_COMPLETE_BYTES, SESSION_OUTCOME_BY_CODE, SESSION_PROTOCOL_VERSION, SessionOutcomeCode, TAG_BYTES, chunkEntryCount, chunkEntryOffset, encodeFrameMark, forEachChunkEntry, hex, hexAt, prefetchSlots, readChunkFailed, readFrameMark, readJson, readSessionComplete, readText, tagOf, unhex, unhexAt, utf8, writeChunkFailed, writeSessionComplete };
271
+ export { BRIDGE_LIMITS, BRIDGE_PROTOCOL_VERSION, CHUNK_COUNT_BYTES, CHUNK_FAILED_BYTES, CHUNK_FAILURE_BY_CODE, CHUNK_RELEASE_ENTRY_BYTES, CHUNK_REQUESTS_VERSION, CHUNK_REQUEST_ENTRY_BYTES, CHUNK_TOUCH_PREFIX, ChunkBatch, ChunkFailure, ChunkPriority, DIGEST_BYTES, ENGINE_CORE_THREADS_UNIT, ENGINE_CORE_UNIT, FrameTouchKind, INSPECTOR_BYTES, INSPECTOR_HIDDEN, INSPECTOR_SHOWN, LIFECYCLE_BYTES, LIFECYCLE_BY_CODE, LifecycleCode, MAX_CHUNK_BATCH, MILESTONE_BYTES, MILESTONE_BY_CODE, MessageTag, MessageWriter, Milestone, PING_BYTES, PIPELINE_TOUCH_PREFIX, PONG_BYTES, PREFETCH_BUDGET_SHARE, PREFETCH_SLOT_SHARE, RUNTIME_WASM_SUFFIX, SESSION_COMPLETE_BYTES, SESSION_OUTCOME_BY_CODE, SESSION_PROTOCOL_VERSION, SessionOutcomeCode, TAG_BYTES, chunkEntryCount, chunkEntryOffset, encodeFrameMark, forEachChunkEntry, hex, hexAt, prefetchSlots, readChunkFailed, readFrameMark, readJson, readSessionComplete, readText, tagOf, unhex, unhexAt, utf8, writeChunkFailed, writeSessionComplete };
@@ -1,14 +1,14 @@
1
1
  import { replayFlags } from './chunk-DDJLDOUX.mjs';
2
- import { luauVmRunsHere, verifyChunk, PartialChunk, LUAU_SCRIPTS_GROUP, SCRIPTS_CORE_GROUP, ENGINE_CORE_SCRIPTS_UNIT, DEFAULT_PART_ZONE, twinned, twinCaps, unmetEngineFeature, chunkRefMessage, fetchVerified, chunkMessage } from './chunk-7INQVOHY.mjs';
3
- import { engineHeapFor, ENGINE_HEAP_REQUIREMENT } from './chunk-P2O34BIO.mjs';
4
- import { threadsAvailable } from './chunk-Z3PGQRTX.mjs';
5
- import { TreeMirror, replayMessage, DEFAULT_CLIP_ARM } from './chunk-MITGBWV7.mjs';
6
- import { METERS_OFF, StudioSender, StudioAssembler, STUDIO_GRANT_TOPIC } from './chunk-LMK775I4.mjs';
2
+ import { luauVmRunsHere, verifyChunk, PartialChunk, LUAU_SCRIPTS_GROUP, DEFAULT_PART_ZONE, twinned, twinCaps, unmetEngineFeature, chunkRefMessage, fetchVerified, chunkMessage, SCRIPTS_CORE_GROUP } from './chunk-BU6OK542.mjs';
3
+ import { engineHeapFor, ENGINE_HEAP_REQUIREMENT } from './chunk-JURRXY2J.mjs';
4
+ import { threadsAvailable } from './chunk-Y66WVMO5.mjs';
5
+ import { TreeMirror, replayMessage, DEFAULT_CLIP_ARM } from './chunk-UGH37BQW.mjs';
6
+ import { METERS_OFF, StudioSender, StudioAssembler, STUDIO_GRANT_TOPIC } from './chunk-HAGEIC2L.mjs';
7
7
  import { NETWORK_MESSAGE_BYTES, webNetworkHint, watchWebNetwork, writeNetworkHint } from './chunk-K46SMZ66.mjs';
8
+ import { GL_CORE_GROUP } from './chunk-DS2VU4WW.mjs';
8
9
  import { sha256Into, SHA256_BYTES } from './chunk-5YWN6H5Q.mjs';
9
- import { coreOfRest, GL_CORE_GROUP, ENGINE_CORE_GL_UNIT } from './chunk-BOTUAHP2.mjs';
10
10
  import './chunk-SPCRQ6NO.mjs';
11
- import { ChunkPriority, MessageTag, ENGINE_CORE_UNIT, hex, unhex, CHUNK_FAILED_BYTES, prefetchSlots, forEachChunkEntry, CHUNK_REQUEST_ENTRY_BYTES, CHUNK_RELEASE_ENTRY_BYTES, PREFETCH_BUDGET_SHARE, writeChunkFailed, MessageWriter, readJson, ENGINE_CORE_THREADS_UNIT, TAG_BYTES, PING_BYTES, LIFECYCLE_BYTES, INSPECTOR_BYTES, CHUNK_REQUESTS_VERSION, INSPECTOR_SHOWN, INSPECTOR_HIDDEN, BRIDGE_LIMITS, readFrameMark, readSessionComplete, MILESTONE_BY_CODE, LifecycleCode } from './chunk-URRZ2SMI.mjs';
11
+ import { ChunkPriority, MessageTag, ENGINE_CORE_UNIT, hex, unhex, CHUNK_FAILED_BYTES, prefetchSlots, forEachChunkEntry, CHUNK_REQUEST_ENTRY_BYTES, CHUNK_RELEASE_ENTRY_BYTES, PREFETCH_BUDGET_SHARE, writeChunkFailed, MessageWriter, readJson, ENGINE_CORE_THREADS_UNIT, TAG_BYTES, PING_BYTES, LIFECYCLE_BYTES, INSPECTOR_BYTES, CHUNK_REQUESTS_VERSION, INSPECTOR_SHOWN, INSPECTOR_HIDDEN, BRIDGE_LIMITS, readFrameMark, readSessionComplete, MILESTONE_BY_CODE, LifecycleCode } from './chunk-V7ZRH3PY.mjs';
12
12
  import { encodeBase64, decodeBase64 } from './chunk-2IC4H6OV.mjs';
13
13
 
14
14
  // src/interactives/content/origin.ts
@@ -820,21 +820,12 @@ function chunksForHost(chunks, engine, isolated = false, tier = DEFAULT_HOST_TIE
820
820
  let unit = standsInFor(chunk);
821
821
  unit !== null && chosen(chunk) && replaced.add(unit);
822
822
  }
823
- let kept = chunks.filter((chunk) => {
823
+ return chunks.filter((chunk) => {
824
824
  if (standsInFor(chunk) !== null) return chosen(chunk);
825
825
  let runtime = chunk.runtime?.name;
826
826
  if (runtime !== void 0 && replaced.has(runtime)) return false;
827
- if (runtime !== void 0 && coreOfRest(runtime) !== null) return true;
828
827
  let group = chunk.asset_group;
829
828
  return group === void 0 ? true : group === skipped ? false : group.startsWith(TIER_GROUP_PREFIX) ? group === tierGroup : group === LUAU_SCRIPTS_GROUP ? luauVmRunsHere() : group.startsWith(ENGINE_GROUP_PREFIX) ? engine !== null && group === `${ENGINE_GROUP_PREFIX}${engine}` : true;
830
- }), cores = /* @__PURE__ */ new Set();
831
- for (let chunk of kept) {
832
- let runtime = chunk.runtime?.name;
833
- runtime === void 0 || coreOfRest(runtime) !== null || (chunk.asset_group === SCRIPTS_CORE_GROUP ? cores.add(ENGINE_CORE_SCRIPTS_UNIT) : chunk.asset_group === GL_CORE_GROUP ? cores.add(ENGINE_CORE_GL_UNIT) : cores.add(runtime));
834
- }
835
- return kept.filter((chunk) => {
836
- let runtime = chunk.runtime?.name, core = runtime === void 0 ? null : coreOfRest(runtime);
837
- return core === null || cores.has(core);
838
829
  });
839
830
  }
840
831
  var CODE_GROUP = "code";
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkIIDZ5WUX_js = require('./chunk-IIDZ5WUX.js');
4
- var chunkEQW6PFC2_js = require('./chunk-EQW6PFC2.js');
4
+ var chunkO2ICABUD_js = require('./chunk-O2ICABUD.js');
5
5
  var chunk2V7IL4HC_js = require('./chunk-2V7IL4HC.js');
6
6
 
7
7
  // src/game/prefetch/layer.ts
@@ -162,7 +162,7 @@ var DELIVERY_BUDGETS = {
162
162
  low: budgetOf("low"),
163
163
  mid: budgetOf("mid"),
164
164
  high: budgetOf("high")
165
- }, THREE_G_LINK = DELIVERY_BUDGETS.low.link, INSTANT_OPEN_SECONDS = 2, SLOW_OPEN_SECONDS = 5, TARGET_HZ = 60, SMOOTH_SHARE = 0.95, STUTTER_SHARE = 0.8, MEMORY_CEILING_BYTES = chunkEQW6PFC2_js.ENGINE_HEAP_CEILING_BYTES, TIGHT_MEMORY_SHARE = 0.8, WARM_BUSY_SHARE = 0.6, HOT_BUSY_SHARE = 0.85, WARM_PRESSURE = 1, HOT_PRESSURE = 2;
165
+ }, THREE_G_LINK = DELIVERY_BUDGETS.low.link, INSTANT_OPEN_SECONDS = 2, SLOW_OPEN_SECONDS = 5, TARGET_HZ = 60, SMOOTH_SHARE = 0.95, STUTTER_SHARE = 0.8, MEMORY_CEILING_BYTES = chunkO2ICABUD_js.ENGINE_HEAP_CEILING_BYTES, TIGHT_MEMORY_SHARE = 0.8, WARM_BUSY_SHARE = 0.6, HOT_BUSY_SHARE = 0.85, WARM_PRESSURE = 1, HOT_PRESSURE = 2;
166
166
 
167
167
  // src/interactives/meters/causes.ts
168
168
  var MOST_SHARE = 0.5, SOME_SHARE = 0.2, MAX_CAUSES = 3, PASS_LABELS = {
@@ -1,5 +1,5 @@
1
1
  import { STARTER_CATALOGUE, fcos, fsin, fatan2 } from './chunk-TJCAE7RC.mjs';
2
- import { SeededRandom } from './chunk-HF2MZKP2.mjs';
2
+ import { SeededRandom } from './chunk-22BD3RHN.mjs';
3
3
  import { Vec3, Quat } from './chunk-XPG3N5CF.mjs';
4
4
  import { GameError } from './chunk-XJIHN3BY.mjs';
5
5
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkTJI3K6RP_js = require('./chunk-TJI3K6RP.js');
4
- var chunkUQYO3OM7_js = require('./chunk-UQYO3OM7.js');
4
+ var chunk4ZDR72SG_js = require('./chunk-4ZDR72SG.js');
5
5
  var chunkJ2KZXIU3_js = require('./chunk-J2KZXIU3.js');
6
6
 
7
7
  // src/interactives/audio-worklet.ts
@@ -9,7 +9,7 @@ var ENGINE_AUDIO_UNIT = "@cimplify/engine-audio", AUDIO_WORKLET_GROUP = "audio:w
9
9
 
10
10
  // src/interactives/parts/weave.ts
11
11
  var WEAVE_VERSION = 1, WEAVE_NODE_MAGIC = 1314281283, WEAVE_NODE_HEADER_BYTES = 16, WEAVE_LEAF_ENTRY_BYTES = 40, WEAVE_CHILD_ENTRY_BYTES = 48, WEAVE_MIN_NODE_ENTRIES = 16, WEAVE_MAX_NODE_ENTRIES = 256, WEAVE_BOUNDARY_MASK = 63, WEAVE_MAX_HEIGHT = 8, WEAVE_MAX_NODE_BYTES = (16) + (256) * (48), WEAVE_LEAF_DECORATED = 1, WEAVE_LEAF_TWINNED = 2, WEAVE_HEAD_DOMAIN = `cimplify-weave-head-v1
12
- `, WEAVE_NODE_ZONE = "weave:nodes", LEAF_LEVEL = 0, BOUNDARY_BYTE = chunkUQYO3OM7_js.DIGEST_BYTES - 1, VERSION_AT = 4, LEVEL_AT = 5, COUNT_AT = 6, RESERVED_AT = 8, LEAF_FLAGS_AT = 2, LEAF_PAD_AT = 3, LEAF_LENGTH_AT = 4, LEAF_DIGEST_AT = 8, CHILD_LAST_ZONE_AT = 2, CHILD_PARTS_AT = 4, CHILD_BYTES_AT = 8, CHILD_DIGEST_AT = 16, TWO_32 = 4294967296, FETCH_WINDOW = 8, WeaveRefusal = {
12
+ `, WEAVE_NODE_ZONE = "weave:nodes", LEAF_LEVEL = 0, BOUNDARY_BYTE = chunk4ZDR72SG_js.DIGEST_BYTES - 1, VERSION_AT = 4, LEVEL_AT = 5, COUNT_AT = 6, RESERVED_AT = 8, LEAF_FLAGS_AT = 2, LEAF_PAD_AT = 3, LEAF_LENGTH_AT = 4, LEAF_DIGEST_AT = 8, CHILD_LAST_ZONE_AT = 2, CHILD_PARTS_AT = 4, CHILD_BYTES_AT = 8, CHILD_DIGEST_AT = 16, TWO_32 = 4294967296, FETCH_WINDOW = 8, WeaveRefusal = {
13
13
  digest: "digest",
14
14
  malformed: "malformed",
15
15
  summary: "summary",
@@ -34,7 +34,7 @@ function seal(level, entryBytes, count, body, nodes, summary) {
34
34
  let node = new Uint8Array((16) + count * entryBytes), v = view(node);
35
35
  v.setUint32(0, (1314281283), true), node[(4)] = (1), node[(5)] = level, v.setUint16((6), count, true), node.set(body.subarray(0, count * entryBytes), (16));
36
36
  let digest = new Uint8Array(chunkTJI3K6RP_js.SHA256_BYTES);
37
- return chunkTJI3K6RP_js.sha256Into(node, digest), nodes.set(chunkUQYO3OM7_js.hexAt(digest, 0, chunkTJI3K6RP_js.SHA256_BYTES), node), { ...summary, digest };
37
+ return chunkTJI3K6RP_js.sha256Into(node, digest), nodes.set(chunk4ZDR72SG_js.hexAt(digest, 0, chunkTJI3K6RP_js.SHA256_BYTES), node), { ...summary, digest };
38
38
  }
39
39
  function buildWeave(leaves) {
40
40
  if (leaves.length === 0) throw new WeaveVerifyError(WeaveRefusal.malformed, "");
@@ -43,7 +43,7 @@ function buildWeave(leaves) {
43
43
  let leaf = leaves[i];
44
44
  count === 0 && (summary = { firstZone: leaf.zone, lastZone: leaf.zone, parts: 0, bytes: 0 });
45
45
  let at = count * (40);
46
- if (bv.setUint16(at, leaf.zone, true), body[at + (2)] = leaf.flags, body[at + (3)] = 0, bv.setUint32(at + (4), leaf.length, true), !chunkUQYO3OM7_js.unhexAt(leaf.digest, body, at + (8), chunkUQYO3OM7_js.DIGEST_BYTES)) throw new WeaveVerifyError(WeaveRefusal.malformed, leaf.digest);
46
+ if (bv.setUint16(at, leaf.zone, true), body[at + (2)] = leaf.flags, body[at + (3)] = 0, bv.setUint32(at + (4), leaf.length, true), !chunk4ZDR72SG_js.unhexAt(leaf.digest, body, at + (8), chunk4ZDR72SG_js.DIGEST_BYTES)) throw new WeaveVerifyError(WeaveRefusal.malformed, leaf.digest);
47
47
  count++, summary.parts++, summary.bytes += leaf.length;
48
48
  let next = leaves[i + 1];
49
49
  (count === (256) || next === void 0 || next.zone !== leaf.zone || boundary(body, at + (8), count)) && (level.push(seal((0), (40), count, body, nodes, summary)), count = 0);
@@ -62,7 +62,7 @@ function buildWeave(leaves) {
62
62
  level = parents, height++;
63
63
  }
64
64
  let top = level[0];
65
- return { root: { version: (1), root: chunkUQYO3OM7_js.hexAt(top.digest, 0, chunkTJI3K6RP_js.SHA256_BYTES), parts: top.parts, bytes: top.bytes, height }, nodes };
65
+ return { root: { version: (1), root: chunk4ZDR72SG_js.hexAt(top.digest, 0, chunkTJI3K6RP_js.SHA256_BYTES), parts: top.parts, bytes: top.bytes, height }, nodes };
66
66
  }
67
67
  function nodeMatches(node, expected, at) {
68
68
  return node.length <= WEAVE_MAX_NODE_BYTES && chunkTJI3K6RP_js.sha256Matches(node, expected, at);
@@ -108,7 +108,7 @@ function leafDigestAt(index) {
108
108
  return leafAt(index) + (8);
109
109
  }
110
110
  function leafDigest(node, index) {
111
- return chunkUQYO3OM7_js.hexAt(node, leafDigestAt(index), chunkUQYO3OM7_js.DIGEST_BYTES);
111
+ return chunk4ZDR72SG_js.hexAt(node, leafDigestAt(index), chunk4ZDR72SG_js.DIGEST_BYTES);
112
112
  }
113
113
  function childAt(index) {
114
114
  return (16) + index * (48);
@@ -143,7 +143,7 @@ function verifyChild(node, parent, index) {
143
143
  }
144
144
  var rootDigest = new Uint8Array(chunkTJI3K6RP_js.SHA256_BYTES);
145
145
  function verifyRoot(node, root) {
146
- if (root.version !== (1) || !chunkUQYO3OM7_js.unhexAt(root.root, rootDigest, 0, chunkTJI3K6RP_js.SHA256_BYTES)) return WeaveRefusal.malformed;
146
+ if (root.version !== (1) || !chunk4ZDR72SG_js.unhexAt(root.root, rootDigest, 0, chunkTJI3K6RP_js.SHA256_BYTES)) return WeaveRefusal.malformed;
147
147
  if (root.height < 1 || root.height > (8)) return WeaveRefusal.height;
148
148
  if (!nodeMatches(node, rootDigest, 0)) return WeaveRefusal.digest;
149
149
  if (!weaveNodeValid(node)) return WeaveRefusal.malformed;
@@ -170,7 +170,7 @@ async function descend(node, digest, source, known, visit, tally) {
170
170
  return;
171
171
  }
172
172
  let digests = [];
173
- for (let i = 0; i < count; i++) digests.push(chunkUQYO3OM7_js.hexAt(node, childDigestAt(i), chunkUQYO3OM7_js.DIGEST_BYTES));
173
+ for (let i = 0; i < count; i++) digests.push(chunk4ZDR72SG_js.hexAt(node, childDigestAt(i), chunk4ZDR72SG_js.DIGEST_BYTES));
174
174
  let pending = new Array(count).fill(null), started = 0;
175
175
  for (let i = 0; i < count; i++) {
176
176
  for (; started < count && started < i + (8); ) {
@@ -192,7 +192,7 @@ async function knownNodes(old, source) {
192
192
  let [node, digest] = stack.pop();
193
193
  if (known.add(digest), weaveNodeLevel(node) !== (0))
194
194
  for (let i = weaveNodeCount(node) - 1; i >= 0; i--) {
195
- let child = chunkUQYO3OM7_js.hexAt(node, childDigestAt(i), chunkUQYO3OM7_js.DIGEST_BYTES);
195
+ let child = chunk4ZDR72SG_js.hexAt(node, childDigestAt(i), chunk4ZDR72SG_js.DIGEST_BYTES);
196
196
  if (known.has(child)) continue;
197
197
  let bytes = await source.local(child);
198
198
  bytes !== null && verifyChild(bytes, node, i) === null && stack.push([bytes, child]);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkW3VVG4NL_js = require('./chunk-W3VVG4NL.js');
3
+ var chunk2O2CG465_js = require('./chunk-2O2CG465.js');
4
4
  var chunk2V7IL4HC_js = require('./chunk-2V7IL4HC.js');
5
5
 
6
6
  // src/game/cloth/engine.ts
@@ -66,11 +66,14 @@ var EngineCloths = class {
66
66
  let buffer = this.runtime.memory.buffer;
67
67
  buffer !== this.buffer && (this.buffer = buffer, this.bytes = new Uint8Array(buffer), this.words = new Uint32Array(buffer), this.views = new Float32Array(buffer));
68
68
  }
69
+ get engineHost() {
70
+ return this.open();
71
+ }
69
72
  open() {
70
73
  if (this.handle === (0)) {
71
74
  let world = this.world();
72
75
  if (this.handle = world === (0) ? this.exports.engine_cloth_create(this.maxCloths, this.maxParticles) : this.exports.engine_cloth_create_in(world, this.maxCloths, this.maxParticles), this.handle === (0)) throw new chunk2V7IL4HC_js.GameError("invalid_argument", "the engine refused the cloth world");
73
- if (this.scratch = this.runtime.exports.engine_alloc(SCRATCH_FLOATS * (4), chunkW3VVG4NL_js.COLUMN_ALIGN), this.scratch === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold cloth colliders");
76
+ if (this.scratch = this.runtime.exports.engine_alloc(SCRATCH_FLOATS * (4), chunk2O2CG465_js.COLUMN_ALIGN), this.scratch === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold cloth colliders");
74
77
  }
75
78
  return this.view(), this.handle;
76
79
  }
@@ -86,12 +89,12 @@ var EngineCloths = class {
86
89
  return code;
87
90
  }
88
91
  stage(bytes, what) {
89
- let pointer = this.runtime.exports.engine_alloc(Math.max(bytes, (4)), chunkW3VVG4NL_js.COLUMN_ALIGN);
92
+ let pointer = this.runtime.exports.engine_alloc(Math.max(bytes, (4)), chunk2O2CG465_js.COLUMN_ALIGN);
90
93
  if (pointer === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", `engine memory cannot hold the cloth ${what}`);
91
94
  return this.memory(), pointer;
92
95
  }
93
96
  release(pointer, bytes) {
94
- pointer !== (0) && this.runtime.exports.engine_free(pointer, Math.max(bytes, (4)), chunkW3VVG4NL_js.COLUMN_ALIGN);
97
+ pointer !== (0) && this.runtime.exports.engine_free(pointer, Math.max(bytes, (4)), chunk2O2CG465_js.COLUMN_ALIGN);
95
98
  }
96
99
  staged(values, what) {
97
100
  if (values === null || values.length === 0) return (0);
@@ -207,12 +210,12 @@ var Memory = class {
207
210
  buffer !== this.buffer && (this.buffer = buffer, this.bytes = new Uint8Array(buffer), this.floats = new Float32Array(buffer), this.words = new Uint32Array(buffer));
208
211
  }
209
212
  allocate(bytes, what) {
210
- let pointer = this.runtime.exports.engine_alloc(Math.max(bytes, (4)), chunkW3VVG4NL_js.COLUMN_ALIGN);
213
+ let pointer = this.runtime.exports.engine_alloc(Math.max(bytes, (4)), chunk2O2CG465_js.COLUMN_ALIGN);
211
214
  if (pointer === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", `engine memory cannot hold the ${what}`);
212
215
  return this.views(), pointer;
213
216
  }
214
217
  release(pointer, bytes) {
215
- this.runtime.exports.engine_free(pointer, Math.max(bytes, (4)), chunkW3VVG4NL_js.COLUMN_ALIGN);
218
+ this.runtime.exports.engine_free(pointer, Math.max(bytes, (4)), chunk2O2CG465_js.COLUMN_ALIGN);
216
219
  }
217
220
  floatsAt(values, what) {
218
221
  let pointer = this.allocate(values.byteLength, what);
@@ -396,13 +399,13 @@ var EngineFracturer = class {
396
399
  this.handle = (0);
397
400
  }
398
401
  allocate(bytes) {
399
- let pointer = this.runtime.exports.engine_alloc(Math.max(bytes, (4)), chunkW3VVG4NL_js.COLUMN_ALIGN);
402
+ let pointer = this.runtime.exports.engine_alloc(Math.max(bytes, (4)), chunk2O2CG465_js.COLUMN_ALIGN);
400
403
  if (pointer === (0))
401
404
  throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold the mesh to break");
402
405
  return pointer;
403
406
  }
404
407
  free(pointer, bytes) {
405
- this.runtime.exports.engine_free(pointer, Math.max(bytes, (4)), chunkW3VVG4NL_js.COLUMN_ALIGN);
408
+ this.runtime.exports.engine_free(pointer, Math.max(bytes, (4)), chunk2O2CG465_js.COLUMN_ALIGN);
406
409
  }
407
410
  fracture(mesh, options) {
408
411
  let vertices = mesh.positions.length / (3);