@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,17 +1,17 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkYV52DGSA_js = require('./chunk-YV52DGSA.js');
4
- var chunkGBJ5CW3A_js = require('./chunk-GBJ5CW3A.js');
5
- var chunkBS65NRDW_js = require('./chunk-BS65NRDW.js');
4
+ var chunkPKOZXD2Q_js = require('./chunk-PKOZXD2Q.js');
5
+ var chunk3S6WPBZL_js = require('./chunk-3S6WPBZL.js');
6
6
  var chunkRCQ2MPBV_js = require('./chunk-RCQ2MPBV.js');
7
7
  var chunk3C4C654I_js = require('./chunk-3C4C654I.js');
8
8
  var chunkYXGZQPUD_js = require('./chunk-YXGZQPUD.js');
9
- var chunkHRSIIDOZ_js = require('./chunk-HRSIIDOZ.js');
10
- var chunkAOPH2IZV_js = require('./chunk-AOPH2IZV.js');
11
- var chunkEPYFN2A3_js = require('./chunk-EPYFN2A3.js');
12
- var chunkNTTHAXHI_js = require('./chunk-NTTHAXHI.js');
13
- var chunkFAYK2MN6_js = require('./chunk-FAYK2MN6.js');
14
- var chunkW3VVG4NL_js = require('./chunk-W3VVG4NL.js');
9
+ var chunkH3OQKK6X_js = require('./chunk-H3OQKK6X.js');
10
+ var chunkSKQFLBDD_js = require('./chunk-SKQFLBDD.js');
11
+ var chunk7AAIAVAA_js = require('./chunk-7AAIAVAA.js');
12
+ var chunkX5A5FOWW_js = require('./chunk-X5A5FOWW.js');
13
+ var chunkNZTKLY2W_js = require('./chunk-NZTKLY2W.js');
14
+ var chunk2O2CG465_js = require('./chunk-2O2CG465.js');
15
15
  var chunkPDOELNNQ_js = require('./chunk-PDOELNNQ.js');
16
16
  var chunkPTRNO5UD_js = require('./chunk-PTRNO5UD.js');
17
17
  var chunk2V7IL4HC_js = require('./chunk-2V7IL4HC.js');
@@ -39,17 +39,17 @@ var WORD = 4, DEFAULT_WORKGROUP = 1, ENTRY_BYTES = 52 * (4), MAX_TARGETS = 4, PA
39
39
  rgba16f: 8,
40
40
  rgba32f: 16
41
41
  }, FACTOR = {
42
- zero: chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("zero"),
43
- one: chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("one"),
44
- src: chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("srcColor"),
45
- "one-minus-src": chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("oneMinusSrcColor"),
46
- "src-alpha": chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("srcAlpha"),
47
- "one-minus-src-alpha": chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("oneMinusSrcAlpha"),
48
- dst: chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("dstColor"),
49
- "one-minus-dst": chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("oneMinusDstColor"),
50
- "dst-alpha": chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("dstAlpha"),
51
- "one-minus-dst-alpha": chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("oneMinusDstAlpha"),
52
- "src-alpha-saturated": chunkEPYFN2A3_js.BLEND_FACTORS.indexOf("srcAlphaSaturate")
42
+ zero: chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("zero"),
43
+ one: chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("one"),
44
+ src: chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("srcColor"),
45
+ "one-minus-src": chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("oneMinusSrcColor"),
46
+ "src-alpha": chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("srcAlpha"),
47
+ "one-minus-src-alpha": chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("oneMinusSrcAlpha"),
48
+ dst: chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("dstColor"),
49
+ "one-minus-dst": chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("oneMinusDstColor"),
50
+ "dst-alpha": chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("dstAlpha"),
51
+ "one-minus-dst-alpha": chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("oneMinusDstAlpha"),
52
+ "src-alpha-saturated": chunk7AAIAVAA_js.BLEND_FACTORS.indexOf("srcAlphaSaturate")
53
53
  }, TOPOLOGY = {
54
54
  "triangle-list": 0,
55
55
  "triangle-strip": 1,
@@ -68,12 +68,12 @@ var WORD = 4, DEFAULT_WORKGROUP = 1, ENTRY_BYTES = 52 * (4), MAX_TARGETS = 4, PA
68
68
  };
69
69
  function failure(code, what) {
70
70
  switch (code) {
71
- case chunkW3VVG4NL_js.ERROR_CAPACITY_EXCEEDED:
71
+ case chunk2O2CG465_js.ERROR_CAPACITY_EXCEEDED:
72
72
  return new chunk2V7IL4HC_js.GameError("capacity_exceeded", `${what}: capacity exceeded`);
73
- case chunkW3VVG4NL_js.ERROR_DEAD_ENTITY:
74
- case chunkW3VVG4NL_js.ERROR_UNKNOWN_RESOURCE:
73
+ case chunk2O2CG465_js.ERROR_DEAD_ENTITY:
74
+ case chunk2O2CG465_js.ERROR_UNKNOWN_RESOURCE:
75
75
  return new chunk2V7IL4HC_js.GameError("unknown_resource", `${what}: unknown resource`);
76
- case chunkW3VVG4NL_js.ERROR_UNSUPPORTED:
76
+ case chunk2O2CG465_js.ERROR_UNSUPPORTED:
77
77
  return new chunk2V7IL4HC_js.GameError("unsupported_feature", `${what}: unsupported`);
78
78
  default:
79
79
  return new chunk2V7IL4HC_js.GameError("invalid_argument", `${what}: invalid argument`);
@@ -111,7 +111,7 @@ var EngineRaw = class {
111
111
  let size = this.size(buffer);
112
112
  if (offset < 0 || offset % (4) !== 0 || offset + data.byteLength > size)
113
113
  throw new chunk2V7IL4HC_js.GameError("invalid_argument", `write of ${data.byteLength} bytes at ${offset} overflows gpu buffer ${buffer}`);
114
- this.host.flush(), this.host.bytes(10, buffer, 0).set(new Uint8Array(data.buffer, data.byteOffset, data.byteLength), offset), this.host.command(chunkEPYFN2A3_js.OP_RAW_MARK_BUFFER, buffer);
114
+ this.host.flush(), this.host.bytes(10, buffer, 0).set(new Uint8Array(data.buffer, data.byteOffset, data.byteLength), offset), this.host.command(chunk7AAIAVAA_js.OP_RAW_MARK_BUFFER, buffer);
115
115
  }
116
116
  createTexture(desc) {
117
117
  let d = this.host.clearDesc();
@@ -126,7 +126,7 @@ var EngineRaw = class {
126
126
  let info = this.texture(texture), bytes = info.width * info.height * TEXEL_BYTES[info.format];
127
127
  if (data.byteLength !== bytes)
128
128
  throw new chunk2V7IL4HC_js.GameError("invalid_argument", `texture ${texture} takes exactly ${bytes} bytes`);
129
- this.host.flush(), this.host.bytes(11, texture, 0).set(new Uint8Array(data.buffer, data.byteOffset, data.byteLength)), this.host.command(chunkEPYFN2A3_js.OP_RAW_MARK_TEXTURE, texture);
129
+ this.host.flush(), this.host.bytes(11, texture, 0).set(new Uint8Array(data.buffer, data.byteOffset, data.byteLength)), this.host.command(chunk7AAIAVAA_js.OP_RAW_MARK_TEXTURE, texture);
130
130
  }
131
131
  readTexture(texture, rect, out) {
132
132
  let info = this.texture(texture), bytes = rect.width * rect.height * TEXEL_BYTES[info.format];
@@ -141,11 +141,11 @@ var EngineRaw = class {
141
141
  });
142
142
  }
143
143
  copyTexture(source, target, copy) {
144
- let info = this.texture(source), a = this.host.command(chunkEPYFN2A3_js.OP_RAW_COPY_TEXTURE, source), w = this.host.commandWords;
144
+ let info = this.texture(source), a = this.host.command(chunk7AAIAVAA_js.OP_RAW_COPY_TEXTURE, source), w = this.host.commandWords;
145
145
  w[a] = target, w[a + 1] = pack(copy?.from ?? [0, 0]), w[a + 2] = pack(copy?.to ?? [0, 0]), w[a + 3] = pack(copy?.size ?? [info.width, info.height]), w[a + 4] = HOOK_ORDER.indexOf(copy?.hook ?? "beforeScene");
146
146
  }
147
147
  destroyTexture(texture) {
148
- this.host.command(chunkEPYFN2A3_js.OP_RAW_DESTROY_TEXTURE, texture), this.textures.delete(texture), this.reject((read) => read.texture === texture, `gpu texture ${texture} was destroyed`);
148
+ this.host.command(chunk7AAIAVAA_js.OP_RAW_DESTROY_TEXTURE, texture), this.textures.delete(texture), this.reject((read) => read.texture === texture, `gpu texture ${texture} was destroyed`);
149
149
  }
150
150
  createSampler(desc) {
151
151
  let d = this.host.clearDesc();
@@ -192,7 +192,7 @@ var EngineRaw = class {
192
192
  }), this.check(this.host.call("engine_render_raw_bindings"), "create bind group");
193
193
  }
194
194
  dispatch(pipeline, bindGroup, x, y = (1), z = (1), options) {
195
- let a = this.host.command(chunkEPYFN2A3_js.OP_RAW_DISPATCH, pipeline), w = this.host.commandWords;
195
+ let a = this.host.command(chunk7AAIAVAA_js.OP_RAW_DISPATCH, pipeline), w = this.host.commandWords;
196
196
  w[a + 0] = bindGroup, w[a + 1] = x, w[a + 1 + 1] = y, w[a + 1 + 2] = z, w[a + 4] = HOOK_ORDER.indexOf(options?.hook ?? "beforeScene"), w[a + 5] = options?.indirect ?? 0;
197
197
  }
198
198
  draw(pipeline, bindGroup, vertexCount, options) {
@@ -203,11 +203,11 @@ var EngineRaw = class {
203
203
  if (this.targetFormats.get(pipeline) !== SCENE_COLOR_FORMAT)
204
204
  throw new chunk2V7IL4HC_js.GameError("invalid_argument", `scene colour draws need a ${SCENE_COLOR_FORMAT} target`);
205
205
  }
206
- let a = this.host.command(chunkEPYFN2A3_js.OP_RAW_DRAW, pipeline), w = this.host.commandWords;
206
+ let a = this.host.command(chunk7AAIAVAA_js.OP_RAW_DRAW, pipeline), w = this.host.commandWords;
207
207
  w[a + 0] = bindGroup, w[a + 1] = vertexCount, w[a + 2] = options?.instances ?? 1, w[a + 3] = target === "color" ? 4294967282 : target, w[a + 4] = HOOK_ORDER.indexOf(hook), w[a + 5] = 0;
208
208
  }
209
209
  copyBuffer(source, sourceOffset, target, targetOffset, size) {
210
- let a = this.host.command(chunkEPYFN2A3_js.OP_RAW_COPY, source), w = this.host.commandWords;
210
+ let a = this.host.command(chunk7AAIAVAA_js.OP_RAW_COPY, source), w = this.host.commandWords;
211
211
  w[a] = sourceOffset, w[a + 1] = target, w[a + 2] = targetOffset, w[a + 3] = size;
212
212
  }
213
213
  submit() {
@@ -224,11 +224,11 @@ var EngineRaw = class {
224
224
  });
225
225
  }
226
226
  destroyBuffer(buffer) {
227
- this.host.command(chunkEPYFN2A3_js.OP_RAW_DESTROY_BUFFER, buffer), this.sizes.delete(buffer), this.reject((read) => read.buffer === buffer, `gpu buffer ${buffer} was destroyed`);
227
+ this.host.command(chunk7AAIAVAA_js.OP_RAW_DESTROY_BUFFER, buffer), this.sizes.delete(buffer), this.reject((read) => read.buffer === buffer, `gpu buffer ${buffer} was destroyed`);
228
228
  }
229
229
  dispose() {
230
- for (let id of this.sizes.keys()) this.host.command(chunkEPYFN2A3_js.OP_RAW_DESTROY_BUFFER, id);
231
- for (let id of this.textures.keys()) this.host.command(chunkEPYFN2A3_js.OP_RAW_DESTROY_TEXTURE, id);
230
+ for (let id of this.sizes.keys()) this.host.command(chunk7AAIAVAA_js.OP_RAW_DESTROY_BUFFER, id);
231
+ for (let id of this.textures.keys()) this.host.command(chunk7AAIAVAA_js.OP_RAW_DESTROY_TEXTURE, id);
232
232
  this.host.flush(), this.sizes.clear(), this.textures.clear(), this.reject(() => true, "gpu was disposed");
233
233
  }
234
234
  pipeline(shader, entry, configure) {
@@ -297,7 +297,7 @@ var NO_JOINT = 4294967295, IK_HEADER = 8, BLEND_MEMBER_WORDS = 3, CLIP_INFO_WORD
297
297
  return this.bits[0] = value, this.bitWords[0];
298
298
  }
299
299
  op(target, sub) {
300
- let at = this.host.command(chunkEPYFN2A3_js.OP_ANIMATION, target);
300
+ let at = this.host.command(chunk7AAIAVAA_js.OP_ANIMATION, target);
301
301
  return this.host.commandWords[at] = sub, at + 1;
302
302
  }
303
303
  joint(root, bone) {
@@ -342,7 +342,7 @@ var NO_JOINT = 4294967295, IK_HEADER = 8, BLEND_MEMBER_WORDS = 3, CLIP_INFO_WORD
342
342
  header[0] = (0), header[1] = 24, header[2] = target.chain, header[3] = 2, template[0] = target.effect, template[1] = this.host.postParam(target.chain, target.effect, target.name);
343
343
  return;
344
344
  case "emitterRate":
345
- header[0] = (0), header[1] = chunkEPYFN2A3_js.OP_SET_EMITTER_RATE, header[2] = target.emitter, header[3] = 0;
345
+ header[0] = (0), header[1] = chunk7AAIAVAA_js.OP_SET_EMITTER_RATE, header[2] = target.emitter, header[3] = 0;
346
346
  return;
347
347
  }
348
348
  }
@@ -360,43 +360,43 @@ var NO_JOINT = 4294967295, IK_HEADER = 8, BLEND_MEMBER_WORDS = 3, CLIP_INFO_WORD
360
360
  this.host.animation((42), 0, Uint32Array.of(clip));
361
361
  }
362
362
  setClipTime(action, seconds) {
363
- this.host.commandFloats[this.op(action, chunkEPYFN2A3_js.ANIM_SET_TIME)] = seconds;
363
+ this.host.commandFloats[this.op(action, chunk7AAIAVAA_js.ANIM_SET_TIME)] = seconds;
364
364
  }
365
365
  setClipSpeed(action, speed) {
366
- this.host.commandFloats[this.op(action, chunkEPYFN2A3_js.ANIM_SET_SPEED)] = speed;
366
+ this.host.commandFloats[this.op(action, chunk7AAIAVAA_js.ANIM_SET_SPEED)] = speed;
367
367
  }
368
368
  setClipLoop(action, loop, repetitions, clampWhenFinished) {
369
- let at = this.op(action, chunkEPYFN2A3_js.ANIM_SET_LOOP), w = this.host.commandWords;
369
+ let at = this.op(action, chunk7AAIAVAA_js.ANIM_SET_LOOP), w = this.host.commandWords;
370
370
  w[at] = chunkYV52DGSA_js.LOOP_CODES[loop], w[at + 1] = Number.isFinite(repetitions) ? Math.max(0, repetitions | 0) : 0, w[at + 2] = clampWhenFinished ? 1 : 0;
371
371
  }
372
372
  setClipPaused(action, paused) {
373
- this.host.commandWords[this.op(action, chunkEPYFN2A3_js.ANIM_SET_PAUSED)] = paused ? 1 : 0;
373
+ this.host.commandWords[this.op(action, chunk7AAIAVAA_js.ANIM_SET_PAUSED)] = paused ? 1 : 0;
374
374
  }
375
375
  setClipRange(action, start, end) {
376
- let at = this.op(action, chunkEPYFN2A3_js.ANIM_SET_RANGE);
376
+ let at = this.op(action, chunk7AAIAVAA_js.ANIM_SET_RANGE);
377
377
  this.host.commandFloats[at] = start, this.host.commandFloats[at + 1] = end;
378
378
  }
379
379
  setClipSync(action, group) {
380
- this.host.commandWords[this.op(action, chunkEPYFN2A3_js.ANIM_SET_SYNC)] = group === null ? 0 : (group & 2147483647) + 1;
380
+ this.host.commandWords[this.op(action, chunk7AAIAVAA_js.ANIM_SET_SYNC)] = group === null ? 0 : (group & 2147483647) + 1;
381
381
  }
382
382
  setClipSyncMode(action, mode) {
383
- this.host.commandWords[this.op(action, chunkEPYFN2A3_js.ANIM_SET_SYNC_MODE)] = chunkYV52DGSA_js.SYNC_MODE_CODES[mode];
383
+ this.host.commandWords[this.op(action, chunk7AAIAVAA_js.ANIM_SET_SYNC_MODE)] = chunkYV52DGSA_js.SYNC_MODE_CODES[mode];
384
384
  }
385
385
  setClipSyncMarkers(root, clip, markers) {
386
386
  chunkYV52DGSA_js.checkSyncMarkers(markers, Number.POSITIVE_INFINITY);
387
387
  let words = new Uint32Array(1 + markers.length * 2);
388
388
  words[0] = this.clipIndex(root, clip), markers.forEach((marker, i) => {
389
389
  words[1 + i * 2] = this.floatBits(marker.time), words[2 + i * 2] = marker.id >>> 0;
390
- }), this.host.animation(chunkEPYFN2A3_js.ANIM_SET_SYNC_MARKERS, root, words);
390
+ }), this.host.animation(chunk7AAIAVAA_js.ANIM_SET_SYNC_MARKERS, root, words);
391
391
  }
392
392
  inertialize(from, to, seconds) {
393
- let at = this.op(from, chunkEPYFN2A3_js.ANIM_INERTIALIZE);
393
+ let at = this.op(from, chunk7AAIAVAA_js.ANIM_INERTIALIZE);
394
394
  this.host.commandWords[at] = to, this.host.commandFloats[at + 1] = seconds;
395
395
  }
396
396
  bakeRetarget(target, source, clip, options) {
397
397
  let maps = options?.maps, words = new Uint32Array((4) + (maps === void 0 ? 0 : chunkYV52DGSA_js.HUMAN_BONES.length * 2)).fill((4294967295));
398
398
  words[0] = source, words[1] = this.clipIndex(source, clip), words[2] = this.floatBits(chunkYV52DGSA_js.bakeRate(options)), words[3] = maps === void 0 ? 0 : (1), maps !== void 0 && this.writeMaps(words, (4), target, source, maps);
399
- let index = this.host.animation(chunkEPYFN2A3_js.ANIM_BAKE_RETARGET, target, words), name = this.host.refreshModel(target).clipNames[index];
399
+ let index = this.host.animation(chunk7AAIAVAA_js.ANIM_BAKE_RETARGET, target, words), name = this.host.refreshModel(target).clipNames[index];
400
400
  if (name === void 0) throw new chunk2V7IL4HC_js.GameError("unknown_resource", `baked clip ${index} is missing on the target model`);
401
401
  return name;
402
402
  }
@@ -407,86 +407,86 @@ var NO_JOINT = 4294967295, IK_HEADER = 8, BLEND_MEMBER_WORDS = 3, CLIP_INFO_WORD
407
407
  });
408
408
  }
409
409
  setClipEventsEnabled(action, enabled) {
410
- this.host.commandWords[this.op(action, chunkEPYFN2A3_js.ANIM_SET_EVENTS)] = enabled ? 1 : 0;
410
+ this.host.commandWords[this.op(action, chunk7AAIAVAA_js.ANIM_SET_EVENTS)] = enabled ? 1 : 0;
411
411
  }
412
412
  setClipAdditive(action, referenceTime) {
413
- this.host.commandFloats[this.host.command(chunkEPYFN2A3_js.OP_SET_CLIP_ADDITIVE, action)] = referenceTime ?? Number.POSITIVE_INFINITY;
413
+ this.host.commandFloats[this.host.command(chunk7AAIAVAA_js.OP_SET_CLIP_ADDITIVE, action)] = referenceTime ?? Number.POSITIVE_INFINITY;
414
414
  }
415
415
  crossFade(from, to, seconds, warp) {
416
- let at = this.op(from, chunkEPYFN2A3_js.ANIM_CROSSFADE);
416
+ let at = this.op(from, chunk7AAIAVAA_js.ANIM_CROSSFADE);
417
417
  this.host.commandWords[at] = to, this.host.commandFloats[at + 1] = seconds, this.host.commandWords[at + 2] = warp ? 1 : 0;
418
418
  }
419
419
  fadeClip(action, weight, seconds) {
420
- let at = this.op(action, chunkEPYFN2A3_js.ANIM_FADE);
420
+ let at = this.op(action, chunk7AAIAVAA_js.ANIM_FADE);
421
421
  this.host.commandFloats[at] = weight, this.host.commandFloats[at + 1] = seconds;
422
422
  }
423
423
  fadeClipFrom(action, values, offset) {
424
- let at = this.op(action, chunkEPYFN2A3_js.ANIM_FADE), f = this.host.commandFloats;
424
+ let at = this.op(action, chunk7AAIAVAA_js.ANIM_FADE), f = this.host.commandFloats;
425
425
  f[at] = values[offset], f[at + 1] = values[offset + 1];
426
426
  }
427
427
  createClipMask(root, weights) {
428
428
  let names = this.host.model(root).nodeNames, words = new Uint32Array(names.length);
429
429
  for (let [bone, weight] of Object.entries(weights)) words[this.joint(root, bone)] = this.floatBits(weight);
430
- return this.host.animation(chunkEPYFN2A3_js.ANIM_CREATE_MASK, root, words);
430
+ return this.host.animation(chunk7AAIAVAA_js.ANIM_CREATE_MASK, root, words);
431
431
  }
432
432
  setClipMask(action, mask) {
433
- this.host.commandWords[this.host.command(chunkEPYFN2A3_js.OP_SET_CLIP_MASK, action)] = mask ?? 0;
433
+ this.host.commandWords[this.host.command(chunk7AAIAVAA_js.OP_SET_CLIP_MASK, action)] = mask ?? 0;
434
434
  }
435
435
  destroyClipMask(root, mask) {
436
- this.host.animation(chunkEPYFN2A3_js.ANIM_DESTROY, root, Uint32Array.of(chunkEPYFN2A3_js.ANIM_KIND_MASK, mask));
436
+ this.host.animation(chunk7AAIAVAA_js.ANIM_DESTROY, root, Uint32Array.of(chunk7AAIAVAA_js.ANIM_KIND_MASK, mask));
437
437
  }
438
438
  setClipEvents(root, clip, events) {
439
439
  let words = new Uint32Array(1 + events.length * 2);
440
440
  words[0] = this.clipIndex(root, clip), events.forEach((event, i) => {
441
441
  words[1 + i * 2] = this.floatBits(event.time), words[2 + i * 2] = event.id >>> 0;
442
- }), this.host.animation(chunkEPYFN2A3_js.ANIM_SET_CLIP_EVENTS, root, words);
442
+ }), this.host.animation(chunk7AAIAVAA_js.ANIM_SET_CLIP_EVENTS, root, words);
443
443
  }
444
444
  clipInfo(root, clip) {
445
445
  let words = new Uint32Array((4));
446
- return words[0] = this.clipIndex(root, clip), this.host.animation(chunkEPYFN2A3_js.ANIM_CLIP_INFO, root, words), this.bitWords[0] = words[0], { duration: this.bits[0], tracks: words[1], morphWeights: words[2], events: words[3] };
446
+ return words[0] = this.clipIndex(root, clip), this.host.animation(chunk7AAIAVAA_js.ANIM_CLIP_INFO, root, words), this.bitWords[0] = words[0], { duration: this.bits[0], tracks: words[1], morphWeights: words[2], events: words[3] };
447
447
  }
448
448
  createBlendSpace(root, desc) {
449
449
  let words = new Uint32Array(2 + desc.members.length * (3));
450
450
  return words[0] = chunkYV52DGSA_js.BLEND_SPACE_CODES[desc.kind], words[1] = desc.members.length, desc.members.forEach((member, i) => {
451
451
  let at = 2 + i * (3);
452
452
  words[at] = member.action, words[at + 1] = this.floatBits(member.x), words[at + 2] = this.floatBits(member.y ?? 0);
453
- }), this.host.animation(chunkEPYFN2A3_js.ANIM_CREATE_BLEND, root, words);
453
+ }), this.host.animation(chunk7AAIAVAA_js.ANIM_CREATE_BLEND, root, words);
454
454
  }
455
455
  setBlendParameter(space, x, y, weight) {
456
- let at = this.op(space, chunkEPYFN2A3_js.ANIM_SET_BLEND);
456
+ let at = this.op(space, chunk7AAIAVAA_js.ANIM_SET_BLEND);
457
457
  this.host.commandFloats[at] = x, this.host.commandFloats[at + 1] = y, this.host.commandFloats[at + 2] = weight;
458
458
  }
459
459
  setBlendParameterFrom(space, values, offset) {
460
- let at = this.op(space, chunkEPYFN2A3_js.ANIM_SET_BLEND), f = this.host.commandFloats;
460
+ let at = this.op(space, chunk7AAIAVAA_js.ANIM_SET_BLEND), f = this.host.commandFloats;
461
461
  f[at] = values[offset], f[at + 1] = values[offset + 1], f[at + 2] = values[offset + 2];
462
462
  }
463
463
  destroyBlendSpace(root, space) {
464
- this.host.animation(chunkEPYFN2A3_js.ANIM_DESTROY, root, Uint32Array.of(chunkEPYFN2A3_js.ANIM_KIND_BLEND, space));
464
+ this.host.animation(chunk7AAIAVAA_js.ANIM_DESTROY, root, Uint32Array.of(chunk7AAIAVAA_js.ANIM_KIND_BLEND, space));
465
465
  }
466
466
  createIk(root, desc) {
467
467
  let words = new Uint32Array((8) + desc.bones.length), forward = desc.forward ?? [0, 0, 1];
468
468
  return words[0] = chunkYV52DGSA_js.IK_CODES[desc.solver], words[1] = desc.iterations ?? chunkYV52DGSA_js.DEFAULT_IK_ITERATIONS, words[2] = this.floatBits(desc.tolerance ?? chunkYV52DGSA_js.DEFAULT_IK_TOLERANCE), words[3] = this.floatBits(desc.maxAngle ?? FULL_TURN), words[4] = this.floatBits(forward[0]), words[5] = this.floatBits(forward[1]), words[6] = this.floatBits(forward[2]), words[7] = desc.bones.length, desc.bones.forEach((bone, i) => {
469
469
  words[(8) + i] = this.joint(root, bone);
470
- }), this.host.animation(chunkEPYFN2A3_js.ANIM_CREATE_IK, root, words);
470
+ }), this.host.animation(chunk7AAIAVAA_js.ANIM_CREATE_IK, root, words);
471
471
  }
472
472
  setIkTarget(chain, x, y, z, weight) {
473
- let at = this.op(chain, chunkEPYFN2A3_js.ANIM_SET_IK_TARGET), f = this.host.commandFloats;
473
+ let at = this.op(chain, chunk7AAIAVAA_js.ANIM_SET_IK_TARGET), f = this.host.commandFloats;
474
474
  f[at] = x, f[at + 1] = y, f[at + 2] = z, f[at + 3] = weight;
475
475
  }
476
476
  setIkTargetFrom(chain, values, offset) {
477
- let at = this.op(chain, chunkEPYFN2A3_js.ANIM_SET_IK_TARGET), f = this.host.commandFloats;
477
+ let at = this.op(chain, chunk7AAIAVAA_js.ANIM_SET_IK_TARGET), f = this.host.commandFloats;
478
478
  f[at] = values[offset], f[at + 1] = values[offset + 1], f[at + 2] = values[offset + 2], f[at + 3] = values[offset + 3];
479
479
  }
480
480
  setIkPole(chain, x, y, z) {
481
- let at = this.op(chain, chunkEPYFN2A3_js.ANIM_SET_IK_POLE), f = this.host.commandFloats;
481
+ let at = this.op(chain, chunk7AAIAVAA_js.ANIM_SET_IK_POLE), f = this.host.commandFloats;
482
482
  f[at] = x, f[at + 1] = y, f[at + 2] = z;
483
483
  }
484
484
  destroyIk(root, chain) {
485
- this.host.animation(chunkEPYFN2A3_js.ANIM_DESTROY, root, Uint32Array.of(chunkEPYFN2A3_js.ANIM_KIND_IK, chain));
485
+ this.host.animation(chunk7AAIAVAA_js.ANIM_DESTROY, root, Uint32Array.of(chunk7AAIAVAA_js.ANIM_KIND_IK, chain));
486
486
  }
487
487
  humanoid(root) {
488
488
  let words = new Uint32Array(chunkYV52DGSA_js.HUMAN_BONES.length);
489
- this.host.animation(chunkEPYFN2A3_js.ANIM_HUMANOID, root, words);
489
+ this.host.animation(chunk7AAIAVAA_js.ANIM_HUMANOID, root, words);
490
490
  let names = this.host.model(root).nodeNames, map = {};
491
491
  return chunkYV52DGSA_js.HUMAN_BONES.forEach((bone, i) => {
492
492
  words[i] !== (4294967295) && (map[bone] = names[words[i]]);
@@ -494,14 +494,14 @@ var NO_JOINT = 4294967295, IK_HEADER = 8, BLEND_MEMBER_WORDS = 3, CLIP_INFO_WORD
494
494
  }
495
495
  retarget(target, source, maps) {
496
496
  if (maps === void 0) {
497
- this.host.animation(chunkEPYFN2A3_js.ANIM_RETARGET, target, Uint32Array.of(source, 0));
497
+ this.host.animation(chunk7AAIAVAA_js.ANIM_RETARGET, target, Uint32Array.of(source, 0));
498
498
  return;
499
499
  }
500
500
  let words = new Uint32Array((2) + chunkYV52DGSA_js.HUMAN_BONES.length * 2).fill((4294967295));
501
- words[0] = source, words[1] = (1), this.writeMaps(words, (2), target, source, maps), this.host.animation(chunkEPYFN2A3_js.ANIM_RETARGET, target, words);
501
+ words[0] = source, words[1] = (1), this.writeMaps(words, (2), target, source, maps), this.host.animation(chunk7AAIAVAA_js.ANIM_RETARGET, target, words);
502
502
  }
503
503
  stopRetarget(target) {
504
- this.host.animation(chunkEPYFN2A3_js.ANIM_DESTROY, target, Uint32Array.of(chunkEPYFN2A3_js.ANIM_KIND_RETARGET, 0));
504
+ this.host.animation(chunk7AAIAVAA_js.ANIM_DESTROY, target, Uint32Array.of(chunk7AAIAVAA_js.ANIM_KIND_RETARGET, 0));
505
505
  }
506
506
  createBoneSet(root, bones) {
507
507
  let nodes = new Uint32Array(bones.length);
@@ -518,31 +518,31 @@ var NO_JOINT = 4294967295, IK_HEADER = 8, BLEND_MEMBER_WORDS = 3, CLIP_INFO_WORD
518
518
  this.host.destroyPoseReader(set);
519
519
  }
520
520
  setAnimationLod(root, interval) {
521
- this.host.animation(chunkEPYFN2A3_js.ANIM_SET_LOD, root, Uint32Array.of(chunkYV52DGSA_js.animationLodInterval(interval)));
521
+ this.host.animation(chunk7AAIAVAA_js.ANIM_SET_LOD, root, Uint32Array.of(chunkYV52DGSA_js.animationLodInterval(interval)));
522
522
  }
523
523
  enableRootMotion(root, desc) {
524
- let flags = (desc.horizontal ?? true ? chunkEPYFN2A3_js.ROOT_MOTION_XZ : 0) | (desc.vertical ? chunkEPYFN2A3_js.ROOT_MOTION_Y : 0) | (desc.yaw ? chunkEPYFN2A3_js.ROOT_MOTION_YAW : 0) | (desc.apply ? chunkEPYFN2A3_js.ROOT_MOTION_APPLY : 0);
525
- if (flags === 0 || flags === chunkEPYFN2A3_js.ROOT_MOTION_APPLY)
524
+ let flags = (desc.horizontal ?? true ? chunk7AAIAVAA_js.ROOT_MOTION_XZ : 0) | (desc.vertical ? chunk7AAIAVAA_js.ROOT_MOTION_Y : 0) | (desc.yaw ? chunk7AAIAVAA_js.ROOT_MOTION_YAW : 0) | (desc.apply ? chunk7AAIAVAA_js.ROOT_MOTION_APPLY : 0);
525
+ if (flags === 0 || flags === chunk7AAIAVAA_js.ROOT_MOTION_APPLY)
526
526
  throw new chunk2V7IL4HC_js.GameError("invalid_argument", "root motion needs at least one extracted axis");
527
- return this.host.animation(chunkEPYFN2A3_js.ANIM_ROOT_MOTION, root, Uint32Array.of(flags, this.joint(root, desc.bone)));
527
+ return this.host.animation(chunk7AAIAVAA_js.ANIM_ROOT_MOTION, root, Uint32Array.of(flags, this.joint(root, desc.bone)));
528
528
  }
529
529
  disableRootMotion(root) {
530
- this.host.animation(chunkEPYFN2A3_js.ANIM_DESTROY, root, Uint32Array.of(chunkEPYFN2A3_js.ANIM_KIND_ROOT_MOTION, 0));
530
+ this.host.animation(chunk7AAIAVAA_js.ANIM_DESTROY, root, Uint32Array.of(chunk7AAIAVAA_js.ANIM_KIND_ROOT_MOTION, 0));
531
531
  }
532
532
  readRootMotion(motion, out, offset) {
533
- let words = this.host.floats(chunkEPYFN2A3_js.ANIMATION_BUFFER_ROOT_MOTION);
533
+ let words = this.host.floats(chunk7AAIAVAA_js.ANIMATION_BUFFER_ROOT_MOTION);
534
534
  out.set(words.subarray(motion * chunkYV52DGSA_js.ROOT_MOTION_WORDS, (motion + 1) * chunkYV52DGSA_js.ROOT_MOTION_WORDS), offset);
535
535
  }
536
536
  readClipState(action, out) {
537
- let floats = this.host.floats(chunkEPYFN2A3_js.ANIMATION_BUFFER_ACTIONS), at = action * chunkEPYFN2A3_js.ANIM_ACTION_WORDS;
537
+ let floats = this.host.floats(chunk7AAIAVAA_js.ANIMATION_BUFFER_ACTIONS), at = action * chunk7AAIAVAA_js.ANIM_ACTION_WORDS;
538
538
  this.bits[0] = floats[at + 3];
539
539
  let flags = this.bitWords[0];
540
- out.time = floats[at], out.weight = floats[at + 1], out.speed = floats[at + 2], out.running = (flags & chunkEPYFN2A3_js.ANIM_ACTION_RUNNING) !== 0, out.paused = (flags & chunkEPYFN2A3_js.ANIM_ACTION_PAUSED) !== 0, out.finished = (flags & chunkEPYFN2A3_js.ANIM_ACTION_FINISHED) !== 0;
540
+ out.time = floats[at], out.weight = floats[at + 1], out.speed = floats[at + 2], out.running = (flags & chunk7AAIAVAA_js.ANIM_ACTION_RUNNING) !== 0, out.paused = (flags & chunk7AAIAVAA_js.ANIM_ACTION_PAUSED) !== 0, out.finished = (flags & chunk7AAIAVAA_js.ANIM_ACTION_FINISHED) !== 0;
541
541
  }
542
542
  readClipEvents(out) {
543
- let words = this.host.words(chunkEPYFN2A3_js.ANIMATION_BUFFER_EVENTS), count = Math.min(words[0], chunkEPYFN2A3_js.ANIM_MAX_EVENTS);
543
+ let words = this.host.words(chunk7AAIAVAA_js.ANIMATION_BUFFER_EVENTS), count = Math.min(words[0], chunk7AAIAVAA_js.ANIM_MAX_EVENTS);
544
544
  for (let i = 0; i < count; i++) {
545
- let at = 1 + i * chunkEPYFN2A3_js.ANIM_EVENT_WORDS, event = out[i] ?? chunkYV52DGSA_js.emptyClipEvent();
545
+ let at = 1 + i * chunk7AAIAVAA_js.ANIM_EVENT_WORDS, event = out[i] ?? chunkYV52DGSA_js.emptyClipEvent();
546
546
  event.action = words[at], event.kind = chunkYV52DGSA_js.CLIP_EVENT_KINDS[words[at + 1]] ?? "event", event.id = words[at + 2], this.bitWords[0] = words[at + 3], event.time = this.bits[0], out[i] = event;
547
547
  }
548
548
  return count;
@@ -557,7 +557,7 @@ function pair(d, at, value, fallback) {
557
557
  function writeEmitterDesc(d, f, desc) {
558
558
  d[0] = desc.capacity, f[1] = desc.rate ?? 0, d[2] = desc.burst ?? 0, pair(f, 3, desc.lifetime, (1)), pair(f, 5, desc.speed, (1)), pair(f, 7, desc.size, (0.1)), d[9] = desc.color?.[0] ?? (16777215), d[10] = desc.color?.[1] ?? desc.color?.[0] ?? (16777215), f[11] = desc.alpha?.[0] ?? 1, f[12] = desc.alpha?.[1] ?? 1, f.set(desc.gravity ?? [0, 0, 0], 13), f[16] = desc.drag ?? 0, f[17] = desc.noise?.strength ?? 0, f[18] = desc.noise?.scale ?? 1;
559
559
  let shape = desc.shape ?? { kind: "point" };
560
- switch (d[19] = chunkEPYFN2A3_js.EMITTER_SHAPES.indexOf(shape.kind), shape.kind) {
560
+ switch (d[19] = chunk7AAIAVAA_js.EMITTER_SHAPES.indexOf(shape.kind), shape.kind) {
561
561
  case "sphere":
562
562
  case "disc":
563
563
  f[20] = shape.radius;
@@ -570,7 +570,7 @@ function writeEmitterDesc(d, f, desc) {
570
570
  break;
571
571
  }
572
572
  let collision = desc.collision ?? { kind: "none" };
573
- d[24] = chunkEPYFN2A3_js.EMITTER_COLLISIONS.indexOf(collision.kind), collision.kind === "plane" && f.set(collision.plane, 25), collision.kind !== "none" && (f[29] = collision.bounce ?? 0), d[30] = desc.material ?? 0, d[31] = (desc.soft ? 1 : 0) | (desc.sorted ? 2 : 0) | (desc.localSpace ? 4 : 0) | (desc.deterministic ? 8 : 0) | (desc.additive ? 16 : 0) | (desc.stretch ? 32 : 0) | (desc.oit ? 64 : 0) | (desc.velocityAligned ? 128 : 0), d[32] = desc.seed ?? 0, f[33] = desc.spread ?? 0, f[34] = desc.spin ?? 0, d[36] = desc.sizeCurve || desc.colorCurve ? 32 : 0;
573
+ d[24] = chunk7AAIAVAA_js.EMITTER_COLLISIONS.indexOf(collision.kind), collision.kind === "plane" && f.set(collision.plane, 25), collision.kind !== "none" && (f[29] = collision.bounce ?? 0), d[30] = desc.material ?? 0, d[31] = (desc.soft ? 1 : 0) | (desc.sorted ? 2 : 0) | (desc.localSpace ? 4 : 0) | (desc.deterministic ? 8 : 0) | (desc.additive ? 16 : 0) | (desc.stretch ? 32 : 0) | (desc.oit ? 64 : 0) | (desc.velocityAligned ? 128 : 0), d[32] = desc.seed ?? 0, f[33] = desc.spread ?? 0, f[34] = desc.spin ?? 0, d[36] = desc.sizeCurve || desc.colorCurve ? 32 : 0;
574
574
  }
575
575
  function channel(point, c) {
576
576
  return typeof point.value == "number" ? point.value : point.value[c];
@@ -721,21 +721,21 @@ var ENGINE_GRAPHICS_NAME = "cimplify-render", NO_HANDLE = 0, GOVERNOR_TIER_MASK
721
721
  rgba8: [0, 4],
722
722
  rgba16f: [2, 8],
723
723
  rgba32f: [1, 16],
724
- r8: [chunkEPYFN2A3_js.TEXTURE_FORMAT_R8, 1],
725
- rg8: [chunkEPYFN2A3_js.TEXTURE_FORMAT_RG8, 2],
726
- r16f: [chunkEPYFN2A3_js.TEXTURE_FORMAT_R16F, 2],
727
- rg16f: [chunkEPYFN2A3_js.TEXTURE_FORMAT_RG16F, 4],
728
- r32f: [chunkEPYFN2A3_js.TEXTURE_FORMAT_R32F, 4],
729
- rg32f: [chunkEPYFN2A3_js.TEXTURE_FORMAT_RG32F, 8],
730
- r8ui: [chunkEPYFN2A3_js.TEXTURE_FORMAT_R8UI, 1],
731
- r16ui: [chunkEPYFN2A3_js.TEXTURE_FORMAT_R16UI, 2],
732
- r32ui: [chunkEPYFN2A3_js.TEXTURE_FORMAT_R32UI, 4],
733
- rg32ui: [chunkEPYFN2A3_js.TEXTURE_FORMAT_RG32UI, 8],
734
- rgba8ui: [chunkEPYFN2A3_js.TEXTURE_FORMAT_RGBA8UI, 4],
735
- rgba16ui: [chunkEPYFN2A3_js.TEXTURE_FORMAT_RGBA16UI, 8],
736
- rgba32ui: [chunkEPYFN2A3_js.TEXTURE_FORMAT_RGBA32UI, 16],
737
- r32i: [chunkEPYFN2A3_js.TEXTURE_FORMAT_R32I, 4],
738
- rgba32i: [chunkEPYFN2A3_js.TEXTURE_FORMAT_RGBA32I, 16]
724
+ r8: [chunk7AAIAVAA_js.TEXTURE_FORMAT_R8, 1],
725
+ rg8: [chunk7AAIAVAA_js.TEXTURE_FORMAT_RG8, 2],
726
+ r16f: [chunk7AAIAVAA_js.TEXTURE_FORMAT_R16F, 2],
727
+ rg16f: [chunk7AAIAVAA_js.TEXTURE_FORMAT_RG16F, 4],
728
+ r32f: [chunk7AAIAVAA_js.TEXTURE_FORMAT_R32F, 4],
729
+ rg32f: [chunk7AAIAVAA_js.TEXTURE_FORMAT_RG32F, 8],
730
+ r8ui: [chunk7AAIAVAA_js.TEXTURE_FORMAT_R8UI, 1],
731
+ r16ui: [chunk7AAIAVAA_js.TEXTURE_FORMAT_R16UI, 2],
732
+ r32ui: [chunk7AAIAVAA_js.TEXTURE_FORMAT_R32UI, 4],
733
+ rg32ui: [chunk7AAIAVAA_js.TEXTURE_FORMAT_RG32UI, 8],
734
+ rgba8ui: [chunk7AAIAVAA_js.TEXTURE_FORMAT_RGBA8UI, 4],
735
+ rgba16ui: [chunk7AAIAVAA_js.TEXTURE_FORMAT_RGBA16UI, 8],
736
+ rgba32ui: [chunk7AAIAVAA_js.TEXTURE_FORMAT_RGBA32UI, 16],
737
+ r32i: [chunk7AAIAVAA_js.TEXTURE_FORMAT_R32I, 4],
738
+ rgba32i: [chunk7AAIAVAA_js.TEXTURE_FORMAT_RGBA32I, 16]
739
739
  }, EFFECT_KINDS = {
740
740
  bloom: 0,
741
741
  fxaa: 1,
@@ -757,7 +757,7 @@ var ENGINE_GRAPHICS_NAME = "cimplify-render", NO_HANDLE = 0, GOVERNOR_TIER_MASK
757
757
  chromatic: 17,
758
758
  mask: 18,
759
759
  weather: 19,
760
- lens_flare: chunkEPYFN2A3_js.EFFECT_LENS_FLARE
760
+ lens_flare: chunk7AAIAVAA_js.EFFECT_LENS_FLARE
761
761
  }, SCALAR_PARAMS = {
762
762
  opacity: 3,
763
763
  emissiveIntensity: 7,
@@ -794,7 +794,7 @@ var ENGINE_GRAPHICS_NAME = "cimplify-render", NO_HANDLE = 0, GOVERNOR_TIER_MASK
794
794
  type: 50
795
795
  }, SHADOW_INTEGERS = /* @__PURE__ */ new Set(["cascades", "blurSamples"]);
796
796
  function shadowWord(key, value) {
797
- return typeof value == "string" ? chunkGBJ5CW3A_js.SHADOW_TYPES[value] : SHADOW_INTEGERS.has(key) ? value >>> 0 : chunkGBJ5CW3A_js.floatBits(value);
797
+ return typeof value == "string" ? chunkPKOZXD2Q_js.SHADOW_TYPES[value] : SHADOW_INTEGERS.has(key) ? value >>> 0 : chunkPKOZXD2Q_js.floatBits(value);
798
798
  }
799
799
  function linear(channel3) {
800
800
  return channel3 <= (0.04045) ? channel3 / (12.92) : ((channel3 + (0.055)) / (1.055)) ** (2.4);
@@ -804,12 +804,12 @@ function scalarOf(data) {
804
804
  }
805
805
  function failure2(code, what) {
806
806
  switch (code) {
807
- case chunkW3VVG4NL_js.ERROR_CAPACITY_EXCEEDED:
807
+ case chunk2O2CG465_js.ERROR_CAPACITY_EXCEEDED:
808
808
  return new chunk2V7IL4HC_js.GameError("capacity_exceeded", `${what}: capacity exceeded`);
809
- case chunkW3VVG4NL_js.ERROR_DEAD_ENTITY:
810
- case chunkW3VVG4NL_js.ERROR_UNKNOWN_RESOURCE:
809
+ case chunk2O2CG465_js.ERROR_DEAD_ENTITY:
810
+ case chunk2O2CG465_js.ERROR_UNKNOWN_RESOURCE:
811
811
  return new chunk2V7IL4HC_js.GameError("unknown_resource", `${what}: unknown resource`);
812
- case chunkW3VVG4NL_js.ERROR_UNSUPPORTED:
812
+ case chunk2O2CG465_js.ERROR_UNSUPPORTED:
813
813
  return new chunk2V7IL4HC_js.GameError("unsupported_feature", `${what}: unsupported`);
814
814
  default:
815
815
  return new chunk2V7IL4HC_js.GameError("invalid_argument", `${what}: invalid argument`);
@@ -817,19 +817,19 @@ function failure2(code, what) {
817
817
  }
818
818
  function bindRenderExports(symbols) {
819
819
  let bound = {};
820
- for (let name of chunkEPYFN2A3_js.RENDER_CORE_EXPORTS) {
820
+ for (let name of chunk7AAIAVAA_js.RENDER_CORE_EXPORTS) {
821
821
  let value = symbols[name];
822
822
  if (typeof value != "function") throw new chunk2V7IL4HC_js.GameError("not_initialized", `engine module is missing ${name}`);
823
823
  bound[name] = value;
824
824
  }
825
- for (let name of Object.keys(chunkEPYFN2A3_js.RENDER_FEATURE_EXPORTS)) {
825
+ for (let name of Object.keys(chunk7AAIAVAA_js.RENDER_FEATURE_EXPORTS)) {
826
826
  let value = symbols[name];
827
827
  typeof value == "function" && (bound[name] = value);
828
828
  }
829
829
  return bound;
830
830
  }
831
831
  function featureAvailable(exports, caps, name) {
832
- return exports[name] !== void 0 && (caps & chunkEPYFN2A3_js.RENDER_FEATURE_EXPORTS[name]) !== 0;
832
+ return exports[name] !== void 0 && (caps & chunk7AAIAVAA_js.RENDER_FEATURE_EXPORTS[name]) !== 0;
833
833
  }
834
834
  function graphicsCapabilities(render, caps) {
835
835
  return {
@@ -856,16 +856,16 @@ function graphicsCapabilities(render, caps) {
856
856
  fatLines: (caps & 524288) !== 0,
857
857
  text: featuresAvailable(render, caps, 1048576),
858
858
  picking: featuresAvailable(render, caps, 2097152),
859
- pointShadows: (caps & chunkGBJ5CW3A_js.CAP_POINT_SHADOWS) !== 0,
859
+ pointShadows: (caps & chunkPKOZXD2Q_js.CAP_POINT_SHADOWS) !== 0,
860
860
  sky: (caps & 4096) !== 0,
861
- customProjection: (caps & chunkGBJ5CW3A_js.CAP_CUSTOM_PROJECTION) !== 0,
861
+ customProjection: (caps & chunkPKOZXD2Q_js.CAP_CUSTOM_PROJECTION) !== 0,
862
862
  gpuTiming: (caps & 8388608) !== 0,
863
863
  globalIllumination: (caps & 33554432) !== 0,
864
864
  rayTracing: (caps & 67108864) !== 0
865
865
  };
866
866
  }
867
867
  function featuresAvailable(exports, caps, cap) {
868
- return (caps & cap) === 0 ? false : Object.keys(chunkEPYFN2A3_js.RENDER_FEATURE_EXPORTS).filter((name) => chunkEPYFN2A3_js.RENDER_FEATURE_EXPORTS[name] === cap).every((name) => exports[name] !== void 0);
868
+ return (caps & cap) === 0 ? false : Object.keys(chunk7AAIAVAA_js.RENDER_FEATURE_EXPORTS).filter((name) => chunk7AAIAVAA_js.RENDER_FEATURE_EXPORTS[name] === cap).every((name) => exports[name] !== void 0);
869
869
  }
870
870
  function concat(a, b) {
871
871
  let out = new Uint8Array(a.byteLength + b.byteLength);
@@ -938,20 +938,20 @@ var EngineGraphics = class {
938
938
  let force = runtime.symbols.engine_render_force_tier;
939
939
  this.forceTierCall = typeof force == "function" ? force : null;
940
940
  let quality = runtime.symbols.engine_render_quality_tier;
941
- if (this.qualityTierCall = typeof quality == "function" ? quality : null, this.handle = chunkGBJ5CW3A_js.createWithDescriptor(runtime, options, (desc2) => render.engine_render_create(desc2 === 0 ? (0) : desc2)), this.handle === (0)) throw chunkFAYK2MN6_js.engineSessionFailure(runtime.symbols) ?? new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine renderer could not be created");
941
+ if (this.qualityTierCall = typeof quality == "function" ? quality : null, this.handle = chunkPKOZXD2Q_js.createWithDescriptor(runtime, options, (desc2) => render.engine_render_create(desc2 === 0 ? (0) : desc2)), this.handle === (0)) throw chunkNZTKLY2W_js.engineSessionFailure(runtime.symbols) ?? new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine renderer could not be created");
942
942
  let buffer = this.buffer, desc = render.engine_render_desc(this.handle);
943
943
  this.desc = new Uint32Array(buffer, desc, 64), this.descFloats = new Float32Array(buffer, desc, 64);
944
944
  let registers = render.engine_render_registers(this.handle);
945
945
  this.registers = new Uint32Array(buffer, registers, 34), this.registerFloats = new Float32Array(buffer, registers, 34);
946
946
  let commands = render.engine_render_commands(this.handle);
947
947
  this.commandWords = new Uint32Array(buffer, commands, 1024 * 8), this.commandFloats = new Float32Array(buffer, commands, 1024 * 8), this.sync = this.u32(5, 0, 0), this.params = this.f32(3, 0, 0);
948
- let caps = render.engine_render_capabilities(this.handle), surfaces = chunkHRSIIDOZ_js.engineVectorSurfaceExports(runtime.symbols);
949
- this.vectorSurfaces = surfaces === null ? null : new chunkHRSIIDOZ_js.EngineVectorSurfaces(surfaces, {
948
+ let caps = render.engine_render_capabilities(this.handle), surfaces = chunkH3OQKK6X_js.engineVectorSurfaceExports(runtime.symbols);
949
+ this.vectorSurfaces = surfaces === null ? null : new chunkH3OQKK6X_js.EngineVectorSurfaces(surfaces, {
950
950
  handle: this.handle,
951
951
  buffer: () => this.buffer,
952
952
  stage: (bytes) => this.stage(bytes),
953
953
  flush: () => this.flush()
954
- }), this.capabilities = { ...graphicsCapabilities(render, caps), vectorSurfaces: this.vectorSurfaces?.cap ?? 0 }, this.caps = caps, this.features = new chunkGBJ5CW3A_js.EngineFeatures({
954
+ }), this.capabilities = { ...graphicsCapabilities(render, caps), vectorSurfaces: this.vectorSurfaces?.cap ?? 0 }, this.caps = caps, this.features = new chunkPKOZXD2Q_js.EngineFeatures({
955
955
  caps: () => this.caps,
956
956
  command: (op, target) => this.command(op, target),
957
957
  words: this.commandWords,
@@ -1050,7 +1050,7 @@ var EngineGraphics = class {
1050
1050
  return code;
1051
1051
  }
1052
1052
  owns(owner) {
1053
- let required = chunkEPYFN2A3_js.BUFFER_OWNER_CAPABILITIES[owner];
1053
+ let required = chunk7AAIAVAA_js.BUFFER_OWNER_CAPABILITIES[owner];
1054
1054
  return required === void 0 || (this.caps & required) !== 0;
1055
1055
  }
1056
1056
  view(owner, id, slot) {
@@ -1071,7 +1071,7 @@ var EngineGraphics = class {
1071
1071
  return this.desc.fill(0), this.desc;
1072
1072
  }
1073
1073
  stage(bytes) {
1074
- if (bytes.byteLength > this.scratchBytes && (this.scratch !== 0 && this.runtime.exports.engine_free(this.scratch, this.scratchBytes, chunkW3VVG4NL_js.COLUMN_ALIGN), this.scratchBytes = Math.max(bytes.byteLength, chunkW3VVG4NL_js.COLUMN_ALIGN), this.scratch = this.runtime.exports.engine_alloc(this.scratchBytes, chunkW3VVG4NL_js.COLUMN_ALIGN), this.scratch === 0))
1074
+ if (bytes.byteLength > this.scratchBytes && (this.scratch !== 0 && this.runtime.exports.engine_free(this.scratch, this.scratchBytes, chunk2O2CG465_js.COLUMN_ALIGN), this.scratchBytes = Math.max(bytes.byteLength, chunk2O2CG465_js.COLUMN_ALIGN), this.scratch = this.runtime.exports.engine_alloc(this.scratchBytes, chunk2O2CG465_js.COLUMN_ALIGN), this.scratch === 0))
1075
1075
  throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot stage asset bytes");
1076
1076
  return new Uint8Array(this.buffer, this.scratch, bytes.byteLength).set(bytes), this.scratch;
1077
1077
  }
@@ -1156,7 +1156,7 @@ var EngineGraphics = class {
1156
1156
  createTexture(desc) {
1157
1157
  if (desc.source.kind === "video") {
1158
1158
  let d2 = this.clearDesc();
1159
- return d2[0] = desc.source.width, d2[1] = desc.source.height, d2[8] = chunkEPYFN2A3_js.TEXTURE_KIND_EXTERNAL, this.check(this.abi.engine_render_create_texture(this.handle), "create video texture");
1159
+ return d2[0] = desc.source.width, d2[1] = desc.source.height, d2[8] = chunk7AAIAVAA_js.TEXTURE_KIND_EXTERNAL, this.check(this.abi.engine_render_create_texture(this.handle), "create video texture");
1160
1160
  }
1161
1161
  if (desc.source.kind !== "pixels")
1162
1162
  throw new chunk2V7IL4HC_js.GameError("unsupported_feature", "the Cimplify renderer takes pixel or encoded textures; decode images with loadTexture");
@@ -1166,7 +1166,7 @@ var EngineGraphics = class {
1166
1166
  if (data.byteLength !== width * height * depth * texelBytes)
1167
1167
  throw new chunk2V7IL4HC_js.GameError("invalid_argument", `a ${format} texture of ${width}x${height}x${depth} takes ${width * height * depth * texelBytes} bytes`);
1168
1168
  let d = this.clearDesc();
1169
- d[0] = width, d[1] = height, d[2] = formatWord, d[8] = desc.kind === "cube" ? 1 : desc.kind === "equirect" ? 2 : desc.kind === "2d-array" ? chunkEPYFN2A3_js.TEXTURE_KIND_2D_ARRAY : desc.kind === "3d" ? chunkEPYFN2A3_js.TEXTURE_KIND_3D : 0, d[9] = depth, d[3] = desc.colorSpace === "linear" ? 1 : 0, d[4] = desc.wrap === "clamp" ? 1 : desc.wrap === "mirror" ? 2 : 0, d[5] = desc.filter === "nearest" ? 1 : 0, d[6] = desc.mipmaps === false ? 0 : 1, d[7] = desc.flipY ? 1 : 0;
1169
+ d[0] = width, d[1] = height, d[2] = formatWord, d[8] = desc.kind === "cube" ? 1 : desc.kind === "equirect" ? 2 : desc.kind === "2d-array" ? chunk7AAIAVAA_js.TEXTURE_KIND_2D_ARRAY : desc.kind === "3d" ? chunk7AAIAVAA_js.TEXTURE_KIND_3D : 0, d[9] = depth, d[3] = desc.colorSpace === "linear" ? 1 : 0, d[4] = desc.wrap === "clamp" ? 1 : desc.wrap === "mirror" ? 2 : 0, d[5] = desc.filter === "nearest" ? 1 : 0, d[6] = desc.mipmaps === false ? 0 : 1, d[7] = desc.flipY ? 1 : 0;
1170
1170
  let id = this.check(this.abi.engine_render_create_texture(this.handle), "create texture");
1171
1171
  return this.textures.set(id, { data, width, height, depth, texelBytes }), this.copyTexture(id, data), this.requestEncode(id, desc.encode), id;
1172
1172
  }
@@ -1174,7 +1174,7 @@ var EngineGraphics = class {
1174
1174
  if (encode === void 0 || encode === "none" || !featureAvailable(this.abi, this.caps, "engine_render_encode_texture")) return;
1175
1175
  let encodeTexture = this.abi.engine_render_encode_texture;
1176
1176
  if (!encodeTexture) return;
1177
- let mode = encode === "astc" ? chunkEPYFN2A3_js.TEXTURE_ENCODE_ASTC_4X4 : encode === "bc7" ? chunkEPYFN2A3_js.TEXTURE_ENCODE_BC7 : chunkEPYFN2A3_js.TEXTURE_ENCODE_AUTO;
1177
+ let mode = encode === "astc" ? chunk7AAIAVAA_js.TEXTURE_ENCODE_ASTC_4X4 : encode === "bc7" ? chunk7AAIAVAA_js.TEXTURE_ENCODE_BC7 : chunk7AAIAVAA_js.TEXTURE_ENCODE_AUTO;
1178
1178
  encodeTexture(this.handle, id, mode);
1179
1179
  }
1180
1180
  copyTexture(id, data) {
@@ -1199,7 +1199,7 @@ var EngineGraphics = class {
1199
1199
  this.flush();
1200
1200
  let code = reload(this.handle, texture, this.stage(bytes), bytes.byteLength, (1));
1201
1201
  if (code >= 0) return { texture, inPlace: true };
1202
- if (code !== chunkW3VVG4NL_js.ERROR_INVALID_ARGUMENT) throw failure2(code, "reload texture");
1202
+ if (code !== chunk2O2CG465_js.ERROR_INVALID_ARGUMENT) throw failure2(code, "reload texture");
1203
1203
  }
1204
1204
  let pointer = this.stage(bytes);
1205
1205
  return { texture: this.check(this.abi.engine_render_decode_texture(this.handle, pointer, bytes.byteLength, (1)), "decode texture"), inPlace: false };
@@ -1214,16 +1214,16 @@ var EngineGraphics = class {
1214
1214
  return;
1215
1215
  }
1216
1216
  mirror && this.copyRegion(texture, mirror, region);
1217
- let a = this.command(chunkEPYFN2A3_js.OP_MARK_TEXTURE_REGION, texture), w = this.commandWords;
1217
+ let a = this.command(chunk7AAIAVAA_js.OP_MARK_TEXTURE_REGION, texture), w = this.commandWords;
1218
1218
  w[a] = region.x, w[a + 1] = region.y, w[a + 2] = region.z ?? 0, w[a + 3] = region.width, w[a + 4] = region.height, w[a + 5] = region.depth ?? 1;
1219
1219
  }
1220
1220
  destroyTexture(texture) {
1221
1221
  this.command(20, texture), this.textures.delete(texture);
1222
1222
  }
1223
1223
  createMaterial(desc) {
1224
- chunkGBJ5CW3A_js.refuseUndrawnPhysicalFields(desc);
1224
+ chunkPKOZXD2Q_js.refuseUndrawnPhysicalFields(desc);
1225
1225
  let d = this.clearDesc(), f = this.descFloats;
1226
- d[0] = chunkGBJ5CW3A_js.MATERIAL_KINDS[desc.kind];
1226
+ d[0] = chunkPKOZXD2Q_js.MATERIAL_KINDS[desc.kind];
1227
1227
  let color = "color" in desc && desc.color !== void 0 ? desc.color : 16777215;
1228
1228
  this.writeHex(f, 1, color), f[4] = desc.opacity ?? 1, f[11] = desc.alphaTest ?? 0, f[25] = (1.5), f[6] = (1), f[21] = (1);
1229
1229
  let flags = 0;
@@ -1231,10 +1231,10 @@ var EngineGraphics = class {
1231
1231
  let write = (word, value) => {
1232
1232
  d[word] = value;
1233
1233
  };
1234
- chunkGBJ5CW3A_js.writeMaterialExtension(desc, write);
1235
- let extras = chunkGBJ5CW3A_js.extraTextures(desc);
1234
+ chunkPKOZXD2Q_js.writeMaterialExtension(desc, write);
1235
+ let extras = chunkPKOZXD2Q_js.extraTextures(desc);
1236
1236
  for (let i = 0; i < 8; i++) d[51 + i] = extras[i] ?? 0;
1237
- chunkGBJ5CW3A_js.writeMaterialFeatures(desc, d, f), flags |= chunkGBJ5CW3A_js.materialFeatureFlags(desc), flags |= chunkGBJ5CW3A_js.writeMaterialTint(desc, d);
1237
+ chunkPKOZXD2Q_js.writeMaterialFeatures(desc, d, f), flags |= chunkPKOZXD2Q_js.materialFeatureFlags(desc), flags |= chunkPKOZXD2Q_js.writeMaterialTint(desc, d);
1238
1238
  let fragment = null, uniforms = null;
1239
1239
  switch (desc.kind) {
1240
1240
  case "standard":
@@ -1249,7 +1249,7 @@ var EngineGraphics = class {
1249
1249
  case "hair": {
1250
1250
  flags |= 64, desc.flatShading && (flags |= 32), f[6] = desc.roughness ?? (1), this.writeHex(f, 7, desc.emissive ?? 0), f[10] = desc.emissiveIntensity ?? 1, [desc.map, desc.normalMap, desc.roughnessMap, void 0, desc.emissiveMap, desc.aoMap].forEach((texture, i) => {
1251
1251
  d[15 + i] = texture ?? 0;
1252
- }), chunkGBJ5CW3A_js.writeCharacterWords(desc, write);
1252
+ }), chunkPKOZXD2Q_js.writeCharacterWords(desc, write);
1253
1253
  break;
1254
1254
  }
1255
1255
  case "unlit":
@@ -1273,7 +1273,7 @@ var EngineGraphics = class {
1273
1273
  }
1274
1274
  }
1275
1275
  d[12] = flags;
1276
- let transforms = desc.textureTransforms ? new Float32Array(chunkEPYFN2A3_js.MATERIAL_SLOTS.length * 8) : null, transformed = transforms !== null && chunkGBJ5CW3A_js.writeTextureTransforms(desc, transforms, write), vertex = desc.kind === "shader" && desc.shader.wgsl.vertex ? UTF8.encode(desc.shader.wgsl.vertex) : null, staged = fragment && vertex ? concat(fragment, vertex) : fragment, pointer = staged ? this.stage(staged) : 0, fragmentBytes = fragment?.byteLength ?? 0, id = this.check(
1276
+ let transforms = desc.textureTransforms ? new Float32Array(chunk7AAIAVAA_js.MATERIAL_SLOTS.length * 8) : null, transformed = transforms !== null && chunkPKOZXD2Q_js.writeTextureTransforms(desc, transforms, write), vertex = desc.kind === "shader" && desc.shader.wgsl.vertex ? UTF8.encode(desc.shader.wgsl.vertex) : null, staged = fragment && vertex ? concat(fragment, vertex) : fragment, pointer = staged ? this.stage(staged) : 0, fragmentBytes = fragment?.byteLength ?? 0, id = this.check(
1277
1277
  this.abi.engine_render_create_material(
1278
1278
  this.handle,
1279
1279
  pointer,
@@ -1282,7 +1282,7 @@ var EngineGraphics = class {
1282
1282
  vertex?.byteLength ?? 0
1283
1283
  ),
1284
1284
  "create material"
1285
- ), clipped = (desc.clippingPlanes?.length ?? 0) > 0 && chunkGBJ5CW3A_js.writePlanes(desc, this.f32(7, id, 0));
1285
+ ), clipped = (desc.clippingPlanes?.length ?? 0) > 0 && chunkPKOZXD2Q_js.writePlanes(desc, this.f32(7, id, 0));
1286
1286
  if (transforms && transformed && this.f32(8, id, 0).set(transforms), (clipped || transformed) && this.command(13, id), uniforms && desc.kind === "shader") {
1287
1287
  this.uniforms.set(id, uniforms);
1288
1288
  for (let [name, uniform] of Object.entries(desc.uniforms ?? {}))
@@ -1302,7 +1302,7 @@ var EngineGraphics = class {
1302
1302
  }
1303
1303
  setMaterialTexture(material, slot, texture) {
1304
1304
  let a = this.command(14, material);
1305
- this.commandWords[a] = chunkGBJ5CW3A_js.materialSlotIndex(slot), this.commandWords[a + 1] = texture ?? 0;
1305
+ this.commandWords[a] = chunkPKOZXD2Q_js.materialSlotIndex(slot), this.commandWords[a + 1] = texture ?? 0;
1306
1306
  }
1307
1307
  uniform(material, name) {
1308
1308
  let slots = this.uniforms.get(material);
@@ -1334,10 +1334,10 @@ var EngineGraphics = class {
1334
1334
  this.u32(2, material, 0)[slot.offset] = texture, this.command(13, material);
1335
1335
  }
1336
1336
  setMaterialState(material, state) {
1337
- chunkGBJ5CW3A_js.writeMaterialState(state, (word, value) => {
1338
- let a = this.command(chunkEPYFN2A3_js.OP_SET_MATERIAL_WORD, material);
1337
+ chunkPKOZXD2Q_js.writeMaterialState(state, (word, value) => {
1338
+ let a = this.command(chunk7AAIAVAA_js.OP_SET_MATERIAL_WORD, material);
1339
1339
  this.commandWords[a] = word, this.commandWords[a + 1] = value;
1340
- }), (state.clippingPlanes?.length ?? 0) > 0 && chunkGBJ5CW3A_js.writePlanes(state, this.f32(7, material, 0)) && this.command(13, material);
1340
+ }), (state.clippingPlanes?.length ?? 0) > 0 && chunkPKOZXD2Q_js.writePlanes(state, this.f32(7, material, 0)) && this.command(13, material);
1341
1341
  }
1342
1342
  destroyMaterial(material) {
1343
1343
  this.command(15, material), this.uniforms.delete(material), this.features.forgetMaterial(material);
@@ -1346,28 +1346,28 @@ var EngineGraphics = class {
1346
1346
  if (!this.capabilities.particles) throw new chunk2V7IL4HC_js.GameError("unsupported_feature", "this engine build has no particles");
1347
1347
  this.flush(), writeEmitterDesc(this.clearDesc(), this.descFloats, desc);
1348
1348
  let id = this.check(this.feature("engine_render_create_emitter")(this.handle), "create emitter");
1349
- return desc.sizeCurve && sampleCurve(desc.sizeCurve, this.f32(9, id, 0)), desc.colorCurve && sampleCurve(desc.colorCurve, this.f32(9, id, 1)), (desc.sizeCurve || desc.colorCurve) && this.command(chunkEPYFN2A3_js.OP_MARK_EMITTER, id), id;
1349
+ return desc.sizeCurve && sampleCurve(desc.sizeCurve, this.f32(9, id, 0)), desc.colorCurve && sampleCurve(desc.colorCurve, this.f32(9, id, 1)), (desc.sizeCurve || desc.colorCurve) && this.command(chunk7AAIAVAA_js.OP_MARK_EMITTER, id), id;
1350
1350
  }
1351
1351
  emit(emitter, count) {
1352
- this.commandWords[this.command(chunkEPYFN2A3_js.OP_EMIT, emitter)] = count;
1352
+ this.commandWords[this.command(chunk7AAIAVAA_js.OP_EMIT, emitter)] = count;
1353
1353
  }
1354
1354
  setEmitterRate(emitter, rate) {
1355
- this.commandFloats[this.command(chunkEPYFN2A3_js.OP_SET_EMITTER_RATE, emitter)] = rate;
1355
+ this.commandFloats[this.command(chunk7AAIAVAA_js.OP_SET_EMITTER_RATE, emitter)] = rate;
1356
1356
  }
1357
1357
  clearEmitter(emitter) {
1358
- this.command(chunkEPYFN2A3_js.OP_CLEAR_EMITTER, emitter);
1358
+ this.command(chunk7AAIAVAA_js.OP_CLEAR_EMITTER, emitter);
1359
1359
  }
1360
1360
  destroyEmitter(emitter) {
1361
- this.command(chunkEPYFN2A3_js.OP_DESTROY_EMITTER, emitter);
1361
+ this.command(chunk7AAIAVAA_js.OP_DESTROY_EMITTER, emitter);
1362
1362
  }
1363
1363
  setRenderOrder(node, order) {
1364
- this.commandWords[this.command(chunkEPYFN2A3_js.OP_SET_RENDER_ORDER, node)] = order | 0;
1364
+ this.commandWords[this.command(chunk7AAIAVAA_js.OP_SET_RENDER_ORDER, node)] = order | 0;
1365
1365
  }
1366
1366
  setShadow(light, shadow) {
1367
1367
  let room = 6, a = 0, used = room;
1368
1368
  for (let key of Object.keys(shadow)) {
1369
1369
  let value = shadow[key];
1370
- value !== void 0 && (used === room && (a = this.command(chunkEPYFN2A3_js.OP_SET_SHADOW, light), used = 0), this.commandWords[a + used] = SHADOW_WORDS[key], this.commandWords[a + used + 1] = shadowWord(key, value), used += 2);
1370
+ value !== void 0 && (used === room && (a = this.command(chunk7AAIAVAA_js.OP_SET_SHADOW, light), used = 0), this.commandWords[a + used] = SHADOW_WORDS[key], this.commandWords[a + used + 1] = shadowWord(key, value), used += 2);
1371
1371
  }
1372
1372
  used < room && (this.commandWords[a + used] = 0);
1373
1373
  }
@@ -1391,7 +1391,7 @@ var EngineGraphics = class {
1391
1391
  d[0] = 2, d[1] = desc.geometry, d[2] = desc.material, d[3] = this.shadowFlags(desc.castShadow, desc.receiveShadow, desc.giExclude);
1392
1392
  let { parents, bindPose, inverseBindMatrices } = desc.skeleton;
1393
1393
  if (bindPose.length !== parents.length * (10)) throw new chunk2V7IL4HC_js.GameError("invalid_argument", "bind pose needs ten floats per bone");
1394
- let parentBytes = Math.ceil(parents.byteLength / chunkW3VVG4NL_js.COLUMN_ALIGN) * chunkW3VVG4NL_js.COLUMN_ALIGN, poseBytes = Math.ceil(bindPose.byteLength / chunkW3VVG4NL_js.COLUMN_ALIGN) * chunkW3VVG4NL_js.COLUMN_ALIGN, total = new Uint8Array(parentBytes + poseBytes + (inverseBindMatrices?.byteLength ?? 0));
1394
+ let parentBytes = Math.ceil(parents.byteLength / chunk2O2CG465_js.COLUMN_ALIGN) * chunk2O2CG465_js.COLUMN_ALIGN, poseBytes = Math.ceil(bindPose.byteLength / chunk2O2CG465_js.COLUMN_ALIGN) * chunk2O2CG465_js.COLUMN_ALIGN, total = new Uint8Array(parentBytes + poseBytes + (inverseBindMatrices?.byteLength ?? 0));
1395
1395
  total.set(new Uint8Array(parents.buffer, parents.byteOffset, parents.byteLength), 0), total.set(new Uint8Array(bindPose.buffer, bindPose.byteOffset, bindPose.byteLength), parentBytes), inverseBindMatrices && total.set(new Uint8Array(inverseBindMatrices.buffer, inverseBindMatrices.byteOffset, inverseBindMatrices.byteLength), parentBytes + poseBytes);
1396
1396
  let base = this.stage(total);
1397
1397
  d[18] = parents.length, d[19] = base, d[20] = base + parentBytes, d[21] = inverseBindMatrices ? base + parentBytes + poseBytes : 0;
@@ -1412,7 +1412,7 @@ var EngineGraphics = class {
1412
1412
  case "decal":
1413
1413
  break;
1414
1414
  case "light": {
1415
- d[0] = 7, d[5] = chunkGBJ5CW3A_js.LIGHT_KINDS[desc.light], d[6] = desc.color ?? 16777215, d[12] = desc.groundColor ?? (4473924), d[3] = desc.castShadow ? 1 : 0, d[13] = desc.shadowMapSize ?? 0, f[7] = desc.intensity ?? 1, f[8] = desc.distance ?? 0, f[9] = desc.decay ?? (2), f[10] = desc.angle ?? DEFAULT_SPOT_ANGLE, f[11] = desc.penumbra ?? 0, this.writeShadow(d, desc.shadow);
1415
+ d[0] = 7, d[5] = chunkPKOZXD2Q_js.LIGHT_KINDS[desc.light], d[6] = desc.color ?? 16777215, d[12] = desc.groundColor ?? (4473924), d[3] = desc.castShadow ? 1 : 0, d[13] = desc.shadowMapSize ?? 0, f[7] = desc.intensity ?? 1, f[8] = desc.distance ?? 0, f[9] = desc.decay ?? (2), f[10] = desc.angle ?? DEFAULT_SPOT_ANGLE, f[11] = desc.penumbra ?? 0, this.writeShadow(d, desc.shadow);
1416
1416
  break;
1417
1417
  }
1418
1418
  case "particles":
@@ -1431,7 +1431,7 @@ var EngineGraphics = class {
1431
1431
  return this.textNodes.set(node2, { font, mode }), desc.text && this.setNodeText(node2, desc.text), node2;
1432
1432
  }
1433
1433
  }
1434
- chunkGBJ5CW3A_js.writeNodeFeatures(desc, d, f, desc.kind === "sprite" ? this.features.spriteRotation(desc.material) : 0);
1434
+ chunkPKOZXD2Q_js.writeNodeFeatures(desc, d, f, desc.kind === "sprite" ? this.features.spriteRotation(desc.material) : 0);
1435
1435
  let node = this.check(this.abi.engine_render_create_node(this.handle), `create ${desc.kind} node`);
1436
1436
  return this.features.node(node, desc), node;
1437
1437
  }
@@ -1519,19 +1519,19 @@ var EngineGraphics = class {
1519
1519
  }
1520
1520
  governorPressure() {
1521
1521
  this.check(this.abi.engine_render_stats(this.handle), "stats");
1522
- let word = this.registers[chunkEPYFN2A3_js.STAT_THERMAL_TIER];
1522
+ let word = this.registers[chunk7AAIAVAA_js.STAT_THERMAL_TIER];
1523
1523
  return Math.max(word & (255), word >>> (28) & (15));
1524
1524
  }
1525
1525
  raycast(origin, direction, far, layers, out) {
1526
1526
  let pointer = this.pickScratch(), ray = new Float32Array(this.buffer, pointer, 7);
1527
1527
  ray[0] = origin[0], ray[1] = origin[1], ray[2] = origin[2], ray[3] = direction[0], ray[4] = direction[1], ray[5] = direction[2], ray[6] = far;
1528
- let result = pointer + 7 * chunkW3VVG4NL_js.WORD_BYTES;
1528
+ let result = pointer + 7 * chunk2O2CG465_js.WORD_BYTES;
1529
1529
  if (this.check(this.feature("engine_render_raycast")(this.handle, pointer, layers >>> 0, result), "raycast") !== (1)) return false;
1530
1530
  let words = new Uint32Array(this.buffer, result, 11), floats = new Float32Array(this.buffer, result, 11);
1531
1531
  return out.node = words[0], out.instance = words[1], out.triangle = words[2], out.distance = floats[3], out.point.set(floats.subarray(4, 7)), out.barycentric.set(floats.subarray(7, 9)), out.uv.set(floats.subarray(9, 11)), true;
1532
1532
  }
1533
1533
  pickScratch() {
1534
- if (this.pickPointer === 0 && (this.pickPointer = this.runtime.exports.engine_alloc(18 * chunkW3VVG4NL_js.WORD_BYTES, chunkW3VVG4NL_js.COLUMN_ALIGN), this.pickPointer === 0))
1534
+ if (this.pickPointer === 0 && (this.pickPointer = this.runtime.exports.engine_alloc(18 * chunk2O2CG465_js.WORD_BYTES, chunk2O2CG465_js.COLUMN_ALIGN), this.pickPointer === 0))
1535
1535
  throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold the pick scratch");
1536
1536
  return this.pickPointer;
1537
1537
  }
@@ -1551,8 +1551,8 @@ var EngineGraphics = class {
1551
1551
  this.commandWords[this.command(4, node)] = material;
1552
1552
  }
1553
1553
  setNodeText(node, text) {
1554
- let needed = Math.max(text.length * (3), chunkW3VVG4NL_js.COLUMN_ALIGN);
1555
- if (needed > this.textBytes && (this.textPointer !== 0 && this.runtime.exports.engine_free(this.textPointer, this.textBytes, chunkW3VVG4NL_js.COLUMN_ALIGN), this.textBytes = needed, this.textPointer = this.runtime.exports.engine_alloc(needed, chunkW3VVG4NL_js.COLUMN_ALIGN), this.textPointer === 0))
1554
+ let needed = Math.max(text.length * (3), chunk2O2CG465_js.COLUMN_ALIGN);
1555
+ if (needed > this.textBytes && (this.textPointer !== 0 && this.runtime.exports.engine_free(this.textPointer, this.textBytes, chunk2O2CG465_js.COLUMN_ALIGN), this.textBytes = needed, this.textPointer = this.runtime.exports.engine_alloc(needed, chunk2O2CG465_js.COLUMN_ALIGN), this.textPointer === 0))
1556
1556
  throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot stage text");
1557
1557
  let written = UTF8.encodeInto(text, new Uint8Array(this.buffer, this.textPointer, this.textBytes)).written;
1558
1558
  this.check(this.feature("engine_render_set_text")(this.handle, node, this.textPointer, written), "set text");
@@ -1571,10 +1571,10 @@ var EngineGraphics = class {
1571
1571
  for (let i = 0; i < 16; i++) out[offset + i] = scratch[i];
1572
1572
  }
1573
1573
  createPoseReader(nodes) {
1574
- let count = nodes.length, bytes = count * chunkW3VVG4NL_js.WORD_BYTES * (1 + chunkEPYFN2A3_js.NODE_POSE_FLOATS), pointer = count === 0 ? 0 : this.runtime.exports.engine_alloc(bytes, chunkW3VVG4NL_js.COLUMN_ALIGN);
1574
+ let count = nodes.length, bytes = count * chunk2O2CG465_js.WORD_BYTES * (1 + chunk7AAIAVAA_js.NODE_POSE_FLOATS), pointer = count === 0 ? 0 : this.runtime.exports.engine_alloc(bytes, chunk2O2CG465_js.COLUMN_ALIGN);
1575
1575
  if (count > 0 && pointer === 0) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold a bone set");
1576
1576
  count > 0 && new Uint32Array(this.buffer, pointer, count).set(nodes);
1577
- let reader = { pointer, bytes, count, out: pointer + count * chunkW3VVG4NL_js.WORD_BYTES, view: null }, free = this.poseReaders.indexOf(null, 1);
1577
+ let reader = { pointer, bytes, count, out: pointer + count * chunk2O2CG465_js.WORD_BYTES, view: null }, free = this.poseReaders.indexOf(null, 1);
1578
1578
  return free > 0 ? (this.poseReaders[free] = reader, free) : (this.poseReaders.length === 0 && this.poseReaders.push(null), this.poseReaders.push(reader), this.poseReaders.length - 1);
1579
1579
  }
1580
1580
  poseReader(reader) {
@@ -1587,16 +1587,16 @@ var EngineGraphics = class {
1587
1587
  if (reader.count === 0) return;
1588
1588
  this.flush(), this.check(this.feature("engine_render_node_poses")(this.handle, reader.pointer, reader.count, reader.out), "read bone poses");
1589
1589
  let view = reader.view;
1590
- (view === null || view.buffer !== this.buffer) && (view = new Float32Array(this.buffer, reader.out, reader.count * chunkEPYFN2A3_js.NODE_POSE_FLOATS), reader.view = view);
1590
+ (view === null || view.buffer !== this.buffer) && (view = new Float32Array(this.buffer, reader.out, reader.count * chunk7AAIAVAA_js.NODE_POSE_FLOATS), reader.view = view);
1591
1591
  for (let i = 0; i < view.length; i++) out[offset + i] = view[i];
1592
1592
  }
1593
1593
  destroyPoseReader(id) {
1594
1594
  let reader = this.poseReader(id);
1595
- reader.pointer !== 0 && this.runtime.exports.engine_free(reader.pointer, reader.bytes, chunkW3VVG4NL_js.COLUMN_ALIGN), this.poseReaders[id] = null;
1595
+ reader.pointer !== 0 && this.runtime.exports.engine_free(reader.pointer, reader.bytes, chunk2O2CG465_js.COLUMN_ALIGN), this.poseReaders[id] = null;
1596
1596
  }
1597
1597
  nodeMatrixScratch() {
1598
1598
  if (!this.matrixScratch) {
1599
- let pointer = this.runtime.exports.engine_alloc(16 * chunkW3VVG4NL_js.WORD_BYTES, chunkW3VVG4NL_js.COLUMN_ALIGN);
1599
+ let pointer = this.runtime.exports.engine_alloc(16 * chunk2O2CG465_js.WORD_BYTES, chunk2O2CG465_js.COLUMN_ALIGN);
1600
1600
  if (pointer === 0) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold a matrix");
1601
1601
  this.matrixScratch = new Float32Array(this.buffer, pointer, 16);
1602
1602
  }
@@ -1625,7 +1625,7 @@ var EngineGraphics = class {
1625
1625
  this.command(6, node);
1626
1626
  }
1627
1627
  setInstanceFeed(node, table, columns, hostReads, pose) {
1628
- if (this.feedSupport === null && (this.feedSupport = engineAdvertises(this.runtime, chunkEPYFN2A3_js.RENDER_KERNEL_INSTANCES_FEATURE)), !this.feedSupport || columns.length !== 4 || pose !== void 0 && (pose.length !== 2 || !this.posesSupported())) return false;
1628
+ if (this.feedSupport === null && (this.feedSupport = engineAdvertises(this.runtime, chunk7AAIAVAA_js.RENDER_KERNEL_INSTANCES_FEATURE)), !this.feedSupport || columns.length !== 4 || pose !== void 0 && (pose.length !== 2 || !this.posesSupported())) return false;
1629
1629
  let at = this.command(64, node);
1630
1630
  this.commandWords[at] = table;
1631
1631
  for (let k = 0; k < 4; k++) this.commandWords[at + 1 + k] = columns[k];
@@ -1641,10 +1641,10 @@ var EngineGraphics = class {
1641
1641
  return this.commandWords[at] = model, this.commandWords[at + 1] = skin, this.commandWords[at + 2] = firstClip, this.commandWords[at + 3] = clips, this.commandWords[at + 4] = frames, true;
1642
1642
  }
1643
1643
  posesSupported() {
1644
- return this.poseSupport === null && (this.poseSupport = engineAdvertises(this.runtime, chunkEPYFN2A3_js.RENDER_FEED_POSE_FEATURE)), this.poseSupport;
1644
+ return this.poseSupport === null && (this.poseSupport = engineAdvertises(this.runtime, chunk7AAIAVAA_js.RENDER_FEED_POSE_FEATURE)), this.poseSupport;
1645
1645
  }
1646
1646
  requireMedia() {
1647
- if (this.mediaSupport === null && (this.mediaSupport = engineAdvertises(this.runtime, chunkEPYFN2A3_js.MEDIA_VOLUME_FEATURE)), !this.mediaSupport) throw new chunk2V7IL4HC_js.GameError("unsupported_feature", `this engine build has no media volumes (feature ${chunkEPYFN2A3_js.MEDIA_VOLUME_FEATURE}); update the app to use them`);
1647
+ if (this.mediaSupport === null && (this.mediaSupport = engineAdvertises(this.runtime, chunk7AAIAVAA_js.MEDIA_VOLUME_FEATURE)), !this.mediaSupport) throw new chunk2V7IL4HC_js.GameError("unsupported_feature", `this engine build has no media volumes (feature ${chunk7AAIAVAA_js.MEDIA_VOLUME_FEATURE}); update the app to use them`);
1648
1648
  }
1649
1649
  liveMedium(medium) {
1650
1650
  let id = medium;
@@ -1652,7 +1652,7 @@ var EngineGraphics = class {
1652
1652
  return id;
1653
1653
  }
1654
1654
  sendMedium(op, id, desc) {
1655
- chunk3C4C654I_js.writeMediumDesc(this.mediumWords, desc), this.flush(), this.f32(chunkGBJ5CW3A_js.OWNER_STAGING, 0, 0).set(this.mediumWords), this.command(op, id), this.flush(), this.mediaViews[id] = null;
1655
+ chunk3C4C654I_js.writeMediumDesc(this.mediumWords, desc), this.flush(), this.f32(chunkPKOZXD2Q_js.OWNER_STAGING, 0, 0).set(this.mediumWords), this.command(op, id), this.flush(), this.mediaViews[id] = null;
1656
1656
  }
1657
1657
  createMedium(desc) {
1658
1658
  this.requireMedia();
@@ -1715,11 +1715,11 @@ var EngineGraphics = class {
1715
1715
  let d = this.clearDesc(), f = this.descFloats, background = desc.background;
1716
1716
  d[2] = 0, background && "color" in background ? (d[0] = 1, d[1] = background.color) : background && "texture" in background ? (d[0] = 2, d[2] = background.texture) : background ? d[0] = 3 : d[0] = 1, d[3] = desc.environment ?? 0, f[15] = desc.environmentIntensity ?? 1, f[16] = desc.environmentRotation ?? 0, f[17] = desc.backgroundBlurriness ?? 0, f[18] = desc.backgroundIntensity ?? 1;
1717
1717
  let fog = desc.fog;
1718
- fog && (d[4] = 1, d[5] = fog.color, d[11] = chunkEPYFN2A3_js.FOG_MODES.indexOf(fog.mode ?? "linear"), fog.mode === "exp2" || fog.mode === "height" ? f[12] = fog.density : (f[6] = fog.near, f[7] = fog.far), fog.mode === "height" && (f[13] = fog.height, f[14] = fog.falloff)), d[8] = Math.max(0, chunkEPYFN2A3_js.TONE_MAPPINGS.indexOf(desc.toneMapping ?? "aces")), d[chunkEPYFN2A3_js.ENV_TONE_CURVE] = desc.toneCurve ?? 0, f[9] = desc.exposure ?? 1, d[10] = desc.shadows === false ? 0 : 1;
1718
+ fog && (d[4] = 1, d[5] = fog.color, d[11] = chunk7AAIAVAA_js.FOG_MODES.indexOf(fog.mode ?? "linear"), fog.mode === "exp2" || fog.mode === "height" ? f[12] = fog.density : (f[6] = fog.near, f[7] = fog.far), fog.mode === "height" && (f[13] = fog.height, f[14] = fog.falloff)), d[8] = Math.max(0, chunk7AAIAVAA_js.TONE_MAPPINGS.indexOf(desc.toneMapping ?? "aces")), d[chunk7AAIAVAA_js.ENV_TONE_CURVE] = desc.toneCurve ?? 0, f[9] = desc.exposure ?? 1, d[10] = desc.shadows === false ? 0 : 1;
1719
1719
  let gi = desc.gi;
1720
- if (gi && (d[chunkEPYFN2A3_js.ENV_GI] = Math.max(0, chunkEPYFN2A3_js.GI_MODES.indexOf(gi.mode ?? "field")), f[chunkEPYFN2A3_js.ENV_GI_INTENSITY] = gi.intensity ?? 1, f[chunkEPYFN2A3_js.ENV_GI_SPACING] = gi.spacing ?? 1, f[chunkEPYFN2A3_js.ENV_GI_SUN_ANGLE] = gi.sunAngle ?? 0.53), chunkGBJ5CW3A_js.writeSky(desc, d, f), this.check(this.abi.engine_render_set_environment(this.handle), "set environment"), desc.volumetrics)
1720
+ if (gi && (d[chunk7AAIAVAA_js.ENV_GI] = Math.max(0, chunk7AAIAVAA_js.GI_MODES.indexOf(gi.mode ?? "field")), f[chunk7AAIAVAA_js.ENV_GI_INTENSITY] = gi.intensity ?? 1, f[chunk7AAIAVAA_js.ENV_GI_SPACING] = gi.spacing ?? 1, f[chunk7AAIAVAA_js.ENV_GI_SUN_ANGLE] = gi.sunAngle ?? 0.53), chunkPKOZXD2Q_js.writeSky(desc, d, f), this.check(this.abi.engine_render_set_environment(this.handle), "set environment"), desc.volumetrics)
1721
1721
  for (let [at, chunk] of volumetricChunks(volumetricWords(desc.volumetrics))) {
1722
- let a = this.command(chunkEPYFN2A3_js.OP_SET_VOLUMETRICS, 0);
1722
+ let a = this.command(chunk7AAIAVAA_js.OP_SET_VOLUMETRICS, 0);
1723
1723
  this.commandWords[a] = at, chunk.forEach((value, k) => {
1724
1724
  this.commandFloats[a + 1 + k] = value;
1725
1725
  });
@@ -1727,13 +1727,13 @@ var EngineGraphics = class {
1727
1727
  }
1728
1728
  createRenderTarget(desc) {
1729
1729
  let d = this.clearDesc();
1730
- d[0] = desc.width, d[1] = desc.height, d[2] = desc.format === "rgba16f" ? 1 : desc.format === "rgba32f" ? 2 : 0, d[3] = desc.depth === false ? 0 : 1, d[4] = desc.samples ?? 1, d[chunkEPYFN2A3_js.TARGET_KIND] = desc.kind === "cube" ? chunkEPYFN2A3_js.TARGET_KIND_CUBE : desc.kind === "2d-array" ? chunkEPYFN2A3_js.TARGET_KIND_ARRAY : chunkEPYFN2A3_js.TARGET_KIND_2D, d[chunkEPYFN2A3_js.TARGET_LAYERS] = desc.layers ?? 1, d[chunkEPYFN2A3_js.TARGET_SAMPLED_DEPTH] = desc.sampleDepth ? 1 : 0, d[chunkEPYFN2A3_js.TARGET_COLORS] = desc.colors ?? 1;
1730
+ d[0] = desc.width, d[1] = desc.height, d[2] = desc.format === "rgba16f" ? 1 : desc.format === "rgba32f" ? 2 : 0, d[3] = desc.depth === false ? 0 : 1, d[4] = desc.samples ?? 1, d[chunk7AAIAVAA_js.TARGET_KIND] = desc.kind === "cube" ? chunk7AAIAVAA_js.TARGET_KIND_CUBE : desc.kind === "2d-array" ? chunk7AAIAVAA_js.TARGET_KIND_ARRAY : chunk7AAIAVAA_js.TARGET_KIND_2D, d[chunk7AAIAVAA_js.TARGET_LAYERS] = desc.layers ?? 1, d[chunk7AAIAVAA_js.TARGET_SAMPLED_DEPTH] = desc.sampleDepth ? 1 : 0, d[chunk7AAIAVAA_js.TARGET_COLORS] = desc.colors ?? 1;
1731
1731
  let id = this.check(this.abi.engine_render_create_target(this.handle), "create render target");
1732
1732
  this.targetTextures.set(id, this.registers[30]);
1733
- let depth = d[chunkEPYFN2A3_js.TARGET_TEXTURES + chunkEPYFN2A3_js.TARGET_MAX_COLORS - 1];
1733
+ let depth = d[chunk7AAIAVAA_js.TARGET_TEXTURES + chunk7AAIAVAA_js.TARGET_MAX_COLORS - 1];
1734
1734
  desc.sampleDepth && depth !== 0 && this.targetDepths.set(id, depth), this.targetFormats.set(id, desc.format ?? "rgba8");
1735
1735
  let extras = [];
1736
- for (let k = 1; k < (desc.colors ?? 1); k++) extras.push(d[chunkEPYFN2A3_js.TARGET_TEXTURES + k - 1]);
1736
+ for (let k = 1; k < (desc.colors ?? 1); k++) extras.push(d[chunk7AAIAVAA_js.TARGET_TEXTURES + k - 1]);
1737
1737
  return this.targetAttachments.set(id, extras), id;
1738
1738
  }
1739
1739
  renderTargetAttachment(target, attachment) {
@@ -1761,7 +1761,7 @@ var EngineGraphics = class {
1761
1761
  this.command(27, target), this.targetTextures.delete(target), this.targetDepths.delete(target), this.targetFormats.delete(target), this.targetAttachments.delete(target);
1762
1762
  }
1763
1763
  createPostChain(desc) {
1764
- if (desc.effects.length > chunkEPYFN2A3_js.MAX_CHAIN_EFFECTS) throw new chunk2V7IL4HC_js.GameError("invalid_argument", `post chains hold ${chunkEPYFN2A3_js.MAX_CHAIN_EFFECTS} effects`);
1764
+ if (desc.effects.length > chunk7AAIAVAA_js.MAX_CHAIN_EFFECTS) throw new chunk2V7IL4HC_js.GameError("invalid_argument", `post chains hold ${chunk7AAIAVAA_js.MAX_CHAIN_EFFECTS} effects`);
1765
1765
  let shaders = desc.effects.map((effect) => effect.kind === "shader" ? postShader(effect) : null), params = desc.effects.map((effect, e) => {
1766
1766
  let shader = shaders[e];
1767
1767
  if (shader) return shader.values;
@@ -1777,7 +1777,7 @@ var EngineGraphics = class {
1777
1777
  }
1778
1778
  let setShader = shaders.some((shader) => shader !== null) ? this.feature("engine_render_set_chain_shader") : null, id = this.check(this.abi.engine_render_create_chain(this.handle), "create post chain");
1779
1779
  for (let e = inline; e < desc.effects.length; e++) {
1780
- let a = this.command(chunkEPYFN2A3_js.OP_SET_EFFECT, id);
1780
+ let a = this.command(chunk7AAIAVAA_js.OP_SET_EFFECT, id);
1781
1781
  this.commandWords[a] = e, this.commandWords[a + 1] = EFFECT_KINDS[desc.effects[e].kind], params[e].forEach((value, p) => {
1782
1782
  this.commandFloats[a + 2 + p] = value;
1783
1783
  });
@@ -1788,10 +1788,10 @@ var EngineGraphics = class {
1788
1788
  this.check(setShader(this.handle, id, e, pointer, shader.source.byteLength), "set post shader");
1789
1789
  }), desc.effects.forEach((effect, e) => {
1790
1790
  if (!(effect.kind !== "shader" || effect.textures === void 0)) {
1791
- if (effect.textures.length > chunkEPYFN2A3_js.POST_EFFECT_TEXTURES)
1792
- throw new chunk2V7IL4HC_js.GameError("invalid_argument", `post shaders take ${chunkEPYFN2A3_js.POST_EFFECT_TEXTURES} textures`);
1791
+ if (effect.textures.length > chunk7AAIAVAA_js.POST_EFFECT_TEXTURES)
1792
+ throw new chunk2V7IL4HC_js.GameError("invalid_argument", `post shaders take ${chunk7AAIAVAA_js.POST_EFFECT_TEXTURES} textures`);
1793
1793
  effect.textures.forEach((texture, slot) => {
1794
- let a = this.command(chunkEPYFN2A3_js.OP_SET_EFFECT_TEXTURE, id);
1794
+ let a = this.command(chunk7AAIAVAA_js.OP_SET_EFFECT_TEXTURE, id);
1795
1795
  this.commandWords[a] = e, this.commandWords[a + 1] = slot, this.commandWords[a + 2] = texture;
1796
1796
  });
1797
1797
  }
@@ -1812,11 +1812,11 @@ var EngineGraphics = class {
1812
1812
  this.command(23, chain ?? 0);
1813
1813
  }
1814
1814
  setWeather(state) {
1815
- let w = weatherWords(state), a = this.command(chunkEPYFN2A3_js.OP_SET_WEATHER, w.snow ? 1 : 0), f = this.commandFloats;
1815
+ let w = weatherWords(state), a = this.command(chunk7AAIAVAA_js.OP_SET_WEATHER, w.snow ? 1 : 0), f = this.commandFloats;
1816
1816
  f[a] = w.cloudCover, f[a + 1] = w.haze, f[a + 2] = w.precipitation, f[a + 3] = w.wetness, f[a + 4] = w.windX, f[a + 5] = w.windZ;
1817
1817
  }
1818
1818
  setTimeOfDay(hours, latitude, dayOfYear) {
1819
- let a = this.command(chunkEPYFN2A3_js.OP_SET_TIME_OF_DAY, 0), f = this.commandFloats;
1819
+ let a = this.command(chunk7AAIAVAA_js.OP_SET_TIME_OF_DAY, 0), f = this.commandFloats;
1820
1820
  f[a] = hours, f[a + 1] = latitude ?? UNSET, f[a + 2] = dayOfYear ?? UNSET;
1821
1821
  }
1822
1822
  destroyPostChain(chain) {
@@ -1825,8 +1825,8 @@ var EngineGraphics = class {
1825
1825
  createRenderPass(desc) {
1826
1826
  this.flush();
1827
1827
  let d = this.clearDesc(), f = this.descFloats;
1828
- return d[0] = desc.camera, d[1] = desc.target ?? 0, d[2] = (desc.layers ?? 4294967295) >>> 0, d[3] = desc.clearColor ?? 0, f[4] = desc.clearAlpha ?? 1, d[5] = (desc.order ?? 0) >>> 0, d[chunkEPYFN2A3_js.PASS_SLICE] = desc.slice ?? 0, d[chunkEPYFN2A3_js.PASS_FLAGS] = (desc.cubeFace ? chunkEPYFN2A3_js.PASS_FLAG_CUBE_FACE : 0) | (desc.reflect ? chunkEPYFN2A3_js.PASS_FLAG_REFLECT : 0) | (desc.once ? chunkEPYFN2A3_js.PASS_FLAG_ONCE : 0), desc.reflect?.forEach((v, i) => {
1829
- f[chunkEPYFN2A3_js.PASS_PLANE + i] = v;
1828
+ return d[0] = desc.camera, d[1] = desc.target ?? 0, d[2] = (desc.layers ?? 4294967295) >>> 0, d[3] = desc.clearColor ?? 0, f[4] = desc.clearAlpha ?? 1, d[5] = (desc.order ?? 0) >>> 0, d[chunk7AAIAVAA_js.PASS_SLICE] = desc.slice ?? 0, d[chunk7AAIAVAA_js.PASS_FLAGS] = (desc.cubeFace ? chunk7AAIAVAA_js.PASS_FLAG_CUBE_FACE : 0) | (desc.reflect ? chunk7AAIAVAA_js.PASS_FLAG_REFLECT : 0) | (desc.once ? chunk7AAIAVAA_js.PASS_FLAG_ONCE : 0), desc.reflect?.forEach((v, i) => {
1829
+ f[chunk7AAIAVAA_js.PASS_PLANE + i] = v;
1830
1830
  }), desc.viewport && (d[6] = 1, desc.viewport.forEach((v, i) => {
1831
1831
  f[7 + i] = v;
1832
1832
  })), this.check(this.abi.engine_render_create_pass(this.handle), "create render pass");
@@ -1863,7 +1863,7 @@ var EngineGraphics = class {
1863
1863
  this.flush();
1864
1864
  let code = reload(this.handle, model, this.stage(bytes), bytes.byteLength);
1865
1865
  if (code >= 0) return { model: this.readModel(model, previous), inPlace: true };
1866
- if (code !== chunkW3VVG4NL_js.ERROR_INVALID_ARGUMENT) throw failure2(code, "reload model");
1866
+ if (code !== chunk2O2CG465_js.ERROR_INVALID_ARGUMENT) throw failure2(code, "reload model");
1867
1867
  }
1868
1868
  let id = this.check(this.abi.engine_render_load_model(this.handle, this.stage(bytes), bytes.byteLength), "load model");
1869
1869
  return { model: this.readModel(id, null), inPlace: false };
@@ -1892,7 +1892,7 @@ var EngineGraphics = class {
1892
1892
  }
1893
1893
  setTint(node, tint) {
1894
1894
  let at = this.command(63, node);
1895
- chunkGBJ5CW3A_js.writeTintWords(tint, this.commandWords, at);
1895
+ chunkPKOZXD2Q_js.writeTintWords(tint, this.commandWords, at);
1896
1896
  }
1897
1897
  modelMaterials(model, count) {
1898
1898
  let [ids] = this.view(12, model, 0);
@@ -1980,21 +1980,21 @@ var EngineGraphics = class {
1980
1980
  out.nodes = r[0], out.geometries = r[1], out.materials = r[2], out.textures = r[3], out.renderTargets = r[4], out.postChains = r[5], out.renderPasses = r[6], out.frames = r[7];
1981
1981
  }
1982
1982
  dispose() {
1983
- this.disposed || (this.disposed = true, this.stopResize?.(), this.nativeSurface?.release(), this.nativeSurface = null, this.abi.engine_render_destroy(this.handle), this.scratch !== 0 && this.runtime.exports.engine_free(this.scratch, this.scratchBytes, chunkW3VVG4NL_js.COLUMN_ALIGN), this.matrixScratch && this.runtime.exports.engine_free(this.matrixScratch.byteOffset, 16 * chunkW3VVG4NL_js.WORD_BYTES, chunkW3VVG4NL_js.COLUMN_ALIGN), this.textPointer !== 0 && this.runtime.exports.engine_free(this.textPointer, this.textBytes, chunkW3VVG4NL_js.COLUMN_ALIGN), this.pickPointer !== 0 && this.runtime.exports.engine_free(this.pickPointer, 18 * chunkW3VVG4NL_js.WORD_BYTES, chunkW3VVG4NL_js.COLUMN_ALIGN), this.textPointer = 0, this.pickPointer = 0, this.scratch = 0, this.matrixScratch = null);
1983
+ this.disposed || (this.disposed = true, this.stopResize?.(), this.nativeSurface?.release(), this.nativeSurface = null, this.abi.engine_render_destroy(this.handle), this.scratch !== 0 && this.runtime.exports.engine_free(this.scratch, this.scratchBytes, chunk2O2CG465_js.COLUMN_ALIGN), this.matrixScratch && this.runtime.exports.engine_free(this.matrixScratch.byteOffset, 16 * chunk2O2CG465_js.WORD_BYTES, chunk2O2CG465_js.COLUMN_ALIGN), this.textPointer !== 0 && this.runtime.exports.engine_free(this.textPointer, this.textBytes, chunk2O2CG465_js.COLUMN_ALIGN), this.pickPointer !== 0 && this.runtime.exports.engine_free(this.pickPointer, 18 * chunk2O2CG465_js.WORD_BYTES, chunk2O2CG465_js.COLUMN_ALIGN), this.textPointer = 0, this.pickPointer = 0, this.scratch = 0, this.matrixScratch = null);
1984
1984
  }
1985
1985
  };
1986
1986
 
1987
1987
  // src/game/backends/engine/ai.ts
1988
1988
  var NO_WORLD = 0;
1989
1989
  function engineAiExports(symbols) {
1990
- for (let name of chunkBS65NRDW_js.ENGINE_AI_EXPORT_NAMES) if (typeof symbols[name] != "function") return null;
1990
+ for (let name of chunk3S6WPBZL_js.ENGINE_AI_EXPORT_NAMES) if (typeof symbols[name] != "function") return null;
1991
1991
  return symbols;
1992
1992
  }
1993
1993
  var EngineAiPort = class {
1994
1994
  constructor(runtime, exports, physicsWorld) {
1995
1995
  this.name = "cimplify-engine-ai";
1996
1996
  this.runtime = runtime, this.exports = exports, this.physicsWorld = physicsWorld;
1997
- let stepWorld = runtime.symbols[chunkBS65NRDW_js.ENGINE_AI_WORLD_STEP];
1997
+ let stepWorld = runtime.symbols[chunk3S6WPBZL_js.ENGINE_AI_WORLD_STEP];
1998
1998
  this.stepWorld = typeof stepWorld == "function" ? stepWorld : null;
1999
1999
  }
2000
2000
  buffer() {
@@ -2081,13 +2081,13 @@ var EngineNav = class {
2081
2081
  }
2082
2082
  alloc(bytes) {
2083
2083
  if (bytes <= this.scratchBytes) return this.scratch;
2084
- if (this.scratch !== (0) && this.runtime.exports.engine_free(this.scratch, this.scratchBytes, chunkW3VVG4NL_js.WORD_BYTES), this.scratch = this.runtime.exports.engine_alloc(bytes, chunkW3VVG4NL_js.WORD_BYTES), this.scratch === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory is full");
2084
+ if (this.scratch !== (0) && this.runtime.exports.engine_free(this.scratch, this.scratchBytes, chunk2O2CG465_js.WORD_BYTES), this.scratch = this.runtime.exports.engine_alloc(bytes, chunk2O2CG465_js.WORD_BYTES), this.scratch === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory is full");
2085
2085
  return this.scratchBytes = bytes, this.scratch;
2086
2086
  }
2087
2087
  init(desc) {
2088
- let pointer = this.alloc(16 * chunkW3VVG4NL_js.WORD_BYTES), buffer = this.runtime.memory.buffer, words = new Uint32Array(buffer, pointer, 16), floats = new Float32Array(buffer, pointer, 16);
2088
+ let pointer = this.alloc(16 * chunk2O2CG465_js.WORD_BYTES), buffer = this.runtime.memory.buffer, words = new Uint32Array(buffer, pointer, 16), floats = new Float32Array(buffer, pointer, 16);
2089
2089
  words.fill(0);
2090
- let origin = desc.origin ?? [0, 0], extents = desc.extents ?? chunkBS65NRDW_js.DEFAULT_EXTENTS;
2090
+ let origin = desc.origin ?? [0, 0], extents = desc.extents ?? chunk3S6WPBZL_js.DEFAULT_EXTENTS;
2091
2091
  floats[0] = origin[0], floats[1] = origin[1], floats[2] = desc.tileWorld, words[3] = desc.maxTiles ?? 256, words[4] = desc.queryNodes ?? 2048, this.maxAgents = desc.maxAgents ?? 512, words[5] = this.maxAgents, floats[6] = desc.neighbourDistance ?? 4, floats[7] = desc.timeHorizon ?? 2, words[8] = desc.pathBudget ?? 16, words[9] = desc.maxPathPolys ?? 256;
2092
2092
  for (let k = 0; k < 3; k++) floats[10 + k] = extents[k];
2093
2093
  if (this.handle = this.exports.engine_nav_create(pointer), this.handle === (0)) throw new chunk2V7IL4HC_js.GameError("invalid_argument", "navigation could not be created");
@@ -2126,7 +2126,7 @@ var EngineNav = class {
2126
2126
  findPath(sx, sy, sz, ex, ey, ez, out) {
2127
2127
  let handle = this.require(), f = this.floats;
2128
2128
  f[0] = sx, f[1] = sy, f[2] = sz, f[3] = ex, f[4] = ey, f[5] = ez;
2129
- let maxPoints = Math.max(Math.floor(out.length / 3), 1), pointer = this.alloc(maxPoints * 3 * chunkW3VVG4NL_js.WORD_BYTES), code = this.exports.engine_nav_find_path(handle, pointer, maxPoints);
2129
+ let maxPoints = Math.max(Math.floor(out.length / 3), 1), pointer = this.alloc(maxPoints * 3 * chunk2O2CG465_js.WORD_BYTES), code = this.exports.engine_nav_find_path(handle, pointer, maxPoints);
2130
2130
  return code < 0 ? (this.complete = false, 0) : (out.set(new Float32Array(this.runtime.memory.buffer, pointer, code * 3)), this.complete = this.words[13] === 1, code);
2131
2131
  }
2132
2132
  addAgent(x, y, z, radius, speed, accel) {
@@ -2176,7 +2176,7 @@ var EngineNav = class {
2176
2176
  this.floats[14] = dt, this.check(this.exports.engine_nav_step(handle), "nav step");
2177
2177
  }
2178
2178
  dispose() {
2179
- this.handle !== (0) && this.exports.engine_nav_destroy(this.handle), this.scratch !== (0) && this.runtime.exports.engine_free(this.scratch, this.scratchBytes, chunkW3VVG4NL_js.WORD_BYTES), this.handle = (0), this.scratch = (0), this.scratchBytes = 0;
2179
+ this.handle !== (0) && this.exports.engine_nav_destroy(this.handle), this.scratch !== (0) && this.runtime.exports.engine_free(this.scratch, this.scratchBytes, chunk2O2CG465_js.WORD_BYTES), this.handle = (0), this.scratch = (0), this.scratchBytes = 0;
2180
2180
  }
2181
2181
  };
2182
2182
 
@@ -2246,14 +2246,14 @@ var EngineCraft = class {
2246
2246
  configureWater(desc) {
2247
2247
  this.open();
2248
2248
  let w = this.words, f = this.floats, waves = desc.waves ?? [];
2249
- if (waves.length > chunkBS65NRDW_js.MAX_WAVES) throw new chunk2V7IL4HC_js.GameError("invalid_argument", "too many waves");
2249
+ if (waves.length > chunk3S6WPBZL_js.MAX_WAVES) throw new chunk2V7IL4HC_js.GameError("invalid_argument", "too many waves");
2250
2250
  f[(0)] = desc.level ?? 0, f[(1)] = desc.depth ?? Number.POSITIVE_INFINITY, f[(2)] = desc.gravity ?? (9.81), f[(3)] = desc.density ?? (1025), f[(4)] = desc.current?.[0] ?? 0, f[(4) + 1] = desc.current?.[1] ?? 0, f[(6)] = desc.wind?.[0] ?? 0, f[(6) + 1] = desc.wind?.[1] ?? 0, f[(8)] = desc.gust ?? 0, f[(9)] = desc.gustPeriod ?? 0, w[(10)] = desc.iterations ?? (2), w[(11)] = waves.length, waves.forEach((wave, i) => {
2251
2251
  let o = (12) + i * (6);
2252
2252
  f[o] = wave.direction[0], f[o + 1] = wave.direction[1], f[o + 2] = wave.wavelength, f[o + 3] = wave.amplitude, f[o + 4] = wave.steepness, f[o + 5] = wave.phase;
2253
2253
  }), this.session.check(this.exports.engine_craft_set_water(this.handle), "configure water");
2254
2254
  }
2255
2255
  sea(state, windRadians, seed) {
2256
- this.open(), this.session.check(this.exports.engine_craft_sea(this.handle, chunkBS65NRDW_js.SEA_STATES.indexOf(state), windRadians, seed >>> 0), "sea state");
2256
+ this.open(), this.session.check(this.exports.engine_craft_sea(this.handle, chunk3S6WPBZL_js.SEA_STATES.indexOf(state), windRadians, seed >>> 0), "sea state");
2257
2257
  }
2258
2258
  setFlow(flow) {
2259
2259
  this.open();
@@ -2368,13 +2368,13 @@ var EngineCraft = class {
2368
2368
  sampleWater(points, count, out) {
2369
2369
  this.open();
2370
2370
  let buffer = this.session.buffer;
2371
- this.pointView.buffer !== buffer && (this.pointView = new Float32Array(buffer, this.points, (1024) * 2), this.sampleView = new Float32Array(buffer, this.samples, (1024) * chunkBS65NRDW_js.WATER_SAMPLE_WORDS));
2371
+ this.pointView.buffer !== buffer && (this.pointView = new Float32Array(buffer, this.points, (1024) * 2), this.sampleView = new Float32Array(buffer, this.samples, (1024) * chunk3S6WPBZL_js.WATER_SAMPLE_WORDS));
2372
2372
  for (let start = 0; start < count; start += (1024)) {
2373
2373
  let n = Math.min((1024), count - start);
2374
2374
  for (let i = 0; i < n * 2; i++) this.pointView[i] = points[start * 2 + i];
2375
2375
  this.session.check(this.exports.engine_water_sample(this.handle, this.points, n, this.samples), "water sample");
2376
- let base = start * chunkBS65NRDW_js.WATER_SAMPLE_WORDS;
2377
- for (let i = 0; i < n * chunkBS65NRDW_js.WATER_SAMPLE_WORDS; i++) out[base + i] = this.sampleView[i];
2376
+ let base = start * chunk3S6WPBZL_js.WATER_SAMPLE_WORDS;
2377
+ for (let i = 0; i < n * chunk3S6WPBZL_js.WATER_SAMPLE_WORDS; i++) out[base + i] = this.sampleView[i];
2378
2378
  }
2379
2379
  }
2380
2380
  floatsIn(values) {
@@ -2384,7 +2384,7 @@ var EngineCraft = class {
2384
2384
  }
2385
2385
  crumpleExport(name) {
2386
2386
  let found = this.exports[name];
2387
- if (!found) throw new chunk2V7IL4HC_js.GameError("unsupported_feature", `this engine build has no vehicle crumple (feature ${chunkNTTHAXHI_js.SOFT_BODY_FEATURE})`);
2387
+ if (!found) throw new chunk2V7IL4HC_js.GameError("unsupported_feature", `this engine build has no vehicle crumple (feature ${chunkX5A5FOWW_js.SOFT_BODY_FEATURE})`);
2388
2388
  return found;
2389
2389
  }
2390
2390
  crumple(craft, vertices, desc) {
@@ -2404,7 +2404,7 @@ var EngineCraft = class {
2404
2404
  try {
2405
2405
  return this.session.check(impact(this.handle, craft, words), "impact") === 1;
2406
2406
  } finally {
2407
- this.exports.engine_free(words, chunkNTTHAXHI_js.CRUMPLE_IMPACT_FLOATS * (4), (4));
2407
+ this.exports.engine_free(words, chunkX5A5FOWW_js.CRUMPLE_IMPACT_FLOATS * (4), (4));
2408
2408
  }
2409
2409
  }
2410
2410
  damage(craft) {
@@ -2419,7 +2419,7 @@ var EngineCraft = class {
2419
2419
  return written >= 0 ? written : 0;
2420
2420
  }
2421
2421
  dispose() {
2422
- this.handle !== (0) && (this.exports.engine_craft_destroy(this.handle), this.exports.engine_free(this.points, (1024) * 2 * (4), (4)), this.exports.engine_free(this.samples, (1024) * chunkBS65NRDW_js.WATER_SAMPLE_WORDS * (4), (4)), this.handle = (0));
2422
+ this.handle !== (0) && (this.exports.engine_craft_destroy(this.handle), this.exports.engine_free(this.points, (1024) * 2 * (4), (4)), this.exports.engine_free(this.samples, (1024) * chunk3S6WPBZL_js.WATER_SAMPLE_WORDS * (4), (4)), this.handle = (0));
2423
2423
  }
2424
2424
  open() {
2425
2425
  if (this.handle !== (0)) return;
@@ -2427,7 +2427,7 @@ var EngineCraft = class {
2427
2427
  if (handle === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "craft world could not be created");
2428
2428
  this.handle = handle;
2429
2429
  let buffer = this.session.buffer, registers = this.exports.engine_craft_registers(handle);
2430
- if (this.words = new Uint32Array(buffer, registers, (128)), this.floats = new Float32Array(buffer, registers, (128)), this.controlTable = new Float32Array(buffer, this.exports.engine_craft_controls(handle), this.capacity * 16), this.telemetryTable = new Float32Array(buffer, this.exports.engine_craft_telemetry(handle), this.capacity * 16), this.points = this.exports.engine_alloc((1024) * 2 * (4), (4)), this.samples = this.exports.engine_alloc((1024) * chunkBS65NRDW_js.WATER_SAMPLE_WORDS * (4), (4)), this.points === 0 || this.samples === 0) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "water sample buffers could not be allocated");
2430
+ if (this.words = new Uint32Array(buffer, registers, (128)), this.floats = new Float32Array(buffer, registers, (128)), this.controlTable = new Float32Array(buffer, this.exports.engine_craft_controls(handle), this.capacity * 16), this.telemetryTable = new Float32Array(buffer, this.exports.engine_craft_telemetry(handle), this.capacity * 16), this.points = this.exports.engine_alloc((1024) * 2 * (4), (4)), this.samples = this.exports.engine_alloc((1024) * chunk3S6WPBZL_js.WATER_SAMPLE_WORDS * (4), (4)), this.points === 0 || this.samples === 0) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "water sample buffers could not be allocated");
2431
2431
  }
2432
2432
  };
2433
2433
 
@@ -2455,10 +2455,10 @@ var EngineVehicles = class {
2455
2455
  let s = this.session;
2456
2456
  s.flush();
2457
2457
  let world = s.require();
2458
- if (this.desc === (0) && (this.desc = s.exports.engine_alloc(chunkBS65NRDW_js.VEHICLE_DESC_WORDS * chunkW3VVG4NL_js.WORD_BYTES, chunkW3VVG4NL_js.WORD_BYTES), this.desc === (0)))
2458
+ if (this.desc === (0) && (this.desc = s.exports.engine_alloc(chunk3S6WPBZL_js.VEHICLE_DESC_WORDS * chunk2O2CG465_js.WORD_BYTES, chunk2O2CG465_js.WORD_BYTES), this.desc === (0)))
2459
2459
  throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold a vehicle descriptor");
2460
- new Float32Array(s.buffer, this.desc, chunkBS65NRDW_js.VEHICLE_DESC_WORDS).set(desc.subarray(0, chunkBS65NRDW_js.VEHICLE_DESC_WORDS));
2461
- let id = s.check(this.exports.engine_vehicle_create(world, body, this.desc, chunkBS65NRDW_js.VEHICLE_DESC_WORDS), "create vehicle");
2460
+ new Float32Array(s.buffer, this.desc, chunk3S6WPBZL_js.VEHICLE_DESC_WORDS).set(desc.subarray(0, chunk3S6WPBZL_js.VEHICLE_DESC_WORDS));
2461
+ let id = s.check(this.exports.engine_vehicle_create(world, body, this.desc, chunk3S6WPBZL_js.VEHICLE_DESC_WORDS), "create vehicle");
2462
2462
  return this.bindViews(world), id;
2463
2463
  }
2464
2464
  destroyVehicle(vehicle) {
@@ -2475,7 +2475,7 @@ var EngineVehicles = class {
2475
2475
  let capacity = this.exports.engine_vehicle_capacity(world), inputs = this.exports.engine_vehicle_inputs(world), states = this.exports.engine_vehicle_states(world);
2476
2476
  if (inputs === (0) || states === (0)) throw new chunk2V7IL4HC_js.GameError("not_initialized", "engine vehicles are not reserved");
2477
2477
  let buffer = this.session.buffer;
2478
- (this.inputs.byteOffset !== inputs || this.inputs.buffer !== buffer) && (this.inputs = new Float32Array(buffer, inputs, capacity * chunkBS65NRDW_js.INPUT_STRIDE), this.states = new Float32Array(buffer, states, capacity * chunkBS65NRDW_js.STATE_STRIDE));
2478
+ (this.inputs.byteOffset !== inputs || this.inputs.buffer !== buffer) && (this.inputs = new Float32Array(buffer, inputs, capacity * chunk3S6WPBZL_js.INPUT_STRIDE), this.states = new Float32Array(buffer, states, capacity * chunk3S6WPBZL_js.STATE_STRIDE));
2479
2479
  }
2480
2480
  };
2481
2481
 
@@ -2487,31 +2487,31 @@ function axisBits(axes, shift) {
2487
2487
  function shapeCode(shape) {
2488
2488
  switch (shape.kind) {
2489
2489
  case "ball":
2490
- return chunkW3VVG4NL_js.SHAPE_BALL;
2490
+ return chunk2O2CG465_js.SHAPE_BALL;
2491
2491
  case "cuboid":
2492
- return chunkW3VVG4NL_js.SHAPE_CUBOID;
2492
+ return chunk2O2CG465_js.SHAPE_CUBOID;
2493
2493
  case "capsule":
2494
- return chunkW3VVG4NL_js.SHAPE_CAPSULE;
2494
+ return chunk2O2CG465_js.SHAPE_CAPSULE;
2495
2495
  case "cylinder":
2496
- return chunkW3VVG4NL_js.SHAPE_CYLINDER;
2496
+ return chunk2O2CG465_js.SHAPE_CYLINDER;
2497
2497
  case "cone":
2498
- return chunkW3VVG4NL_js.SHAPE_CONE;
2498
+ return chunk2O2CG465_js.SHAPE_CONE;
2499
2499
  case "trimesh":
2500
- return chunkW3VVG4NL_js.SHAPE_TRIMESH;
2500
+ return chunk2O2CG465_js.SHAPE_TRIMESH;
2501
2501
  case "convex_hull":
2502
- return chunkW3VVG4NL_js.SHAPE_CONVEX_HULL;
2502
+ return chunk2O2CG465_js.SHAPE_CONVEX_HULL;
2503
2503
  case "heightfield":
2504
- return chunkW3VVG4NL_js.SHAPE_HEIGHTFIELD;
2504
+ return chunk2O2CG465_js.SHAPE_HEIGHTFIELD;
2505
2505
  case "round_cuboid":
2506
- return chunkW3VVG4NL_js.SHAPE_ROUND_CUBOID;
2506
+ return chunk2O2CG465_js.SHAPE_ROUND_CUBOID;
2507
2507
  case "round_cylinder":
2508
- return chunkW3VVG4NL_js.SHAPE_ROUND_CYLINDER;
2508
+ return chunk2O2CG465_js.SHAPE_ROUND_CYLINDER;
2509
2509
  case "round_cone":
2510
- return chunkW3VVG4NL_js.SHAPE_ROUND_CONE;
2510
+ return chunk2O2CG465_js.SHAPE_ROUND_CONE;
2511
2511
  case "round_convex_hull":
2512
- return chunkW3VVG4NL_js.SHAPE_ROUND_CONVEX_HULL;
2512
+ return chunk2O2CG465_js.SHAPE_ROUND_CONVEX_HULL;
2513
2513
  case "compound":
2514
- return chunkW3VVG4NL_js.SHAPE_COMPOUND;
2514
+ return chunk2O2CG465_js.SHAPE_COMPOUND;
2515
2515
  }
2516
2516
  }
2517
2517
  function writePrimitive(shape, floats, params, border) {
@@ -2534,13 +2534,13 @@ function writePrimitive(shape, floats, params, border) {
2534
2534
  (shape.kind === "round_cuboid" || shape.kind === "round_cylinder" || shape.kind === "round_cone") && (floats[border] = shape.border);
2535
2535
  }
2536
2536
  function compoundFloats(parts) {
2537
- let out = new Float32Array(parts.length * chunkW3VVG4NL_js.PART_FLOATS);
2537
+ let out = new Float32Array(parts.length * chunk2O2CG465_js.PART_FLOATS);
2538
2538
  for (let i = 0; i < parts.length; i++) {
2539
- let part = parts[i], at = i * chunkW3VVG4NL_js.PART_FLOATS;
2540
- out[at + chunkW3VVG4NL_js.PART_SHAPE] = shapeCode(part.shape), writePrimitive(part.shape, out, at + chunkW3VVG4NL_js.PART_PARAMS, at + chunkW3VVG4NL_js.PART_BORDER);
2539
+ let part = parts[i], at = i * chunk2O2CG465_js.PART_FLOATS;
2540
+ out[at + chunk2O2CG465_js.PART_SHAPE] = shapeCode(part.shape), writePrimitive(part.shape, out, at + chunk2O2CG465_js.PART_PARAMS, at + chunk2O2CG465_js.PART_BORDER);
2541
2541
  let offset = part.offset ?? ORIGIN, rotation = part.rotation ?? IDENTITY_ROTATION;
2542
- for (let k = 0; k < 3; k++) out[at + chunkW3VVG4NL_js.PART_OFFSET + k] = offset[k];
2543
- for (let k = 0; k < 4; k++) out[at + chunkW3VVG4NL_js.PART_ROTATION + k] = rotation[k];
2542
+ for (let k = 0; k < 3; k++) out[at + chunk2O2CG465_js.PART_OFFSET + k] = offset[k];
2543
+ for (let k = 0; k < 4; k++) out[at + chunk2O2CG465_js.PART_ROTATION + k] = rotation[k];
2544
2544
  }
2545
2545
  return out;
2546
2546
  }
@@ -2548,22 +2548,22 @@ var LOCKED_AXES = ["locked", "locked", "locked"], LIMIT_PAIR = 2, SIX_DOF_AXES =
2548
2548
  function encodeSixDof(desc, words, floats) {
2549
2549
  let frameA = desc.frameA ?? IDENTITY_ROTATION, frameB = desc.frameB ?? IDENTITY_ROTATION;
2550
2550
  for (let k = 0; k < (4); k++)
2551
- floats[chunkW3VVG4NL_js.JOINT_FRAME_A + k] = frameA[k], floats[chunkW3VVG4NL_js.JOINT_FRAME_B + k] = frameB[k];
2551
+ floats[chunk2O2CG465_js.JOINT_FRAME_A + k] = frameA[k], floats[chunk2O2CG465_js.JOINT_FRAME_B + k] = frameB[k];
2552
2552
  let axes = [...desc.linear ?? LOCKED_AXES, ...desc.angular ?? LOCKED_AXES];
2553
2553
  if (axes.length !== (6)) throw new chunk2V7IL4HC_js.GameError("invalid_argument", "a six_dof joint has three linear and three angular axes");
2554
2554
  let motions = 0;
2555
2555
  for (let axis = 0; axis < (6); axis++) {
2556
- let motion = axes[axis], code = chunkW3VVG4NL_js.MOTION_LOCKED;
2557
- motion === "free" ? code = chunkW3VVG4NL_js.MOTION_FREE : motion !== "locked" && (code = chunkW3VVG4NL_js.MOTION_LIMITED, floats[chunkW3VVG4NL_js.JOINT_AXIS_LIMITS + axis * (2)] = motion[0], floats[chunkW3VVG4NL_js.JOINT_AXIS_LIMITS + axis * (2) + 1] = motion[1]), motions |= code << axis * chunkW3VVG4NL_js.MOTION_BITS;
2556
+ let motion = axes[axis], code = chunk2O2CG465_js.MOTION_LOCKED;
2557
+ motion === "free" ? code = chunk2O2CG465_js.MOTION_FREE : motion !== "locked" && (code = chunk2O2CG465_js.MOTION_LIMITED, floats[chunk2O2CG465_js.JOINT_AXIS_LIMITS + axis * (2)] = motion[0], floats[chunk2O2CG465_js.JOINT_AXIS_LIMITS + axis * (2) + 1] = motion[1]), motions |= code << axis * chunk2O2CG465_js.MOTION_BITS;
2558
2558
  }
2559
- words[chunkW3VVG4NL_js.JOINT_MOTIONS] = motions >>> 0, floats[chunkW3VVG4NL_js.JOINT_SWING_CONE] = desc.swingCone ?? NO_VALUE;
2559
+ words[chunk2O2CG465_js.JOINT_MOTIONS] = motions >>> 0, floats[chunk2O2CG465_js.JOINT_SWING_CONE] = desc.swingCone ?? NO_VALUE;
2560
2560
  }
2561
2561
  var EnginePhysics = class {
2562
2562
  constructor(session) {
2563
2563
  this.name = ENGINE_PHYSICS_NAME;
2564
2564
  this.session = session;
2565
2565
  let exports = engineVehicleExports(session.symbols);
2566
- this.vehicles = exports ? new EngineVehicles(session, exports) : null, this.craft = engineCraft(session), this.jointPort = chunkHRSIIDOZ_js.engineJoints(session);
2566
+ this.vehicles = exports ? new EngineVehicles(session, exports) : null, this.craft = engineCraft(session), this.jointPort = chunkH3OQKK6X_js.engineJoints(session);
2567
2567
  }
2568
2568
  bindTransforms(columns) {
2569
2569
  this.session.bind(columns);
@@ -2575,15 +2575,15 @@ var EnginePhysics = class {
2575
2575
  return this.session.snapshots;
2576
2576
  }
2577
2577
  setGravity(gravity) {
2578
- this.vectorCommand(chunkW3VVG4NL_js.OP_SET_GRAVITY, 0, gravity);
2578
+ this.vectorCommand(chunk2O2CG465_js.OP_SET_GRAVITY, 0, gravity);
2579
2579
  }
2580
2580
  createBody(entity, desc) {
2581
2581
  let s = this.session;
2582
2582
  s.flush();
2583
2583
  let words = s.descWords, floats = s.descFloats;
2584
- words[chunkW3VVG4NL_js.BODY_KIND] = desc.kind === "dynamic" ? chunkW3VVG4NL_js.BODY_KIND_DYNAMIC : desc.kind === "kinematic" ? chunkW3VVG4NL_js.BODY_KIND_KINEMATIC : chunkW3VVG4NL_js.BODY_KIND_FIXED, floats[chunkW3VVG4NL_js.BODY_LINEAR_DAMPING] = desc.linearDamping ?? 0, floats[chunkW3VVG4NL_js.BODY_ANGULAR_DAMPING] = desc.angularDamping ?? 0, floats[chunkW3VVG4NL_js.BODY_GRAVITY_SCALE] = desc.gravityScale ?? 1;
2584
+ words[chunk2O2CG465_js.BODY_KIND] = desc.kind === "dynamic" ? chunk2O2CG465_js.BODY_KIND_DYNAMIC : desc.kind === "kinematic" ? chunk2O2CG465_js.BODY_KIND_KINEMATIC : chunk2O2CG465_js.BODY_KIND_FIXED, floats[chunk2O2CG465_js.BODY_LINEAR_DAMPING] = desc.linearDamping ?? 0, floats[chunk2O2CG465_js.BODY_ANGULAR_DAMPING] = desc.angularDamping ?? 0, floats[chunk2O2CG465_js.BODY_GRAVITY_SCALE] = desc.gravityScale ?? 1;
2585
2585
  let translations = desc.planar ? PLANAR_TRANSLATIONS : desc.lockTranslations ? NO_AXES : desc.enabledTranslations ?? ALL_AXES, rotations = desc.planar ? PLANAR_ROTATIONS : desc.lockRotations ? NO_AXES : desc.enabledRotations ?? ALL_AXES;
2586
- return words[chunkW3VVG4NL_js.BODY_FLAGS] = (desc.ccd ? chunkW3VVG4NL_js.BODY_FLAG_CCD : 0) | (desc.canSleep === false ? 0 : chunkW3VVG4NL_js.BODY_FLAG_CAN_SLEEP) | axisBits(translations, chunkW3VVG4NL_js.BODY_TRANSLATION_SHIFT) | axisBits(rotations, chunkW3VVG4NL_js.BODY_ROTATION_SHIFT), words[chunkW3VVG4NL_js.BODY_DOMINANCE] = desc.dominance ?? 0, s.check(s.exports.engine_body_create(s.require(), entity), "create body");
2586
+ return words[chunk2O2CG465_js.BODY_FLAGS] = (desc.ccd ? chunk2O2CG465_js.BODY_FLAG_CCD : 0) | (desc.canSleep === false ? 0 : chunk2O2CG465_js.BODY_FLAG_CAN_SLEEP) | axisBits(translations, chunk2O2CG465_js.BODY_TRANSLATION_SHIFT) | axisBits(rotations, chunk2O2CG465_js.BODY_ROTATION_SHIFT), words[chunk2O2CG465_js.BODY_DOMINANCE] = desc.dominance ?? 0, s.check(s.exports.engine_body_create(s.require(), entity), "create body");
2587
2587
  }
2588
2588
  destroyBody(body) {
2589
2589
  let s = this.session;
@@ -2595,7 +2595,7 @@ var EnginePhysics = class {
2595
2595
  let words = s.descWords, floats = s.descFloats;
2596
2596
  words.fill(0);
2597
2597
  let shape = desc.shape;
2598
- words[chunkW3VVG4NL_js.COLLIDER_SHAPE] = shapeCode(shape);
2598
+ words[chunk2O2CG465_js.COLLIDER_SHAPE] = shapeCode(shape);
2599
2599
  let staged = [];
2600
2600
  switch (shape.kind) {
2601
2601
  case "ball":
@@ -2606,34 +2606,34 @@ var EnginePhysics = class {
2606
2606
  case "round_cuboid":
2607
2607
  case "round_cylinder":
2608
2608
  case "round_cone":
2609
- writePrimitive(shape, floats, chunkW3VVG4NL_js.COLLIDER_PARAMS, chunkW3VVG4NL_js.COLLIDER_BORDER);
2609
+ writePrimitive(shape, floats, chunk2O2CG465_js.COLLIDER_PARAMS, chunk2O2CG465_js.COLLIDER_BORDER);
2610
2610
  break;
2611
2611
  case "round_convex_hull":
2612
- this.stage(staged, shape.points, chunkW3VVG4NL_js.COLLIDER_DATA_A, chunkW3VVG4NL_js.COLLIDER_DATA_A_LEN), floats[chunkW3VVG4NL_js.COLLIDER_BORDER] = shape.border;
2612
+ this.stage(staged, shape.points, chunk2O2CG465_js.COLLIDER_DATA_A, chunk2O2CG465_js.COLLIDER_DATA_A_LEN), floats[chunk2O2CG465_js.COLLIDER_BORDER] = shape.border;
2613
2613
  break;
2614
2614
  case "compound":
2615
- this.stage(staged, compoundFloats(shape.parts), chunkW3VVG4NL_js.COLLIDER_DATA_A, chunkW3VVG4NL_js.COLLIDER_DATA_A_LEN);
2615
+ this.stage(staged, compoundFloats(shape.parts), chunk2O2CG465_js.COLLIDER_DATA_A, chunk2O2CG465_js.COLLIDER_DATA_A_LEN);
2616
2616
  break;
2617
2617
  case "trimesh":
2618
- this.stage(staged, shape.vertices, chunkW3VVG4NL_js.COLLIDER_DATA_A, chunkW3VVG4NL_js.COLLIDER_DATA_A_LEN), this.stage(staged, shape.indices, chunkW3VVG4NL_js.COLLIDER_DATA_B, chunkW3VVG4NL_js.COLLIDER_DATA_B_LEN);
2618
+ this.stage(staged, shape.vertices, chunk2O2CG465_js.COLLIDER_DATA_A, chunk2O2CG465_js.COLLIDER_DATA_A_LEN), this.stage(staged, shape.indices, chunk2O2CG465_js.COLLIDER_DATA_B, chunk2O2CG465_js.COLLIDER_DATA_B_LEN);
2619
2619
  break;
2620
2620
  case "convex_hull":
2621
- this.stage(staged, shape.points, chunkW3VVG4NL_js.COLLIDER_DATA_A, chunkW3VVG4NL_js.COLLIDER_DATA_A_LEN);
2621
+ this.stage(staged, shape.points, chunk2O2CG465_js.COLLIDER_DATA_A, chunk2O2CG465_js.COLLIDER_DATA_A_LEN);
2622
2622
  break;
2623
2623
  case "heightfield":
2624
- this.stage(staged, shape.heights, chunkW3VVG4NL_js.COLLIDER_DATA_A, chunkW3VVG4NL_js.COLLIDER_DATA_A_LEN), words[chunkW3VVG4NL_js.COLLIDER_ROWS] = shape.rows, words[chunkW3VVG4NL_js.COLLIDER_COLUMNS] = shape.columns, floats[chunkW3VVG4NL_js.COLLIDER_PARAMS] = shape.scale[0], floats[chunkW3VVG4NL_js.COLLIDER_PARAMS + 1] = shape.scale[1], floats[chunkW3VVG4NL_js.COLLIDER_PARAMS + 2] = shape.scale[2];
2624
+ this.stage(staged, shape.heights, chunk2O2CG465_js.COLLIDER_DATA_A, chunk2O2CG465_js.COLLIDER_DATA_A_LEN), words[chunk2O2CG465_js.COLLIDER_ROWS] = shape.rows, words[chunk2O2CG465_js.COLLIDER_COLUMNS] = shape.columns, floats[chunk2O2CG465_js.COLLIDER_PARAMS] = shape.scale[0], floats[chunk2O2CG465_js.COLLIDER_PARAMS + 1] = shape.scale[1], floats[chunk2O2CG465_js.COLLIDER_PARAMS + 2] = shape.scale[2];
2625
2625
  break;
2626
2626
  }
2627
2627
  let offset = desc.offset ?? ORIGIN, rotation = desc.rotation ?? IDENTITY_ROTATION;
2628
- for (let k = 0; k < 3; k++) floats[chunkW3VVG4NL_js.COLLIDER_OFFSET + k] = offset[k];
2629
- for (let k = 0; k < 4; k++) floats[chunkW3VVG4NL_js.COLLIDER_ROTATION + k] = rotation[k];
2630
- floats[chunkW3VVG4NL_js.COLLIDER_DENSITY] = desc.density ?? NO_VALUE, floats[chunkW3VVG4NL_js.COLLIDER_MASS] = desc.mass ?? NO_VALUE, floats[chunkW3VVG4NL_js.COLLIDER_FRICTION] = desc.friction ?? NO_VALUE, floats[chunkW3VVG4NL_js.COLLIDER_RESTITUTION] = desc.restitution ?? NO_VALUE;
2628
+ for (let k = 0; k < 3; k++) floats[chunk2O2CG465_js.COLLIDER_OFFSET + k] = offset[k];
2629
+ for (let k = 0; k < 4; k++) floats[chunk2O2CG465_js.COLLIDER_ROTATION + k] = rotation[k];
2630
+ floats[chunk2O2CG465_js.COLLIDER_DENSITY] = desc.density ?? NO_VALUE, floats[chunk2O2CG465_js.COLLIDER_MASS] = desc.mass ?? NO_VALUE, floats[chunk2O2CG465_js.COLLIDER_FRICTION] = desc.friction ?? NO_VALUE, floats[chunk2O2CG465_js.COLLIDER_RESTITUTION] = desc.restitution ?? NO_VALUE;
2631
2631
  let grouped = desc.membership !== void 0 || desc.filter !== void 0;
2632
- words[chunkW3VVG4NL_js.COLLIDER_FLAGS] = (desc.sensor ? chunkW3VVG4NL_js.COLLIDER_FLAG_SENSOR : 0) | (desc.events ? chunkW3VVG4NL_js.COLLIDER_FLAG_EVENTS : 0) | (grouped ? chunkW3VVG4NL_js.COLLIDER_FLAG_GROUPS : 0), words[chunkW3VVG4NL_js.COLLIDER_MEMBERSHIP] = desc.membership ?? chunkW3VVG4NL_js.COLLISION_GROUP_ALL, words[chunkW3VVG4NL_js.COLLIDER_FILTER] = desc.filter ?? chunkW3VVG4NL_js.COLLISION_GROUP_ALL;
2632
+ words[chunk2O2CG465_js.COLLIDER_FLAGS] = (desc.sensor ? chunk2O2CG465_js.COLLIDER_FLAG_SENSOR : 0) | (desc.events ? chunk2O2CG465_js.COLLIDER_FLAG_EVENTS : 0) | (grouped ? chunk2O2CG465_js.COLLIDER_FLAG_GROUPS : 0), words[chunk2O2CG465_js.COLLIDER_MEMBERSHIP] = desc.membership ?? chunk2O2CG465_js.COLLISION_GROUP_ALL, words[chunk2O2CG465_js.COLLIDER_FILTER] = desc.filter ?? chunk2O2CG465_js.COLLISION_GROUP_ALL;
2633
2633
  try {
2634
2634
  return s.check(s.exports.engine_collider_create(s.require(), body), "create collider");
2635
2635
  } finally {
2636
- for (let block of staged) s.exports.engine_free(block.pointer, block.bytes, chunkW3VVG4NL_js.WORD_BYTES);
2636
+ for (let block of staged) s.exports.engine_free(block.pointer, block.bytes, chunk2O2CG465_js.WORD_BYTES);
2637
2637
  }
2638
2638
  }
2639
2639
  destroyCollider(collider) {
@@ -2650,33 +2650,33 @@ var EnginePhysics = class {
2650
2650
  let words = s.descWords, floats = s.descFloats;
2651
2651
  words.fill(0);
2652
2652
  for (let k = 0; k < 3; k++)
2653
- floats[chunkW3VVG4NL_js.JOINT_ANCHOR_A + k] = desc.anchorA[k], floats[chunkW3VVG4NL_js.JOINT_ANCHOR_B + k] = desc.anchorB[k];
2653
+ floats[chunk2O2CG465_js.JOINT_ANCHOR_A + k] = desc.anchorA[k], floats[chunk2O2CG465_js.JOINT_ANCHOR_B + k] = desc.anchorB[k];
2654
2654
  switch (desc.kind) {
2655
2655
  case "fixed":
2656
- words[chunkW3VVG4NL_js.JOINT_KIND] = chunkW3VVG4NL_js.JOINT_FIXED;
2656
+ words[chunk2O2CG465_js.JOINT_KIND] = chunk2O2CG465_js.JOINT_FIXED;
2657
2657
  break;
2658
2658
  case "spherical":
2659
- words[chunkW3VVG4NL_js.JOINT_KIND] = chunkW3VVG4NL_js.JOINT_SPHERICAL;
2659
+ words[chunk2O2CG465_js.JOINT_KIND] = chunk2O2CG465_js.JOINT_SPHERICAL;
2660
2660
  break;
2661
2661
  case "revolute":
2662
2662
  case "prismatic":
2663
- words[chunkW3VVG4NL_js.JOINT_KIND] = desc.kind === "revolute" ? chunkW3VVG4NL_js.JOINT_REVOLUTE : chunkW3VVG4NL_js.JOINT_PRISMATIC;
2664
- for (let k = 0; k < 3; k++) floats[chunkW3VVG4NL_js.JOINT_AXIS + k] = desc.axis[k];
2665
- desc.limits && (words[chunkW3VVG4NL_js.JOINT_HAS_LIMITS] = 1, floats[chunkW3VVG4NL_js.JOINT_LIMITS] = desc.limits[0], floats[chunkW3VVG4NL_js.JOINT_LIMITS + 1] = desc.limits[1]);
2663
+ words[chunk2O2CG465_js.JOINT_KIND] = desc.kind === "revolute" ? chunk2O2CG465_js.JOINT_REVOLUTE : chunk2O2CG465_js.JOINT_PRISMATIC;
2664
+ for (let k = 0; k < 3; k++) floats[chunk2O2CG465_js.JOINT_AXIS + k] = desc.axis[k];
2665
+ desc.limits && (words[chunk2O2CG465_js.JOINT_HAS_LIMITS] = 1, floats[chunk2O2CG465_js.JOINT_LIMITS] = desc.limits[0], floats[chunk2O2CG465_js.JOINT_LIMITS + 1] = desc.limits[1]);
2666
2666
  break;
2667
2667
  case "rope":
2668
- words[chunkW3VVG4NL_js.JOINT_KIND] = chunkW3VVG4NL_js.JOINT_ROPE, floats[chunkW3VVG4NL_js.JOINT_LENGTH] = desc.length;
2668
+ words[chunk2O2CG465_js.JOINT_KIND] = chunk2O2CG465_js.JOINT_ROPE, floats[chunk2O2CG465_js.JOINT_LENGTH] = desc.length;
2669
2669
  break;
2670
2670
  case "spring":
2671
- words[chunkW3VVG4NL_js.JOINT_KIND] = chunkW3VVG4NL_js.JOINT_SPRING, floats[chunkW3VVG4NL_js.JOINT_LENGTH] = desc.restLength, floats[chunkW3VVG4NL_js.JOINT_STIFFNESS] = desc.stiffness, floats[chunkW3VVG4NL_js.JOINT_DAMPING] = desc.damping;
2671
+ words[chunk2O2CG465_js.JOINT_KIND] = chunk2O2CG465_js.JOINT_SPRING, floats[chunk2O2CG465_js.JOINT_LENGTH] = desc.restLength, floats[chunk2O2CG465_js.JOINT_STIFFNESS] = desc.stiffness, floats[chunk2O2CG465_js.JOINT_DAMPING] = desc.damping;
2672
2672
  break;
2673
2673
  case "cone":
2674
- words[chunkW3VVG4NL_js.JOINT_KIND] = chunkW3VVG4NL_js.JOINT_CONE;
2675
- for (let k = 0; k < 3; k++) floats[chunkW3VVG4NL_js.JOINT_AXIS + k] = desc.axis[k];
2676
- floats[chunkW3VVG4NL_js.JOINT_SWING] = desc.swing, floats[chunkW3VVG4NL_js.JOINT_LIMITS] = desc.twist[0], floats[chunkW3VVG4NL_js.JOINT_LIMITS + 1] = desc.twist[1];
2674
+ words[chunk2O2CG465_js.JOINT_KIND] = chunk2O2CG465_js.JOINT_CONE;
2675
+ for (let k = 0; k < 3; k++) floats[chunk2O2CG465_js.JOINT_AXIS + k] = desc.axis[k];
2676
+ floats[chunk2O2CG465_js.JOINT_SWING] = desc.swing, floats[chunk2O2CG465_js.JOINT_LIMITS] = desc.twist[0], floats[chunk2O2CG465_js.JOINT_LIMITS + 1] = desc.twist[1];
2677
2677
  break;
2678
2678
  case "six_dof":
2679
- words[chunkW3VVG4NL_js.JOINT_KIND] = chunkW3VVG4NL_js.JOINT_SIX_DOF, encodeSixDof(desc, words, floats);
2679
+ words[chunk2O2CG465_js.JOINT_KIND] = chunk2O2CG465_js.JOINT_SIX_DOF, encodeSixDof(desc, words, floats);
2680
2680
  break;
2681
2681
  }
2682
2682
  return s.check(s.exports.engine_joint_create(s.require(), bodyA, bodyB), "create joint");
@@ -2685,7 +2685,7 @@ var EnginePhysics = class {
2685
2685
  let s = this.session;
2686
2686
  s.flush();
2687
2687
  let world = s.require();
2688
- s.registerFloats[chunkW3VVG4NL_js.REGISTER_MOTOR_VELOCITY] = targetVelocity, s.registerFloats[chunkW3VVG4NL_js.REGISTER_MOTOR_MAX_FORCE] = maxForce, s.check(s.exports.engine_joint_motor(world, joint), "joint motor");
2688
+ s.registerFloats[chunk2O2CG465_js.REGISTER_MOTOR_VELOCITY] = targetVelocity, s.registerFloats[chunk2O2CG465_js.REGISTER_MOTOR_MAX_FORCE] = maxForce, s.check(s.exports.engine_joint_motor(world, joint), "joint motor");
2689
2689
  }
2690
2690
  destroyJoint(joint) {
2691
2691
  let s = this.session;
@@ -2695,7 +2695,7 @@ var EnginePhysics = class {
2695
2695
  this.session.step();
2696
2696
  }
2697
2697
  setBodyPose(body, positions, po, rotations, ro) {
2698
- let s = this.session, o = s.command(chunkW3VVG4NL_js.OP_SET_BODY_POSE, body), f = s.commandPayload;
2698
+ let s = this.session, o = s.command(chunk2O2CG465_js.OP_SET_BODY_POSE, body), f = s.commandPayload;
2699
2699
  f[o] = positions[po], f[o + 1] = positions[po + 1], f[o + 2] = positions[po + 2], f[o + 3] = rotations[ro], f[o + 4] = rotations[ro + 1], f[o + 5] = rotations[ro + 2], f[o + 6] = rotations[ro + 3];
2700
2700
  }
2701
2701
  linearVelocity(body, out) {
@@ -2707,28 +2707,28 @@ var EnginePhysics = class {
2707
2707
  s.flush(), s.check(s.exports.engine_body_angular_velocity(s.require(), body), "angular velocity"), this.readVector(out);
2708
2708
  }
2709
2709
  setLinearVelocity(body, velocity) {
2710
- this.vectorCommand(chunkW3VVG4NL_js.OP_SET_LINEAR_VELOCITY, body, velocity);
2710
+ this.vectorCommand(chunk2O2CG465_js.OP_SET_LINEAR_VELOCITY, body, velocity);
2711
2711
  }
2712
2712
  setAngularVelocity(body, velocity) {
2713
- this.vectorCommand(chunkW3VVG4NL_js.OP_SET_ANGULAR_VELOCITY, body, velocity);
2713
+ this.vectorCommand(chunk2O2CG465_js.OP_SET_ANGULAR_VELOCITY, body, velocity);
2714
2714
  }
2715
2715
  applyImpulse(body, impulse) {
2716
- this.vectorCommand(chunkW3VVG4NL_js.OP_APPLY_IMPULSE, body, impulse);
2716
+ this.vectorCommand(chunk2O2CG465_js.OP_APPLY_IMPULSE, body, impulse);
2717
2717
  }
2718
2718
  applyTorqueImpulse(body, impulse) {
2719
- this.vectorCommand(chunkW3VVG4NL_js.OP_APPLY_TORQUE_IMPULSE, body, impulse);
2719
+ this.vectorCommand(chunk2O2CG465_js.OP_APPLY_TORQUE_IMPULSE, body, impulse);
2720
2720
  }
2721
2721
  addForce(body, force) {
2722
- this.vectorCommand(chunkW3VVG4NL_js.OP_ADD_FORCE, body, force);
2722
+ this.vectorCommand(chunk2O2CG465_js.OP_ADD_FORCE, body, force);
2723
2723
  }
2724
2724
  applyImpulseAtPoint(body, impulse, point) {
2725
- this.pointCommand(chunkW3VVG4NL_js.OP_APPLY_IMPULSE_AT_POINT, body, impulse, point);
2725
+ this.pointCommand(chunk2O2CG465_js.OP_APPLY_IMPULSE_AT_POINT, body, impulse, point);
2726
2726
  }
2727
2727
  addForceAtPoint(body, force, point) {
2728
- this.pointCommand(chunkW3VVG4NL_js.OP_ADD_FORCE_AT_POINT, body, force, point);
2728
+ this.pointCommand(chunk2O2CG465_js.OP_ADD_FORCE_AT_POINT, body, force, point);
2729
2729
  }
2730
2730
  addTorque(body, torque) {
2731
- this.vectorCommand(chunkW3VVG4NL_js.OP_ADD_TORQUE, body, torque);
2731
+ this.vectorCommand(chunk2O2CG465_js.OP_ADD_TORQUE, body, torque);
2732
2732
  }
2733
2733
  extra(name) {
2734
2734
  let fn = this.session.symbols[name];
@@ -2739,43 +2739,43 @@ var EnginePhysics = class {
2739
2739
  let s = this.session;
2740
2740
  s.flush();
2741
2741
  let floats = s.registerFloats;
2742
- floats[chunkW3VVG4NL_js.VECTOR_OUT] = point.x, floats[chunkW3VVG4NL_js.VECTOR_OUT + 1] = point.y, floats[chunkW3VVG4NL_js.VECTOR_OUT + 2] = point.z, s.check(this.extra("engine_body_velocity_at_point")(s.require(), body), "velocity at point"), this.readVector(out);
2742
+ floats[chunk2O2CG465_js.VECTOR_OUT] = point.x, floats[chunk2O2CG465_js.VECTOR_OUT + 1] = point.y, floats[chunk2O2CG465_js.VECTOR_OUT + 2] = point.z, s.check(this.extra("engine_body_velocity_at_point")(s.require(), body), "velocity at point"), this.readVector(out);
2743
2743
  }
2744
2744
  setJointMotorPosition(joint, target, stiffness, damping) {
2745
2745
  let s = this.session;
2746
2746
  s.flush();
2747
2747
  let floats = s.registerFloats;
2748
- floats[chunkW3VVG4NL_js.MOTOR_TARGET] = target, floats[chunkW3VVG4NL_js.MOTOR_STIFFNESS] = stiffness, floats[chunkW3VVG4NL_js.MOTOR_DAMPING] = damping, s.check(this.extra("engine_joint_motor_position")(s.require(), joint), "joint motor position");
2748
+ floats[chunk2O2CG465_js.MOTOR_TARGET] = target, floats[chunk2O2CG465_js.MOTOR_STIFFNESS] = stiffness, floats[chunk2O2CG465_js.MOTOR_DAMPING] = damping, s.check(this.extra("engine_joint_motor_position")(s.require(), joint), "joint motor position");
2749
2749
  }
2750
2750
  castShape(query, out) {
2751
2751
  let s = this.session;
2752
2752
  s.flush();
2753
2753
  let words = s.registerWords, floats = s.registerFloats;
2754
- words[chunkW3VVG4NL_js.CAST_SHAPE] = chunkRCQ2MPBV_js.castShapeCode(query.kind), floats[chunkW3VVG4NL_js.CAST_PARAMS] = query.params.x, floats[chunkW3VVG4NL_js.CAST_PARAMS + 1] = query.params.y, floats[chunkW3VVG4NL_js.CAST_PARAMS + 2] = query.params.z;
2755
- for (let k = 0; k < 4; k++) floats[chunkW3VVG4NL_js.CAST_ROTATION + k] = query.rotation[k];
2756
- floats[chunkW3VVG4NL_js.RAY_ORIGIN] = query.origin.x, floats[chunkW3VVG4NL_js.RAY_ORIGIN + 1] = query.origin.y, floats[chunkW3VVG4NL_js.RAY_ORIGIN + 2] = query.origin.z, floats[chunkW3VVG4NL_js.RAY_DIRECTION] = query.direction.x, floats[chunkW3VVG4NL_js.RAY_DIRECTION + 1] = query.direction.y, floats[chunkW3VVG4NL_js.RAY_DIRECTION + 2] = query.direction.z, floats[chunkW3VVG4NL_js.RAY_MAX] = query.maxDistance, words[chunkW3VVG4NL_js.RAY_INCLUDE_SENSORS] = query.includeSensors ? 1 : 0, words[chunkW3VVG4NL_js.RAY_EXCLUDE] = query.excludeBody < 0 ? chunkW3VVG4NL_js.NO_EXCLUDE : query.excludeBody;
2757
- let hit = s.check(this.extra("engine_shape_cast")(s.require()), "shape cast") === chunkW3VVG4NL_js.RAY_HIT;
2758
- return out.hit = hit, hit ? (out.collider = words[chunkW3VVG4NL_js.HIT_COLLIDER], out.distance = floats[chunkW3VVG4NL_js.HIT_DISTANCE], out.pointX = floats[chunkW3VVG4NL_js.HIT_POINT], out.pointY = floats[chunkW3VVG4NL_js.HIT_POINT + 1], out.pointZ = floats[chunkW3VVG4NL_js.HIT_POINT + 2], out.normalX = floats[chunkW3VVG4NL_js.HIT_NORMAL], out.normalY = floats[chunkW3VVG4NL_js.HIT_NORMAL + 1], out.normalZ = floats[chunkW3VVG4NL_js.HIT_NORMAL + 2], true) : (out.collider = -1, false);
2754
+ words[chunk2O2CG465_js.CAST_SHAPE] = chunkRCQ2MPBV_js.castShapeCode(query.kind), floats[chunk2O2CG465_js.CAST_PARAMS] = query.params.x, floats[chunk2O2CG465_js.CAST_PARAMS + 1] = query.params.y, floats[chunk2O2CG465_js.CAST_PARAMS + 2] = query.params.z;
2755
+ for (let k = 0; k < 4; k++) floats[chunk2O2CG465_js.CAST_ROTATION + k] = query.rotation[k];
2756
+ floats[chunk2O2CG465_js.RAY_ORIGIN] = query.origin.x, floats[chunk2O2CG465_js.RAY_ORIGIN + 1] = query.origin.y, floats[chunk2O2CG465_js.RAY_ORIGIN + 2] = query.origin.z, floats[chunk2O2CG465_js.RAY_DIRECTION] = query.direction.x, floats[chunk2O2CG465_js.RAY_DIRECTION + 1] = query.direction.y, floats[chunk2O2CG465_js.RAY_DIRECTION + 2] = query.direction.z, floats[chunk2O2CG465_js.RAY_MAX] = query.maxDistance, words[chunk2O2CG465_js.RAY_INCLUDE_SENSORS] = query.includeSensors ? 1 : 0, words[chunk2O2CG465_js.RAY_EXCLUDE] = query.excludeBody < 0 ? chunk2O2CG465_js.NO_EXCLUDE : query.excludeBody;
2757
+ let hit = s.check(this.extra("engine_shape_cast")(s.require()), "shape cast") === chunk2O2CG465_js.RAY_HIT;
2758
+ return out.hit = hit, hit ? (out.collider = words[chunk2O2CG465_js.HIT_COLLIDER], out.distance = floats[chunk2O2CG465_js.HIT_DISTANCE], out.pointX = floats[chunk2O2CG465_js.HIT_POINT], out.pointY = floats[chunk2O2CG465_js.HIT_POINT + 1], out.pointZ = floats[chunk2O2CG465_js.HIT_POINT + 2], out.normalX = floats[chunk2O2CG465_js.HIT_NORMAL], out.normalY = floats[chunk2O2CG465_js.HIT_NORMAL + 1], out.normalZ = floats[chunk2O2CG465_js.HIT_NORMAL + 2], true) : (out.collider = -1, false);
2759
2759
  }
2760
2760
  overlapSphere(x, y, z, radius, includeSensors, out) {
2761
2761
  let s = this.session;
2762
2762
  s.flush();
2763
2763
  let words = s.registerWords, floats = s.registerFloats;
2764
- floats[chunkW3VVG4NL_js.RAY_ORIGIN] = x, floats[chunkW3VVG4NL_js.RAY_ORIGIN + 1] = y, floats[chunkW3VVG4NL_js.RAY_ORIGIN + 2] = z, floats[chunkW3VVG4NL_js.RAY_MAX] = radius, words[chunkW3VVG4NL_js.RAY_INCLUDE_SENSORS] = includeSensors ? 1 : 0, out.count = s.check(this.extra("engine_overlap_sphere")(s.require()), "sphere overlap"), out.collider = out.count > 0 ? words[chunkW3VVG4NL_js.HIT_COLLIDER] : -1;
2764
+ floats[chunk2O2CG465_js.RAY_ORIGIN] = x, floats[chunk2O2CG465_js.RAY_ORIGIN + 1] = y, floats[chunk2O2CG465_js.RAY_ORIGIN + 2] = z, floats[chunk2O2CG465_js.RAY_MAX] = radius, words[chunk2O2CG465_js.RAY_INCLUDE_SENSORS] = includeSensors ? 1 : 0, out.count = s.check(this.extra("engine_overlap_sphere")(s.require()), "sphere overlap"), out.collider = out.count > 0 ? words[chunk2O2CG465_js.HIT_COLLIDER] : -1;
2765
2765
  }
2766
2766
  pointCommand(op, body, v, p) {
2767
2767
  let s = this.session, o = s.command(op, body), f = s.commandPayload;
2768
2768
  f[o] = v.x, f[o + 1] = v.y, f[o + 2] = v.z, f[o + 3] = p.x, f[o + 4] = p.y, f[o + 5] = p.z;
2769
2769
  }
2770
2770
  resetForces(body) {
2771
- this.session.command(chunkW3VVG4NL_js.OP_RESET_FORCES, body);
2771
+ this.session.command(chunk2O2CG465_js.OP_RESET_FORCES, body);
2772
2772
  }
2773
2773
  isSleeping(body) {
2774
2774
  let s = this.session;
2775
2775
  return s.flush(), s.check(s.exports.engine_body_sleeping(s.require(), body), "sleeping") === 1;
2776
2776
  }
2777
2777
  wake(body) {
2778
- this.session.command(chunkW3VVG4NL_js.OP_WAKE, body);
2778
+ this.session.command(chunk2O2CG465_js.OP_WAKE, body);
2779
2779
  }
2780
2780
  batchHandle() {
2781
2781
  let s = this.session;
@@ -2785,9 +2785,9 @@ var EnginePhysics = class {
2785
2785
  let s = this.session;
2786
2786
  s.flush();
2787
2787
  let words = s.registerWords, floats = s.registerFloats;
2788
- floats[chunkW3VVG4NL_js.RAY_ORIGIN] = ray.origin.x, floats[chunkW3VVG4NL_js.RAY_ORIGIN + 1] = ray.origin.y, floats[chunkW3VVG4NL_js.RAY_ORIGIN + 2] = ray.origin.z, floats[chunkW3VVG4NL_js.RAY_DIRECTION] = ray.direction.x, floats[chunkW3VVG4NL_js.RAY_DIRECTION + 1] = ray.direction.y, floats[chunkW3VVG4NL_js.RAY_DIRECTION + 2] = ray.direction.z, floats[chunkW3VVG4NL_js.RAY_MAX] = ray.maxDistance, words[chunkW3VVG4NL_js.RAY_SOLID] = ray.solid ? 1 : 0, words[chunkW3VVG4NL_js.RAY_INCLUDE_SENSORS] = ray.includeSensors ? 1 : 0, words[chunkW3VVG4NL_js.RAY_EXCLUDE] = ray.excludeCollider < 0 ? chunkW3VVG4NL_js.NO_EXCLUDE : ray.excludeCollider;
2789
- let hit = s.check(s.exports.engine_raycast(s.require()), "raycast") === chunkW3VVG4NL_js.RAY_HIT;
2790
- return out.hit = hit, hit ? (out.collider = words[chunkW3VVG4NL_js.HIT_COLLIDER], out.distance = floats[chunkW3VVG4NL_js.HIT_DISTANCE], out.pointX = floats[chunkW3VVG4NL_js.HIT_POINT], out.pointY = floats[chunkW3VVG4NL_js.HIT_POINT + 1], out.pointZ = floats[chunkW3VVG4NL_js.HIT_POINT + 2], out.normalX = floats[chunkW3VVG4NL_js.HIT_NORMAL], out.normalY = floats[chunkW3VVG4NL_js.HIT_NORMAL + 1], out.normalZ = floats[chunkW3VVG4NL_js.HIT_NORMAL + 2], true) : (out.collider = -1, false);
2788
+ floats[chunk2O2CG465_js.RAY_ORIGIN] = ray.origin.x, floats[chunk2O2CG465_js.RAY_ORIGIN + 1] = ray.origin.y, floats[chunk2O2CG465_js.RAY_ORIGIN + 2] = ray.origin.z, floats[chunk2O2CG465_js.RAY_DIRECTION] = ray.direction.x, floats[chunk2O2CG465_js.RAY_DIRECTION + 1] = ray.direction.y, floats[chunk2O2CG465_js.RAY_DIRECTION + 2] = ray.direction.z, floats[chunk2O2CG465_js.RAY_MAX] = ray.maxDistance, words[chunk2O2CG465_js.RAY_SOLID] = ray.solid ? 1 : 0, words[chunk2O2CG465_js.RAY_INCLUDE_SENSORS] = ray.includeSensors ? 1 : 0, words[chunk2O2CG465_js.RAY_EXCLUDE] = ray.excludeCollider < 0 ? chunk2O2CG465_js.NO_EXCLUDE : ray.excludeCollider;
2789
+ let hit = s.check(s.exports.engine_raycast(s.require()), "raycast") === chunk2O2CG465_js.RAY_HIT;
2790
+ return out.hit = hit, hit ? (out.collider = words[chunk2O2CG465_js.HIT_COLLIDER], out.distance = floats[chunk2O2CG465_js.HIT_DISTANCE], out.pointX = floats[chunk2O2CG465_js.HIT_POINT], out.pointY = floats[chunk2O2CG465_js.HIT_POINT + 1], out.pointZ = floats[chunk2O2CG465_js.HIT_POINT + 2], out.normalX = floats[chunk2O2CG465_js.HIT_NORMAL], out.normalY = floats[chunk2O2CG465_js.HIT_NORMAL + 1], out.normalZ = floats[chunk2O2CG465_js.HIT_NORMAL + 2], true) : (out.collider = -1, false);
2791
2791
  }
2792
2792
  contactCount() {
2793
2793
  return this.session.contacts;
@@ -2805,9 +2805,9 @@ var EnginePhysics = class {
2805
2805
  let s = this.session;
2806
2806
  s.flush();
2807
2807
  let words = s.descWords, floats = s.descFloats;
2808
- if (words.fill(0), floats[chunkW3VVG4NL_js.CONTROLLER_OFFSET] = desc.offset ?? (0.01), floats[chunkW3VVG4NL_js.CONTROLLER_MAX_SLOPE_CLIMB] = desc.maxSlopeClimbDegrees === void 0 ? NO_VALUE : desc.maxSlopeClimbDegrees * DEGREES_TO_RADIANS, floats[chunkW3VVG4NL_js.CONTROLLER_MIN_SLOPE_SLIDE] = desc.minSlopeSlideDegrees === void 0 ? NO_VALUE : desc.minSlopeSlideDegrees * DEGREES_TO_RADIANS, floats[chunkW3VVG4NL_js.CONTROLLER_AUTOSTEP_HEIGHT] = desc.autostepMaxHeight ?? NO_VALUE, floats[chunkW3VVG4NL_js.CONTROLLER_AUTOSTEP_WIDTH] = desc.autostepMinWidth ?? NO_VALUE, floats[chunkW3VVG4NL_js.CONTROLLER_SNAP] = desc.snapToGround ?? NO_VALUE, words[chunkW3VVG4NL_js.CONTROLLER_SLIDE] = desc.slide === void 0 ? chunkW3VVG4NL_js.CONTROLLER_SLIDE_UNSET : desc.slide ? 1 : 0, desc.up) {
2809
- words[chunkW3VVG4NL_js.CONTROLLER_HAS_UP] = 1;
2810
- for (let k = 0; k < 3; k++) floats[chunkW3VVG4NL_js.CONTROLLER_UP + k] = desc.up[k];
2808
+ if (words.fill(0), floats[chunk2O2CG465_js.CONTROLLER_OFFSET] = desc.offset ?? (0.01), floats[chunk2O2CG465_js.CONTROLLER_MAX_SLOPE_CLIMB] = desc.maxSlopeClimbDegrees === void 0 ? NO_VALUE : desc.maxSlopeClimbDegrees * DEGREES_TO_RADIANS, floats[chunk2O2CG465_js.CONTROLLER_MIN_SLOPE_SLIDE] = desc.minSlopeSlideDegrees === void 0 ? NO_VALUE : desc.minSlopeSlideDegrees * DEGREES_TO_RADIANS, floats[chunk2O2CG465_js.CONTROLLER_AUTOSTEP_HEIGHT] = desc.autostepMaxHeight ?? NO_VALUE, floats[chunk2O2CG465_js.CONTROLLER_AUTOSTEP_WIDTH] = desc.autostepMinWidth ?? NO_VALUE, floats[chunk2O2CG465_js.CONTROLLER_SNAP] = desc.snapToGround ?? NO_VALUE, words[chunk2O2CG465_js.CONTROLLER_SLIDE] = desc.slide === void 0 ? chunk2O2CG465_js.CONTROLLER_SLIDE_UNSET : desc.slide ? 1 : 0, desc.up) {
2809
+ words[chunk2O2CG465_js.CONTROLLER_HAS_UP] = 1;
2810
+ for (let k = 0; k < 3; k++) floats[chunk2O2CG465_js.CONTROLLER_UP + k] = desc.up[k];
2811
2811
  }
2812
2812
  return s.check(s.exports.engine_controller_create(s.require()), "create controller");
2813
2813
  }
@@ -2815,7 +2815,7 @@ var EnginePhysics = class {
2815
2815
  let s = this.session;
2816
2816
  s.flush();
2817
2817
  let floats = s.registerFloats;
2818
- floats[chunkW3VVG4NL_js.VECTOR_OUT] = desired.x, floats[chunkW3VVG4NL_js.VECTOR_OUT + 1] = desired.y, floats[chunkW3VVG4NL_js.VECTOR_OUT + 2] = desired.z, s.check(s.exports.engine_character_move(s.require(), controller, collider), "move character"), out.x = floats[chunkW3VVG4NL_js.VECTOR_OUT], out.y = floats[chunkW3VVG4NL_js.VECTOR_OUT + 1], out.z = floats[chunkW3VVG4NL_js.VECTOR_OUT + 2], out.grounded = s.registerWords[chunkW3VVG4NL_js.GROUNDED_OUT] === 1;
2818
+ floats[chunk2O2CG465_js.VECTOR_OUT] = desired.x, floats[chunk2O2CG465_js.VECTOR_OUT + 1] = desired.y, floats[chunk2O2CG465_js.VECTOR_OUT + 2] = desired.z, s.check(s.exports.engine_character_move(s.require(), controller, collider), "move character"), out.x = floats[chunk2O2CG465_js.VECTOR_OUT], out.y = floats[chunk2O2CG465_js.VECTOR_OUT + 1], out.z = floats[chunk2O2CG465_js.VECTOR_OUT + 2], out.grounded = s.registerWords[chunk2O2CG465_js.GROUNDED_OUT] === 1;
2819
2819
  }
2820
2820
  destroyCharacterController(controller) {
2821
2821
  let s = this.session;
@@ -2825,27 +2825,27 @@ var EnginePhysics = class {
2825
2825
  this.craft?.dispose(), this.session.close();
2826
2826
  }
2827
2827
  setColliderClass(collider, colliderClass) {
2828
- let s = this.session, o = s.command(chunkW3VVG4NL_js.OP_SET_COLLIDER_CLASS, collider);
2829
- s.commandPayloadWords[o] = chunkBS65NRDW_js.checkColliderClass(colliderClass);
2828
+ let s = this.session, o = s.command(chunk2O2CG465_js.OP_SET_COLLIDER_CLASS, collider);
2829
+ s.commandPayloadWords[o] = chunk3S6WPBZL_js.checkColliderClass(colliderClass);
2830
2830
  }
2831
2831
  setContactRule(platform, other, rule) {
2832
- let s = this.session, o = s.command(chunkW3VVG4NL_js.OP_SET_CONTACT_RULE, chunkBS65NRDW_js.packContactRuleHeader(platform, other, rule));
2833
- chunkBS65NRDW_js.writeContactRulePayload(rule, s.commandPayload, o);
2832
+ let s = this.session, o = s.command(chunk2O2CG465_js.OP_SET_CONTACT_RULE, chunk3S6WPBZL_js.packContactRuleHeader(platform, other, rule));
2833
+ chunk3S6WPBZL_js.writeContactRulePayload(rule, s.commandPayload, o);
2834
2834
  }
2835
2835
  setCollisionGroups(collider, membership, filter) {
2836
- let s = this.session, o = s.command(chunkW3VVG4NL_js.OP_SET_COLLIDER_GROUPS, collider);
2836
+ let s = this.session, o = s.command(chunk2O2CG465_js.OP_SET_COLLIDER_GROUPS, collider);
2837
2837
  s.commandPayloadWords[o] = membership & (65535), s.commandPayloadWords[o + 1] = filter & (65535);
2838
2838
  }
2839
2839
  setSolver(iterations, pgsIterations, ccdSubsteps) {
2840
- let s = this.session, o = s.command(chunkW3VVG4NL_js.OP_SET_SOLVER, 0);
2840
+ let s = this.session, o = s.command(chunk2O2CG465_js.OP_SET_SOLVER, 0);
2841
2841
  s.commandPayloadWords[o] = iterations, s.commandPayloadWords[o + 1] = pgsIterations, s.commandPayloadWords[o + 2] = ccdSubsteps;
2842
2842
  }
2843
2843
  setSoftCcd(body, distance) {
2844
- let s = this.session, o = s.command(chunkW3VVG4NL_js.OP_SET_BODY_SOFT_CCD, body);
2844
+ let s = this.session, o = s.command(chunk2O2CG465_js.OP_SET_BODY_SOFT_CCD, body);
2845
2845
  s.commandPayload[o] = distance;
2846
2846
  }
2847
2847
  setSleepThresholds(body, linear2, angular, seconds) {
2848
- let s = this.session, o = s.command(chunkW3VVG4NL_js.OP_SET_BODY_SLEEP, body), f = s.commandPayload;
2848
+ let s = this.session, o = s.command(chunk2O2CG465_js.OP_SET_BODY_SLEEP, body), f = s.commandPayload;
2849
2849
  f[o] = linear2, f[o + 1] = angular, f[o + 2] = seconds;
2850
2850
  }
2851
2851
  vectorCommand(op, body, v) {
@@ -2854,10 +2854,10 @@ var EnginePhysics = class {
2854
2854
  }
2855
2855
  readVector(out) {
2856
2856
  let floats = this.session.registerFloats;
2857
- out.x = floats[chunkW3VVG4NL_js.VECTOR_OUT], out.y = floats[chunkW3VVG4NL_js.VECTOR_OUT + 1], out.z = floats[chunkW3VVG4NL_js.VECTOR_OUT + 2];
2857
+ out.x = floats[chunk2O2CG465_js.VECTOR_OUT], out.y = floats[chunk2O2CG465_js.VECTOR_OUT + 1], out.z = floats[chunk2O2CG465_js.VECTOR_OUT + 2];
2858
2858
  }
2859
2859
  stage(staged, data, pointerSlot, lengthSlot) {
2860
- let s = this.session, bytes = data.length * chunkW3VVG4NL_js.WORD_BYTES, pointer = s.exports.engine_alloc(bytes, chunkW3VVG4NL_js.WORD_BYTES);
2860
+ let s = this.session, bytes = data.length * chunk2O2CG465_js.WORD_BYTES, pointer = s.exports.engine_alloc(bytes, chunk2O2CG465_js.WORD_BYTES);
2861
2861
  if (pointer === (0)) throw new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine memory cannot hold collider data");
2862
2862
  staged.push({ pointer, bytes }), new Uint8Array(s.buffer, pointer, bytes).set(new Uint8Array(data.buffer, data.byteOffset, bytes)), s.descWords[pointerSlot] = pointer, s.descWords[lengthSlot] = data.length;
2863
2863
  }
@@ -2867,15 +2867,15 @@ var EnginePhysics = class {
2867
2867
  var NO_WORLD2 = 0, EMPTY_WORDS = new Uint32Array(0), EMPTY_FLOATS = new Float32Array(0), EMPTY_BYTES = new Uint8Array(0);
2868
2868
  function failure3(code, what) {
2869
2869
  switch (code) {
2870
- case chunkW3VVG4NL_js.ERROR_CAPACITY_EXCEEDED:
2870
+ case chunk2O2CG465_js.ERROR_CAPACITY_EXCEEDED:
2871
2871
  return new chunk2V7IL4HC_js.GameError("capacity_exceeded", `${what}: capacity exceeded`);
2872
- case chunkW3VVG4NL_js.ERROR_DEAD_ENTITY:
2872
+ case chunk2O2CG465_js.ERROR_DEAD_ENTITY:
2873
2873
  return new chunk2V7IL4HC_js.GameError("dead_entity", `${what}: entity has no transform`);
2874
- case chunkW3VVG4NL_js.ERROR_UNKNOWN_RESOURCE:
2874
+ case chunk2O2CG465_js.ERROR_UNKNOWN_RESOURCE:
2875
2875
  return new chunk2V7IL4HC_js.GameError("unknown_resource", `${what}: unknown resource`);
2876
- case chunkW3VVG4NL_js.ERROR_UNSUPPORTED:
2876
+ case chunk2O2CG465_js.ERROR_UNSUPPORTED:
2877
2877
  return new chunk2V7IL4HC_js.GameError("unsupported_feature", `${what}: unsupported`);
2878
- case chunkW3VVG4NL_js.ERROR_INVALID_ARGUMENT:
2878
+ case chunk2O2CG465_js.ERROR_INVALID_ARGUMENT:
2879
2879
  default:
2880
2880
  return new chunk2V7IL4HC_js.GameError("invalid_argument", `${what}: invalid argument`);
2881
2881
  }
@@ -2906,25 +2906,25 @@ var EngineSession = class {
2906
2906
  }
2907
2907
  open(desc) {
2908
2908
  if (this.world !== (0)) throw new chunk2V7IL4HC_js.GameError("invalid_argument", "engine world is already open");
2909
- let scratch = this.memory.allocate("u32", chunkW3VVG4NL_js.DESC_WORDS), floats = new Float32Array(scratch.buffer, scratch.byteOffset, chunkW3VVG4NL_js.DESC_WORDS), g = desc.gravity ?? [0, -9.81, 0];
2910
- floats[chunkW3VVG4NL_js.WORLD_GRAVITY] = g[0], floats[chunkW3VVG4NL_js.WORLD_GRAVITY + 1] = g[1], floats[chunkW3VVG4NL_js.WORLD_GRAVITY + 2] = g[2], floats[chunkW3VVG4NL_js.WORLD_STEP_SECONDS] = desc.stepSeconds, scratch[chunkW3VVG4NL_js.WORLD_MAX_BODIES] = desc.maxBodies ?? 2048, scratch[chunkW3VVG4NL_js.WORLD_MAX_COLLIDERS] = desc.maxColliders ?? 4096, scratch[chunkW3VVG4NL_js.WORLD_MAX_JOINTS] = desc.maxJoints ?? 1024, scratch[chunkW3VVG4NL_js.WORLD_MAX_CONTACTS] = desc.maxContactEvents ?? 1024, scratch[chunkW3VVG4NL_js.WORLD_MAX_CONTROLLERS] = desc.maxCharacterControllers ?? 64, scratch[chunkW3VVG4NL_js.WORLD_MAX_COMMANDS] = chunkW3VVG4NL_js.DEFAULT_MAX_COMMANDS;
2909
+ let scratch = this.memory.allocate("u32", chunk2O2CG465_js.DESC_WORDS), floats = new Float32Array(scratch.buffer, scratch.byteOffset, chunk2O2CG465_js.DESC_WORDS), g = desc.gravity ?? [0, -9.81, 0];
2910
+ floats[chunk2O2CG465_js.WORLD_GRAVITY] = g[0], floats[chunk2O2CG465_js.WORLD_GRAVITY + 1] = g[1], floats[chunk2O2CG465_js.WORLD_GRAVITY + 2] = g[2], floats[chunk2O2CG465_js.WORLD_STEP_SECONDS] = desc.stepSeconds, scratch[chunk2O2CG465_js.WORLD_MAX_BODIES] = desc.maxBodies ?? 2048, scratch[chunk2O2CG465_js.WORLD_MAX_COLLIDERS] = desc.maxColliders ?? 4096, scratch[chunk2O2CG465_js.WORLD_MAX_JOINTS] = desc.maxJoints ?? 1024, scratch[chunk2O2CG465_js.WORLD_MAX_CONTACTS] = desc.maxContactEvents ?? 1024, scratch[chunk2O2CG465_js.WORLD_MAX_CONTROLLERS] = desc.maxCharacterControllers ?? 64, scratch[chunk2O2CG465_js.WORLD_MAX_COMMANDS] = chunk2O2CG465_js.DEFAULT_MAX_COMMANDS;
2911
2911
  let world = desc.rollback === void 0 ? this.exports.engine_world_create(scratch.byteOffset) : this.createRollback(scratch, desc.rollback);
2912
- if (world === (0)) throw chunkFAYK2MN6_js.engineSessionFailure(this.runtime.symbols) ?? new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine world could not be created");
2913
- this.world = world, this.snapshots = desc.rollback === void 0 ? null : chunkHRSIIDOZ_js.WorldSnapshots.bind(this.runtime.symbols, this.runtime.memory, world, () => this.discard(), desc.rollback.frames ?? chunkHRSIIDOZ_js.DEFAULT_ROLLBACK_FRAMES), chunkPTRNO5UD_js.noteInspectorWorld(world);
2912
+ if (world === (0)) throw chunkNZTKLY2W_js.engineSessionFailure(this.runtime.symbols) ?? new chunk2V7IL4HC_js.GameError("capacity_exceeded", "engine world could not be created");
2913
+ this.world = world, this.snapshots = desc.rollback === void 0 ? null : chunkH3OQKK6X_js.WorldSnapshots.bind(this.runtime.symbols, this.runtime.memory, world, () => this.discard(), desc.rollback.frames ?? chunkH3OQKK6X_js.DEFAULT_ROLLBACK_FRAMES), chunkPTRNO5UD_js.noteInspectorWorld(world);
2914
2914
  let buffer = this.runtime.memory.buffer, registers = this.exports.engine_world_registers(world);
2915
- this.registerWords = new Uint32Array(buffer, registers, chunkW3VVG4NL_js.REGISTER_WORDS), this.registerFloats = new Float32Array(buffer, registers, chunkW3VVG4NL_js.REGISTER_WORDS);
2915
+ this.registerWords = new Uint32Array(buffer, registers, chunk2O2CG465_js.REGISTER_WORDS), this.registerFloats = new Float32Array(buffer, registers, chunk2O2CG465_js.REGISTER_WORDS);
2916
2916
  let descPointer = this.exports.engine_world_desc(world);
2917
- this.descWords = new Uint32Array(buffer, descPointer, chunkW3VVG4NL_js.DESC_WORDS), this.descFloats = new Float32Array(buffer, descPointer, chunkW3VVG4NL_js.DESC_WORDS), this.commandCapacity = chunkW3VVG4NL_js.DEFAULT_MAX_COMMANDS;
2918
- let commandBuffer = chunkFAYK2MN6_js.hasPhysics(this.runtime.symbols) ? buffer : new ArrayBuffer(chunkW3VVG4NL_js.DEFAULT_MAX_COMMANDS * chunkW3VVG4NL_js.COMMAND_WORDS * chunkW3VVG4NL_js.WORD_BYTES), commands = commandBuffer === buffer ? this.exports.engine_world_commands(world) : 0;
2919
- this.commandWords = new Uint32Array(commandBuffer, commands, chunkW3VVG4NL_js.DEFAULT_MAX_COMMANDS * chunkW3VVG4NL_js.COMMAND_WORDS), this.commandFloats = new Float32Array(commandBuffer, commands, chunkW3VVG4NL_js.DEFAULT_MAX_COMMANDS * chunkW3VVG4NL_js.COMMAND_WORDS);
2920
- let maxContacts = scratch[chunkW3VVG4NL_js.WORLD_MAX_CONTACTS];
2917
+ this.descWords = new Uint32Array(buffer, descPointer, chunk2O2CG465_js.DESC_WORDS), this.descFloats = new Float32Array(buffer, descPointer, chunk2O2CG465_js.DESC_WORDS), this.commandCapacity = chunk2O2CG465_js.DEFAULT_MAX_COMMANDS;
2918
+ let commandBuffer = chunkNZTKLY2W_js.hasPhysics(this.runtime.symbols) ? buffer : new ArrayBuffer(chunk2O2CG465_js.DEFAULT_MAX_COMMANDS * chunk2O2CG465_js.COMMAND_WORDS * chunk2O2CG465_js.WORD_BYTES), commands = commandBuffer === buffer ? this.exports.engine_world_commands(world) : 0;
2919
+ this.commandWords = new Uint32Array(commandBuffer, commands, chunk2O2CG465_js.DEFAULT_MAX_COMMANDS * chunk2O2CG465_js.COMMAND_WORDS), this.commandFloats = new Float32Array(commandBuffer, commands, chunk2O2CG465_js.DEFAULT_MAX_COMMANDS * chunk2O2CG465_js.COMMAND_WORDS);
2920
+ let maxContacts = scratch[chunk2O2CG465_js.WORLD_MAX_CONTACTS];
2921
2921
  this.contactA = new Uint32Array(buffer, this.exports.engine_contacts_a(world), maxContacts), this.contactB = new Uint32Array(buffer, this.exports.engine_contacts_b(world), maxContacts), this.contactBegan = new Uint8Array(buffer, this.exports.engine_contacts_started(world), maxContacts), this.columns && this.bindLayout(this.columns);
2922
2922
  }
2923
2923
  createRollback(desc, rollback) {
2924
2924
  let symbols = this.runtime.symbols;
2925
- if (!chunkHRSIIDOZ_js.hasRollback(symbols)) throw new chunk2V7IL4HC_js.GameError("unsupported_feature", "this engine has no client rollback (feature rollback_1)");
2926
- let config = this.memory.allocate("u32", chunkHRSIIDOZ_js.ROLLBACK_CONFIG_WORDS);
2927
- chunkHRSIIDOZ_js.writeRollbackConfig(config, rollback);
2925
+ if (!chunkH3OQKK6X_js.hasRollback(symbols)) throw new chunk2V7IL4HC_js.GameError("unsupported_feature", "this engine has no client rollback (feature rollback_1)");
2926
+ let config = this.memory.allocate("u32", chunkH3OQKK6X_js.ROLLBACK_CONFIG_WORDS);
2927
+ chunkH3OQKK6X_js.writeRollbackConfig(config, rollback);
2928
2928
  let create = symbols.engine_world_rollback_create;
2929
2929
  return create(desc.byteOffset, config.byteOffset);
2930
2930
  }
@@ -2938,8 +2938,8 @@ var EngineSession = class {
2938
2938
  }
2939
2939
  command(op, body) {
2940
2940
  this.pending === this.commandCapacity && this.flush();
2941
- let o = this.pending * chunkW3VVG4NL_js.COMMAND_WORDS;
2942
- return this.commandWords[o + chunkW3VVG4NL_js.COMMAND_OP] = op, this.commandWords[o + chunkW3VVG4NL_js.COMMAND_BODY] = body, this.pending++, o + chunkW3VVG4NL_js.COMMAND_PAYLOAD;
2941
+ let o = this.pending * chunk2O2CG465_js.COMMAND_WORDS;
2942
+ return this.commandWords[o + chunk2O2CG465_js.COMMAND_OP] = op, this.commandWords[o + chunk2O2CG465_js.COMMAND_BODY] = body, this.pending++, o + chunk2O2CG465_js.COMMAND_PAYLOAD;
2943
2943
  }
2944
2944
  get commandPayload() {
2945
2945
  return this.commandFloats;
@@ -2962,16 +2962,16 @@ var EngineSession = class {
2962
2962
  this.pending = 0, this.check(this.exports.engine_apply_commands(this.require(), count), "command");
2963
2963
  }
2964
2964
  step() {
2965
- chunkFAYK2MN6_js.requireEngineMemoryHeld(this.runtime.memory);
2965
+ chunkNZTKLY2W_js.requireEngineMemoryHeld(this.runtime.memory);
2966
2966
  let count = this.pending;
2967
2967
  this.pending = 0, this.check(this.exports.engine_step(this.require(), count), "step"), this.contacts = this.exports.engine_contact_count(this.world);
2968
2968
  }
2969
2969
  close() {
2970
- this.world !== (0) && (chunkPTRNO5UD_js.noteInspectorWorld((0)), this.exports.engine_world_destroy(this.world)), this.world = (0), this.snapshots = null, this.pending = 0, this.columns = null, this.memory.release(), chunkHRSIIDOZ_js.releaseEngineArena(this.runtime.symbols);
2970
+ this.world !== (0) && (chunkPTRNO5UD_js.noteInspectorWorld((0)), this.exports.engine_world_destroy(this.world)), this.world = (0), this.snapshots = null, this.pending = 0, this.columns = null, this.memory.release(), chunkH3OQKK6X_js.releaseEngineArena(this.runtime.symbols);
2971
2971
  }
2972
2972
  bindLayout(columns) {
2973
2973
  let words = this.descWords;
2974
- words[chunkW3VVG4NL_js.LAYOUT_POSITION] = columns.position.byteOffset, words[chunkW3VVG4NL_js.LAYOUT_ROTATION] = columns.rotation.byteOffset, words[chunkW3VVG4NL_js.LAYOUT_SCALE] = columns.scale.byteOffset, words[chunkW3VVG4NL_js.LAYOUT_PREVIOUS_POSITION] = columns.previousPosition.byteOffset, words[chunkW3VVG4NL_js.LAYOUT_PREVIOUS_ROTATION] = columns.previousRotation.byteOffset, words[chunkW3VVG4NL_js.LAYOUT_PREVIOUS_SCALE] = columns.previousScale.byteOffset, words[chunkW3VVG4NL_js.LAYOUT_PARENT] = columns.parent.byteOffset, words[chunkW3VVG4NL_js.LAYOUT_RENDER] = columns.render.byteOffset, words[chunkW3VVG4NL_js.LAYOUT_ENTITIES] = columns.entities.byteOffset, words[chunkW3VVG4NL_js.LAYOUT_SPARSE] = columns.sparse.byteOffset, words[chunkW3VVG4NL_js.LAYOUT_CAPACITY] = columns.capacity, words[chunkW3VVG4NL_js.LAYOUT_SPARSE_LEN] = columns.sparse.byteLength / chunkW3VVG4NL_js.WORD_BYTES, this.check(this.exports.engine_bind_transforms(this.world), "bind transforms");
2974
+ words[chunk2O2CG465_js.LAYOUT_POSITION] = columns.position.byteOffset, words[chunk2O2CG465_js.LAYOUT_ROTATION] = columns.rotation.byteOffset, words[chunk2O2CG465_js.LAYOUT_SCALE] = columns.scale.byteOffset, words[chunk2O2CG465_js.LAYOUT_PREVIOUS_POSITION] = columns.previousPosition.byteOffset, words[chunk2O2CG465_js.LAYOUT_PREVIOUS_ROTATION] = columns.previousRotation.byteOffset, words[chunk2O2CG465_js.LAYOUT_PREVIOUS_SCALE] = columns.previousScale.byteOffset, words[chunk2O2CG465_js.LAYOUT_PARENT] = columns.parent.byteOffset, words[chunk2O2CG465_js.LAYOUT_RENDER] = columns.render.byteOffset, words[chunk2O2CG465_js.LAYOUT_ENTITIES] = columns.entities.byteOffset, words[chunk2O2CG465_js.LAYOUT_SPARSE] = columns.sparse.byteOffset, words[chunk2O2CG465_js.LAYOUT_CAPACITY] = columns.capacity, words[chunk2O2CG465_js.LAYOUT_SPARSE_LEN] = columns.sparse.byteLength / chunk2O2CG465_js.WORD_BYTES, this.check(this.exports.engine_bind_transforms(this.world), "bind transforms");
2975
2975
  }
2976
2976
  };
2977
2977
 
@@ -2989,7 +2989,7 @@ var EngineTransforms = class {
2989
2989
  }
2990
2990
  computeRender(count, time, version) {
2991
2991
  let s = this.session, world = s.require();
2992
- s.registerFloats[chunkW3VVG4NL_js.REGISTER_FRAME_ALPHA] = time.values[chunkYXGZQPUD_js.FRAME_ALPHA_SLOT], s.registerWords[chunkW3VVG4NL_js.REGISTER_FRAME_VERSION_LOW] = version >>> 0, s.registerWords[chunkW3VVG4NL_js.REGISTER_FRAME_VERSION_HIGH] = Math.floor(version / chunkW3VVG4NL_js.U32_RANGE), s.check(s.exports.engine_compute_render(world, count), "compute render");
2992
+ s.registerFloats[chunk2O2CG465_js.REGISTER_FRAME_ALPHA] = time.values[chunkYXGZQPUD_js.FRAME_ALPHA_SLOT], s.registerWords[chunk2O2CG465_js.REGISTER_FRAME_VERSION_LOW] = version >>> 0, s.registerWords[chunk2O2CG465_js.REGISTER_FRAME_VERSION_HIGH] = Math.floor(version / chunk2O2CG465_js.U32_RANGE), s.check(s.exports.engine_compute_render(world, count), "compute render");
2993
2993
  }
2994
2994
  };
2995
2995
 
@@ -3017,15 +3017,15 @@ function enginePrototype(runtime) {
3017
3017
  }
3018
3018
  function engineSignatureMismatches(symbols, arity, prototype = null) {
3019
3019
  let mismatches = [];
3020
- for (let name in chunkW3VVG4NL_js.ENGINE_EXPORT_ARITY) {
3020
+ for (let name in chunk2O2CG465_js.ENGINE_EXPORT_ARITY) {
3021
3021
  if (typeof symbols[name] != "function") continue;
3022
- let expected = chunkW3VVG4NL_js.ENGINE_EXPORT_ARITY[name], actual = arity(name);
3022
+ let expected = chunk2O2CG465_js.ENGINE_EXPORT_ARITY[name], actual = arity(name);
3023
3023
  if (actual !== expected) {
3024
3024
  mismatches.push(`${name} takes ${actual < 0 ? "an unknown number of" : actual} arguments, this package expects ${expected}`);
3025
3025
  continue;
3026
3026
  }
3027
3027
  let advertised = prototype?.(name) ?? (0);
3028
- advertised !== (0) && advertised !== chunkW3VVG4NL_js.ENGINE_EXPORT_PROTOTYPES[name] && mismatches.push(`${name} has another prototype than this package expects`);
3028
+ advertised !== (0) && advertised !== chunk2O2CG465_js.ENGINE_EXPORT_PROTOTYPES[name] && mismatches.push(`${name} has another prototype than this package expects`);
3029
3029
  }
3030
3030
  return mismatches;
3031
3031
  }
@@ -3047,7 +3047,7 @@ function engineAudio(options, runtime) {
3047
3047
  if (explicit) return explicit;
3048
3048
  if (options.audio) return options.audio;
3049
3049
  let context = options.audioContext ?? runtime?.audioContext?.() ?? null, chosen = options.audioWorklet === null ? null : defaultWorklet(runtime, context), worklet = runtime && chosen ? workletAudio(runtime, chosen, assets) : null;
3050
- return worklet || (context ? new chunkGBJ5CW3A_js.WebAudioPort(context) : new chunkGBJ5CW3A_js.HeadlessAudio());
3050
+ return worklet || (context ? new chunkPKOZXD2Q_js.WebAudioPort(context) : new chunkPKOZXD2Q_js.HeadlessAudio());
3051
3051
  }
3052
3052
  function defaultWorklet(runtime, context) {
3053
3053
  let module = runtime?.audioWorklet ?? null, worklets = context?.audioWorklet;
@@ -3057,33 +3057,33 @@ function engineHost(runtime) {
3057
3057
  return {
3058
3058
  exports: runtime.symbols,
3059
3059
  memory: runtime.memory,
3060
- allocate: (bytes) => runtime.exports.engine_alloc(bytes, chunkW3VVG4NL_js.COLUMN_ALIGN),
3061
- release: (pointer, bytes) => runtime.exports.engine_free(pointer, bytes, chunkW3VVG4NL_js.COLUMN_ALIGN)
3060
+ allocate: (bytes) => runtime.exports.engine_alloc(bytes, chunk2O2CG465_js.COLUMN_ALIGN),
3061
+ release: (pointer, bytes) => runtime.exports.engine_free(pointer, bytes, chunk2O2CG465_js.COLUMN_ALIGN)
3062
3062
  };
3063
3063
  }
3064
3064
  function workletAudio(runtime, options, assets) {
3065
3065
  let symbols = runtime.symbols;
3066
- if ([...chunkHRSIIDOZ_js.ENGINE_AUDIO_EXPORT_NAMES.filter((name) => name !== "engine_audio_bound"), ...chunkHRSIIDOZ_js.ENGINE_AUDIO_WORKLET_EXPORTS].some((name) => typeof symbols[name] != "function")) return null;
3067
- let host = engineHost(runtime), relay = chunkGBJ5CW3A_js.WorkletAudio.create(host, options);
3068
- return new chunkHRSIIDOZ_js.EngineAudioPort({ ...host, decode: runtime.decodeAudio ?? null, assets, handle: relay.handle, relay });
3066
+ if ([...chunkH3OQKK6X_js.ENGINE_AUDIO_EXPORT_NAMES.filter((name) => name !== "engine_audio_bound"), ...chunkH3OQKK6X_js.ENGINE_AUDIO_WORKLET_EXPORTS].some((name) => typeof symbols[name] != "function")) return null;
3067
+ let host = engineHost(runtime), relay = chunkPKOZXD2Q_js.WorkletAudio.create(host, options);
3068
+ return new chunkH3OQKK6X_js.EngineAudioPort({ ...host, decode: runtime.decodeAudio ?? null, assets, handle: relay.handle, relay });
3069
3069
  }
3070
3070
  function nativeAudio(runtime, assets) {
3071
3071
  let symbols = runtime.symbols;
3072
- if (chunkHRSIIDOZ_js.ENGINE_AUDIO_EXPORT_NAMES.some((name) => typeof symbols[name] != "function")) return null;
3072
+ if (chunkH3OQKK6X_js.ENGINE_AUDIO_EXPORT_NAMES.some((name) => typeof symbols[name] != "function")) return null;
3073
3073
  let exports = symbols;
3074
- return exports.engine_audio_bound() === 0 ? null : new chunkHRSIIDOZ_js.EngineAudioPort({
3074
+ return exports.engine_audio_bound() === 0 ? null : new chunkH3OQKK6X_js.EngineAudioPort({
3075
3075
  exports,
3076
3076
  memory: runtime.memory,
3077
- allocate: (bytes) => runtime.exports.engine_alloc(bytes, chunkW3VVG4NL_js.COLUMN_ALIGN),
3078
- release: (pointer, bytes) => runtime.exports.engine_free(pointer, bytes, chunkW3VVG4NL_js.COLUMN_ALIGN),
3077
+ allocate: (bytes) => runtime.exports.engine_alloc(bytes, chunk2O2CG465_js.COLUMN_ALIGN),
3078
+ release: (pointer, bytes) => runtime.exports.engine_free(pointer, bytes, chunk2O2CG465_js.COLUMN_ALIGN),
3079
3079
  decode: runtime.decodeAudio ?? null,
3080
3080
  assets
3081
3081
  });
3082
3082
  }
3083
3083
  function assembleEngineBackend(runtime, graphics, audio) {
3084
3084
  verifyEngineSignatures(runtime);
3085
- let memory = new chunkHRSIIDOZ_js.EngineMemory(runtime), session = new EngineSession(runtime, memory), port = graphics(runtime), physics = new EnginePhysics(session);
3086
- return port instanceof EngineGraphics && physics.craft?.bindRender?.(() => port.renderHandle), audio instanceof chunkHRSIIDOZ_js.EngineAudioPort && audio.bindOcclusionWorld(() => session.world), chunkEPYFN2A3_js.useTransformEngine(chunkEPYFN2A3_js.bindTransformEngine(runtime.symbols, runtime.memory)), {
3085
+ let memory = new chunkH3OQKK6X_js.EngineMemory(runtime), session = new EngineSession(runtime, memory), port = graphics(runtime), physics = new EnginePhysics(session);
3086
+ return port instanceof EngineGraphics && physics.craft?.bindRender?.(() => port.renderHandle), audio instanceof chunkH3OQKK6X_js.EngineAudioPort && audio.bindOcclusionWorld(() => session.world), chunk7AAIAVAA_js.useTransformEngine(chunk7AAIAVAA_js.bindTransformEngine(runtime.symbols, runtime.memory)), {
3087
3087
  name: ENGINE_BACKEND_NAME,
3088
3088
  version: ENGINE_BACKEND_VERSION,
3089
3089
  memory,
@@ -3097,8 +3097,8 @@ function assembleEngineBackend(runtime, graphics, audio) {
3097
3097
  scenery: engineScenery(runtime, port),
3098
3098
  terrain: engineTerrain(runtime, port, () => session.world),
3099
3099
  soa: chunkRCQ2MPBV_js.bindSoaEngine(runtime.symbols, runtime.memory),
3100
- kernels: chunkBS65NRDW_js.bindKernelEngine(runtime.symbols, runtime.memory),
3101
- chemistry: chunkEPYFN2A3_js.bindChemistryEngine(runtime.symbols, runtime.memory),
3100
+ kernels: chunk3S6WPBZL_js.bindKernelEngine(runtime.symbols, runtime.memory),
3101
+ chemistry: chunk7AAIAVAA_js.bindChemistryEngine(runtime.symbols, runtime.memory),
3102
3102
  fluids: engineFluids(runtime, port),
3103
3103
  destruction: engineDestruction(runtime, () => session.world),
3104
3104
  softBodies: engineSoftBodies(runtime, port, () => session.world),
@@ -3109,50 +3109,50 @@ function assembleEngineBackend(runtime, graphics, audio) {
3109
3109
  };
3110
3110
  }
3111
3111
  function engineStory(runtime) {
3112
- let exports = chunkBS65NRDW_js.engineStoryExports(runtime);
3113
- return exports !== null ? new chunkBS65NRDW_js.EngineStory(runtime, exports) : null;
3112
+ let exports = chunk3S6WPBZL_js.engineStoryExports(runtime);
3113
+ return exports !== null ? new chunk3S6WPBZL_js.EngineStory(runtime, exports) : null;
3114
3114
  }
3115
3115
  function engineSmoke(runtime, port) {
3116
- let exports = chunkEPYFN2A3_js.engineSmokeExports(runtime);
3117
- return exports !== null && port instanceof EngineGraphics ? new chunkEPYFN2A3_js.EngineSmoke(runtime, exports, () => port.renderHandle) : null;
3116
+ let exports = chunk7AAIAVAA_js.engineSmokeExports(runtime);
3117
+ return exports !== null && port instanceof EngineGraphics ? new chunk7AAIAVAA_js.EngineSmoke(runtime, exports, () => port.renderHandle) : null;
3118
3118
  }
3119
3119
  function engineCloths(runtime, port, world) {
3120
- let exports = chunkNTTHAXHI_js.engineClothExports(runtime);
3120
+ let exports = chunkX5A5FOWW_js.engineClothExports(runtime);
3121
3121
  if (exports === null) return null;
3122
3122
  let render = port instanceof EngineGraphics ? () => port.renderHandle : () => 0;
3123
- return new chunkNTTHAXHI_js.EngineCloths(runtime, exports, render, world);
3123
+ return new chunkX5A5FOWW_js.EngineCloths(runtime, exports, render, world);
3124
3124
  }
3125
3125
  function engineReactive(runtime, port) {
3126
- let exports = chunkEPYFN2A3_js.engineReactiveExports(runtime);
3126
+ let exports = chunk7AAIAVAA_js.engineReactiveExports(runtime);
3127
3127
  if (exports === null) return null;
3128
3128
  let render = port instanceof EngineGraphics ? () => port.renderHandle : () => 0;
3129
- return new chunkEPYFN2A3_js.EngineReactive(runtime, exports, render);
3129
+ return new chunk7AAIAVAA_js.EngineReactive(runtime, exports, render);
3130
3130
  }
3131
3131
  function engineSoftBodies(runtime, port, world) {
3132
- let exports = chunkNTTHAXHI_js.engineSoftBodyExports(runtime);
3132
+ let exports = chunkX5A5FOWW_js.engineSoftBodyExports(runtime);
3133
3133
  if (exports === null) return null;
3134
3134
  let render = port instanceof EngineGraphics ? () => port.renderHandle : () => 0;
3135
- return new chunkNTTHAXHI_js.EngineSoftBodies(runtime, exports, render, world);
3135
+ return new chunkX5A5FOWW_js.EngineSoftBodies(runtime, exports, render, world);
3136
3136
  }
3137
3137
  function engineFluids(runtime, port) {
3138
- let exports = chunkEPYFN2A3_js.engineFluidExports(runtime);
3139
- return exports !== null && port instanceof EngineGraphics ? new chunkEPYFN2A3_js.EngineFluids(runtime, exports, () => port.renderHandle) : null;
3138
+ let exports = chunk7AAIAVAA_js.engineFluidExports(runtime);
3139
+ return exports !== null && port instanceof EngineGraphics ? new chunk7AAIAVAA_js.EngineFluids(runtime, exports, () => port.renderHandle) : null;
3140
3140
  }
3141
3141
  function engineDestruction(runtime, world) {
3142
- let exports = chunkEPYFN2A3_js.engineDestructionExports(runtime);
3143
- return exports !== null ? new chunkEPYFN2A3_js.EngineDestruction(runtime, exports, world) : null;
3142
+ let exports = chunk7AAIAVAA_js.engineDestructionExports(runtime);
3143
+ return exports !== null ? new chunk7AAIAVAA_js.EngineDestruction(runtime, exports, world) : null;
3144
3144
  }
3145
3145
  function engineTerrain(runtime, port, world) {
3146
- let exports = chunkGBJ5CW3A_js.engineTerrainExports(runtime);
3147
- return exports !== null && port instanceof EngineGraphics ? new chunkGBJ5CW3A_js.EngineTerrain(runtime, exports, () => port.renderHandle, world) : null;
3146
+ let exports = chunkPKOZXD2Q_js.engineTerrainExports(runtime);
3147
+ return exports !== null && port instanceof EngineGraphics ? new chunkPKOZXD2Q_js.EngineTerrain(runtime, exports, () => port.renderHandle, world) : null;
3148
3148
  }
3149
3149
  function engineStreaming(runtime, port) {
3150
- let exports = chunkAOPH2IZV_js.engineStreamExports(runtime);
3151
- return exports !== null && port instanceof EngineGraphics ? new chunkAOPH2IZV_js.EngineWorldStreaming(runtime, exports, () => port.renderHandle) : null;
3150
+ let exports = chunkSKQFLBDD_js.engineStreamExports(runtime);
3151
+ return exports !== null && port instanceof EngineGraphics ? new chunkSKQFLBDD_js.EngineWorldStreaming(runtime, exports, () => port.renderHandle) : null;
3152
3152
  }
3153
3153
  function engineScenery(runtime, port) {
3154
- let exports = chunkAOPH2IZV_js.engineSplatExports(runtime);
3155
- return exports !== null && port instanceof EngineGraphics ? new chunkAOPH2IZV_js.EngineScenery(runtime, exports, () => port.renderHandle) : null;
3154
+ let exports = chunkSKQFLBDD_js.engineSplatExports(runtime);
3155
+ return exports !== null && port instanceof EngineGraphics ? new chunkSKQFLBDD_js.EngineScenery(runtime, exports, () => port.renderHandle) : null;
3156
3156
  }
3157
3157
  function engineNav(runtime) {
3158
3158
  let exports = engineNavExports(runtime.symbols);