@spawnite/engine 0.1.0-beta.15
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.
- package/LICENSE.md +169 -0
- package/README.md +92 -0
- package/dist/-MLBVTaO.js +1 -0
- package/dist/28wIPE7L.js +1 -0
- package/dist/3rj0AvB6.js +1 -0
- package/dist/5L-NcwKR.js +1 -0
- package/dist/B-qLcgSf.js +1 -0
- package/dist/B0WN1jqX.js +41 -0
- package/dist/B1OUgdbN.js +1 -0
- package/dist/BEL83Bb6.js +1 -0
- package/dist/BGDOC3Q-.js +1 -0
- package/dist/BGM1SnEr.js +1 -0
- package/dist/BH6Ftfg9.js +1 -0
- package/dist/BJIJuxaE.js +1 -0
- package/dist/BJclgjKG.js +1 -0
- package/dist/BKc2k2s6.js +1 -0
- package/dist/BLB4-b4b.js +2 -0
- package/dist/BQnBIIt8.js +1 -0
- package/dist/BR3nbYwS.js +7 -0
- package/dist/BV9hGHeu.js +623 -0
- package/dist/BWOKsReG.js +1 -0
- package/dist/BWlq9jqw.js +1 -0
- package/dist/BXmxKBbF.js +3 -0
- package/dist/BYXhtwWy.js +1 -0
- package/dist/B_HFa2lJ.js +1 -0
- package/dist/BciVglt5.js +1 -0
- package/dist/Bfg1Y9_2.js +1 -0
- package/dist/Bh-CVkQx.js +1 -0
- package/dist/BiH9xCBB.js +1 -0
- package/dist/BobsCMiL.js +9 -0
- package/dist/Bp238wbZ.js +1 -0
- package/dist/Bpe0g5hX.js +1 -0
- package/dist/BrfUaL46.js +2 -0
- package/dist/Bw06YsIc.js +1 -0
- package/dist/Bydoy8wO.js +1 -0
- package/dist/BzaiZux2.js +1 -0
- package/dist/C25qqozO.js +1 -0
- package/dist/C6Ja5Z7G.js +1 -0
- package/dist/CCh4CnV9.js +1 -0
- package/dist/CEuuijY1.js +1 -0
- package/dist/CHntUxHl.js +1 -0
- package/dist/CIq9KviM.js +1 -0
- package/dist/CQPA3y5T.js +1 -0
- package/dist/CRfoqBKG.js +1 -0
- package/dist/CSXcU95U.js +1 -0
- package/dist/CU0epHFG.js +3 -0
- package/dist/CVgRrBP4.js +1 -0
- package/dist/CZV99t6a.js +7 -0
- package/dist/Cg33N9Ej.js +1 -0
- package/dist/Chcm92bZ.js +1 -0
- package/dist/CjiCdqiE.js +2 -0
- package/dist/Cp5beIll.js +1 -0
- package/dist/Cq6VqPHb.js +2 -0
- package/dist/CwZDkslT.js +1 -0
- package/dist/D3Y2LHFe.js +1 -0
- package/dist/D3wyrZ2_.js +1 -0
- package/dist/D8jIS84n.js +1 -0
- package/dist/DCIejHqp.js +1 -0
- package/dist/DHsBnfoU.js +1 -0
- package/dist/DJSpRhXB.js +1 -0
- package/dist/DOeUeeKs.js +1 -0
- package/dist/DR9bHgf0.js +1 -0
- package/dist/DRnuSAbu.js +1 -0
- package/dist/DSb1ApLU.js +1 -0
- package/dist/DXtppcZ7.js +1 -0
- package/dist/DZIhHLUn.js +1 -0
- package/dist/DgMhVbMU.js +1 -0
- package/dist/Dh5kh1nX.js +1 -0
- package/dist/DiGFL8kd.js +1 -0
- package/dist/DkKmurqu.js +1 -0
- package/dist/DlkDsMQd.js +1 -0
- package/dist/DnNEzpz-.js +1 -0
- package/dist/Dqx9hHBK.js +1 -0
- package/dist/DsgWLyZo.js +1 -0
- package/dist/DucRBEvN.js +1 -0
- package/dist/Dwcms3jX.js +1 -0
- package/dist/Dwfie-ev.js +1 -0
- package/dist/DyHjwN2H.js +1 -0
- package/dist/SMby3e6M.js +4 -0
- package/dist/THIRD-PARTY-NOTICES +329 -0
- package/dist/UJDr3Nrd.js +1 -0
- package/dist/V70ADx0g.js +2 -0
- package/dist/abilities.d.ts +1 -0
- package/dist/abilities.js +1 -0
- package/dist/core.d.ts +1 -0
- package/dist/core.js +1 -0
- package/dist/devtools.d.ts +1 -0
- package/dist/devtools.js +1 -0
- package/dist/dragAndDrop.d.ts +1 -0
- package/dist/dragAndDrop.js +1 -0
- package/dist/eYC1fQo5.js +1 -0
- package/dist/eslint.js +1 -0
- package/dist/hQBGE7c4.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +297 -0
- package/dist/internal/cli.js +1 -0
- package/dist/internal/devServer.js +2 -0
- package/dist/internal/devtools.js +1 -0
- package/dist/internal/room.js +1 -0
- package/dist/inventory.d.ts +1 -0
- package/dist/inventory.js +1 -0
- package/dist/jMKXPXIH.js +33 -0
- package/dist/looks/dusk.d.ts +1 -0
- package/dist/looks/dusk.js +1 -0
- package/dist/looks/morning.d.ts +1 -0
- package/dist/looks/morning.js +1 -0
- package/dist/looks/night.d.ts +1 -0
- package/dist/looks/night.js +1 -0
- package/dist/looks/noon.d.ts +1 -0
- package/dist/looks/noon.js +1 -0
- package/dist/looks/overcast.d.ts +1 -0
- package/dist/looks/overcast.js +1 -0
- package/dist/npcs.d.ts +1 -0
- package/dist/npcs.js +1 -0
- package/dist/public.d.ts +18818 -0
- package/dist/replay.d.ts +1 -0
- package/dist/replay.js +1 -0
- package/dist/testing.d.ts +542 -0
- package/dist/testing.js +1 -0
- package/dist/three.d.ts +1 -0
- package/dist/three.js +1 -0
- package/dist/tracks.d.ts +1 -0
- package/dist/tracks.js +1 -0
- package/dist/vite.d.ts +123 -0
- package/dist/vite.js +1 -0
- package/dist/weapons.d.ts +1 -0
- package/dist/weapons.js +1 -0
- package/dist/wiki/engine/ai/metadata.md +143 -0
- package/dist/wiki/engine/audio/sound.md +72 -0
- package/dist/wiki/engine/audio/voice.md +153 -0
- package/dist/wiki/engine/behaviours/abilities.md +328 -0
- package/dist/wiki/engine/behaviours/bob.md +37 -0
- package/dist/wiki/engine/behaviours/chase.md +158 -0
- package/dist/wiki/engine/behaviours/cooldowns.md +83 -0
- package/dist/wiki/engine/behaviours/dialog.md +172 -0
- package/dist/wiki/engine/behaviours/health.md +330 -0
- package/dist/wiki/engine/behaviours/interact.md +41 -0
- package/dist/wiki/engine/behaviours/inventory.md +266 -0
- package/dist/wiki/engine/behaviours/loot.md +90 -0
- package/dist/wiki/engine/behaviours/pickup.md +149 -0
- package/dist/wiki/engine/behaviours/resources.md +274 -0
- package/dist/wiki/engine/behaviours/routines.md +99 -0
- package/dist/wiki/engine/behaviours/spin.md +36 -0
- package/dist/wiki/engine/behaviours/stats.md +220 -0
- package/dist/wiki/engine/behaviours/targeting.md +155 -0
- package/dist/wiki/engine/behaviours/track-mover.md +121 -0
- package/dist/wiki/engine/behaviours/track-trigger.md +117 -0
- package/dist/wiki/engine/behaviours/trigger.md +158 -0
- package/dist/wiki/engine/behaviours/weapon.md +462 -0
- package/dist/wiki/engine/entities/camera.md +326 -0
- package/dist/wiki/engine/entities/entity.mdx +1063 -0
- package/dist/wiki/engine/entities/npc.md +64 -0
- package/dist/wiki/engine/entities/player.md +435 -0
- package/dist/wiki/engine/errors/SP0001.md +20 -0
- package/dist/wiki/engine/errors/SP0002.md +20 -0
- package/dist/wiki/engine/errors/SP0003.md +20 -0
- package/dist/wiki/engine/errors/SP0008.md +20 -0
- package/dist/wiki/engine/errors/SP0009.md +20 -0
- package/dist/wiki/engine/errors/SP0010.md +20 -0
- package/dist/wiki/engine/errors/SP0011.md +20 -0
- package/dist/wiki/engine/errors/SP0014.md +20 -0
- package/dist/wiki/engine/errors/SP0015.md +20 -0
- package/dist/wiki/engine/errors/SP0016.md +20 -0
- package/dist/wiki/engine/errors/SP0017.md +20 -0
- package/dist/wiki/engine/errors/SP0018.md +20 -0
- package/dist/wiki/engine/errors/SP0019.md +20 -0
- package/dist/wiki/engine/errors/SP0020.md +20 -0
- package/dist/wiki/engine/errors/SP0021.md +20 -0
- package/dist/wiki/engine/errors/SP0022.md +20 -0
- package/dist/wiki/engine/errors/SP0023.md +20 -0
- package/dist/wiki/engine/errors/SP0024.md +20 -0
- package/dist/wiki/engine/errors/SP0025.md +20 -0
- package/dist/wiki/engine/errors/SP0026.md +22 -0
- package/dist/wiki/engine/errors/SP0027.md +20 -0
- package/dist/wiki/engine/errors/SP0028.md +20 -0
- package/dist/wiki/engine/errors/SP0029.md +20 -0
- package/dist/wiki/engine/errors/SP0030.md +20 -0
- package/dist/wiki/engine/errors/SP0031.md +20 -0
- package/dist/wiki/engine/errors/SP0034.md +20 -0
- package/dist/wiki/engine/errors/SP0035.md +20 -0
- package/dist/wiki/engine/errors/SP0036.md +20 -0
- package/dist/wiki/engine/errors/SP0037.md +20 -0
- package/dist/wiki/engine/errors/SP0038.md +20 -0
- package/dist/wiki/engine/errors/SP0039.md +20 -0
- package/dist/wiki/engine/errors/SP0040.md +20 -0
- package/dist/wiki/engine/errors/SP0041.md +20 -0
- package/dist/wiki/engine/errors/SP0042.md +20 -0
- package/dist/wiki/engine/errors/SP0043.md +20 -0
- package/dist/wiki/engine/errors/SP0045.md +20 -0
- package/dist/wiki/engine/errors/SP0046.md +20 -0
- package/dist/wiki/engine/errors/SP0047.md +20 -0
- package/dist/wiki/engine/errors/SP0048.md +20 -0
- package/dist/wiki/engine/errors/SP0049.md +20 -0
- package/dist/wiki/engine/errors/SP0050.md +20 -0
- package/dist/wiki/engine/errors/SP0051.md +20 -0
- package/dist/wiki/engine/errors/SP0052.md +20 -0
- package/dist/wiki/engine/errors/SP0053.md +20 -0
- package/dist/wiki/engine/errors/SP0054.md +20 -0
- package/dist/wiki/engine/errors/SP0055.md +20 -0
- package/dist/wiki/engine/errors/SP0056.md +20 -0
- package/dist/wiki/engine/errors/SP0057.md +20 -0
- package/dist/wiki/engine/errors/SP0058.md +20 -0
- package/dist/wiki/engine/errors/SP0059.md +20 -0
- package/dist/wiki/engine/errors/SP0060.md +20 -0
- package/dist/wiki/engine/errors/SP0061.md +20 -0
- package/dist/wiki/engine/errors/SP0064.md +20 -0
- package/dist/wiki/engine/errors/SP0065.md +20 -0
- package/dist/wiki/engine/errors/SP0066.md +20 -0
- package/dist/wiki/engine/errors/SP0067.md +20 -0
- package/dist/wiki/engine/errors/SP0070.md +20 -0
- package/dist/wiki/engine/errors/SP0071.md +20 -0
- package/dist/wiki/engine/errors/SP0072.md +20 -0
- package/dist/wiki/engine/errors/SP0073.md +20 -0
- package/dist/wiki/engine/errors/SP0074.md +20 -0
- package/dist/wiki/engine/errors/SP0075.md +20 -0
- package/dist/wiki/engine/errors/SP0076.md +20 -0
- package/dist/wiki/engine/errors/SP0077.md +20 -0
- package/dist/wiki/engine/errors/SP0078.md +20 -0
- package/dist/wiki/engine/errors/SP0079.md +20 -0
- package/dist/wiki/engine/errors/SP0080.md +20 -0
- package/dist/wiki/engine/errors/SP0081.md +20 -0
- package/dist/wiki/engine/errors/SP0082.md +20 -0
- package/dist/wiki/engine/errors/SP0083.md +20 -0
- package/dist/wiki/engine/errors/SP0084.md +20 -0
- package/dist/wiki/engine/errors/SP0085.md +20 -0
- package/dist/wiki/engine/errors/SP0086.md +20 -0
- package/dist/wiki/engine/errors/SP0087.md +20 -0
- package/dist/wiki/engine/errors/SP0089.md +20 -0
- package/dist/wiki/engine/errors/SP0090.md +20 -0
- package/dist/wiki/engine/errors/SP0091.md +20 -0
- package/dist/wiki/engine/errors/SP0092.md +20 -0
- package/dist/wiki/engine/errors/SP0093.md +20 -0
- package/dist/wiki/engine/errors/SP0094.md +20 -0
- package/dist/wiki/engine/errors/SP0095.md +20 -0
- package/dist/wiki/engine/errors/SP0096.md +20 -0
- package/dist/wiki/engine/errors/SP0097.md +20 -0
- package/dist/wiki/engine/errors/SP0098.md +20 -0
- package/dist/wiki/engine/errors/SP0099.md +20 -0
- package/dist/wiki/engine/errors/SP0100.md +20 -0
- package/dist/wiki/engine/errors/SP0101.md +20 -0
- package/dist/wiki/engine/errors/SP0102.md +20 -0
- package/dist/wiki/engine/errors/SP0103.md +20 -0
- package/dist/wiki/engine/errors/SP0104.md +20 -0
- package/dist/wiki/engine/errors/SP0105.md +20 -0
- package/dist/wiki/engine/errors/SP0106.md +20 -0
- package/dist/wiki/engine/errors/SP0107.md +20 -0
- package/dist/wiki/engine/errors/SP0108.md +20 -0
- package/dist/wiki/engine/errors/SP0109.md +20 -0
- package/dist/wiki/engine/errors/SP0110.md +20 -0
- package/dist/wiki/engine/errors/SP0111.md +20 -0
- package/dist/wiki/engine/errors/SP0112.md +20 -0
- package/dist/wiki/engine/errors/SP0113.md +20 -0
- package/dist/wiki/engine/errors/SP0114.md +20 -0
- package/dist/wiki/engine/errors/SP0115.md +20 -0
- package/dist/wiki/engine/errors/SP0116.md +20 -0
- package/dist/wiki/engine/errors/SP0117.md +20 -0
- package/dist/wiki/engine/errors/SP0118.md +20 -0
- package/dist/wiki/engine/errors/SP0119.md +20 -0
- package/dist/wiki/engine/errors/SP0120.md +20 -0
- package/dist/wiki/engine/errors/SP0121.md +20 -0
- package/dist/wiki/engine/errors/SP0122.md +20 -0
- package/dist/wiki/engine/errors/SP0125.md +20 -0
- package/dist/wiki/engine/errors/SP0126.md +20 -0
- package/dist/wiki/engine/errors/SP0132.md +20 -0
- package/dist/wiki/engine/errors/SP0133.md +20 -0
- package/dist/wiki/engine/errors/SP0134.md +20 -0
- package/dist/wiki/engine/errors/SP0137.md +20 -0
- package/dist/wiki/engine/errors/SP0138.md +20 -0
- package/dist/wiki/engine/errors/SP0139.md +20 -0
- package/dist/wiki/engine/errors/SP0143.md +20 -0
- package/dist/wiki/engine/errors/SP0145.md +20 -0
- package/dist/wiki/engine/errors/SP0146.md +20 -0
- package/dist/wiki/engine/errors/SP0147.md +20 -0
- package/dist/wiki/engine/errors/SP0148.md +20 -0
- package/dist/wiki/engine/errors/SP0149.md +20 -0
- package/dist/wiki/engine/errors/SP0150.md +20 -0
- package/dist/wiki/engine/errors/SP0151.md +20 -0
- package/dist/wiki/engine/errors/SP0152.md +20 -0
- package/dist/wiki/engine/errors/SP0154.md +20 -0
- package/dist/wiki/engine/errors/SP0157.md +20 -0
- package/dist/wiki/engine/errors/SP0158.md +20 -0
- package/dist/wiki/engine/errors/SP0159.md +20 -0
- package/dist/wiki/engine/errors/SP0160.md +20 -0
- package/dist/wiki/engine/errors/SP0161.md +20 -0
- package/dist/wiki/engine/errors/SP0162.md +20 -0
- package/dist/wiki/engine/errors/SP0163.md +20 -0
- package/dist/wiki/engine/errors/SP0164.md +20 -0
- package/dist/wiki/engine/errors/SP0165.md +20 -0
- package/dist/wiki/engine/errors/SP0166.md +20 -0
- package/dist/wiki/engine/errors/SP0167.md +20 -0
- package/dist/wiki/engine/errors/SP0169.md +20 -0
- package/dist/wiki/engine/errors/SP0175.md +20 -0
- package/dist/wiki/engine/errors/SP0176.md +20 -0
- package/dist/wiki/engine/errors/SP0177.md +20 -0
- package/dist/wiki/engine/errors/SP0178.md +20 -0
- package/dist/wiki/engine/errors/SP0179.md +20 -0
- package/dist/wiki/engine/errors/SP0180.md +20 -0
- package/dist/wiki/engine/errors/SP0181.md +20 -0
- package/dist/wiki/engine/errors/SP0182.md +20 -0
- package/dist/wiki/engine/errors/SP0183.md +20 -0
- package/dist/wiki/engine/errors/SP0184.md +20 -0
- package/dist/wiki/engine/errors/SP0185.md +20 -0
- package/dist/wiki/engine/errors/SP0186.md +20 -0
- package/dist/wiki/engine/errors/SP0187.md +20 -0
- package/dist/wiki/engine/errors/SP0188.md +20 -0
- package/dist/wiki/engine/errors/SP0189.md +20 -0
- package/dist/wiki/engine/errors/SP0190.md +20 -0
- package/dist/wiki/engine/errors/SP0191.md +20 -0
- package/dist/wiki/engine/errors/SP0192.md +20 -0
- package/dist/wiki/engine/errors/SP0193.md +20 -0
- package/dist/wiki/engine/errors/SP0194.md +20 -0
- package/dist/wiki/engine/errors/SP0195.md +20 -0
- package/dist/wiki/engine/errors/SP0196.md +20 -0
- package/dist/wiki/engine/errors/SP0197.md +20 -0
- package/dist/wiki/engine/errors/SP0198.md +20 -0
- package/dist/wiki/engine/errors/SP0199.md +20 -0
- package/dist/wiki/engine/errors/SP0200.md +20 -0
- package/dist/wiki/engine/errors/SP0202.md +20 -0
- package/dist/wiki/engine/errors/SP0203.md +20 -0
- package/dist/wiki/engine/errors/SP0204.md +20 -0
- package/dist/wiki/engine/errors/SP0205.md +20 -0
- package/dist/wiki/engine/errors/SP0206.md +20 -0
- package/dist/wiki/engine/errors/SP0207.md +20 -0
- package/dist/wiki/engine/errors/SP0208.md +20 -0
- package/dist/wiki/engine/errors/SP0210.md +20 -0
- package/dist/wiki/engine/errors/SP0211.md +20 -0
- package/dist/wiki/engine/errors/SP0212.md +20 -0
- package/dist/wiki/engine/errors/SP0213.md +20 -0
- package/dist/wiki/engine/errors/SP0214.md +20 -0
- package/dist/wiki/engine/errors/SP0215.md +20 -0
- package/dist/wiki/engine/errors/SP0216.md +20 -0
- package/dist/wiki/engine/errors/SP0219.md +20 -0
- package/dist/wiki/engine/errors/SP0220.md +20 -0
- package/dist/wiki/engine/errors/SP0221.md +20 -0
- package/dist/wiki/engine/errors/SP0225.md +20 -0
- package/dist/wiki/engine/errors/SP0228.md +20 -0
- package/dist/wiki/engine/errors/SP0229.md +20 -0
- package/dist/wiki/engine/errors/SP0230.md +20 -0
- package/dist/wiki/engine/errors/SP0231.md +20 -0
- package/dist/wiki/engine/errors/SP0232.md +20 -0
- package/dist/wiki/engine/errors/SP0233.md +20 -0
- package/dist/wiki/engine/errors/SP0234.md +20 -0
- package/dist/wiki/engine/errors/SP0235.md +20 -0
- package/dist/wiki/engine/errors/SP0236.md +20 -0
- package/dist/wiki/engine/errors/SP0237.md +20 -0
- package/dist/wiki/engine/errors/SP0238.md +20 -0
- package/dist/wiki/engine/errors/SP0239.md +20 -0
- package/dist/wiki/engine/errors/SP0240.md +20 -0
- package/dist/wiki/engine/errors/SP0241.md +20 -0
- package/dist/wiki/engine/errors/SP0242.md +20 -0
- package/dist/wiki/engine/errors/SP0243.md +20 -0
- package/dist/wiki/engine/errors/SP0244.md +20 -0
- package/dist/wiki/engine/errors/SP0245.md +20 -0
- package/dist/wiki/engine/errors/SP0247.md +20 -0
- package/dist/wiki/engine/errors/SP0249.md +20 -0
- package/dist/wiki/engine/errors/SP0250.md +20 -0
- package/dist/wiki/engine/errors/SP0251.md +20 -0
- package/dist/wiki/engine/errors/SP0252.md +20 -0
- package/dist/wiki/engine/errors/SP0253.md +20 -0
- package/dist/wiki/engine/errors/SP0254.md +20 -0
- package/dist/wiki/engine/errors/SP0255.md +20 -0
- package/dist/wiki/engine/errors/SP0256.md +20 -0
- package/dist/wiki/engine/errors/SP0257.md +20 -0
- package/dist/wiki/engine/errors/SP0258.md +20 -0
- package/dist/wiki/engine/errors/SP0259.md +20 -0
- package/dist/wiki/engine/errors/SP0260.md +20 -0
- package/dist/wiki/engine/errors/SP0270.md +20 -0
- package/dist/wiki/engine/errors/SP0271.md +20 -0
- package/dist/wiki/engine/errors/SP0272.md +20 -0
- package/dist/wiki/engine/errors/SP0273.md +20 -0
- package/dist/wiki/engine/errors/SP0274.md +20 -0
- package/dist/wiki/engine/errors/SP0275.md +20 -0
- package/dist/wiki/engine/errors/SP0276.md +20 -0
- package/dist/wiki/engine/errors/SP0277.md +20 -0
- package/dist/wiki/engine/errors/SP0278.md +20 -0
- package/dist/wiki/engine/errors/SP0279.md +20 -0
- package/dist/wiki/engine/errors/SP0280.md +20 -0
- package/dist/wiki/engine/errors/SP0281.md +20 -0
- package/dist/wiki/engine/errors/SP0282.md +20 -0
- package/dist/wiki/engine/errors/SP0283.md +20 -0
- package/dist/wiki/engine/errors/SP0284.md +20 -0
- package/dist/wiki/engine/errors/SP0285.md +20 -0
- package/dist/wiki/engine/errors/SP0286.md +20 -0
- package/dist/wiki/engine/errors/SP0287.md +20 -0
- package/dist/wiki/engine/errors/SP0288.md +20 -0
- package/dist/wiki/engine/errors/SP0289.md +20 -0
- package/dist/wiki/engine/errors/SP0290.md +20 -0
- package/dist/wiki/engine/errors/SP0291.md +20 -0
- package/dist/wiki/engine/errors/SP0292.md +20 -0
- package/dist/wiki/engine/errors/SP0293.md +20 -0
- package/dist/wiki/engine/errors/SP0294.md +20 -0
- package/dist/wiki/engine/errors/SP0295.md +20 -0
- package/dist/wiki/engine/errors/SP0296.md +20 -0
- package/dist/wiki/engine/errors/SP0297.md +20 -0
- package/dist/wiki/engine/errors/SP0298.md +20 -0
- package/dist/wiki/engine/errors/SP0299.md +20 -0
- package/dist/wiki/engine/errors/SP0300.md +20 -0
- package/dist/wiki/engine/errors/SP0301.md +20 -0
- package/dist/wiki/engine/errors/SP0302.md +20 -0
- package/dist/wiki/engine/errors/SP0303.md +20 -0
- package/dist/wiki/engine/errors/SP0304.md +20 -0
- package/dist/wiki/engine/errors/SP0305.md +20 -0
- package/dist/wiki/engine/errors/SP0306.md +20 -0
- package/dist/wiki/engine/errors/SP0307.md +20 -0
- package/dist/wiki/engine/errors/SP0308.md +20 -0
- package/dist/wiki/engine/errors/SP0309.md +20 -0
- package/dist/wiki/engine/errors/SP0310.md +20 -0
- package/dist/wiki/engine/errors/SP0311.md +20 -0
- package/dist/wiki/engine/errors/SP0312.md +20 -0
- package/dist/wiki/engine/errors/SP0313.md +20 -0
- package/dist/wiki/engine/errors/SP0314.md +20 -0
- package/dist/wiki/engine/errors/SP0315.md +20 -0
- package/dist/wiki/engine/errors/SP0316.md +20 -0
- package/dist/wiki/engine/errors/SP0317.md +20 -0
- package/dist/wiki/engine/errors/SP0318.md +20 -0
- package/dist/wiki/engine/errors/SP0319.md +20 -0
- package/dist/wiki/engine/errors/SP0320.md +20 -0
- package/dist/wiki/engine/errors/SP0321.md +20 -0
- package/dist/wiki/engine/errors/SP0322.md +20 -0
- package/dist/wiki/engine/errors/SP0323.md +20 -0
- package/dist/wiki/engine/errors/SP0324.md +20 -0
- package/dist/wiki/engine/errors/SP0325.md +20 -0
- package/dist/wiki/engine/errors/SP0326.md +20 -0
- package/dist/wiki/engine/errors/SP0327.md +20 -0
- package/dist/wiki/engine/errors/SP0328.md +20 -0
- package/dist/wiki/engine/errors/SP0329.md +20 -0
- package/dist/wiki/engine/errors/SP0330.md +20 -0
- package/dist/wiki/engine/errors/SP0331.md +20 -0
- package/dist/wiki/engine/errors/SP0332.md +20 -0
- package/dist/wiki/engine/errors/SP0333.md +20 -0
- package/dist/wiki/engine/errors/SP0334.md +20 -0
- package/dist/wiki/engine/errors/SP0335.md +20 -0
- package/dist/wiki/engine/errors/SP0336.md +20 -0
- package/dist/wiki/engine/errors/SP0337.md +20 -0
- package/dist/wiki/engine/errors/SP0338.md +20 -0
- package/dist/wiki/engine/errors/SP0339.md +20 -0
- package/dist/wiki/engine/errors/SP0340.md +20 -0
- package/dist/wiki/engine/errors/SP0341.md +20 -0
- package/dist/wiki/engine/errors/SP0342.md +20 -0
- package/dist/wiki/engine/errors/SP0343.md +20 -0
- package/dist/wiki/engine/errors/SP0344.md +20 -0
- package/dist/wiki/engine/errors/SP0346.md +20 -0
- package/dist/wiki/engine/errors/SP0347.md +20 -0
- package/dist/wiki/engine/errors/SP0348.md +20 -0
- package/dist/wiki/engine/errors/SP0349.md +20 -0
- package/dist/wiki/engine/errors/SP0350.md +20 -0
- package/dist/wiki/engine/errors/SP0351.md +20 -0
- package/dist/wiki/engine/errors/SP0352.md +20 -0
- package/dist/wiki/engine/errors/SP0353.md +20 -0
- package/dist/wiki/engine/errors/SP0354.md +20 -0
- package/dist/wiki/engine/errors/SP0355.md +20 -0
- package/dist/wiki/engine/errors/SP0356.md +20 -0
- package/dist/wiki/engine/errors/SP0357.md +20 -0
- package/dist/wiki/engine/errors/SP0358.md +20 -0
- package/dist/wiki/engine/errors/SP0359.md +20 -0
- package/dist/wiki/engine/errors/SP0360.md +20 -0
- package/dist/wiki/engine/errors/SP0361.md +20 -0
- package/dist/wiki/engine/errors/SP0362.md +20 -0
- package/dist/wiki/engine/errors/SP0363.md +20 -0
- package/dist/wiki/engine/errors/SP0364.md +20 -0
- package/dist/wiki/engine/errors/SP0365.md +20 -0
- package/dist/wiki/engine/errors/SP0366.md +20 -0
- package/dist/wiki/engine/errors/SP0367.md +20 -0
- package/dist/wiki/engine/errors/SP0368.md +20 -0
- package/dist/wiki/engine/errors/SP0369.md +20 -0
- package/dist/wiki/engine/errors/SP0370.md +20 -0
- package/dist/wiki/engine/errors/SP0371.md +20 -0
- package/dist/wiki/engine/errors/SP0372.md +20 -0
- package/dist/wiki/engine/errors/SP0373.md +20 -0
- package/dist/wiki/engine/errors/SP0374.md +20 -0
- package/dist/wiki/engine/errors/SP0375.md +20 -0
- package/dist/wiki/engine/errors/SP0376.md +20 -0
- package/dist/wiki/engine/errors/SP0377.md +20 -0
- package/dist/wiki/engine/errors/SP0378.md +20 -0
- package/dist/wiki/engine/errors/SP0379.md +20 -0
- package/dist/wiki/engine/errors/SP0380.md +20 -0
- package/dist/wiki/engine/errors/SP0381.md +20 -0
- package/dist/wiki/engine/errors/SP0382.md +20 -0
- package/dist/wiki/engine/errors/SP0383.md +20 -0
- package/dist/wiki/engine/errors/SP0384.md +20 -0
- package/dist/wiki/engine/errors/SP0385.md +20 -0
- package/dist/wiki/engine/errors/SP0386.md +20 -0
- package/dist/wiki/engine/errors/SP0387.md +21 -0
- package/dist/wiki/engine/errors/SP0388.md +20 -0
- package/dist/wiki/engine/errors/SP0389.md +20 -0
- package/dist/wiki/engine/errors/SP0390.md +20 -0
- package/dist/wiki/engine/errors/SP0391.md +20 -0
- package/dist/wiki/engine/errors/SP0392.md +20 -0
- package/dist/wiki/engine/errors/SP0393.md +20 -0
- package/dist/wiki/engine/errors/SP0394.md +20 -0
- package/dist/wiki/engine/errors/SP0395.md +20 -0
- package/dist/wiki/engine/errors/SP0396.md +20 -0
- package/dist/wiki/engine/errors/SP0397.md +20 -0
- package/dist/wiki/engine/errors/SP0398.md +20 -0
- package/dist/wiki/engine/errors/SP0399.md +20 -0
- package/dist/wiki/engine/errors/SP0400.md +20 -0
- package/dist/wiki/engine/errors/SP0401.md +20 -0
- package/dist/wiki/engine/errors/SP0402.md +20 -0
- package/dist/wiki/engine/errors/SP0403.md +20 -0
- package/dist/wiki/engine/errors/SP0404.md +20 -0
- package/dist/wiki/engine/errors/SP0405.md +20 -0
- package/dist/wiki/engine/errors/SP0406.md +20 -0
- package/dist/wiki/engine/errors/SP0407.md +20 -0
- package/dist/wiki/engine/errors/SP0408.md +20 -0
- package/dist/wiki/engine/errors/SP0409.md +20 -0
- package/dist/wiki/engine/errors/SP0410.md +20 -0
- package/dist/wiki/engine/errors/SP0411.md +20 -0
- package/dist/wiki/engine/errors/SP0412.md +20 -0
- package/dist/wiki/engine/errors/SP0413.md +20 -0
- package/dist/wiki/engine/errors/SP0414.md +20 -0
- package/dist/wiki/engine/errors/SP0415.md +20 -0
- package/dist/wiki/engine/errors/SP0416.md +20 -0
- package/dist/wiki/engine/errors/SP0417.md +20 -0
- package/dist/wiki/engine/errors/SP0418.md +20 -0
- package/dist/wiki/engine/errors/SP0419.md +20 -0
- package/dist/wiki/engine/errors/SP0420.md +20 -0
- package/dist/wiki/engine/errors/SP0421.md +20 -0
- package/dist/wiki/engine/errors/SP0422.md +20 -0
- package/dist/wiki/engine/errors/SP0423.md +20 -0
- package/dist/wiki/engine/errors/SP0427.md +20 -0
- package/dist/wiki/engine/errors/SP0428.md +20 -0
- package/dist/wiki/engine/errors/SP0429.md +20 -0
- package/dist/wiki/engine/errors/SP0430.md +20 -0
- package/dist/wiki/engine/errors/SP0431.md +20 -0
- package/dist/wiki/engine/errors/SP0432.md +20 -0
- package/dist/wiki/engine/errors/SP0433.md +20 -0
- package/dist/wiki/engine/errors/SP0434.md +20 -0
- package/dist/wiki/engine/errors/SP0435.md +20 -0
- package/dist/wiki/engine/errors/SP0436.md +20 -0
- package/dist/wiki/engine/errors/SP0437.md +20 -0
- package/dist/wiki/engine/errors/SP0438.md +20 -0
- package/dist/wiki/engine/errors/SP0439.md +20 -0
- package/dist/wiki/engine/errors/SP0440.md +20 -0
- package/dist/wiki/engine/errors/SP0442.md +20 -0
- package/dist/wiki/engine/errors/SP0443.md +20 -0
- package/dist/wiki/engine/errors/SP0444.md +20 -0
- package/dist/wiki/engine/errors/SP0445.md +20 -0
- package/dist/wiki/engine/errors/SP0446.md +20 -0
- package/dist/wiki/engine/errors/SP0447.md +20 -0
- package/dist/wiki/engine/errors/SP0448.md +20 -0
- package/dist/wiki/engine/errors/SP0449.md +20 -0
- package/dist/wiki/engine/errors/SP0450.md +20 -0
- package/dist/wiki/engine/errors/SP0451.md +20 -0
- package/dist/wiki/engine/errors/SP0452.md +20 -0
- package/dist/wiki/engine/errors/SP0453.md +20 -0
- package/dist/wiki/engine/errors/SP0454.md +20 -0
- package/dist/wiki/engine/errors/SP0455.md +20 -0
- package/dist/wiki/engine/errors/SP0456.md +20 -0
- package/dist/wiki/engine/errors/SP0457.md +20 -0
- package/dist/wiki/engine/errors/SP0458.md +20 -0
- package/dist/wiki/engine/errors/SP0459.md +20 -0
- package/dist/wiki/engine/errors/SP0460.md +20 -0
- package/dist/wiki/engine/errors/SP0461.md +20 -0
- package/dist/wiki/engine/errors/SP0462.md +20 -0
- package/dist/wiki/engine/errors/SP0463.md +20 -0
- package/dist/wiki/engine/errors/SP0464.md +20 -0
- package/dist/wiki/engine/errors/SP0465.md +20 -0
- package/dist/wiki/engine/errors/SP0466.md +20 -0
- package/dist/wiki/engine/errors/SP0467.md +20 -0
- package/dist/wiki/engine/errors/SP0468.md +20 -0
- package/dist/wiki/engine/errors/SP0469.md +20 -0
- package/dist/wiki/engine/errors/SP0470.md +20 -0
- package/dist/wiki/engine/errors/SP0471.md +20 -0
- package/dist/wiki/engine/errors/SP0472.md +20 -0
- package/dist/wiki/engine/errors/SP0473.md +20 -0
- package/dist/wiki/engine/errors/SP0474.md +20 -0
- package/dist/wiki/engine/errors/SP0475.md +20 -0
- package/dist/wiki/engine/errors/SP0476.md +20 -0
- package/dist/wiki/engine/errors/SP0477.md +20 -0
- package/dist/wiki/engine/errors/SP0478.md +20 -0
- package/dist/wiki/engine/errors/SP0479.md +20 -0
- package/dist/wiki/engine/errors/SP0480.md +20 -0
- package/dist/wiki/engine/errors/SP0481.md +20 -0
- package/dist/wiki/engine/errors/SP0482.md +20 -0
- package/dist/wiki/engine/errors/SP0483.md +20 -0
- package/dist/wiki/engine/errors/SP0484.md +20 -0
- package/dist/wiki/engine/errors/SP0497.md +20 -0
- package/dist/wiki/engine/errors/SP0498.md +20 -0
- package/dist/wiki/engine/errors/SP0500.md +20 -0
- package/dist/wiki/engine/errors/SP0501.md +20 -0
- package/dist/wiki/engine/errors/SP0502.md +20 -0
- package/dist/wiki/engine/errors/SP0503.md +20 -0
- package/dist/wiki/engine/errors/SP0504.md +20 -0
- package/dist/wiki/engine/errors/SP0505.md +20 -0
- package/dist/wiki/engine/errors/SP0506.md +20 -0
- package/dist/wiki/engine/errors/SP0507.md +20 -0
- package/dist/wiki/engine/errors/SP0508.md +20 -0
- package/dist/wiki/engine/errors/SP0509.md +20 -0
- package/dist/wiki/engine/errors/SP0510.md +20 -0
- package/dist/wiki/engine/errors/SP0511.md +20 -0
- package/dist/wiki/engine/errors/SP0512.md +20 -0
- package/dist/wiki/engine/errors/SP0513.md +20 -0
- package/dist/wiki/engine/errors/SP0514.md +20 -0
- package/dist/wiki/engine/errors/SP0515.md +20 -0
- package/dist/wiki/engine/errors/SP0516.md +20 -0
- package/dist/wiki/engine/errors/SP0517.md +20 -0
- package/dist/wiki/engine/errors/SP0518.md +20 -0
- package/dist/wiki/engine/errors/SP0519.md +20 -0
- package/dist/wiki/engine/errors/SP0520.md +20 -0
- package/dist/wiki/engine/errors/SP0521.md +20 -0
- package/dist/wiki/engine/errors/SP0522.md +20 -0
- package/dist/wiki/engine/errors/SP0523.md +20 -0
- package/dist/wiki/engine/errors/SP0524.md +20 -0
- package/dist/wiki/engine/errors/SP0525.md +20 -0
- package/dist/wiki/engine/errors/SP0526.md +20 -0
- package/dist/wiki/engine/errors/SP0527.md +20 -0
- package/dist/wiki/engine/errors/SP0528.md +20 -0
- package/dist/wiki/engine/errors/SP0529.md +20 -0
- package/dist/wiki/engine/errors/SP0530.md +20 -0
- package/dist/wiki/engine/errors/SP0531.md +20 -0
- package/dist/wiki/engine/errors/SP0532.md +20 -0
- package/dist/wiki/engine/errors/SP0533.md +20 -0
- package/dist/wiki/engine/errors/SP0534.md +20 -0
- package/dist/wiki/engine/errors/SP0535.md +20 -0
- package/dist/wiki/engine/errors/SP0536.md +20 -0
- package/dist/wiki/engine/errors/SP0537.md +20 -0
- package/dist/wiki/engine/errors/SP0538.md +20 -0
- package/dist/wiki/engine/errors/SP0539.md +20 -0
- package/dist/wiki/engine/errors/SP0540.md +20 -0
- package/dist/wiki/engine/errors/SP0541.md +20 -0
- package/dist/wiki/engine/errors/SP0542.md +20 -0
- package/dist/wiki/engine/errors/SP0543.md +20 -0
- package/dist/wiki/engine/errors/SP0545.md +20 -0
- package/dist/wiki/engine/errors/SP0546.md +20 -0
- package/dist/wiki/engine/errors/SP0547.md +20 -0
- package/dist/wiki/engine/errors/SP0548.md +20 -0
- package/dist/wiki/engine/errors/SP0549.md +20 -0
- package/dist/wiki/engine/errors/SP0550.md +20 -0
- package/dist/wiki/engine/errors/SP0551.md +20 -0
- package/dist/wiki/engine/errors/SP0552.md +20 -0
- package/dist/wiki/engine/errors/SP0553.md +20 -0
- package/dist/wiki/engine/errors/SP0554.md +20 -0
- package/dist/wiki/engine/errors/SP0555.md +20 -0
- package/dist/wiki/engine/errors/SP0556.md +20 -0
- package/dist/wiki/engine/errors/SP0557.md +20 -0
- package/dist/wiki/engine/errors/SP0558.md +20 -0
- package/dist/wiki/engine/errors/SP0559.md +20 -0
- package/dist/wiki/engine/errors/SP0560.md +20 -0
- package/dist/wiki/engine/errors/SP0561.md +20 -0
- package/dist/wiki/engine/errors/SP0562.md +20 -0
- package/dist/wiki/engine/errors/SP0563.md +20 -0
- package/dist/wiki/engine/errors/SP0564.md +20 -0
- package/dist/wiki/engine/errors/SP0565.md +20 -0
- package/dist/wiki/engine/errors/SP0566.md +20 -0
- package/dist/wiki/engine/errors/SP0567.md +20 -0
- package/dist/wiki/engine/errors/SP0568.md +20 -0
- package/dist/wiki/engine/errors/SP0569.md +20 -0
- package/dist/wiki/engine/errors/SP0570.md +20 -0
- package/dist/wiki/engine/errors/index.md +504 -0
- package/dist/wiki/engine/graphics/crt-material.md +64 -0
- package/dist/wiki/engine/graphics/energy-orb-material.md +52 -0
- package/dist/wiki/engine/graphics/instanced-model.md +89 -0
- package/dist/wiki/engine/graphics/looks.md +196 -0
- package/dist/wiki/engine/graphics/particles.md +185 -0
- package/dist/wiki/engine/graphics/portal-material.md +49 -0
- package/dist/wiki/engine/graphics/post-processing.md +130 -0
- package/dist/wiki/engine/graphics/renderer.md +103 -0
- package/dist/wiki/engine/graphics/shader.md +331 -0
- package/dist/wiki/engine/graphics/skinned-batch.md +115 -0
- package/dist/wiki/engine/graphics/track-scatter.md +124 -0
- package/dist/wiki/engine/graphics/track-surface.md +107 -0
- package/dist/wiki/engine/graphics/water-material.md +60 -0
- package/dist/wiki/engine/graphics/webgpu.md +87 -0
- package/dist/wiki/engine/structure/game.md +301 -0
- package/dist/wiki/engine/structure/levels.md +239 -0
- package/dist/wiki/engine/structure/plugins.md +423 -0
- package/dist/wiki/engine/structure/round.md +229 -0
- package/dist/wiki/engine/structure/saves.md +251 -0
- package/dist/wiki/engine/structure/scene.md +69 -0
- package/dist/wiki/engine/structure/states.md +202 -0
- package/dist/wiki/engine/structure/systems.md +242 -0
- package/dist/wiki/engine/structure/track-level.md +73 -0
- package/dist/wiki/engine/structure/world.md +371 -0
- package/dist/wiki/engine/testing/agent-state.md +131 -0
- package/dist/wiki/engine/testing/dev-server.md +101 -0
- package/dist/wiki/engine/testing/devtools-wiki.md +80 -0
- package/dist/wiki/engine/testing/devtools.md +143 -0
- package/dist/wiki/engine/testing/directing.md +125 -0
- package/dist/wiki/engine/testing/director.md +285 -0
- package/dist/wiki/engine/testing/editing.md +71 -0
- package/dist/wiki/engine/testing/errors.md +146 -0
- package/dist/wiki/engine/testing/frame.md +175 -0
- package/dist/wiki/engine/testing/headless.md +133 -0
- package/dist/wiki/engine/testing/hitches.md +140 -0
- package/dist/wiki/engine/testing/joins.md +129 -0
- package/dist/wiki/engine/testing/measuring.md +97 -0
- package/dist/wiki/engine/testing/performance.md +48 -0
- package/dist/wiki/engine/testing/processes.md +87 -0
- package/dist/wiki/engine/testing/replay-storage.md +156 -0
- package/dist/wiki/engine/testing/replay.md +230 -0
- package/dist/wiki/engine/testing/runs.md +162 -0
- package/dist/wiki/engine/testing/which-tool.md +155 -0
- package/dist/wiki/engine/ui/action-bar.md +121 -0
- package/dist/wiki/engine/ui/bar.md +54 -0
- package/dist/wiki/engine/ui/billboard.md +64 -0
- package/dist/wiki/engine/ui/button.md +69 -0
- package/dist/wiki/engine/ui/controls.md +131 -0
- package/dist/wiki/engine/ui/counter.md +40 -0
- package/dist/wiki/engine/ui/devtools-panel.md +69 -0
- package/dist/wiki/engine/ui/drag-and-drop.md +134 -0
- package/dist/wiki/engine/ui/floating-text.md +129 -0
- package/dist/wiki/engine/ui/graphics-quality.md +254 -0
- package/dist/wiki/engine/ui/heading.md +43 -0
- package/dist/wiki/engine/ui/hud.md +100 -0
- package/dist/wiki/engine/ui/icon.md +34 -0
- package/dist/wiki/engine/ui/image.md +38 -0
- package/dist/wiki/engine/ui/index.md +59 -0
- package/dist/wiki/engine/ui/joystick.md +32 -0
- package/dist/wiki/engine/ui/modal.md +95 -0
- package/dist/wiki/engine/ui/panel.md +100 -0
- package/dist/wiki/engine/ui/settings.md +303 -0
- package/dist/wiki/engine/ui/tap.md +33 -0
- package/dist/wiki/engine/ui/text.md +56 -0
- package/dist/wiki/engine/ui/theme.md +119 -0
- package/dist/wiki/engine/ui/window.md +68 -0
- package/dist/wmIDrLkF.js +1 -0
- package/dist/yhuZzG90.js +1 -0
- package/dist/z3YXvfLT.js +1 -0
- package/dist-browser/@pixiv/three-vrm/nodes.js +1 -0
- package/dist-browser/@pixiv/three-vrm.js +1 -0
- package/dist-browser/@react-three/drei/exports/-accumulative-shadows.js +1 -0
- package/dist-browser/@react-three/drei/exports/-adaptive-dpr.js +1 -0
- package/dist-browser/@react-three/drei/exports/-adaptive-events.js +1 -0
- package/dist-browser/@react-three/drei/exports/-arcball-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-ascii-renderer.js +1 -0
- package/dist-browser/@react-three/drei/exports/-b-b-anchor.js +1 -0
- package/dist-browser/@react-three/drei/exports/-backdrop.js +1 -0
- package/dist-browser/@react-three/drei/exports/-bake-shadows.js +1 -0
- package/dist-browser/@react-three/drei/exports/-billboard.js +1 -0
- package/dist-browser/@react-three/drei/exports/-bounds.js +1 -0
- package/dist-browser/@react-three/drei/exports/-box.js +1 -0
- package/dist-browser/@react-three/drei/exports/-bvh.js +1 -0
- package/dist-browser/@react-three/drei/exports/-camera-controls-impl.js +1 -0
- package/dist-browser/@react-three/drei/exports/-camera-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-camera-shake.js +1 -0
- package/dist-browser/@react-three/drei/exports/-capsule.js +1 -0
- package/dist-browser/@react-three/drei/exports/-catmull-rom-line.js +1 -0
- package/dist-browser/@react-three/drei/exports/-caustics.js +1 -0
- package/dist-browser/@react-three/drei/exports/-center.js +1 -0
- package/dist-browser/@react-three/drei/exports/-circle.js +1 -0
- package/dist-browser/@react-three/drei/exports/-clone.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cloud-instance.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cloud.js +1 -0
- package/dist-browser/@react-three/drei/exports/-clouds.js +1 -0
- package/dist-browser/@react-three/drei/exports/-computed-attribute.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cone.js +1 -0
- package/dist-browser/@react-three/drei/exports/-contact-shadows.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cube-camera.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cube-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cubic-bezier-line.js +1 -0
- package/dist-browser/@react-three/drei/exports/-curve-modifier.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cycle-raycast.js +1 -0
- package/dist-browser/@react-three/drei/exports/-cylinder.js +1 -0
- package/dist-browser/@react-three/drei/exports/-decal.js +1 -0
- package/dist-browser/@react-three/drei/exports/-detailed.js +1 -0
- package/dist-browser/@react-three/drei/exports/-detect-g-p-u.js +1 -0
- package/dist-browser/@react-three/drei/exports/-device-orientation-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-dodecahedron.js +1 -0
- package/dist-browser/@react-three/drei/exports/-drag-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-edges.js +1 -0
- package/dist-browser/@react-three/drei/exports/-effects.js +1 -0
- package/dist-browser/@react-three/drei/exports/-environment-cube.js +1 -0
- package/dist-browser/@react-three/drei/exports/-environment-map.js +1 -0
- package/dist-browser/@react-three/drei/exports/-environment-portal.js +1 -0
- package/dist-browser/@react-three/drei/exports/-environment.js +1 -0
- package/dist-browser/@react-three/drei/exports/-example.js +1 -0
- package/dist-browser/@react-three/drei/exports/-extrude.js +1 -0
- package/dist-browser/@react-three/drei/exports/-face-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-face-landmarker-defaults.js +1 -0
- package/dist-browser/@react-three/drei/exports/-face-landmarker.js +1 -0
- package/dist-browser/@react-three/drei/exports/-facemesh-datas.js +1 -0
- package/dist-browser/@react-three/drei/exports/-facemesh-eye-defaults.js +1 -0
- package/dist-browser/@react-three/drei/exports/-facemesh-eye.js +1 -0
- package/dist-browser/@react-three/drei/exports/-facemesh.js +1 -0
- package/dist-browser/@react-three/drei/exports/-fbo.js +1 -0
- package/dist-browser/@react-three/drei/exports/-fbx.js +1 -0
- package/dist-browser/@react-three/drei/exports/-first-person-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-fisheye.js +1 -0
- package/dist-browser/@react-three/drei/exports/-float.js +1 -0
- package/dist-browser/@react-three/drei/exports/-fly-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gizmo-helper.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gizmo-viewcube.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gizmo-viewport.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gltf.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gradient-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-gradient-type.js +1 -0
- package/dist-browser/@react-three/drei/exports/-grid.js +1 -0
- package/dist-browser/@react-three/drei/exports/-helper.js +1 -0
- package/dist-browser/@react-three/drei/exports/-html.js +1 -0
- package/dist-browser/@react-three/drei/exports/-hud.js +1 -0
- package/dist-browser/@react-three/drei/exports/-icosahedron.js +1 -0
- package/dist-browser/@react-three/drei/exports/-image.js +1 -0
- package/dist-browser/@react-three/drei/exports/-instance.js +1 -0
- package/dist-browser/@react-three/drei/exports/-instanced-attribute.js +1 -0
- package/dist-browser/@react-three/drei/exports/-instances.js +1 -0
- package/dist-browser/@react-three/drei/exports/-is-object.js +1 -0
- package/dist-browser/@react-three/drei/exports/-keyboard-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-ktx2.js +1 -0
- package/dist-browser/@react-three/drei/exports/-lathe.js +1 -0
- package/dist-browser/@react-three/drei/exports/-lightformer.js +1 -0
- package/dist-browser/@react-three/drei/exports/-line.js +1 -0
- package/dist-browser/@react-three/drei/exports/-loader.js +1 -0
- package/dist-browser/@react-three/drei/exports/-map-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-marching-cube.js +1 -0
- package/dist-browser/@react-three/drei/exports/-marching-cubes.js +1 -0
- package/dist-browser/@react-three/drei/exports/-marching-plane.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mask.js +1 -0
- package/dist-browser/@react-three/drei/exports/-matcap-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-merged.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-discard-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-distort-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-portal-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-reflector-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-refraction-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-transmission-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-mesh-wobble-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-motion-path-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-multi-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-normal-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-octahedron.js +1 -0
- package/dist-browser/@react-three/drei/exports/-orbit-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-orthographic-camera.js +1 -0
- package/dist-browser/@react-three/drei/exports/-outlines.js +1 -0
- package/dist-browser/@react-three/drei/exports/-performance-monitor.js +1 -0
- package/dist-browser/@react-three/drei/exports/-perspective-camera.js +1 -0
- package/dist-browser/@react-three/drei/exports/-pivot-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-plane.js +1 -0
- package/dist-browser/@react-three/drei/exports/-point-material-impl.js +1 -0
- package/dist-browser/@react-three/drei/exports/-point-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/-point.js +1 -0
- package/dist-browser/@react-three/drei/exports/-pointer-lock-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-points-buffer.js +1 -0
- package/dist-browser/@react-three/drei/exports/-points.js +1 -0
- package/dist-browser/@react-three/drei/exports/-polyhedron.js +1 -0
- package/dist-browser/@react-three/drei/exports/-position-mesh.js +1 -0
- package/dist-browser/@react-three/drei/exports/-position-point.js +1 -0
- package/dist-browser/@react-three/drei/exports/-positional-audio.js +1 -0
- package/dist-browser/@react-three/drei/exports/-preload.js +1 -0
- package/dist-browser/@react-three/drei/exports/-presentation-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-progress.js +1 -0
- package/dist-browser/@react-three/drei/exports/-quadratic-bezier-line.js +1 -0
- package/dist-browser/@react-three/drei/exports/-randomized-light.js +1 -0
- package/dist-browser/@react-three/drei/exports/-render-cube-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-render-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-resize.js +1 -0
- package/dist-browser/@react-three/drei/exports/-ring.js +1 -0
- package/dist-browser/@react-three/drei/exports/-rounded-box-geometry.js +1 -0
- package/dist-browser/@react-three/drei/exports/-rounded-box.js +1 -0
- package/dist-browser/@react-three/drei/exports/-sampler.js +1 -0
- package/dist-browser/@react-three/drei/exports/-screen-quad.js +1 -0
- package/dist-browser/@react-three/drei/exports/-screen-sizer.js +1 -0
- package/dist-browser/@react-three/drei/exports/-screen-space.js +1 -0
- package/dist-browser/@react-three/drei/exports/-screen-video-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-scroll-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-scroll.js +1 -0
- package/dist-browser/@react-three/drei/exports/-segment-object.js +1 -0
- package/dist-browser/@react-three/drei/exports/-segment.js +1 -0
- package/dist-browser/@react-three/drei/exports/-segments.js +1 -0
- package/dist-browser/@react-three/drei/exports/-select.js +1 -0
- package/dist-browser/@react-three/drei/exports/-shadow-alpha.js +1 -0
- package/dist-browser/@react-three/drei/exports/-shadow.js +1 -0
- package/dist-browser/@react-three/drei/exports/-shape.js +1 -0
- package/dist-browser/@react-three/drei/exports/-sky.js +1 -0
- package/dist-browser/@react-three/drei/exports/-soft-shadows.js +1 -0
- package/dist-browser/@react-three/drei/exports/-sparkles.js +1 -0
- package/dist-browser/@react-three/drei/exports/-sphere.js +1 -0
- package/dist-browser/@react-three/drei/exports/-splat.js +1 -0
- package/dist-browser/@react-three/drei/exports/-spot-light-shadow.js +1 -0
- package/dist-browser/@react-three/drei/exports/-spot-light.js +1 -0
- package/dist-browser/@react-three/drei/exports/-sprite-animator.js +1 -0
- package/dist-browser/@react-three/drei/exports/-stage.js +1 -0
- package/dist-browser/@react-three/drei/exports/-stars.js +1 -0
- package/dist-browser/@react-three/drei/exports/-stats-gl.js +1 -0
- package/dist-browser/@react-three/drei/exports/-stats.js +1 -0
- package/dist-browser/@react-three/drei/exports/-svg.js +1 -0
- package/dist-browser/@react-three/drei/exports/-tetrahedron.js +1 -0
- package/dist-browser/@react-three/drei/exports/-text.js +1 -0
- package/dist-browser/@react-three/drei/exports/-text3-d.js +1 -0
- package/dist-browser/@react-three/drei/exports/-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-torus-knot.js +1 -0
- package/dist-browser/@react-three/drei/exports/-torus.js +1 -0
- package/dist-browser/@react-three/drei/exports/-trackball-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-trail-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-trail.js +1 -0
- package/dist-browser/@react-three/drei/exports/-transform-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/-tube.js +1 -0
- package/dist-browser/@react-three/drei/exports/-video-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-view.js +1 -0
- package/dist-browser/@react-three/drei/exports/-webcam-video-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/-wireframe.js +1 -0
- package/dist-browser/@react-three/drei/exports/accumulative-context.js +1 -0
- package/dist-browser/@react-three/drei/exports/calc-pos-from-angles.js +1 -0
- package/dist-browser/@react-three/drei/exports/calculate-scale-factor.js +1 -0
- package/dist-browser/@react-three/drei/exports/check-if-frame-is-empty.js +1 -0
- package/dist-browser/@react-three/drei/exports/create-instances.js +1 -0
- package/dist-browser/@react-three/drei/exports/get-first-frame.js +1 -0
- package/dist-browser/@react-three/drei/exports/is-web-g-l2-available.js +1 -0
- package/dist-browser/@react-three/drei/exports/mesh-bounds.js +1 -0
- package/dist-browser/@react-three/drei/exports/shader-material.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-animations.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-aspect.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-b-v-h.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-bounds.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-box-projected-env.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-camera.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-context-bridge.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-cube-camera.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-cube-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-cursor.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-depth-buffer.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-detect-g-p-u.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-environment.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-f-b-o.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-f-b-x.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-face-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-face-landmarker.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-font.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-g-l-t-f.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-gizmo-context.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-helper.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-intersect.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-k-t-x2.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-keyboard-controls.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-mask.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-matcap-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-motion.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-normal-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-performance-monitor.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-progress.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-scroll.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-select.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-sprite-animator.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-sprite-loader.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-surface-sampler.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-trail-texture.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-trail.js +1 -0
- package/dist-browser/@react-three/drei/exports/use-video-texture.js +1 -0
- package/dist-browser/@react-three/drei.js +1 -0
- package/dist-browser/@react-three/fiber.js +1 -0
- package/dist-browser/@react-three/postprocessing.js +1 -0
- package/dist-browser/@spawnite/engine/abilities.js +1 -0
- package/dist-browser/@spawnite/engine/core.js +1 -0
- package/dist-browser/@spawnite/engine/dragAndDrop.js +1 -0
- package/dist-browser/@spawnite/engine/inventory.js +1 -0
- package/dist-browser/@spawnite/engine/looks/dusk.js +1 -0
- package/dist-browser/@spawnite/engine/looks/morning.js +1 -0
- package/dist-browser/@spawnite/engine/looks/night.js +1 -0
- package/dist-browser/@spawnite/engine/looks/noon.js +1 -0
- package/dist-browser/@spawnite/engine/looks/overcast.js +1 -0
- package/dist-browser/@spawnite/engine/npcs.js +1 -0
- package/dist-browser/@spawnite/engine/rounds.js +1 -0
- package/dist-browser/@spawnite/engine/three.js +1 -0
- package/dist-browser/@spawnite/engine/tracks.js +1 -0
- package/dist-browser/@spawnite/engine/weapons.js +1 -0
- package/dist-browser/@spawnite/engine.js +376 -0
- package/dist-browser/@spawnite/schema/exports/-agent-state.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-app-message-type.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-channel-handshake.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-clip-clock.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-clip-record-action.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-clip-shape.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-collision-shape.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-cover-kind.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-credential-kind.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-device-class.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-engine-save-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-favorite-kind.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-model-style.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-page-connection-status.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-page-message-type.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-performance-stats-mode.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-prop-shape.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-quality-group.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-quality-level.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-room-mode.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-save-owner-change.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-save-section.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-scatter-family.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-scatter-kind.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-shot-angle.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-voice-mode.js +1 -0
- package/dist-browser/@spawnite/schema/exports/-wiki-scope.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-asset-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-behaviour-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-dialog-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-entity-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-hud-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-item-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-map-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-npc-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-panel-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-scene-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/add-shader-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/agent-activity-event.js +1 -0
- package/dist-browser/@spawnite/schema/exports/agent-heartbeat-milliseconds.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-channel-version.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-credential.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-inset-edges.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-insets.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-message-versions.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-player.js +1 -0
- package/dist-browser/@spawnite/schema/exports/app-settings-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-catalog.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-category.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-declaration.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-entry.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-filters.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-key.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-kind.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-licence.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-manifest.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-source.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-style.js +1 -0
- package/dist-browser/@spawnite/schema/exports/asset-url.js +1 -0
- package/dist-browser/@spawnite/schema/exports/assets-site.js +1 -0
- package/dist-browser/@spawnite/schema/exports/brush-shapes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/build-save-manifest-entry.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-file.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-limits.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-manifest-file.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-manifest.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-page-folder.js +1 -0
- package/dist-browser/@spawnite/schema/exports/bundle-server-folder.js +1 -0
- package/dist-browser/@spawnite/schema/exports/carried-setting-key-list.js +1 -0
- package/dist-browser/@spawnite/schema/exports/carried-setting-keys.js +1 -0
- package/dist-browser/@spawnite/schema/exports/carried-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/catalog-row.js +1 -0
- package/dist-browser/@spawnite/schema/exports/cell-paint.js +1 -0
- package/dist-browser/@spawnite/schema/exports/channel-connect.js +1 -0
- package/dist-browser/@spawnite/schema/exports/channel-hello.js +1 -0
- package/dist-browser/@spawnite/schema/exports/chat-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/chat-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/chat-post.js +1 -0
- package/dist-browser/@spawnite/schema/exports/chat-read-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/check-game-slug.js +1 -0
- package/dist-browser/@spawnite/schema/exports/check-model-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/check-save-migrations.js +1 -0
- package/dist-browser/@spawnite/schema/exports/check-save-publish.js +1 -0
- package/dist-browser/@spawnite/schema/exports/check-sound-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/clip-finish.js +1 -0
- package/dist-browser/@spawnite/schema/exports/clip-meta.js +1 -0
- package/dist-browser/@spawnite/schema/exports/clip-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/clips-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/clips-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/compare-save-manifest-entries.js +1 -0
- package/dist-browser/@spawnite/schema/exports/compare-shots-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/component-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/condition-seconds.js +1 -0
- package/dist-browser/@spawnite/schema/exports/connection-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/create-quality-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/create-site.js +1 -0
- package/dist-browser/@spawnite/schema/exports/create-tagged-save-value-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/credential-versions.js +1 -0
- package/dist-browser/@spawnite/schema/exports/day-hour.js +1 -0
- package/dist-browser/@spawnite/schema/exports/day-length.js +1 -0
- package/dist-browser/@spawnite/schema/exports/default-player-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/default-room-players.js +1 -0
- package/dist-browser/@spawnite/schema/exports/default-room-send-rate.js +1 -0
- package/dist-browser/@spawnite/schema/exports/describe-entity-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/describe-map-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/describe-save-publish-refusal.js +1 -0
- package/dist-browser/@spawnite/schema/exports/dev-saves-cleared-file.js +1 -0
- package/dist-browser/@spawnite/schema/exports/dev-saves-cleared-meta-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/dev-saves-folder.js +1 -0
- package/dist-browser/@spawnite/schema/exports/dev-server-file.js +1 -0
- package/dist-browser/@spawnite/schema/exports/dev-server-prefix.js +1 -0
- package/dist-browser/@spawnite/schema/exports/devtools-favorites.js +1 -0
- package/dist-browser/@spawnite/schema/exports/devtools-presets.js +1 -0
- package/dist-browser/@spawnite/schema/exports/direct-link.js +1 -0
- package/dist-browser/@spawnite/schema/exports/edit-material-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/edit-terrain-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-build-meta-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-build-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-label.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-origin.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-save-readers.js +1 -0
- package/dist-browser/@spawnite/schema/exports/engine-save-schemas.js +1 -0
- package/dist-browser/@spawnite/schema/exports/error-reports-config.js +1 -0
- package/dist-browser/@spawnite/schema/exports/error-reports-meta-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/error-reports-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/favorite-field.js +1 -0
- package/dist-browser/@spawnite/schema/exports/filter-assets.js +1 -0
- package/dist-browser/@spawnite/schema/exports/find-particle-effect-excess.js +1 -0
- package/dist-browser/@spawnite/schema/exports/find-room-settings-problems.js +1 -0
- package/dist-browser/@spawnite/schema/exports/find-terrain-cell.js +1 -0
- package/dist-browser/@spawnite/schema/exports/fingerprint-save-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/format-clip-length.js +1 -0
- package/dist-browser/@spawnite/schema/exports/format-clip-size.js +1 -0
- package/dist-browser/@spawnite/schema/exports/format-link-conditions.js +1 -0
- package/dist-browser/@spawnite/schema/exports/framed-shot-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/fullscreen-answer-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/fullscreen-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/game-materials-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/game-materials-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/game-origin.js +1 -0
- package/dist-browser/@spawnite/schema/exports/game-page-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/game-save-key.js +1 -0
- package/dist-browser/@spawnite/schema/exports/grid-map.js +1 -0
- package/dist-browser/@spawnite/schema/exports/ground-rule-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/ground-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/hud-slot.js +1 -0
- package/dist-browser/@spawnite/schema/exports/init-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/init-save.js +1 -0
- package/dist-browser/@spawnite/schema/exports/insets-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-additive-schema-change.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-game-id.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-game-slug.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-kept-label.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-link-direct.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-older-reader.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-particle-effect-looping.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-room-players.js +1 -0
- package/dist-browser/@spawnite/schema/exports/is-room-send-rate.js +1 -0
- package/dist-browser/@spawnite/schema/exports/item-definition.js +1 -0
- package/dist-browser/@spawnite/schema/exports/join-room-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/leave-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/left-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/list-assets-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/list-clips-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/list-templates-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/list-wiki-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/long-call-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/longest-timeout-seconds.js +1 -0
- package/dist-browser/@spawnite/schema/exports/make-model-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-base-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-point.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-post.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-prop-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-props-patch.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-props-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-sea-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/map-terrain-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/material-cover-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/material-look-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/material-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/material-sets.js +1 -0
- package/dist-browser/@spawnite/schema/exports/materials-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/max-error-report-bytes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/max-save-body-bytes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/max-save-body-ceiling-bytes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/max-save-unpacked-bytes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/max-save-unpacked-ceiling-bytes.js +1 -0
- package/dist-browser/@spawnite/schema/exports/menu-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/merge-carried-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/merge-save-highest.js +1 -0
- package/dist-browser/@spawnite/schema/exports/model-reference-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/model-triangle-budget.js +1 -0
- package/dist-browser/@spawnite/schema/exports/most-rejoin-hold-seconds.js +1 -0
- package/dist-browser/@spawnite/schema/exports/most-room-players.js +1 -0
- package/dist-browser/@spawnite/schema/exports/name-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/new-game-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/package-room-hint.js +1 -0
- package/dist-browser/@spawnite/schema/exports/package-room.js +1 -0
- package/dist-browser/@spawnite/schema/exports/page-message-versions.js +1 -0
- package/dist-browser/@spawnite/schema/exports/page-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/page-settings-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/parse-link-conditions.js +1 -0
- package/dist-browser/@spawnite/schema/exports/particle-effect-limits.js +1 -0
- package/dist-browser/@spawnite/schema/exports/particle-sprite-max-side.js +1 -0
- package/dist-browser/@spawnite/schema/exports/place-loot-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/place-props-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/play-domain.js +1 -0
- package/dist-browser/@spawnite/schema/exports/profile-game-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/project-folder.js +1 -0
- package/dist-browser/@spawnite/schema/exports/publish-assets-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/publish-version-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/query-map-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-ai-tree-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-chat-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-clip-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-clip-start-time.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-game-id.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-game-wiki-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-package-room.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-paint-grid.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-particle-effect.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-room-mode.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-run-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-save-mark.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-save-record.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-terrain-grid.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-track-level.js +1 -0
- package/dist-browser/@spawnite/schema/exports/read-wiki-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/ready-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/record-clip-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry-entry.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry-file.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry-item-schema-url.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry-item.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry-schema-url.js +1 -0
- package/dist-browser/@spawnite/schema/exports/registry.js +1 -0
- package/dist-browser/@spawnite/schema/exports/resolve-room-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/reverse-wiki-relation.js +1 -0
- package/dist-browser/@spawnite/schema/exports/room-send-rates.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-codec-mark.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-failed-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-fingerprint-format.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-limit-warning-share.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-load-failed-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-now-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/save-record-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-health-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-level-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-stack-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-stat-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/saved-vector-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/scatter-kinds.js +1 -0
- package/dist-browser/@spawnite/schema/exports/scene-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/screenshot-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/search-wiki-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/seat-credential.js +1 -0
- package/dist-browser/@spawnite/schema/exports/seat-message.js +1 -0
- package/dist-browser/@spawnite/schema/exports/send-input-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/servers-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/set-nickname-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/set-trait-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/set-visibility-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/settings-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/shot-angle-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/shot-camera-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/shot-post.js +1 -0
- package/dist-browser/@spawnite/schema/exports/shots-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/shots-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/simulate-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/slug-limits.js +1 -0
- package/dist-browser/@spawnite/schema/exports/slugify-game-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/snapshot-save-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/space-point-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/spawnite-folder-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/start-playtest-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/start-save-key.js +1 -0
- package/dist-browser/@spawnite/schema/exports/steps-per-second.js +1 -0
- package/dist-browser/@spawnite/schema/exports/store-age-bands.js +1 -0
- package/dist-browser/@spawnite/schema/exports/store-page-limits.js +1 -0
- package/dist-browser/@spawnite/schema/exports/store-page.js +1 -0
- package/dist-browser/@spawnite/schema/exports/store-picture-rules.js +1 -0
- package/dist-browser/@spawnite/schema/exports/store-picture.js +1 -0
- package/dist-browser/@spawnite/schema/exports/tab-info.js +1 -0
- package/dist-browser/@spawnite/schema/exports/tab-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/tab-post.js +1 -0
- package/dist-browser/@spawnite/schema/exports/tab-token-header.js +1 -0
- package/dist-browser/@spawnite/schema/exports/tagged-save-value-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-brush.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-fill.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-map.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-restore.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-settlings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-stroke-shape.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-stroke.js +1 -0
- package/dist-browser/@spawnite/schema/exports/terrain-tools.js +1 -0
- package/dist-browser/@spawnite/schema/exports/timeline-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/to-display-name.js +1 -0
- package/dist-browser/@spawnite/schema/exports/to-wiki-anchor.js +1 -0
- package/dist-browser/@spawnite/schema/exports/track-level-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/untouched.js +1 -0
- package/dist-browser/@spawnite/schema/exports/upload-store-page-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/upload-version-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/versions-of-save-manifest-entry.js +1 -0
- package/dist-browser/@spawnite/schema/exports/versions-of.js +1 -0
- package/dist-browser/@spawnite/schema/exports/view-schema.js +1 -0
- package/dist-browser/@spawnite/schema/exports/voice-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/whoami-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/wiki-overview-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/wiki-page-path.js +1 -0
- package/dist-browser/@spawnite/schema/exports/wiki-page-ref.js +1 -0
- package/dist-browser/@spawnite/schema/exports/wiki-path-part.js +1 -0
- package/dist-browser/@spawnite/schema/exports/wiki-site.js +1 -0
- package/dist-browser/@spawnite/schema/exports/write-link-settings.js +1 -0
- package/dist-browser/@spawnite/schema/exports/write-paint-grid.js +1 -0
- package/dist-browser/@spawnite/schema/exports/write-save-record.js +1 -0
- package/dist-browser/@spawnite/schema/exports/write-terrain-grid.js +1 -0
- package/dist-browser/@spawnite/schema/exports/write-wiki-page-input.js +1 -0
- package/dist-browser/@spawnite/schema/exports/z.js +1 -0
- package/dist-browser/@spawnite/schema.js +1 -0
- package/dist-browser/@spawnite/ui/motion.js +1 -0
- package/dist-browser/@spawnite/ui.js +1 -0
- package/dist-browser/THIRD-PARTY-NOTICES +2949 -0
- package/dist-browser/assets/basis_transcoder-VXdx5NbI.wasm +0 -0
- package/dist-browser/assets/basis_transcoder-o4Hde_L7.js +19 -0
- package/dist-browser/assets/draco_decoder-C32yEggz.wasm +0 -0
- package/dist-browser/assets/draco_decoder-Z1_iN-Ht.wasm +0 -0
- package/dist-browser/assets/draco_decoder-fzg4nYZr.js +34 -0
- package/dist-browser/assets/draco_wasm_wrapper-DxJM36Ib.js +117 -0
- package/dist-browser/assets/draco_wasm_wrapper-fZCQGLGb.js +116 -0
- package/dist-browser/assets/rapier_wasm3d_bg-CcJdV3OS.wasm +0 -0
- package/dist-browser/chunks/-8xKUVc-.js +1 -0
- package/dist-browser/chunks/0Bppyo06.js +1 -0
- package/dist-browser/chunks/0XBYBf4e.js +1 -0
- package/dist-browser/chunks/1Pk4GW-o.js +1 -0
- package/dist-browser/chunks/1TfeBVY_.js +1 -0
- package/dist-browser/chunks/2GzBwp8F.js +1 -0
- package/dist-browser/chunks/37dBpPRN.js +1 -0
- package/dist-browser/chunks/3GDQ_l39.js +1 -0
- package/dist-browser/chunks/4r3wlCT-.js +56 -0
- package/dist-browser/chunks/51muForc.js +2 -0
- package/dist-browser/chunks/5l3Kj8OA.js +25 -0
- package/dist-browser/chunks/5v0sm-la.js +1 -0
- package/dist-browser/chunks/6RSie8Zr.js +1 -0
- package/dist-browser/chunks/6VxScSBj.js +1 -0
- package/dist-browser/chunks/6r1L_s87.js +1 -0
- package/dist-browser/chunks/703AF8IC.js +2 -0
- package/dist-browser/chunks/7kk1UrXM.js +54 -0
- package/dist-browser/chunks/7v-xFmSc.js +1 -0
- package/dist-browser/chunks/8CwB1oG9.js +1 -0
- package/dist-browser/chunks/8GjxAP3h.js +1 -0
- package/dist-browser/chunks/8Pep1QKH.js +1 -0
- package/dist-browser/chunks/8eSx71cM.js +1 -0
- package/dist-browser/chunks/8qLBuj0B.js +1 -0
- package/dist-browser/chunks/8uMFNz4F.js +48 -0
- package/dist-browser/chunks/9BUmmiDi.js +64 -0
- package/dist-browser/chunks/AEQH3xKs.js +1 -0
- package/dist-browser/chunks/B04SdTxo.js +1 -0
- package/dist-browser/chunks/B0d1OhsT.js +1 -0
- package/dist-browser/chunks/B0d94ulh.js +1 -0
- package/dist-browser/chunks/B0dIJJnS.js +104 -0
- package/dist-browser/chunks/B0sEcOA4.js +1 -0
- package/dist-browser/chunks/B17MsfBW.js +2 -0
- package/dist-browser/chunks/B1Q2EYQa.js +409 -0
- package/dist-browser/chunks/B1VGbFnq.js +1 -0
- package/dist-browser/chunks/B1ZLDwkb.js +1 -0
- package/dist-browser/chunks/B1gZ4XNT.js +1 -0
- package/dist-browser/chunks/B2P8OKx4.js +114 -0
- package/dist-browser/chunks/B2lwHY_A.js +1 -0
- package/dist-browser/chunks/B2rfjAu3.js +1 -0
- package/dist-browser/chunks/B3cpZ7qW.js +1 -0
- package/dist-browser/chunks/B3zyuqQe.js +1 -0
- package/dist-browser/chunks/B4HH7vxm.js +1 -0
- package/dist-browser/chunks/B4L72GuI.js +1 -0
- package/dist-browser/chunks/B4PXM93E.js +1 -0
- package/dist-browser/chunks/B4dyXOK4.js +2 -0
- package/dist-browser/chunks/B4f83JmW.js +1 -0
- package/dist-browser/chunks/B4rtOA11.js +1 -0
- package/dist-browser/chunks/B53Q2-Fw.js +42 -0
- package/dist-browser/chunks/B5YG9Ima.js +35 -0
- package/dist-browser/chunks/B5npwEiE.js +1 -0
- package/dist-browser/chunks/B6TyyPfn.js +2280 -0
- package/dist-browser/chunks/B6YPgX9B.js +1 -0
- package/dist-browser/chunks/B7K2KMcP.js +289 -0
- package/dist-browser/chunks/B8GCRzu-.js +1 -0
- package/dist-browser/chunks/B8f3enUO.js +42 -0
- package/dist-browser/chunks/B9dPPcmc.js +239 -0
- package/dist-browser/chunks/B9n7U8x8.js +24 -0
- package/dist-browser/chunks/BAcEoh4A.js +1 -0
- package/dist-browser/chunks/BBTy17gV.js +23 -0
- package/dist-browser/chunks/BBoWq_28.js +1 -0
- package/dist-browser/chunks/BCEkROxA.js +1 -0
- package/dist-browser/chunks/BCSDojKA.js +2 -0
- package/dist-browser/chunks/BCnGjanZ.js +1 -0
- package/dist-browser/chunks/BCy2Imwl.js +1 -0
- package/dist-browser/chunks/BD93nK4k.js +1 -0
- package/dist-browser/chunks/BDYWv4Pt.js +1 -0
- package/dist-browser/chunks/BDntRBeD.js +1 -0
- package/dist-browser/chunks/BE0sHH_C.js +1 -0
- package/dist-browser/chunks/BE7yKwOS.js +1 -0
- package/dist-browser/chunks/BFDqfrDx.js +61 -0
- package/dist-browser/chunks/BFnCgym5.js +1 -0
- package/dist-browser/chunks/BFpenkAR.js +1 -0
- package/dist-browser/chunks/BFvqTjM2.js +1 -0
- package/dist-browser/chunks/BG8QaCAl.js +1 -0
- package/dist-browser/chunks/BGsrJU1n.js +219 -0
- package/dist-browser/chunks/BGze3w87.js +1 -0
- package/dist-browser/chunks/BHYG5big.js +1 -0
- package/dist-browser/chunks/BHZuFsZC.js +26 -0
- package/dist-browser/chunks/BHePouWp.js +1 -0
- package/dist-browser/chunks/BIGc2B5x.js +106 -0
- package/dist-browser/chunks/BIgbJOA7.js +1 -0
- package/dist-browser/chunks/BIlEJ_uM.js +1 -0
- package/dist-browser/chunks/BIrJsLCp.js +1 -0
- package/dist-browser/chunks/BJCTIWwI.js +97 -0
- package/dist-browser/chunks/BJWwGEft.js +22 -0
- package/dist-browser/chunks/BJbnvkQD.js +33 -0
- package/dist-browser/chunks/BJj_P5qy.js +40 -0
- package/dist-browser/chunks/BKMmwIjP.js +1 -0
- package/dist-browser/chunks/BL2b-bga.js +1 -0
- package/dist-browser/chunks/BL3GFPpX.js +1 -0
- package/dist-browser/chunks/BL3JqalM.js +1 -0
- package/dist-browser/chunks/BLQoPgRQ.js +17 -0
- package/dist-browser/chunks/BLdTHuK5.js +38 -0
- package/dist-browser/chunks/BLxVM0Bx.js +1 -0
- package/dist-browser/chunks/BMOXLfbG.js +1 -0
- package/dist-browser/chunks/BMyF16Pb.js +1 -0
- package/dist-browser/chunks/BN0JituG.js +1 -0
- package/dist-browser/chunks/BNiTh9Zb.js +1 -0
- package/dist-browser/chunks/BNm7BDEl.js +1 -0
- package/dist-browser/chunks/BNucCtAC.js +1 -0
- package/dist-browser/chunks/BOAa4bZ5.js +80 -0
- package/dist-browser/chunks/BOIXSUZ_.js +1 -0
- package/dist-browser/chunks/BOY2osHs.js +1 -0
- package/dist-browser/chunks/BP9HooTj.js +1 -0
- package/dist-browser/chunks/BPsQn259.js +1 -0
- package/dist-browser/chunks/BPyPftW0.js +1 -0
- package/dist-browser/chunks/BQl3ddsW.js +1 -0
- package/dist-browser/chunks/BSaFdJJr.js +1 -0
- package/dist-browser/chunks/BSb5Y-Am.js +1 -0
- package/dist-browser/chunks/BSoHyLeW.js +1 -0
- package/dist-browser/chunks/BUJHJVUo.js +1 -0
- package/dist-browser/chunks/BV45MfzJ.js +206 -0
- package/dist-browser/chunks/BWLobtMG.js +1 -0
- package/dist-browser/chunks/BWX2omqC.js +1 -0
- package/dist-browser/chunks/BX-IJ6Jw.js +1 -0
- package/dist-browser/chunks/BZ67u85L.js +1 -0
- package/dist-browser/chunks/BZL3DkMo.js +1 -0
- package/dist-browser/chunks/BZkTFuN8.js +32 -0
- package/dist-browser/chunks/B_olo1g0.js +1 -0
- package/dist-browser/chunks/B_xcv6lP.js +1 -0
- package/dist-browser/chunks/BadDFgpu.js +3 -0
- package/dist-browser/chunks/BbIllpJG.js +1 -0
- package/dist-browser/chunks/Bc7uTOHd.js +1 -0
- package/dist-browser/chunks/BcH7_nnK.js +1 -0
- package/dist-browser/chunks/Bdd_iq-Z.js +1 -0
- package/dist-browser/chunks/BdkaRoRG.js +3 -0
- package/dist-browser/chunks/BeUM0nnI.js +1 -0
- package/dist-browser/chunks/BfkxY7do.js +13 -0
- package/dist-browser/chunks/BfzfmpKY.js +1 -0
- package/dist-browser/chunks/BgNGXLZH.js +1 -0
- package/dist-browser/chunks/Bgmtnmc9.js +1 -0
- package/dist-browser/chunks/BgtS-68o.js +1 -0
- package/dist-browser/chunks/BhE7ED0P.js +1 -0
- package/dist-browser/chunks/BhG-aLlJ.js +17 -0
- package/dist-browser/chunks/BhtgOF9y.js +1 -0
- package/dist-browser/chunks/BhvPhm_f.js +12 -0
- package/dist-browser/chunks/Bhvb25xz.js +1 -0
- package/dist-browser/chunks/Bi2imP0-.js +1 -0
- package/dist-browser/chunks/Bi4f74NJ.js +1 -0
- package/dist-browser/chunks/BiCMFIxo.js +1 -0
- package/dist-browser/chunks/BiSn0Dtc.js +1 -0
- package/dist-browser/chunks/BiU0PYSX.js +1 -0
- package/dist-browser/chunks/BipZQXT8.js +1 -0
- package/dist-browser/chunks/BiqCT0be.js +1 -0
- package/dist-browser/chunks/BjVVweLJ.js +1 -0
- package/dist-browser/chunks/BjeL5CV8.js +1 -0
- package/dist-browser/chunks/BjikXbkr.js +1 -0
- package/dist-browser/chunks/BkNRpWJF.js +1 -0
- package/dist-browser/chunks/BkWdvCr2.js +1 -0
- package/dist-browser/chunks/BkfYP8sS.js +1 -0
- package/dist-browser/chunks/BkoAp3nt.js +17 -0
- package/dist-browser/chunks/BkuNzUds.js +5 -0
- package/dist-browser/chunks/BlDBqfnQ.js +1 -0
- package/dist-browser/chunks/Blob4piG.js +1 -0
- package/dist-browser/chunks/Bm-NgCJv.js +290 -0
- package/dist-browser/chunks/BmwnZMHR.js +1 -0
- package/dist-browser/chunks/Bn-oguIM.js +1 -0
- package/dist-browser/chunks/Bn8JxKQd.js +947 -0
- package/dist-browser/chunks/Bn8l74kN.js +1 -0
- package/dist-browser/chunks/Bo2vvsC6.js +1 -0
- package/dist-browser/chunks/BoJD7UsQ.js +5 -0
- package/dist-browser/chunks/BoRPdfTd.js +1 -0
- package/dist-browser/chunks/BoTmVVAp.js +1 -0
- package/dist-browser/chunks/BoiOnH_p.js +1 -0
- package/dist-browser/chunks/Bpe2I0GB.js +1 -0
- package/dist-browser/chunks/BqD0o821.js +25 -0
- package/dist-browser/chunks/BqXaJXLb.js +1 -0
- package/dist-browser/chunks/BqsB_Ag5.js +1 -0
- package/dist-browser/chunks/Br-JA8rZ.js +1 -0
- package/dist-browser/chunks/Br2nhNMH.js +1 -0
- package/dist-browser/chunks/BrezGx31.js +3 -0
- package/dist-browser/chunks/BsZMTFvx.js +1 -0
- package/dist-browser/chunks/Bt2nCTua.js +51 -0
- package/dist-browser/chunks/BtM7kQaS.js +1 -0
- package/dist-browser/chunks/BtZNIAhj.js +1 -0
- package/dist-browser/chunks/Btgu8kW9.js +3 -0
- package/dist-browser/chunks/Btjboa9G.js +248 -0
- package/dist-browser/chunks/Btn1Hp7-.js +1 -0
- package/dist-browser/chunks/Bu1cOMsK.js +1 -0
- package/dist-browser/chunks/Bv2bGJo9.js +1 -0
- package/dist-browser/chunks/BvK95JoS.js +1 -0
- package/dist-browser/chunks/BvrPFs0h.js +1 -0
- package/dist-browser/chunks/BvsNGgEj.js +1 -0
- package/dist-browser/chunks/ByyEEkYz.js +1 -0
- package/dist-browser/chunks/BzAJiB5u.js +1 -0
- package/dist-browser/chunks/BzCmY2x1.js +68 -0
- package/dist-browser/chunks/BzKtjbg2.js +1 -0
- package/dist-browser/chunks/BzZ2lwsC.js +134 -0
- package/dist-browser/chunks/BzcZWs3f.js +1 -0
- package/dist-browser/chunks/BzuN4nW7.js +33 -0
- package/dist-browser/chunks/BzwHJPea.js +1 -0
- package/dist-browser/chunks/Bzy44bV2.js +4216 -0
- package/dist-browser/chunks/C-O8NhHK.js +1 -0
- package/dist-browser/chunks/C-_LmeNn.js +934 -0
- package/dist-browser/chunks/C-ztiLpW.js +1 -0
- package/dist-browser/chunks/C0Iji4Qk.js +1 -0
- package/dist-browser/chunks/C12xlM79.js +1 -0
- package/dist-browser/chunks/C1BDCorD.js +99 -0
- package/dist-browser/chunks/C2Dm6eUt.js +1 -0
- package/dist-browser/chunks/C2RePWen.js +1 -0
- package/dist-browser/chunks/C2suuPFw.js +1 -0
- package/dist-browser/chunks/C33aG9gN.js +1 -0
- package/dist-browser/chunks/C3Y15gp1.js +1 -0
- package/dist-browser/chunks/C3gvA1lh.js +1 -0
- package/dist-browser/chunks/C3pLayiC.js +143 -0
- package/dist-browser/chunks/C3wBsE11.js +1 -0
- package/dist-browser/chunks/C4E_bIDB.js +1 -0
- package/dist-browser/chunks/C4OFzvAP.js +1 -0
- package/dist-browser/chunks/C4fzyzUE.js +1 -0
- package/dist-browser/chunks/C5P0RHNI.js +1 -0
- package/dist-browser/chunks/C6XZSTSj.js +39 -0
- package/dist-browser/chunks/C784v2VA.js +1 -0
- package/dist-browser/chunks/C7CUzsYJ.js +1 -0
- package/dist-browser/chunks/C7FykdRJ.js +1 -0
- package/dist-browser/chunks/C7RSxM0z.js +1 -0
- package/dist-browser/chunks/C9J2i9In.js +2 -0
- package/dist-browser/chunks/C9Kd-Lrf.js +1 -0
- package/dist-browser/chunks/C9OKiK4z.js +15 -0
- package/dist-browser/chunks/C9bAX0wX.js +1 -0
- package/dist-browser/chunks/C9duFT9_.js +9 -0
- package/dist-browser/chunks/CA52Vkpa.js +3 -0
- package/dist-browser/chunks/CAB0sdkM.js +8 -0
- package/dist-browser/chunks/CBcRTsvX.js +1 -0
- package/dist-browser/chunks/CC8kNj4O.js +1 -0
- package/dist-browser/chunks/CC_taxfs.js +1 -0
- package/dist-browser/chunks/CCnjeop3.js +1 -0
- package/dist-browser/chunks/CD1Phcj7.js +1 -0
- package/dist-browser/chunks/CDBmfTua.js +1 -0
- package/dist-browser/chunks/CDFKagMr.js +1 -0
- package/dist-browser/chunks/CDZegpP1.js +1 -0
- package/dist-browser/chunks/CD_-ZdOx.js +1 -0
- package/dist-browser/chunks/CDmSfsbx.js +1 -0
- package/dist-browser/chunks/CDy5CkBb.js +1 -0
- package/dist-browser/chunks/CDyybrEA.js +1 -0
- package/dist-browser/chunks/CENY_jwA.js +5 -0
- package/dist-browser/chunks/CEfq3wMj.js +1 -0
- package/dist-browser/chunks/CEtY4HlI.js +1 -0
- package/dist-browser/chunks/CEtbZ-Ou.js +51 -0
- package/dist-browser/chunks/CFVbNh1J.js +1 -0
- package/dist-browser/chunks/CG5A_mHR.js +1 -0
- package/dist-browser/chunks/CGFRQ0IS.js +3 -0
- package/dist-browser/chunks/CGPPrudP.js +1 -0
- package/dist-browser/chunks/CGZdRHCz.js +1 -0
- package/dist-browser/chunks/CG_ggIC3.js +230 -0
- package/dist-browser/chunks/CHD7Siks.js +61 -0
- package/dist-browser/chunks/CHGAmNbz.js +24 -0
- package/dist-browser/chunks/CH_3weAk.js +136 -0
- package/dist-browser/chunks/CHnMaz0U.js +1 -0
- package/dist-browser/chunks/CHx28aAq.js +1 -0
- package/dist-browser/chunks/CIPEdQZg.js +1 -0
- package/dist-browser/chunks/CIU50MA1.js +1 -0
- package/dist-browser/chunks/CIXqygz5.js +42 -0
- package/dist-browser/chunks/CIz-HH07.js +1585 -0
- package/dist-browser/chunks/CJ4zQQhO.js +1 -0
- package/dist-browser/chunks/CJD9mRmQ.js +1 -0
- package/dist-browser/chunks/CJgknJ-O.js +12 -0
- package/dist-browser/chunks/CL1lltpM.js +1 -0
- package/dist-browser/chunks/CLxcu-z_.js +73 -0
- package/dist-browser/chunks/CM3pB59z.js +1 -0
- package/dist-browser/chunks/CM7fr6V2.js +1 -0
- package/dist-browser/chunks/CMCldyjy.js +1 -0
- package/dist-browser/chunks/CMhbdUh_.js +1 -0
- package/dist-browser/chunks/CMj-G0tG.js +1 -0
- package/dist-browser/chunks/CMy5JYMZ.js +1 -0
- package/dist-browser/chunks/CNS048lI.js +1 -0
- package/dist-browser/chunks/CO0SZ1hy.js +1 -0
- package/dist-browser/chunks/COnv2PBF.js +2 -0
- package/dist-browser/chunks/CP27PMpS.js +1 -0
- package/dist-browser/chunks/CQRcPihd.js +6 -0
- package/dist-browser/chunks/CRDIjF8C.js +2 -0
- package/dist-browser/chunks/CRFCYrrv.js +1 -0
- package/dist-browser/chunks/CRL527zA.js +1 -0
- package/dist-browser/chunks/CRuuK4qI.js +1 -0
- package/dist-browser/chunks/CSrliGR5.js +1 -0
- package/dist-browser/chunks/CT24MROG.js +36 -0
- package/dist-browser/chunks/CTKsfpS6.js +1 -0
- package/dist-browser/chunks/CTovL-9G.js +1 -0
- package/dist-browser/chunks/CU2_4WYp.js +1 -0
- package/dist-browser/chunks/CVn3AkL4.js +3 -0
- package/dist-browser/chunks/CW47wlpJ.js +1 -0
- package/dist-browser/chunks/CWtE2FH4.js +6 -0
- package/dist-browser/chunks/CWtqwiJb.js +1 -0
- package/dist-browser/chunks/CX2yvOMR.js +32 -0
- package/dist-browser/chunks/CXYvZiC5.js +1 -0
- package/dist-browser/chunks/CY2_o-A_.js +1 -0
- package/dist-browser/chunks/CYD5IpHG.js +1 -0
- package/dist-browser/chunks/CYFmo-2d.js +1 -0
- package/dist-browser/chunks/CYzJaZmG.js +1 -0
- package/dist-browser/chunks/CZng9q4s.js +1 -0
- package/dist-browser/chunks/C_3LSlp_.js +1 -0
- package/dist-browser/chunks/C_popvm5.js +1 -0
- package/dist-browser/chunks/Ca2qCbBO.js +227 -0
- package/dist-browser/chunks/CaayFmFc.js +68 -0
- package/dist-browser/chunks/CagC9ufD.js +6 -0
- package/dist-browser/chunks/CamHr2sm.js +9 -0
- package/dist-browser/chunks/Caw9wDgF.js +1 -0
- package/dist-browser/chunks/CbRyzWz3.js +1 -0
- package/dist-browser/chunks/CcQz6dxG.js +68 -0
- package/dist-browser/chunks/CcUHIKVc.js +1 -0
- package/dist-browser/chunks/Cd20lYkt.js +23 -0
- package/dist-browser/chunks/Cdj8C4sv.js +1 -0
- package/dist-browser/chunks/CeWzMWwP.js +1 -0
- package/dist-browser/chunks/Ceeo2sCz.js +1 -0
- package/dist-browser/chunks/CerF2aP5.js +1 -0
- package/dist-browser/chunks/Cew-kv76.js +1 -0
- package/dist-browser/chunks/Cf1F89pD.js +1 -0
- package/dist-browser/chunks/Cff8_5zr.js +1 -0
- package/dist-browser/chunks/Cgy6G_V-.js +1 -0
- package/dist-browser/chunks/ChAqhjhd.js +243 -0
- package/dist-browser/chunks/Chg_Q8x6.js +1 -0
- package/dist-browser/chunks/Chx9z6ee.js +3 -0
- package/dist-browser/chunks/Ci0DiZOM.js +1 -0
- package/dist-browser/chunks/CiD_XHlg.js +1 -0
- package/dist-browser/chunks/CjL-uP84.js +1 -0
- package/dist-browser/chunks/CjPBNVRF.js +2 -0
- package/dist-browser/chunks/CjTILWD4.js +3 -0
- package/dist-browser/chunks/CkmGh-87.js +1 -0
- package/dist-browser/chunks/ClZqxSEX.js +1 -0
- package/dist-browser/chunks/CluBrQDl.js +1 -0
- package/dist-browser/chunks/Clzbw8hC.js +104 -0
- package/dist-browser/chunks/CmEJbuVc.js +1 -0
- package/dist-browser/chunks/CmlWyQpr.js +1 -0
- package/dist-browser/chunks/Cnh5-qw-.js +10 -0
- package/dist-browser/chunks/CnwbVRym.js +1 -0
- package/dist-browser/chunks/Co55Z6b-.js +34 -0
- package/dist-browser/chunks/CoqDcyee.js +1 -0
- package/dist-browser/chunks/CorZBnkZ.js +71 -0
- package/dist-browser/chunks/CpKf07f9.js +72 -0
- package/dist-browser/chunks/CqXobSJH.js +82 -0
- package/dist-browser/chunks/CqwcKTEN.js +1 -0
- package/dist-browser/chunks/Cs23D-lk.js +18 -0
- package/dist-browser/chunks/CsT20qOq.js +1 -0
- package/dist-browser/chunks/CsTuUPUb.js +1 -0
- package/dist-browser/chunks/CtCvKs-8.js +1 -0
- package/dist-browser/chunks/CtpF73Mi.js +1 -0
- package/dist-browser/chunks/CuHid4qh.js +1 -0
- package/dist-browser/chunks/CuhwmTWw.js +2 -0
- package/dist-browser/chunks/Cv31r4NA.js +1 -0
- package/dist-browser/chunks/CvVTau-c.js +1 -0
- package/dist-browser/chunks/Cvdyeg_0.js +1 -0
- package/dist-browser/chunks/CvgsNxMb.js +1 -0
- package/dist-browser/chunks/Cvk3fWJd.js +31 -0
- package/dist-browser/chunks/Cvq_OonK.js +1 -0
- package/dist-browser/chunks/Cvzg7xRz.js +1039 -0
- package/dist-browser/chunks/CwPUhsCN.js +111 -0
- package/dist-browser/chunks/CwTYnDSQ.js +1 -0
- package/dist-browser/chunks/CwVb7sDh.js +1 -0
- package/dist-browser/chunks/CwkwVzf9.js +1 -0
- package/dist-browser/chunks/Cwsm87qt.js +1 -0
- package/dist-browser/chunks/CwtYJaZ0.js +1 -0
- package/dist-browser/chunks/CxBgnQIE.js +1 -0
- package/dist-browser/chunks/CxRCGV_D.js +1 -0
- package/dist-browser/chunks/CxW3h7EP.js +1 -0
- package/dist-browser/chunks/CxdFFqFC.js +1 -0
- package/dist-browser/chunks/Cxl6U4QM.js +1 -0
- package/dist-browser/chunks/CxqqJceE.js +262 -0
- package/dist-browser/chunks/CyUjhzls.js +1 -0
- package/dist-browser/chunks/CzHZycAX.js +1 -0
- package/dist-browser/chunks/CzVBHx3T.js +1 -0
- package/dist-browser/chunks/D-J5r5vm.js +502 -0
- package/dist-browser/chunks/D-ZRVGDk.js +1 -0
- package/dist-browser/chunks/D10MTZ8f.js +1 -0
- package/dist-browser/chunks/D1dFmEHc.js +82 -0
- package/dist-browser/chunks/D2SJBO5U.js +1 -0
- package/dist-browser/chunks/D2bDAUlP.js +1 -0
- package/dist-browser/chunks/D2qpNyTi.js +1 -0
- package/dist-browser/chunks/D3Fr6yvq.js +1 -0
- package/dist-browser/chunks/D3_eaTYS.js +1 -0
- package/dist-browser/chunks/D3lBoMMr.js +29 -0
- package/dist-browser/chunks/D5CFWMVX.js +1 -0
- package/dist-browser/chunks/D5Cj4ub7.js +1 -0
- package/dist-browser/chunks/D5EJDMZ-.js +2 -0
- package/dist-browser/chunks/D6E_gImS.js +1 -0
- package/dist-browser/chunks/D6XXX9Ue.js +1 -0
- package/dist-browser/chunks/D6fd1dZA.js +1 -0
- package/dist-browser/chunks/D852BHwA.js +40 -0
- package/dist-browser/chunks/D8inQ_yL.js +1 -0
- package/dist-browser/chunks/D9XZ_4Ga.js +145 -0
- package/dist-browser/chunks/D9dlo-Ln.js +1 -0
- package/dist-browser/chunks/DAB0WqX0.js +1 -0
- package/dist-browser/chunks/DAH2JXIW.js +1 -0
- package/dist-browser/chunks/DAPFhXVb.js +22 -0
- package/dist-browser/chunks/DAxE8pMD.js +45 -0
- package/dist-browser/chunks/DBj6QGQs.js +1 -0
- package/dist-browser/chunks/DC3L5U86.js +1 -0
- package/dist-browser/chunks/DC9vc-0L.js +1 -0
- package/dist-browser/chunks/DCJlJ3lv.js +1 -0
- package/dist-browser/chunks/DCaQLeIq.js +1 -0
- package/dist-browser/chunks/DCc-gTDg.js +1 -0
- package/dist-browser/chunks/DD2V7Wxl.js +1 -0
- package/dist-browser/chunks/DD6onItE.js +1 -0
- package/dist-browser/chunks/DDLmvpjg.js +1 -0
- package/dist-browser/chunks/DDRCiC_a.js +1 -0
- package/dist-browser/chunks/DEW70SgN.js +1 -0
- package/dist-browser/chunks/DEucxoKb.js +1 -0
- package/dist-browser/chunks/DF6Qh6eu.js +1 -0
- package/dist-browser/chunks/DFtj_qQf.js +63 -0
- package/dist-browser/chunks/DG4h2xXm.js +45 -0
- package/dist-browser/chunks/DGYxR7PN.js +26 -0
- package/dist-browser/chunks/DGlba0EV.js +1 -0
- package/dist-browser/chunks/DHOehIg0.js +30 -0
- package/dist-browser/chunks/DHiTLWtz.js +1 -0
- package/dist-browser/chunks/DIHxCXEJ.js +1 -0
- package/dist-browser/chunks/DII2y8tL.js +546 -0
- package/dist-browser/chunks/DIcTMzLD.js +31 -0
- package/dist-browser/chunks/DImXrYb5.js +1 -0
- package/dist-browser/chunks/DIvOsQJS.js +393 -0
- package/dist-browser/chunks/DJCfJlBy.js +1 -0
- package/dist-browser/chunks/DKnN7RH0.js +1 -0
- package/dist-browser/chunks/DKrOx_1M.js +1 -0
- package/dist-browser/chunks/DMcWzziy.js +1 -0
- package/dist-browser/chunks/DMk6G0lv.js +1 -0
- package/dist-browser/chunks/DMyNEYzI.js +1 -0
- package/dist-browser/chunks/DN0xP1fa.js +1 -0
- package/dist-browser/chunks/DNef-bWt.js +1 -0
- package/dist-browser/chunks/DNhTxxCh.js +1 -0
- package/dist-browser/chunks/DNoIqPE7.js +1 -0
- package/dist-browser/chunks/DNsR67l1.js +3 -0
- package/dist-browser/chunks/DOEmZHjx.js +1 -0
- package/dist-browser/chunks/DOFYt5cj.js +1 -0
- package/dist-browser/chunks/DOWMFTFl.js +38 -0
- package/dist-browser/chunks/DOYycP3M.js +1 -0
- package/dist-browser/chunks/DOidSPk5.js +1 -0
- package/dist-browser/chunks/DOvE9vCY.js +97 -0
- package/dist-browser/chunks/DOyIRes1.js +1 -0
- package/dist-browser/chunks/DPIksCnG.js +41 -0
- package/dist-browser/chunks/DPNgRv8u.js +1 -0
- package/dist-browser/chunks/DPXctdFS.js +27 -0
- package/dist-browser/chunks/DPnn0uIO.js +1 -0
- package/dist-browser/chunks/DQ0A9BJI.js +1 -0
- package/dist-browser/chunks/DQbqNpgw.js +1 -0
- package/dist-browser/chunks/DQea7zxR.js +1 -0
- package/dist-browser/chunks/DSMSQCrr.js +36 -0
- package/dist-browser/chunks/DSp9shD_.js +1 -0
- package/dist-browser/chunks/DT0rWxA4.js +1176 -0
- package/dist-browser/chunks/DTtjHrtM.js +1 -0
- package/dist-browser/chunks/DV53iZve.js +64 -0
- package/dist-browser/chunks/DVAMQgZs.js +1 -0
- package/dist-browser/chunks/DVcRBsZ0.js +69 -0
- package/dist-browser/chunks/DVrViq4W.js +1 -0
- package/dist-browser/chunks/DWe0PJKb.js +1 -0
- package/dist-browser/chunks/DWgUahRJ.js +1 -0
- package/dist-browser/chunks/DXJRs_pC.js +1 -0
- package/dist-browser/chunks/DXq97sWO.js +1 -0
- package/dist-browser/chunks/DXzwsPHQ.js +8 -0
- package/dist-browser/chunks/DYoIHzIt.js +2 -0
- package/dist-browser/chunks/DZJGj1NY.js +1 -0
- package/dist-browser/chunks/DZYUBtK-.js +10 -0
- package/dist-browser/chunks/DZmRZ_iP.js +1 -0
- package/dist-browser/chunks/D_MQ9Xc9.js +1 -0
- package/dist-browser/chunks/D_V_oqfi.js +1 -0
- package/dist-browser/chunks/D_fJrOcA.js +1 -0
- package/dist-browser/chunks/DaE8j1Mj.js +1 -0
- package/dist-browser/chunks/DaNJDW05.js +120 -0
- package/dist-browser/chunks/DaqOKjgV.js +2 -0
- package/dist-browser/chunks/DbM1VGG0.js +1 -0
- package/dist-browser/chunks/DbVolxbX.js +1 -0
- package/dist-browser/chunks/Dd3Azzh1.js +102 -0
- package/dist-browser/chunks/Dd_HZKyk.js +1 -0
- package/dist-browser/chunks/DePrIwoT.js +1 -0
- package/dist-browser/chunks/Df-3V4RI.js +1 -0
- package/dist-browser/chunks/DfPCBWZC.js +35 -0
- package/dist-browser/chunks/DfTjtDZE.js +1 -0
- package/dist-browser/chunks/Dfdpy3ar.js +1 -0
- package/dist-browser/chunks/DhQi6uM8.js +1 -0
- package/dist-browser/chunks/Dhq0zrZC.js +131 -0
- package/dist-browser/chunks/DhrQ_H4H.js +1 -0
- package/dist-browser/chunks/Di27GzYt.js +1 -0
- package/dist-browser/chunks/Di8-zyqt.js +1 -0
- package/dist-browser/chunks/DifZdnzu.js +1 -0
- package/dist-browser/chunks/DikvOXI-.js +1 -0
- package/dist-browser/chunks/Dj3lr7h3.js +33 -0
- package/dist-browser/chunks/Dj8ovMlo.js +1 -0
- package/dist-browser/chunks/DjcMDPrm.js +67 -0
- package/dist-browser/chunks/DkVVho_1.js +1 -0
- package/dist-browser/chunks/Dkh1AfX5.js +1 -0
- package/dist-browser/chunks/DkwGHqUD.js +1 -0
- package/dist-browser/chunks/Dl96d5U7.js +1 -0
- package/dist-browser/chunks/DlW29B4u.js +3 -0
- package/dist-browser/chunks/DmSNe3jl.js +387 -0
- package/dist-browser/chunks/DmxSxKXn.js +1 -0
- package/dist-browser/chunks/DnFdLC2j.js +1 -0
- package/dist-browser/chunks/DnUyDgmE.js +1 -0
- package/dist-browser/chunks/DnvK0nWc.js +1 -0
- package/dist-browser/chunks/DoEd4p-l.js +1 -0
- package/dist-browser/chunks/DoX7pGYd.js +140 -0
- package/dist-browser/chunks/Dp6fzsZG.js +1 -0
- package/dist-browser/chunks/DpM23pTz.js +33 -0
- package/dist-browser/chunks/DpZZtTTL.js +2 -0
- package/dist-browser/chunks/DqAbaJTn.js +1 -0
- package/dist-browser/chunks/DqMSA0q-.js +1 -0
- package/dist-browser/chunks/DqNrCZSo.js +1 -0
- package/dist-browser/chunks/DqP3aSvp.js +43 -0
- package/dist-browser/chunks/Dqi6K18W.js +1 -0
- package/dist-browser/chunks/DqqKpYoS.js +2 -0
- package/dist-browser/chunks/Dqqmos-r.js +1 -0
- package/dist-browser/chunks/Dr26QZ_C.js +1 -0
- package/dist-browser/chunks/DrRp_OBG.js +1 -0
- package/dist-browser/chunks/Ds0gQyON.js +1 -0
- package/dist-browser/chunks/DsNI9SjT.js +1 -0
- package/dist-browser/chunks/DskxWO57.js +1 -0
- package/dist-browser/chunks/DspI2fym.js +33 -0
- package/dist-browser/chunks/DtbRpC-a.js +2 -0
- package/dist-browser/chunks/Dtc9u0hV.js +1 -0
- package/dist-browser/chunks/DtdxxwYW.js +1 -0
- package/dist-browser/chunks/Du2r_IDC.js +1 -0
- package/dist-browser/chunks/DuiL5B5s.js +1 -0
- package/dist-browser/chunks/DvMRww-v.js +1 -0
- package/dist-browser/chunks/Dvzw_jou.js +1 -0
- package/dist-browser/chunks/DwsXVYGF.js +1 -0
- package/dist-browser/chunks/DxVZve2V.js +89 -0
- package/dist-browser/chunks/Dy4Ev-pT.js +1 -0
- package/dist-browser/chunks/DyGuOmo0.js +1 -0
- package/dist-browser/chunks/DyXA-iwx.js +1 -0
- package/dist-browser/chunks/Dypqlsev.js +1 -0
- package/dist-browser/chunks/Dyqt3CuN.js +1 -0
- package/dist-browser/chunks/DyxvzuFy.js +284 -0
- package/dist-browser/chunks/DzMSiy_7.js +1 -0
- package/dist-browser/chunks/DzaY1F1G.js +1 -0
- package/dist-browser/chunks/EtRHumNJ.js +1 -0
- package/dist-browser/chunks/FASUCRk-.js +3 -0
- package/dist-browser/chunks/FeUl7sn8.js +1 -0
- package/dist-browser/chunks/FjuaFAN8.js +25 -0
- package/dist-browser/chunks/FsV9kMlK.js +1 -0
- package/dist-browser/chunks/GB4zXBMC.js +1 -0
- package/dist-browser/chunks/Guirowam.js +8 -0
- package/dist-browser/chunks/HJHNBZzR.js +1 -0
- package/dist-browser/chunks/HOXwa5Zi.js +1 -0
- package/dist-browser/chunks/HhGGA2q1.js +1 -0
- package/dist-browser/chunks/HjLsj9Wb.js +1 -0
- package/dist-browser/chunks/ILniMPMQ.js +1 -0
- package/dist-browser/chunks/IPgW5q-o.js +1 -0
- package/dist-browser/chunks/IRJFdyYz.js +1 -0
- package/dist-browser/chunks/J1EyHJSp.js +1 -0
- package/dist-browser/chunks/JtVcQQeX.js +5 -0
- package/dist-browser/chunks/KYZpoAyE.js +1 -0
- package/dist-browser/chunks/KjHCb3-W.js +2 -0
- package/dist-browser/chunks/Kp8JypHd.js +441 -0
- package/dist-browser/chunks/Ku6I7UKh.js +1 -0
- package/dist-browser/chunks/KzprlngN.js +1 -0
- package/dist-browser/chunks/L5CwTQJI.js +4 -0
- package/dist-browser/chunks/L9tCceA2.js +150 -0
- package/dist-browser/chunks/L_tB79W_.js +1 -0
- package/dist-browser/chunks/MDiJyUbk.js +1 -0
- package/dist-browser/chunks/MaXgxQlM.js +1 -0
- package/dist-browser/chunks/N5x7ZUws.js +1 -0
- package/dist-browser/chunks/NZYk81nU.js +1 -0
- package/dist-browser/chunks/Np7O_rbA.js +1 -0
- package/dist-browser/chunks/Oo8Rc01u.js +1 -0
- package/dist-browser/chunks/OtECxeEN.js +9 -0
- package/dist-browser/chunks/OtOkABqS.js +158 -0
- package/dist-browser/chunks/Oyc0qEPK.js +1 -0
- package/dist-browser/chunks/PDPf8POY.js +1 -0
- package/dist-browser/chunks/QRJE7tia.js +1 -0
- package/dist-browser/chunks/Q_sagimg.js +1 -0
- package/dist-browser/chunks/QgFqrot_.js +1 -0
- package/dist-browser/chunks/QpPH2K9r.js +1 -0
- package/dist-browser/chunks/R8vFmq4f.js +1 -0
- package/dist-browser/chunks/RxUw8kPH.js +1 -0
- package/dist-browser/chunks/SO6iJj34.js +1 -0
- package/dist-browser/chunks/SWr9_u-k.js +13 -0
- package/dist-browser/chunks/TQJJL2UK.js +27 -0
- package/dist-browser/chunks/UE6Xi3ol.js +1 -0
- package/dist-browser/chunks/VGXLiJ0S.js +1 -0
- package/dist-browser/chunks/VMH7wDAk.js +1 -0
- package/dist-browser/chunks/VwXcqbG4.js +23 -0
- package/dist-browser/chunks/Wmd1pmNu.js +1 -0
- package/dist-browser/chunks/XTdr3vkK.js +1 -0
- package/dist-browser/chunks/XaLSS-X1.js +23 -0
- package/dist-browser/chunks/XhPbWY7N.js +1 -0
- package/dist-browser/chunks/Y4nknrnT.js +1 -0
- package/dist-browser/chunks/Y9xF8jFn.js +23 -0
- package/dist-browser/chunks/_-SUJuni.js +1 -0
- package/dist-browser/chunks/_M7-qabf.js +101 -0
- package/dist-browser/chunks/_qsNVwXW.js +1 -0
- package/dist-browser/chunks/_vvwCLWQ.js +1 -0
- package/dist-browser/chunks/b6V8XMYY.js +1 -0
- package/dist-browser/chunks/bA3FB4mi.js +3 -0
- package/dist-browser/chunks/bAf7cF9y.js +1 -0
- package/dist-browser/chunks/bhrkTdEx.js +538 -0
- package/dist-browser/chunks/dFGbvMHe.js +1 -0
- package/dist-browser/chunks/dOIX3hJ7.js +1 -0
- package/dist-browser/chunks/eUYPiZ2p.js +1 -0
- package/dist-browser/chunks/eUiHGfWU.js +1 -0
- package/dist-browser/chunks/f6_vnw-E.js +1 -0
- package/dist-browser/chunks/fE2ZfJiX.js +1 -0
- package/dist-browser/chunks/gZQtAM7h.js +2 -0
- package/dist-browser/chunks/h8XD1xl-.js +1 -0
- package/dist-browser/chunks/hEdm-zUW.js +1 -0
- package/dist-browser/chunks/hWCYme74.js +1 -0
- package/dist-browser/chunks/hfB064S0.js +1 -0
- package/dist-browser/chunks/hlEBxUea.js +1 -0
- package/dist-browser/chunks/j5sGo2Pt.js +1 -0
- package/dist-browser/chunks/kG0ku-oF.js +1 -0
- package/dist-browser/chunks/kLNROLfT.js +1 -0
- package/dist-browser/chunks/kggDnku6.js +1 -0
- package/dist-browser/chunks/klRtNUrN.js +1 -0
- package/dist-browser/chunks/lOD1Gn8c.js +1 -0
- package/dist-browser/chunks/lrh33Ko2.js +1 -0
- package/dist-browser/chunks/mB6FoGFb.js +1 -0
- package/dist-browser/chunks/msmucz6Z.js +1 -0
- package/dist-browser/chunks/nEtJtbDE.js +1 -0
- package/dist-browser/chunks/nvwS1LmH.js +1 -0
- package/dist-browser/chunks/oqmnhzmi.js +2 -0
- package/dist-browser/chunks/pICTBHHN.js +1 -0
- package/dist-browser/chunks/pU4H1b3r.js +43 -0
- package/dist-browser/chunks/qBpAlJSP.js +1 -0
- package/dist-browser/chunks/qCjqID6v.js +1 -0
- package/dist-browser/chunks/r-cfH8A5.js +1 -0
- package/dist-browser/chunks/rgDalb_G.js +1 -0
- package/dist-browser/chunks/rolldown-runtime-hePW80VL.js +1 -0
- package/dist-browser/chunks/sdmDudQj.js +1 -0
- package/dist-browser/chunks/shRf5cdU.js +1 -0
- package/dist-browser/chunks/tvcsfh86.js +1 -0
- package/dist-browser/chunks/tz7IArSg.js +1 -0
- package/dist-browser/chunks/u--BrnjZ.js +1 -0
- package/dist-browser/chunks/uBIymjUX.js +1 -0
- package/dist-browser/chunks/uHO_HSNA.js +1 -0
- package/dist-browser/chunks/uZz_bF7-.js +1 -0
- package/dist-browser/chunks/uc0Y9KUA.js +1 -0
- package/dist-browser/chunks/ud6upqGO.js +2 -0
- package/dist-browser/chunks/udTuD3NU.js +1 -0
- package/dist-browser/chunks/ul0Kb67V.js +38 -0
- package/dist-browser/chunks/uq1wJ3hU.js +322 -0
- package/dist-browser/chunks/vA_owFWw.js +1 -0
- package/dist-browser/chunks/vgYSnL0k.js +1 -0
- package/dist-browser/chunks/vjQO9b4G.js +1 -0
- package/dist-browser/chunks/vm1kntVK.js +18 -0
- package/dist-browser/chunks/vnMr9U1p.js +1 -0
- package/dist-browser/chunks/vyik5ymL.js +1 -0
- package/dist-browser/chunks/w2RB3fs9.js +1 -0
- package/dist-browser/chunks/wmdxOiEL.js +1 -0
- package/dist-browser/chunks/xtpWQ17d.js +27 -0
- package/dist-browser/chunks/yRMgu4ay.js +3 -0
- package/dist-browser/chunks/yYrq3lUc.js +42 -0
- package/dist-browser/chunks/yieoIIce.js +1 -0
- package/dist-browser/chunks/yzr1keSX.js +38 -0
- package/dist-browser/chunks/z94mqM9o.js +1 -0
- package/dist-browser/chunks/zSWKwMId.js +1 -0
- package/dist-browser/importmap.json +1761 -0
- package/dist-browser/koota/react.js +1 -0
- package/dist-browser/koota.js +1 -0
- package/dist-browser/postprocessing.js +1 -0
- package/dist-browser/react/jsx-runtime.js +1 -0
- package/dist-browser/react-dom/client.js +1 -0
- package/dist-browser/react-dom.js +1 -0
- package/dist-browser/react.js +1 -0
- package/dist-browser/release.json +11655 -0
- package/dist-browser/three/addons/Addons.js +1 -0
- package/dist-browser/three/addons/animation/AnimationClipCreator.js +1 -0
- package/dist-browser/three/addons/animation/CCDIKSolver.js +1 -0
- package/dist-browser/three/addons/capabilities/WebGL.js +1 -0
- package/dist-browser/three/addons/capabilities/WebGPU.js +1 -0
- package/dist-browser/three/addons/controls/ArcballControls.js +1 -0
- package/dist-browser/three/addons/controls/DragControls.js +1 -0
- package/dist-browser/three/addons/controls/FirstPersonControls.js +1 -0
- package/dist-browser/three/addons/controls/FlyControls.js +1 -0
- package/dist-browser/three/addons/controls/MapControls.js +1 -0
- package/dist-browser/three/addons/controls/OrbitControls.js +1 -0
- package/dist-browser/three/addons/controls/PointerLockControls.js +1 -0
- package/dist-browser/three/addons/controls/TrackballControls.js +1 -0
- package/dist-browser/three/addons/controls/TransformControls.js +1 -0
- package/dist-browser/three/addons/csm/CSM.js +1 -0
- package/dist-browser/three/addons/csm/CSMFrustum.js +1 -0
- package/dist-browser/three/addons/csm/CSMHelper.js +1 -0
- package/dist-browser/three/addons/csm/CSMShader.js +1 -0
- package/dist-browser/three/addons/csm/CSMShadowNode.js +1 -0
- package/dist-browser/three/addons/curves/CurveExtras.js +1 -0
- package/dist-browser/three/addons/curves/NURBSCurve.js +1 -0
- package/dist-browser/three/addons/curves/NURBSSurface.js +1 -0
- package/dist-browser/three/addons/curves/NURBSUtils.js +1 -0
- package/dist-browser/three/addons/curves/NURBSVolume.js +1 -0
- package/dist-browser/three/addons/effects/AnaglyphEffect.js +1 -0
- package/dist-browser/three/addons/effects/AsciiEffect.js +1 -0
- package/dist-browser/three/addons/effects/OutlineEffect.js +1 -0
- package/dist-browser/three/addons/effects/ParallaxBarrierEffect.js +1 -0
- package/dist-browser/three/addons/effects/StereoEffect.js +1 -0
- package/dist-browser/three/addons/environments/ColorEnvironment.js +1 -0
- package/dist-browser/three/addons/environments/DebugEnvironment.js +1 -0
- package/dist-browser/three/addons/environments/RoomEnvironment.js +1 -0
- package/dist-browser/three/addons/exporters/DRACOExporter.js +1 -0
- package/dist-browser/three/addons/exporters/EXRExporter.js +1 -0
- package/dist-browser/three/addons/exporters/GLTFExporter.js +1 -0
- package/dist-browser/three/addons/exporters/KTX2Exporter.js +1 -0
- package/dist-browser/three/addons/exporters/OBJExporter.js +1 -0
- package/dist-browser/three/addons/exporters/PLYExporter.js +1 -0
- package/dist-browser/three/addons/exporters/STLExporter.js +1 -0
- package/dist-browser/three/addons/exporters/USDZExporter.js +1 -0
- package/dist-browser/three/addons/generators/CityGenerator.js +1 -0
- package/dist-browser/three/addons/generators/ForestGenerator.js +1 -0
- package/dist-browser/three/addons/generators/TerrainGenerator.js +1 -0
- package/dist-browser/three/addons/generators/TreeGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/BenchGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/CarGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/CityGeneratorUtils.js +1 -0
- package/dist-browser/three/addons/generators/city/HydrantGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/InstancedMeshGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/PersonGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/SidewalkGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/SkyscraperGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/StreetTreeGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/StreetlightGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/TrafficlightGenerator.js +1 -0
- package/dist-browser/three/addons/generators/city/TrashcanGenerator.js +1 -0
- package/dist-browser/three/addons/geometries/BoxLineGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/ConvexGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/DecalGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/LoftGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/ParametricFunctions.js +1 -0
- package/dist-browser/three/addons/geometries/ParametricGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/RoundedBoxGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/TeapotGeometry.js +1 -0
- package/dist-browser/three/addons/geometries/TextGeometry.js +1 -0
- package/dist-browser/three/addons/gpgpu/BitonicSort.js +1 -0
- package/dist-browser/three/addons/gpgpu/CountingSort.js +1 -0
- package/dist-browser/three/addons/helpers/AnimationPathHelper.js +1 -0
- package/dist-browser/three/addons/helpers/LightProbeGridHelper.js +1 -0
- package/dist-browser/three/addons/helpers/LightProbeGridHelperWebGL.js +80 -0
- package/dist-browser/three/addons/helpers/LightProbeHelper.js +1 -0
- package/dist-browser/three/addons/helpers/LightProbeHelperGPU.js +1 -0
- package/dist-browser/three/addons/helpers/OctreeHelper.js +1 -0
- package/dist-browser/three/addons/helpers/PositionalAudioHelper.js +1 -0
- package/dist-browser/three/addons/helpers/RapierHelper.js +1 -0
- package/dist-browser/three/addons/helpers/RectAreaLightHelper.js +1 -0
- package/dist-browser/three/addons/helpers/TextureHelper.js +1 -0
- package/dist-browser/three/addons/helpers/TextureHelperGPU.js +1 -0
- package/dist-browser/three/addons/helpers/VertexNormalsHelper.js +1 -0
- package/dist-browser/three/addons/helpers/VertexTangentsHelper.js +1 -0
- package/dist-browser/three/addons/helpers/ViewHelper.js +1 -0
- package/dist-browser/three/addons/inspector/Extension.js +1 -0
- package/dist-browser/three/addons/inspector/Inspector.js +1 -0
- package/dist-browser/three/addons/inspector/RendererInspector.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/ColorGrading.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/ColorWheel.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/CurveEditor.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/LUT3DStyle.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/LUTMath.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/BrightnessModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ColorWheelModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ContrastModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/CurvesModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ExposureHueModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ExposureModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/HueModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ImportedCubeModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/Module.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/OutputModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/RendererModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/SatVibranceModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/SaturationModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/VibranceModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/color-grading/modules/WhiteBalanceModule.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/tsl-graph/TSLGraphEditor.js +1 -0
- package/dist-browser/three/addons/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Console.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Memory.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Parameters.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Performance.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Settings.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Timeline.js +1 -0
- package/dist-browser/three/addons/inspector/tabs/Viewer.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Graph.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Item.js +1 -0
- package/dist-browser/three/addons/inspector/ui/List.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Profiler.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Style.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Tab.js +1 -0
- package/dist-browser/three/addons/inspector/ui/Values.js +1 -0
- package/dist-browser/three/addons/inspector/ui/utils.js +1 -0
- package/dist-browser/three/addons/interaction/InteractionManager.js +1 -0
- package/dist-browser/three/addons/interactive/HTMLMesh.js +1 -0
- package/dist-browser/three/addons/interactive/InteractiveGroup.js +1 -0
- package/dist-browser/three/addons/interactive/SelectionBox.js +1 -0
- package/dist-browser/three/addons/interactive/SelectionHelper.js +1 -0
- package/dist-browser/three/addons/libs/chevrotain.module.min.js +1 -0
- package/dist-browser/three/addons/libs/demuxer_mp4.js +1 -0
- package/dist-browser/three/addons/libs/fflate.module.js +1 -0
- package/dist-browser/three/addons/libs/ktx-parse.module.js +1 -0
- package/dist-browser/three/addons/libs/lil-gui.module.min.js +4 -0
- package/dist-browser/three/addons/libs/meshopt_clusterizer.module.js +1 -0
- package/dist-browser/three/addons/libs/meshopt_decoder.module.js +1 -0
- package/dist-browser/three/addons/libs/meshopt_simplifier.module.js +1 -0
- package/dist-browser/three/addons/libs/mikktspace.module.js +1 -0
- package/dist-browser/three/addons/libs/motion-controllers.module.js +1 -0
- package/dist-browser/three/addons/libs/potpack.module.js +1 -0
- package/dist-browser/three/addons/libs/stats.module.js +1 -0
- package/dist-browser/three/addons/libs/surfaceNet.js +1 -0
- package/dist-browser/three/addons/libs/tween.module.js +1 -0
- package/dist-browser/three/addons/libs/utif.module.js +1 -0
- package/dist-browser/three/addons/libs/zstddec.module.js +1 -0
- package/dist-browser/three/addons/lighting/ClusteredLighting.js +1 -0
- package/dist-browser/three/addons/lighting/DynamicLighting.js +1 -0
- package/dist-browser/three/addons/lighting/LightProbeGrid.js +1 -0
- package/dist-browser/three/addons/lighting/LightProbeGridUtils.js +1 -0
- package/dist-browser/three/addons/lighting/LightProbeGridWebGL.js +135 -0
- package/dist-browser/three/addons/lighting/vxgi/VXGIConeTracer.js +1 -0
- package/dist-browser/three/addons/lighting/vxgi/VXGINode.js +1 -0
- package/dist-browser/three/addons/lighting/vxgi/VXGISceneCollector.js +1 -0
- package/dist-browser/three/addons/lighting/vxgi/VXGIVolume.js +1 -0
- package/dist-browser/three/addons/lights/LightProbeGenerator.js +1 -0
- package/dist-browser/three/addons/lights/RectAreaLightTexturesLib.js +1 -0
- package/dist-browser/three/addons/lights/RectAreaLightUniformsLib.js +1 -0
- package/dist-browser/three/addons/lights/SunLight.js +1 -0
- package/dist-browser/three/addons/lights/SunLightNode.js +1 -0
- package/dist-browser/three/addons/lights/SunLightShadow.js +1 -0
- package/dist-browser/three/addons/lights/SunShadowNode.js +1 -0
- package/dist-browser/three/addons/lines/Line2.js +1 -0
- package/dist-browser/three/addons/lines/LineGeometry.js +1 -0
- package/dist-browser/three/addons/lines/LineMaterial.js +1 -0
- package/dist-browser/three/addons/lines/LineSegments2.js +1 -0
- package/dist-browser/three/addons/lines/LineSegmentsGeometry.js +1 -0
- package/dist-browser/three/addons/lines/Wireframe.js +1 -0
- package/dist-browser/three/addons/lines/WireframeGeometry2.js +1 -0
- package/dist-browser/three/addons/lines/webgpu/Line2.js +1 -0
- package/dist-browser/three/addons/lines/webgpu/LineSegments2.js +1 -0
- package/dist-browser/three/addons/lines/webgpu/Wireframe.js +1 -0
- package/dist-browser/three/addons/loaders/3DMLoader.js +1 -0
- package/dist-browser/three/addons/loaders/3MFLoader.js +1 -0
- package/dist-browser/three/addons/loaders/AMFLoader.js +1 -0
- package/dist-browser/three/addons/loaders/BVHLoader.js +1 -0
- package/dist-browser/three/addons/loaders/ColladaLoader.js +1 -0
- package/dist-browser/three/addons/loaders/DDSLoader.js +1 -0
- package/dist-browser/three/addons/loaders/DRACOLoader.js +1 -0
- package/dist-browser/three/addons/loaders/EXRLoader.js +1 -0
- package/dist-browser/three/addons/loaders/FBXLoader.js +1 -0
- package/dist-browser/three/addons/loaders/FontLoader.js +1 -0
- package/dist-browser/three/addons/loaders/GCodeLoader.js +1 -0
- package/dist-browser/three/addons/loaders/GLTFGaussianSplatLoaderExtension.js +1 -0
- package/dist-browser/three/addons/loaders/GLTFLoader.js +1 -0
- package/dist-browser/three/addons/loaders/GaussianSplatPLYLoader.js +1 -0
- package/dist-browser/three/addons/loaders/HDRCubeTextureLoader.js +1 -0
- package/dist-browser/three/addons/loaders/HDRLoader.js +1 -0
- package/dist-browser/three/addons/loaders/IESLoader.js +1 -0
- package/dist-browser/three/addons/loaders/KMZLoader.js +1 -0
- package/dist-browser/three/addons/loaders/KSPLATLoader.js +1 -0
- package/dist-browser/three/addons/loaders/KTX2Loader.js +1 -0
- package/dist-browser/three/addons/loaders/KTXLoader.js +1 -0
- package/dist-browser/three/addons/loaders/LDrawLoader.js +1 -0
- package/dist-browser/three/addons/loaders/LUT3dlLoader.js +1 -0
- package/dist-browser/three/addons/loaders/LUTCubeLoader.js +1 -0
- package/dist-browser/three/addons/loaders/LUTImageLoader.js +1 -0
- package/dist-browser/three/addons/loaders/LWOLoader.js +1 -0
- package/dist-browser/three/addons/loaders/MD2Loader.js +1 -0
- package/dist-browser/three/addons/loaders/MDDLoader.js +1 -0
- package/dist-browser/three/addons/loaders/MTLLoader.js +1 -0
- package/dist-browser/three/addons/loaders/MaterialXLoader.js +1 -0
- package/dist-browser/three/addons/loaders/NRRDLoader.js +1 -0
- package/dist-browser/three/addons/loaders/OBJLoader.js +1 -0
- package/dist-browser/three/addons/loaders/PCDLoader.js +1 -0
- package/dist-browser/three/addons/loaders/PDBLoader.js +1 -0
- package/dist-browser/three/addons/loaders/PLYLoader.js +1 -0
- package/dist-browser/three/addons/loaders/PVRLoader.js +1 -0
- package/dist-browser/three/addons/loaders/RGBELoader.js +1 -0
- package/dist-browser/three/addons/loaders/SPLATLoader.js +1 -0
- package/dist-browser/three/addons/loaders/SPZLoader.js +1 -0
- package/dist-browser/three/addons/loaders/STLLoader.js +1 -0
- package/dist-browser/three/addons/loaders/SVGLoader.js +1 -0
- package/dist-browser/three/addons/loaders/TDSLoader.js +1 -0
- package/dist-browser/three/addons/loaders/TGALoader.js +1 -0
- package/dist-browser/three/addons/loaders/TIFFLoader.js +1 -0
- package/dist-browser/three/addons/loaders/TTFLoader.js +1 -0
- package/dist-browser/three/addons/loaders/USDLoader.js +1 -0
- package/dist-browser/three/addons/loaders/USDZLoader.js +1 -0
- package/dist-browser/three/addons/loaders/UltraHDRLoader.js +1 -0
- package/dist-browser/three/addons/loaders/VOXLoader.js +1 -0
- package/dist-browser/three/addons/loaders/VRMLLoader.js +1 -0
- package/dist-browser/three/addons/loaders/VTKLoader.js +1 -0
- package/dist-browser/three/addons/loaders/XYZLoader.js +1 -0
- package/dist-browser/three/addons/loaders/collada/ColladaComposer.js +1 -0
- package/dist-browser/three/addons/loaders/collada/ColladaParser.js +1 -0
- package/dist-browser/three/addons/loaders/lwo/IFFParser.js +1 -0
- package/dist-browser/three/addons/loaders/lwo/LWO2Parser.js +1 -0
- package/dist-browser/three/addons/loaders/lwo/LWO3Parser.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXArchive.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXDocument.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXHextile.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXInterfaceValidation.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXLog.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXNodeInterfaceRegistry.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXNodeLibrary.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXSurfaceMappings.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/MaterialXUtils.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/compile/MaterialXCompileRegistry.js +1 -0
- package/dist-browser/three/addons/loaders/materialx/parse/MaterialXParser.js +1 -0
- package/dist-browser/three/addons/loaders/usd/USDAParser.js +1 -0
- package/dist-browser/three/addons/loaders/usd/USDCParser.js +1 -0
- package/dist-browser/three/addons/loaders/usd/USDComposer.js +1 -0
- package/dist-browser/three/addons/materials/LDrawConditionalLineMaterial.js +1 -0
- package/dist-browser/three/addons/materials/LDrawConditionalLineNodeMaterial.js +1 -0
- package/dist-browser/three/addons/materials/WoodNodeMaterial.js +42 -0
- package/dist-browser/three/addons/math/Capsule.js +1 -0
- package/dist-browser/three/addons/math/ColorConverter.js +1 -0
- package/dist-browser/three/addons/math/ColorSpaces.js +1 -0
- package/dist-browser/three/addons/math/ConvexHull.js +1 -0
- package/dist-browser/three/addons/math/ImprovedNoise.js +1 -0
- package/dist-browser/three/addons/math/Lut.js +1 -0
- package/dist-browser/three/addons/math/MeshSurfaceSampler.js +1 -0
- package/dist-browser/three/addons/math/OBB.js +1 -0
- package/dist-browser/three/addons/math/Octree.js +1 -0
- package/dist-browser/three/addons/math/SimplexNoise.js +1 -0
- package/dist-browser/three/addons/misc/ConvexObjectBreaker.js +1 -0
- package/dist-browser/three/addons/misc/GPUComputationRenderer.js +1 -0
- package/dist-browser/three/addons/misc/Gyroscope.js +1 -0
- package/dist-browser/three/addons/misc/MD2Character.js +1 -0
- package/dist-browser/three/addons/misc/MD2CharacterComplex.js +1 -0
- package/dist-browser/three/addons/misc/MorphAnimMesh.js +1 -0
- package/dist-browser/three/addons/misc/MorphBlendMesh.js +1 -0
- package/dist-browser/three/addons/misc/ProgressiveLightMap.js +1 -0
- package/dist-browser/three/addons/misc/ProgressiveLightMapGPU.js +1 -0
- package/dist-browser/three/addons/misc/RollerCoaster.js +1 -0
- package/dist-browser/three/addons/misc/Sculptor.js +1 -0
- package/dist-browser/three/addons/misc/SculptorMesh.js +1 -0
- package/dist-browser/three/addons/misc/SculptorTools.js +1 -0
- package/dist-browser/three/addons/misc/SculptorUtils.js +1 -0
- package/dist-browser/three/addons/misc/TileCreasedNormalsPlugin.js +1 -0
- package/dist-browser/three/addons/misc/TubePainter.js +1 -0
- package/dist-browser/three/addons/misc/Volume.js +1 -0
- package/dist-browser/three/addons/misc/VolumeSlice.js +1 -0
- package/dist-browser/three/addons/modifiers/CurveModifier.js +1 -0
- package/dist-browser/three/addons/modifiers/CurveModifierGPU.js +1 -0
- package/dist-browser/three/addons/modifiers/EdgeSplitModifier.js +1 -0
- package/dist-browser/three/addons/modifiers/SimplifyModifier.js +1 -0
- package/dist-browser/three/addons/modifiers/TessellateModifier.js +1 -0
- package/dist-browser/three/addons/objects/GaussianSplat.js +1 -0
- package/dist-browser/three/addons/objects/GroundedSkybox.js +1 -0
- package/dist-browser/three/addons/objects/Lensflare.js +1 -0
- package/dist-browser/three/addons/objects/LensflareMesh.js +1 -0
- package/dist-browser/three/addons/objects/MarchingCubes.js +1 -0
- package/dist-browser/three/addons/objects/Reflector.js +1 -0
- package/dist-browser/three/addons/objects/ReflectorForSSRPass.js +1 -0
- package/dist-browser/three/addons/objects/Refractor.js +1 -0
- package/dist-browser/three/addons/objects/ShadowMesh.js +1 -0
- package/dist-browser/three/addons/objects/Sky.js +1 -0
- package/dist-browser/three/addons/objects/SkyMesh.js +1 -0
- package/dist-browser/three/addons/objects/Water.js +1 -0
- package/dist-browser/three/addons/objects/Water2.js +1 -0
- package/dist-browser/three/addons/objects/Water2Mesh.js +1 -0
- package/dist-browser/three/addons/objects/WaterMesh.js +1 -0
- package/dist-browser/three/addons/offscreen/jank.js +1 -0
- package/dist-browser/three/addons/offscreen/offscreen.js +0 -0
- package/dist-browser/three/addons/offscreen/scene.js +1 -0
- package/dist-browser/three/addons/physics/AmmoPhysics.js +1 -0
- package/dist-browser/three/addons/physics/JoltPhysics.js +1 -0
- package/dist-browser/three/addons/physics/RapierPhysics.js +1 -0
- package/dist-browser/three/addons/postprocessing/AfterimagePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/BloomPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/BokehPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/ClearPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/CubeTexturePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/DotScreenPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/EffectComposer.js +1 -0
- package/dist-browser/three/addons/postprocessing/FXAAPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/FilmPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/GTAOPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/GlitchPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/HalftonePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/LUTPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/MaskPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/OutlinePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/OutputPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/Pass.js +1 -0
- package/dist-browser/three/addons/postprocessing/RenderPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/RenderPixelatedPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/RenderTransitionPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SAOPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SMAAPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SSAARenderPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SSAOPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SSRPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/SavePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/ShaderPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/TAARenderPass.js +1 -0
- package/dist-browser/three/addons/postprocessing/TexturePass.js +1 -0
- package/dist-browser/three/addons/postprocessing/UnrealBloomPass.js +1 -0
- package/dist-browser/three/addons/renderers/CSS2DRenderer.js +1 -0
- package/dist-browser/three/addons/renderers/CSS3DRenderer.js +1 -0
- package/dist-browser/three/addons/renderers/Projector.js +1 -0
- package/dist-browser/three/addons/renderers/SVGRenderer.js +1 -0
- package/dist-browser/three/addons/shaders/ACESFilmicToneMappingShader.js +1 -0
- package/dist-browser/three/addons/shaders/AfterimageShader.js +1 -0
- package/dist-browser/three/addons/shaders/BasicShader.js +1 -0
- package/dist-browser/three/addons/shaders/BleachBypassShader.js +1 -0
- package/dist-browser/three/addons/shaders/BlendShader.js +1 -0
- package/dist-browser/three/addons/shaders/BokehShader.js +1 -0
- package/dist-browser/three/addons/shaders/BokehShader2.js +1 -0
- package/dist-browser/three/addons/shaders/BrightnessContrastShader.js +1 -0
- package/dist-browser/three/addons/shaders/ColorCorrectionShader.js +1 -0
- package/dist-browser/three/addons/shaders/ColorifyShader.js +1 -0
- package/dist-browser/three/addons/shaders/ConvolutionShader.js +1 -0
- package/dist-browser/three/addons/shaders/CopyShader.js +1 -0
- package/dist-browser/three/addons/shaders/DOFMipMapShader.js +1 -0
- package/dist-browser/three/addons/shaders/DepthLimitedBlurShader.js +1 -0
- package/dist-browser/three/addons/shaders/DigitalGlitch.js +1 -0
- package/dist-browser/three/addons/shaders/DotScreenShader.js +1 -0
- package/dist-browser/three/addons/shaders/ExposureShader.js +1 -0
- package/dist-browser/three/addons/shaders/FXAAShader.js +1 -0
- package/dist-browser/three/addons/shaders/FilmShader.js +1 -0
- package/dist-browser/three/addons/shaders/FocusShader.js +1 -0
- package/dist-browser/three/addons/shaders/FreiChenShader.js +1 -0
- package/dist-browser/three/addons/shaders/GTAOShader.js +1 -0
- package/dist-browser/three/addons/shaders/GammaCorrectionShader.js +1 -0
- package/dist-browser/three/addons/shaders/HalftoneShader.js +1 -0
- package/dist-browser/three/addons/shaders/HorizontalBlurShader.js +1 -0
- package/dist-browser/three/addons/shaders/HorizontalTiltShiftShader.js +1 -0
- package/dist-browser/three/addons/shaders/HueSaturationShader.js +1 -0
- package/dist-browser/three/addons/shaders/KaleidoShader.js +1 -0
- package/dist-browser/three/addons/shaders/LuminosityHighPassShader.js +1 -0
- package/dist-browser/three/addons/shaders/LuminosityShader.js +1 -0
- package/dist-browser/three/addons/shaders/MirrorShader.js +1 -0
- package/dist-browser/three/addons/shaders/NormalMapShader.js +1 -0
- package/dist-browser/three/addons/shaders/OutputShader.js +1 -0
- package/dist-browser/three/addons/shaders/PoissonDenoiseShader.js +1 -0
- package/dist-browser/three/addons/shaders/RGBShiftShader.js +1 -0
- package/dist-browser/three/addons/shaders/SAOShader.js +1 -0
- package/dist-browser/three/addons/shaders/SMAAShader.js +1 -0
- package/dist-browser/three/addons/shaders/SSAOShader.js +1 -0
- package/dist-browser/three/addons/shaders/SSRShader.js +1 -0
- package/dist-browser/three/addons/shaders/SepiaShader.js +1 -0
- package/dist-browser/three/addons/shaders/SobelOperatorShader.js +1 -0
- package/dist-browser/three/addons/shaders/SubsurfaceScatteringShader.js +1 -0
- package/dist-browser/three/addons/shaders/TechnicolorShader.js +1 -0
- package/dist-browser/three/addons/shaders/ToonShader.js +1 -0
- package/dist-browser/three/addons/shaders/TriangleBlurShader.js +1 -0
- package/dist-browser/three/addons/shaders/UnpackDepthRGBAShader.js +1 -0
- package/dist-browser/three/addons/shaders/VelocityShader.js +1 -0
- package/dist-browser/three/addons/shaders/VerticalBlurShader.js +1 -0
- package/dist-browser/three/addons/shaders/VerticalTiltShiftShader.js +1 -0
- package/dist-browser/three/addons/shaders/VignetteShader.js +1 -0
- package/dist-browser/three/addons/shaders/VolumeShader.js +1 -0
- package/dist-browser/three/addons/shaders/WaterRefractionShader.js +1 -0
- package/dist-browser/three/addons/textures/FlakesTexture.js +1 -0
- package/dist-browser/three/addons/transpiler/AST.js +1 -0
- package/dist-browser/three/addons/transpiler/GLSLDecoder.js +1 -0
- package/dist-browser/three/addons/transpiler/Linker.js +1 -0
- package/dist-browser/three/addons/transpiler/ShaderToyDecoder.js +1 -0
- package/dist-browser/three/addons/transpiler/TSLEncoder.js +55 -0
- package/dist-browser/three/addons/transpiler/Transpiler.js +1 -0
- package/dist-browser/three/addons/transpiler/TranspilerUtils.js +1 -0
- package/dist-browser/three/addons/transpiler/WGSLEncoder.js +30 -0
- package/dist-browser/three/addons/tsl/WebGLNodesHandler.js +1 -0
- package/dist-browser/three/addons/tsl/display/AfterImageNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/AnaglyphPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/BilateralBlurNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/BleachBypass.js +1 -0
- package/dist-browser/three/addons/tsl/display/BloomNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/CRT.js +1 -0
- package/dist-browser/three/addons/tsl/display/ChromaticAberrationNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/DenoiseNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/DepthOfFieldNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/DotScreenNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/FSR1Node.js +1 -0
- package/dist-browser/three/addons/tsl/display/FXAANode.js +1 -0
- package/dist-browser/three/addons/tsl/display/FilmNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/GTAONode.js +1 -0
- package/dist-browser/three/addons/tsl/display/GaussianBlurNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/GodraysNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/ImportanceSampledEnvironment.js +1 -0
- package/dist-browser/three/addons/tsl/display/LensflareNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/Lut3DNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/MotionBlur.js +1 -0
- package/dist-browser/three/addons/tsl/display/OITPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/OutlineNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/ParallaxBarrierPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/PixelationPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/RGBShiftNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/RecurrentDenoiseNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/RetroPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SMAANode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SSAAPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SSAONode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SSGINode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SSRNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SSSNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/Sepia.js +1 -0
- package/dist-browser/three/addons/tsl/display/Shape.js +1 -0
- package/dist-browser/three/addons/tsl/display/SharpenNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/SobelOperatorNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/StereoCompositePassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/StereoPassNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/TAAUNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/TRAANode.js +1 -0
- package/dist-browser/three/addons/tsl/display/TemporalReprojectNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/TransitionNode.js +1 -0
- package/dist-browser/three/addons/tsl/display/boxBlur.js +1 -0
- package/dist-browser/three/addons/tsl/display/depthAwareBlend.js +1 -0
- package/dist-browser/three/addons/tsl/display/depthAwareBlur.js +1 -0
- package/dist-browser/three/addons/tsl/display/hashBlur.js +1 -0
- package/dist-browser/three/addons/tsl/display/radialBlur.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/ClusteredLightsNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/DynamicLightsNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/LightProbeGridNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/data/AmbientLightDataNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/data/DirectionalLightDataNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/data/HemisphereLightDataNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/data/PointLightDataNode.js +1 -0
- package/dist-browser/three/addons/tsl/lighting/data/SpotLightDataNode.js +1 -0
- package/dist-browser/three/addons/tsl/math/Bayer.js +1 -0
- package/dist-browser/three/addons/tsl/math/curlNoise.js +1 -0
- package/dist-browser/three/addons/tsl/math/voronoiNoise.js +1 -0
- package/dist-browser/three/addons/tsl/shadows/TileShadowNode.js +1 -0
- package/dist-browser/three/addons/tsl/shadows/TileShadowNodeHelper.js +1 -0
- package/dist-browser/three/addons/tsl/utils/GroundedSkybox.js +1 -0
- package/dist-browser/three/addons/tsl/utils/RNoise.js +1 -0
- package/dist-browser/three/addons/tsl/utils/Raymarching.js +1 -0
- package/dist-browser/three/addons/tsl/utils/SoftParticles.js +1 -0
- package/dist-browser/three/addons/tsl/utils/SpecularHelpers.js +1 -0
- package/dist-browser/three/addons/tsl/utils/TAAUtils.js +1 -0
- package/dist-browser/three/addons/utils/BufferGeometryUtils.js +1 -0
- package/dist-browser/three/addons/utils/CameraUtils.js +1 -0
- package/dist-browser/three/addons/utils/ColorUtils.js +1 -0
- package/dist-browser/three/addons/utils/GaussianSplatUtils.js +1 -0
- package/dist-browser/three/addons/utils/GeometryCompressionUtils.js +1 -0
- package/dist-browser/three/addons/utils/GeometryUtils.js +1 -0
- package/dist-browser/three/addons/utils/LDrawUtils.js +1 -0
- package/dist-browser/three/addons/utils/SceneOptimizer.js +1 -0
- package/dist-browser/three/addons/utils/SceneUtils.js +1 -0
- package/dist-browser/three/addons/utils/ShadowMapViewer.js +1 -0
- package/dist-browser/three/addons/utils/ShadowMapViewerGPU.js +1 -0
- package/dist-browser/three/addons/utils/SkeletonUtils.js +1 -0
- package/dist-browser/three/addons/utils/SortUtils.js +1 -0
- package/dist-browser/three/addons/utils/UVsDebug.js +1 -0
- package/dist-browser/three/addons/utils/WebGLTextureUtils.js +1 -0
- package/dist-browser/three/addons/utils/WebGPUTextureUtils.js +1 -0
- package/dist-browser/three/addons/utils/WorkerPool.js +1 -0
- package/dist-browser/three/addons/webxr/ARButton.js +1 -0
- package/dist-browser/three/addons/webxr/OculusHandModel.js +1 -0
- package/dist-browser/three/addons/webxr/OculusHandPointerModel.js +1 -0
- package/dist-browser/three/addons/webxr/Text2D.js +1 -0
- package/dist-browser/three/addons/webxr/VRButton.js +1 -0
- package/dist-browser/three/addons/webxr/WebGLXRFallback.js +1 -0
- package/dist-browser/three/addons/webxr/XRButton.js +1 -0
- package/dist-browser/three/addons/webxr/XRControllerModelFactory.js +1 -0
- package/dist-browser/three/addons/webxr/XREstimatedLight.js +1 -0
- package/dist-browser/three/addons/webxr/XRHandMeshModel.js +1 -0
- package/dist-browser/three/addons/webxr/XRHandModelFactory.js +1 -0
- package/dist-browser/three/addons/webxr/XRHandPrimitiveModel.js +1 -0
- package/dist-browser/three/addons/webxr/XRPlanes.js +1 -0
- package/dist-browser/three/addons.js +1 -0
- package/dist-browser/three/tsl.js +1 -0
- package/dist-browser/three/webgpu.js +1 -0
- package/dist-browser/three.js +1 -0
- package/dist-browser/three.quarks.js +1 -0
- package/dist-browser/zustand/middleware.js +1 -0
- package/dist-browser/zustand/shallow.js +1 -0
- package/dist-browser/zustand/vanilla.js +1 -0
- package/dist-browser/zustand.js +1 -0
- package/package.json +194 -0
- package/rapier/LICENSE +201 -0
- package/rapier/NOTICE +23 -0
- package/rapier/simd/coarena.js +1 -0
- package/rapier/simd/control/character_controller.js +1 -0
- package/rapier/simd/control/index.js +1 -0
- package/rapier/simd/control/pid_controller.js +1 -0
- package/rapier/simd/control/ray_cast_vehicle_controller.js +1 -0
- package/rapier/simd/dynamics/ccd_solver.js +1 -0
- package/rapier/simd/dynamics/coefficient_combine_rule.js +1 -0
- package/rapier/simd/dynamics/impulse_joint.js +1 -0
- package/rapier/simd/dynamics/impulse_joint_set.js +1 -0
- package/rapier/simd/dynamics/index.js +1 -0
- package/rapier/simd/dynamics/integration_parameters.js +1 -0
- package/rapier/simd/dynamics/island_manager.js +1 -0
- package/rapier/simd/dynamics/multibody_joint.js +1 -0
- package/rapier/simd/dynamics/multibody_joint_set.js +1 -0
- package/rapier/simd/dynamics/rigid_body.js +1 -0
- package/rapier/simd/dynamics/rigid_body_set.js +1 -0
- package/rapier/simd/exports.js +1 -0
- package/rapier/simd/geometry/broad_phase.js +1 -0
- package/rapier/simd/geometry/collider.js +1 -0
- package/rapier/simd/geometry/collider_set.js +1 -0
- package/rapier/simd/geometry/contact.js +1 -0
- package/rapier/simd/geometry/feature.js +1 -0
- package/rapier/simd/geometry/index.js +1 -0
- package/rapier/simd/geometry/interaction_groups.js +0 -0
- package/rapier/simd/geometry/narrow_phase.js +1 -0
- package/rapier/simd/geometry/point.js +1 -0
- package/rapier/simd/geometry/ray.js +1 -0
- package/rapier/simd/geometry/shape.js +1 -0
- package/rapier/simd/geometry/toi.js +1 -0
- package/rapier/simd/init.js +0 -0
- package/rapier/simd/math.js +1 -0
- package/rapier/simd/pipeline/debug_render_pipeline.js +1 -0
- package/rapier/simd/pipeline/event_queue.js +1 -0
- package/rapier/simd/pipeline/index.js +1 -0
- package/rapier/simd/pipeline/physics_hooks.js +1 -0
- package/rapier/simd/pipeline/physics_pipeline.js +1 -0
- package/rapier/simd/pipeline/query_pipeline.js +1 -0
- package/rapier/simd/pipeline/serialization_pipeline.js +1 -0
- package/rapier/simd/pipeline/world.js +1 -0
- package/rapier/simd/rapier.js +1 -0
- package/rapier/simd/rapier_wasm3d.js +1 -0
- package/rapier/simd/rapier_wasm3d_bg.js +1 -0
- package/rapier/simd/rapier_wasm3d_bg.wasm +0 -0
- package/rapier/simd/raw.js +1 -0
- package/rapier/simd-compat/rapier.mjs +1 -0
- package/rapier/types/coarena.d.ts +15 -0
- package/rapier/types/control/character_controller.d.ts +191 -0
- package/rapier/types/control/index.d.ts +3 -0
- package/rapier/types/control/pid_controller.d.ts +50 -0
- package/rapier/types/control/ray_cast_vehicle_controller.d.ts +277 -0
- package/rapier/types/dynamics/ccd_solver.d.ts +15 -0
- package/rapier/types/dynamics/coefficient_combine_rule.d.ts +13 -0
- package/rapier/types/dynamics/impulse_joint.d.ts +375 -0
- package/rapier/types/dynamics/impulse_joint_set.d.ts +79 -0
- package/rapier/types/dynamics/index.d.ts +10 -0
- package/rapier/types/dynamics/integration_parameters.d.ts +57 -0
- package/rapier/types/dynamics/island_manager.d.ts +24 -0
- package/rapier/types/dynamics/multibody_joint.d.ts +42 -0
- package/rapier/types/dynamics/multibody_joint_set.d.ts +76 -0
- package/rapier/types/dynamics/rigid_body.d.ts +803 -0
- package/rapier/types/dynamics/rigid_body_set.d.ts +78 -0
- package/rapier/types/exports.d.ts +8 -0
- package/rapier/types/geometry/broad_phase.d.ts +164 -0
- package/rapier/types/geometry/collider.d.ts +996 -0
- package/rapier/types/geometry/collider_set.d.ts +72 -0
- package/rapier/types/geometry/contact.d.ts +36 -0
- package/rapier/types/geometry/feature.d.ts +6 -0
- package/rapier/types/geometry/index.d.ts +11 -0
- package/rapier/types/geometry/interaction_groups.d.ts +18 -0
- package/rapier/types/geometry/narrow_phase.d.ts +130 -0
- package/rapier/types/geometry/point.d.ts +58 -0
- package/rapier/types/geometry/ray.d.ts +108 -0
- package/rapier/types/geometry/shape.d.ts +632 -0
- package/rapier/types/geometry/toi.d.ts +44 -0
- package/rapier/types/init.d.ts +5 -0
- package/rapier/types/math.d.ts +98 -0
- package/rapier/types/pipeline/debug_render_pipeline.d.ts +40 -0
- package/rapier/types/pipeline/event_queue.d.ts +101 -0
- package/rapier/types/pipeline/index.d.ts +7 -0
- package/rapier/types/pipeline/physics_hooks.d.ts +39 -0
- package/rapier/types/pipeline/physics_pipeline.d.ts +12 -0
- package/rapier/types/pipeline/query_pipeline.d.ts +38 -0
- package/rapier/types/pipeline/serialization_pipeline.d.ts +37 -0
- package/rapier/types/pipeline/world.d.ts +602 -0
- package/rapier/types/rapier.d.ts +3 -0
- package/rapier/types/rapier_wasm3d.d.ts +2204 -0
- package/rapier/types/rapier_wasm3d_bg.wasm.d.ts +582 -0
- package/rapier/types/raw.d.ts +1 -0
- package/readable/rounds/LevelBanner.tsx +44 -0
- package/readable/rounds/Round.tsx +228 -0
- package/readable/rounds/RoundScreen.tsx +89 -0
- package/readable/rounds/dist/LevelBanner.d.ts +13 -0
- package/readable/rounds/dist/LevelBanner.d.ts.map +1 -0
- package/readable/rounds/dist/LevelBanner.js +20 -0
- package/readable/rounds/dist/LevelBanner.js.map +1 -0
- package/readable/rounds/dist/Round.d.ts +74 -0
- package/readable/rounds/dist/Round.d.ts.map +1 -0
- package/readable/rounds/dist/Round.js +137 -0
- package/readable/rounds/dist/Round.js.map +1 -0
- package/readable/rounds/dist/RoundScreen.d.ts +39 -0
- package/readable/rounds/dist/RoundScreen.d.ts.map +1 -0
- package/readable/rounds/dist/RoundScreen.js +23 -0
- package/readable/rounds/dist/RoundScreen.js.map +1 -0
- package/readable/rounds/dist/index.d.ts +7 -0
- package/readable/rounds/dist/index.d.ts.map +1 -0
- package/readable/rounds/dist/index.js +11 -0
- package/readable/rounds/dist/index.js.map +1 -0
- package/readable/rounds/dist/rounds.d.ts +16 -0
- package/readable/rounds/dist/rounds.d.ts.map +1 -0
- package/readable/rounds/dist/rounds.js +82 -0
- package/readable/rounds/dist/rounds.js.map +1 -0
- package/readable/rounds/dist/rules.d.ts +65 -0
- package/readable/rounds/dist/rules.d.ts.map +1 -0
- package/readable/rounds/dist/rules.js +150 -0
- package/readable/rounds/dist/rules.js.map +1 -0
- package/readable/rounds/dist/traits.d.ts +103 -0
- package/readable/rounds/dist/traits.d.ts.map +1 -0
- package/readable/rounds/dist/traits.js +79 -0
- package/readable/rounds/dist/traits.js.map +1 -0
- package/readable/rounds/index.ts +11 -0
- package/readable/rounds/rounds.ts +117 -0
- package/readable/rounds/rules.ts +182 -0
- package/readable/rounds/traits.ts +82 -0
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../chunks/BOIXSUZ_.js","../chunks/rolldown-runtime-hePW80VL.js","../chunks/Cvdyeg_0.js","../chunks/BoJD7UsQ.js","../chunks/CJgknJ-O.js","../chunks/Bzy44bV2.js","../chunks/DZJGj1NY.js","../chunks/DvMRww-v.js","../chunks/C784v2VA.js","../chunks/NZYk81nU.js","../chunks/BdkaRoRG.js","../chunks/BLQoPgRQ.js","../chunks/DWgUahRJ.js","../chunks/DYoIHzIt.js","../chunks/Bn-oguIM.js","../chunks/BFvqTjM2.js","../chunks/DVAMQgZs.js","../chunks/7kk1UrXM.js","../chunks/Dp6fzsZG.js","../chunks/BHePouWp.js","../chunks/vyik5ymL.js","../chunks/BGze3w87.js","../chunks/Cvq_OonK.js","../chunks/udTuD3NU.js","../chunks/QgFqrot_.js","../chunks/BCEkROxA.js","../chunks/lOD1Gn8c.js","../chunks/CerF2aP5.js","../chunks/QRJE7tia.js","../chunks/D-ZRVGDk.js","../chunks/uBIymjUX.js","../chunks/PDPf8POY.js","../chunks/BPyPftW0.js","../chunks/DQbqNpgw.js","../chunks/B4HH7vxm.js","../chunks/DF6Qh6eu.js","../chunks/DNsR67l1.js","../chunks/CwTYnDSQ.js","../chunks/DCJlJ3lv.js","../chunks/B0dIJJnS.js","../chunks/VMH7wDAk.js","../chunks/D10MTZ8f.js","../chunks/BiqCT0be.js","../chunks/dFGbvMHe.js","../chunks/DII2y8tL.js","../chunks/CagC9ufD.js","../chunks/yRMgu4ay.js","../chunks/Df-3V4RI.js","../chunks/Dj8ovMlo.js","../chunks/BtZNIAhj.js","../chunks/D2SJBO5U.js","../chunks/C0Iji4Qk.js","../chunks/B5npwEiE.js","../chunks/BSaFdJJr.js","../chunks/DPnn0uIO.js","../chunks/C9J2i9In.js","../chunks/DDLmvpjg.js","../chunks/CmlWyQpr.js","../chunks/7v-xFmSc.js","../chunks/DIvOsQJS.js","../chunks/D8inQ_yL.js","../chunks/C_popvm5.js","../chunks/r-cfH8A5.js","../chunks/BUJHJVUo.js","../chunks/D-J5r5vm.js","../chunks/CjTILWD4.js","../chunks/D6fd1dZA.js","../chunks/BvrPFs0h.js","../chunks/CIz-HH07.js","../chunks/CVn3AkL4.js","../chunks/Bn8JxKQd.js","../chunks/BzuN4nW7.js","../chunks/B8f3enUO.js","../chunks/DAH2JXIW.js","../chunks/Caw9wDgF.js","../chunks/OtECxeEN.js","../chunks/BD93nK4k.js","../chunks/D3Fr6yvq.js","../chunks/B8GCRzu-.js","../chunks/BE7yKwOS.js","../chunks/DkwGHqUD.js","../chunks/DEucxoKb.js","../chunks/Cvzg7xRz.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e,r as t}from"../chunks/rolldown-runtime-hePW80VL.js";import{t as n}from"../chunks/Cvdyeg_0.js";import{$r as r,At as i,B as a,Br as o,E as s,Fi as c,Fo as l,Hr as u,I as d,Io as f,It as p,Ki as m,Ks as h,Lr as g,Ls as _,Mr as v,N as y,Nn as b,Or as x,Os as S,Pi as C,Pn as w,Po as T,Pr as E,Pt as D,Qi as O,Qr as k,Qt as ee,Ri as A,Rs as j,S as M,So as te,T as ne,To as re,V as ie,Wt as N,Xi as ae,Xr as oe,Yr as se,Z as ce,Zi as le,_o as ue,ao as de,br as fe,cs as pe,da as P,ei as me,et as he,fa as ge,h as _e,hn as ve,i as ye,io as be,jn as xe,mi as Se,na as Ce,p as we,po as Te,q as Ee,qr as F,sa as De,si as Oe,sn as ke,so as Ae,ss as je,ti as Me,ua as Ne,w as Pe,wo as Fe,xa as Ie,ys as Le,zs as Re}from"../chunks/BoJD7UsQ.js";import{o as ze,t as Be}from"../chunks/Bzy44bV2.js";import{A as Ve,D as I,F as L,I as He,L as Ue,M as We,R as Ge,_ as Ke,a as qe,m as Je,o as Ye}from"../chunks/CJgknJ-O.js";import{t as Xe}from"../chunks/DZJGj1NY.js";import{t as Ze}from"../chunks/NZYk81nU.js";import{t as Qe}from"../chunks/B1gZ4XNT.js";import{c as $e,m as et,s as tt,t as nt,x as rt}from"../chunks/BLQoPgRQ.js";import"../chunks/DWgUahRJ.js";import{$ as it,$a as at,$c as ot,$f as st,$i as ct,$l as lt,$n as ut,$o as dt,$p as ft,$r as pt,$s as mt,$t as ht,$u as gt,Aa as _t,Ac as vt,Ad as yt,Af as bt,An as xt,Ao as St,Ap as Ct,Ar as wt,As as Tt,At as Et,Au as Dt,B as Ot,Ba as kt,Bd as At,Bf as jt,Bn as Mt,Bo as Nt,Br as Pt,Bs as Ft,Bt as It,Bu as Lt,Ca as Rt,Cc as zt,Cd as Bt,Cf as Vt,Cl as Ht,Cm as Ut,Cn as Wt,Co as Gt,Cp as Kt,Cr as qt,Ct as Jt,Cu as Yt,Da as Xt,Dc as Zt,Dd as Qt,Df as $t,Dl as en,Dn as tn,Do as nn,Dr as rn,Ds as an,Dt as on,Du as sn,Ea as cn,Ec as ln,Ed as un,Ef as dn,Ei as fn,El as pn,En as mn,Eo as hn,Ep as gn,Er as _n,Et as vn,Eu as yn,Fc as bn,Fd as xn,Ff as Sn,Fl as Cn,Fn as wn,Fo as Tn,Fp as En,Fr as Dn,Fs as On,Ft as kn,Fu as An,G as jn,Gc as Mn,Gd as Nn,Gf as Pn,Gi as Fn,Gl as In,Gn as Ln,Go as Rn,Gp as zn,Gr as Bn,Gs as Vn,Gt as Hn,Gu as Un,H as Wn,Ha as Gn,Hc as Kn,Hd as qn,Hf as Jn,Hi as Yn,Hl as Xn,Hn as Zn,Ho as Qn,Hp as $n,Hr as er,Hs as tr,Ht as nr,Hu as rr,I as ir,Ic as ar,Id as or,If as sr,In as cr,Ip as lr,Ir as ur,Is as dr,It as fr,Iu as pr,J as mr,Jc as hr,Jd as gr,Jf as _r,Ji as vr,Jl as yr,Jn as br,Jp as xr,Jr as Sr,Js as Cr,Jt as wr,Ju as Tr,K as Er,Kc as Dr,Kf as Or,Ki as kr,Kl as Ar,Kn as jr,Ko as Mr,Kp as Nr,Kr as Pr,Ks as Fr,Kt as Ir,Ku as Lr,Lc as Rr,Ld as zr,Lf as Br,Ln as Vr,Lo as Hr,Lp as Ur,Lr as Wr,Ls as Gr,Lt as Kr,Lu as qr,Ma as Jr,Md as Yr,Mf as Xr,Mm as Zr,Mn as Qr,Mo as $r,Mp as ei,Mr as ti,Ms as ni,Mu as ri,Na as ii,Nc as ai,Nd as oi,Nf as si,Nl as ci,Nm as li,Nn as ui,No as di,Np as fi,Nr as pi,Ns as mi,Nt as hi,Nu as gi,Oa as _i,Oc as vi,Od as yi,Of as bi,Ol as xi,Om as Si,On as Ci,Oo as wi,Op as Ti,Or as Ei,Ou as Di,Pc as Oi,Pd as ki,Pf as Ai,Pm as ji,Pn as Mi,Pp as Ni,Pr as Pi,Pt as Fi,Pu as Ii,Q as Li,Qa as Ri,Qc as zi,Qf as Bi,Qi as Vi,Ql as Hi,Qn as Ui,Qo as Wi,Qp as Gi,Qr as Ki,Qs as qi,Qt as Ji,Qu as Yi,R as Xi,Ra as Zi,Rc as Qi,Rd as $i,Rl as ea,Rn as ta,Ro as na,Rp as ra,Rr as ia,Rt as aa,Ru as oa,S as sa,Sa as ca,Sc as la,Sd as ua,Sf as da,Si as fa,Sl as pa,Sm as ma,Sn as ha,So as ga,Sp as _a,Sr as va,Ss as ya,St as ba,Su as xa,T as Sa,Ta as Ca,Tc as wa,Td as Ta,Tf as Ea,Tm as Da,Tn as Oa,To as ka,Tp as Aa,Tr as ja,Tt as Ma,Tu as Na,U as Pa,Uc as Fa,Ud as Ia,Uf as La,Ui as Ra,Ul as za,Un as Ba,Uo as Va,Ur as Ha,Us as Ua,Ut as Wa,Uu as Ga,Va as Ka,Vc as qa,Vd as Ja,Vf as Ya,Vi as Xa,Vl as Za,Vn as Qa,Vo as $a,Vp as eo,Vr as to,Vs as no,Vu as ro,W as io,Wa as ao,Wc as oo,Wd as so,Wf as co,Wi as lo,Wl as uo,Wn as fo,Wo as po,Wp as mo,Wr as ho,Ws as go,Wu as _o,Xc as vo,Xd as yo,Xf as bo,Xl as xo,Xn as So,Xr as Co,Xs as wo,Xt as To,Xu as Eo,Yc as Do,Yd as Oo,Yf as ko,Yl as Ao,Yn as jo,Yr as Mo,Ys as No,Yt as Po,Yu as Fo,Z as Io,Zc as Lo,Zi as Ro,Zl as zo,Zn as Bo,Zp as Vo,Zr as Ho,Zt as Uo,_ as Wo,_a as Go,_c as Ko,_d as qo,_i as Jo,_l as Yo,_n as Xo,_o as Zo,_r as Qo,_s as $o,_t as es,_u as ts,aa as ns,ac as rs,ai as is,al as as,an as os,ao as ss,ar as cs,au as ls,b as us,ba as ds,bc as fs,bd as ps,bf as ms,bl as hs,bm as gs,bn as _s,bo as vs,bp as ys,br as bs,bs as xs,bt as Ss,bu as Cs,ca as ws,cc as Ts,cf as Es,ci as Ds,cl as Os,cm as ks,cn as As,co as js,cp as Ms,cr as Ns,cs as Ps,ct as Fs,cu as Is,da as Ls,dc as Rs,dd as zs,df as Bs,di as Vs,dm as Hs,do as Us,dr as Ws,ds as Gs,dt as Ks,du as qs,ea as Js,ec as Ys,ed as Xs,ei as Zs,em as Qs,en as $s,eo as ec,ep as tc,er as nc,es as rc,et as ic,eu as ac,f as oc,fa as sc,fc as cc,fd as lc,ff as uc,fi as dc,fl as fc,fm as pc,fn as mc,fo as hc,fr as gc,fs as _c,fu as vc,g as yc,ga as bc,gc as xc,gd as Sc,gi as Cc,gl as wc,gn as Tc,go as Ec,gp as Dc,gr as Oc,gs as kc,gt as Ac,gu as jc,ha as Mc,hc as Nc,hd as Pc,hf as Fc,hi as Ic,hl as Lc,hn as Rc,ho as zc,hp as Bc,hr as Vc,hs as Hc,ht as Uc,hu as Wc,i as Gc,ia as Kc,ic as qc,id as Jc,ii as Yc,il as Xc,in as Zc,io as Qc,ir as $c,it as el,iu as tl,ja as nl,jc as rl,jd as il,jf as al,jl as ol,jm as sl,jn as cl,jo as ll,jp as ul,jr as dl,js as fl,ju as pl,k as ml,ka as hl,kc as gl,kd as _l,kl as vl,km as yl,kn as bl,ko as xl,kr as Sl,ks as Cl,kt as wl,ku as Tl,l as El,la as Dl,lc as Ol,ld as kl,lf as Al,li as jl,ll as Ml,lm as Nl,ln as Pl,lo as Fl,lp as Il,lr as Ll,ls as Rl,lt as zl,lu as Bl,m as Vl,ma as Hl,mc as Ul,md as Wl,mf as Gl,mi as Kl,ml as ql,mm as Jl,mn as Yl,mo as Xl,mr as Zl,ms as Ql,mu as $l,na as eu,nc as tu,nd as nu,ni as ru,nl as iu,nm as au,nn as ou,no as su,np as cu,nr as lu,ns as uu,nt as du,nu as fu,o as pu,oa as mu,oc as hu,of as gu,oi as _u,ol as vu,on as yu,oo as bu,op as xu,or as Su,ot as Cu,ou as wu,pa as Tu,pc as Eu,pd as Du,pi as Ou,pl as ku,pm as Au,pn as ju,po as Mu,pp as Nu,pr as Pu,ps as Fu,pt as Iu,pu as Lu,q as Ru,qa as zu,qc as Bu,qf as Vu,qi as Hu,ql as Uu,qn as Wu,qp as Gu,qr as Ku,qs as qu,qt as Ju,qu as Yu,r as Xu,ra as Zu,rc as Qu,rd as $u,ri as ed,rl as td,rm as nd,rn as rd,ro as id,rr as ad,rs as od,ru as sd,sa as cd,sc as ld,sd as ud,si as dd,sl as fd,sm as pd,sn as md,so as hd,sp as gd,sr as _d,ss as vd,st as yd,su as bd,ta as xd,tc as Sd,td as Cd,ti as wd,tl as Td,tm as Ed,tn as Dd,to as Od,tr as kd,tt as Ad,tu as jd,u as Md,ua as Nd,uc as Pd,ud as Fd,ui as Id,ul as Ld,um as Rd,un as zd,uo as Bd,up as Vd,ur as Hd,us as Ud,ut as Wd,uu as Gd,v as Kd,va as qd,vc as Jd,vd as Yd,vf as Xd,vi as Zd,vl as Qd,vm as $d,vn as ef,vp as tf,vr as nf,vs as rf,vt as af,vu as of,w as sf,wa as cf,wc as lf,wd as uf,wf as df,wm as ff,wn as pf,wo as mf,wp as hf,wr as gf,wt as _f,wu as vf,xa as yf,xc as bf,xd as xf,xf as Sf,xl as Cf,xm as wf,xn as Tf,xo as Ef,xr as Df,xs as Of,xt as kf,xu as Af,y as jf,ya as Mf,yc as Nf,yd as Pf,yl as Ff,yn as If,yo as Lf,yp as Rf,yr as zf,ys as Bf,yt as Vf,yu as Hf,za as Uf,zc as Wf,zd as Gf,zf as Kf,zl as qf,zn as Jf,zo as Yf,zp as Xf,zr as Zf,zs as Qf,zt as $f,zu as ep}from"../chunks/BdkaRoRG.js";import{a as tp,c as np,l as rp,n as R,o as z,s as B,t as ip}from"../chunks/DYoIHzIt.js";import"../chunks/Bn-oguIM.js";import{i as ap,n as op,r as sp}from"../chunks/BFvqTjM2.js";import{t as cp}from"../chunks/DVAMQgZs.js";import{a as lp,l as up,t as dp}from"../chunks/vyik5ymL.js";import{t as fp}from"../chunks/Cvq_OonK.js";import{l as pp,n as mp,s as hp,t as gp}from"../chunks/CwTYnDSQ.js";import{n as _p,r as vp,t as yp}from"../chunks/QRJE7tia.js";import{n as bp,o as xp,t as Sp}from"../chunks/B5npwEiE.js";import{t as Cp}from"../chunks/DsNI9SjT.js";import{a as wp}from"../chunks/CGPPrudP.js";import{n as Tp,r as Ep,t as Dp}from"../chunks/CW47wlpJ.js";import{D as Op,I as kp,a as Ap,c as jp,d as Mp,i as Np,m as Pp,n as Fp,t as Ip,u as Lp}from"../chunks/DQ0A9BJI.js";import{t as Rp}from"../chunks/uBIymjUX.js";import{A as zp,C as Bp,D as Vp,M as Hp,N as Up,O as Wp,S as Gp,T as Kp,_ as qp,a as Jp,b as Yp,c as Xp,d as Zp,f as Qp,g as $p,h as em,i as tm,j as nm,k as rm,l as im,m as am,n as om,o as sm,p as cm,r as lm,s as um,t as dm,u as fm,v as pm,w as mm,x as V,y as hm}from"../chunks/B0dIJJnS.js";import{u as gm}from"../chunks/B4HH7vxm.js";import{t as _m}from"../chunks/Ci0DiZOM.js";import{n as vm,t as ym}from"../chunks/VMH7wDAk.js";import{$ as bm,At as xm,B as Sm,Bt as Cm,C as H,Ct as wm,D as Tm,Dt as Em,Et as Dm,F as Om,Ft as km,H as Am,I as jm,It as Mm,J as Nm,Jt as Pm,K as Fm,Kt as Im,L as Lm,Lt as Rm,M as zm,Mt as Bm,N as Vm,Nt as Hm,O as Um,P as Wm,Pt as Gm,Q as Km,Qt as qm,R as Jm,S as Ym,St as U,T as Xm,Tt as Zm,U as Qm,Ut as $m,V as eh,Vt as th,W as nh,Wt as rh,X as ih,Xt as ah,Y as oh,Yt as sh,Z as ch,_ as lh,_n as uh,_t as dh,a as fh,an as ph,at as mh,bn as hh,bt as gh,c as _h,cn as vh,ct as yh,d as bh,dn as xh,dt as Sh,et as Ch,f as wh,fn as Th,ft as Eh,gn as Dh,gt as Oh,h as kh,hn as Ah,ht as jh,i as Mh,in as Nh,it as Ph,j as Fh,jt as Ih,k as Lh,kt as Rh,l as zh,ln as Bh,m as Vh,mn as Hh,mt as Uh,n as Wh,nt as Gh,o as Kh,on as qh,ot as Jh,pn as Yh,pt as Xh,q as Zh,qt as Qh,rn as $h,rt as eg,s as tg,sn as ng,st as rg,t as ig,tn as ag,tt as og,u as sg,un as cg,ut as lg,vn as ug,vt as dg,w as fg,wt as pg,x as mg,xt as hg,y as gg,yn as _g,yt as vg,z as yg}from"../chunks/DNsR67l1.js";import{t as bg}from"../chunks/D10MTZ8f.js";import{t as xg}from"../chunks/BtZNIAhj.js";import{_ as Sg,c as Cg,d as wg,f as Tg,g as Eg,h as Dg,i as Og,l as kg,m as Ag,n as jg,p as Mg,s as Ng,t as Pg,u as Fg}from"../chunks/DII2y8tL.js";import{$ as Ig,A as Lg,B as Rg,C as zg,D as Bg,E as Vg,F as Hg,G as Ug,H as Wg,I as Gg,J as Kg,K as qg,L as Jg,M as Yg,N as Xg,O as Zg,P as Qg,Q as $g,R as e_,S as t_,T as n_,U as r_,V as i_,W as a_,X as o_,Y as s_,Z as c_,_ as l_,a as u_,b as d_,c as f_,d as p_,et as m_,f as h_,g as g_,h as __,i as v_,j as y_,k as b_,l as x_,m as S_,n as C_,nt as w_,o as T_,p as E_,q as D_,r as O_,s as k_,t as A_,tt as j_,u as M_,v as N_,w as P_,x as F_,y as I_,z as L_}from"../chunks/B0sEcOA4.js";import{t as R_}from"../chunks/BD93nK4k.js";import{t as z_}from"../chunks/yzr1keSX.js";import{n as B_}from"../chunks/BiqCT0be.js";import{i as V_}from"../chunks/CagC9ufD.js";import{r as H_,t as U_}from"../chunks/OtOkABqS.js";import{t as W_}from"../chunks/XTdr3vkK.js";import{t as G_}from"../chunks/6RSie8Zr.js";import{n as K_,t as q_}from"../chunks/C33aG9gN.js";import{t as J_}from"../chunks/C7RSxM0z.js";import{t as Y_}from"../chunks/DqMSA0q-.js";import{t as X_}from"../chunks/DZmRZ_iP.js";import{C as Z_,S as Q_,T as $_,_ as ev,c as tv,d as nv,f as rv,g as iv,h as av,i as ov,l as sv,m as cv,n as lv,p as uv,r as dv,s as fv,t as pv,u as mv,v as hv,w as gv,x as _v,y as vv}from"../chunks/dFGbvMHe.js";import{A as yv,C as bv,D as xv,E as Sv,F as Cv,I as wv,L as Tv,M as Ev,N as Dv,O as Ov,P as kv,R as Av,S as jv,T as Mv,_ as Nv,a as Pv,b as Fv,c as Iv,d as Lv,f as Rv,g as zv,h as Bv,i as Vv,j as Hv,k as Uv,l as Wv,n as Gv,o as Kv,p as qv,r as Jv,s as Yv,t as Xv,u as Zv,v as Qv,w as $v,x as ey,y as ty,z as ny}from"../chunks/yRMgu4ay.js";import{a as ry,d as W,i as iy,l as G,r as ay,t as oy,u as sy}from"../chunks/D2SJBO5U.js";import{A as cy,C as ly,D as uy,E as dy,F as fy,I as py,L as my,M as hy,N as gy,O as _y,P as vy,R as yy,S as by,T as xy,_ as Sy,a as Cy,c as wy,d as Ty,f as Ey,h as Dy,i as Oy,j as K,k as ky,m as Ay,o as jy,s as My,u as Ny,v as Py,w as Fy,y as Iy,z as Ly}from"../chunks/OtECxeEN.js";import{a as Ry,c as zy,i as By,l as q,n as Vy,o as Hy,r as Uy,s as Wy,t as Gy}from"../chunks/C0Iji4Qk.js";import{n as Ky}from"../chunks/DPnn0uIO.js";import{t as qy}from"../chunks/BSaFdJJr.js";import{_ as Jy,a as Yy,c as Xy,d as Zy,f as Qy,g as $y,h as eb,i as tb,l as nb,m as rb,o as ib,p as ab,r as ob,s as sb,t as cb,u as lb}from"../chunks/51muForc.js";import{a as ub,c as db,i as fb,l as J,o as pb,s as mb}from"../chunks/D6fd1dZA.js";import{a as hb,c as gb,i as _b,o as vb,r as yb,s as bb}from"../chunks/CmlWyQpr.js";import{a as xb,d as Sb,f as Cb,i as wb,n as Tb,t as Eb}from"../chunks/7v-xFmSc.js";import{A as Db,B as Ob,D as kb,E as Ab,F as jb,I as Mb,L as Nb,M as Pb,N as Fb,O as Ib,P as Lb,R as Rb,S as zb,T as Bb,V as Vb,a as Hb,b as Ub,c as Wb,d as Gb,f as Kb,h as qb,i as Jb,k as Yb,l as Xb,m as Y,n as Zb,o as Qb,p as $b,r as ex,s as tx,t as nx,u as rx,v as ix,w as ax,x as ox,y as sx,z as cx}from"../chunks/Caw9wDgF.js";import{$ as lx,D as ux,G as dx,J as fx,K as px,S as X,U as mx,a as hx,f as gx,t as _x,x as vx}from"../chunks/C-_LmeNn.js";import{t as yx}from"../chunks/BkuNzUds.js";import{t as bx}from"../chunks/CRDIjF8C.js";var xx=`xstate.promise.resolve`,Sx=`xstate.promise.reject`,Cx=new WeakMap;function wx(e){return{config:e,transition:(e,t,n)=>{if(e.status!==`active`)return e;switch(t.type){case xx:{let n=t.data;return{...e,status:`done`,output:n,input:void 0}}case Sx:return{...e,status:`error`,error:t.data,input:void 0};case Gn:return Cx.get(n.self)?.abort(),Cx.delete(n.self),{...e,status:`stopped`,input:void 0};default:return e}},start:(t,{self:n,system:r,emit:i})=>{if(t.status!==`active`)return;let a=new AbortController;Cx.set(n,a),Promise.resolve(e({input:t.input,system:r,self:n,signal:a.signal,emit:i})).then(e=>{n.getSnapshot().status===`active`&&(Cx.delete(n),r._relay(n,n,{type:xx,data:e}))},e=>{n.getSnapshot().status===`active`&&(Cx.delete(n),r._relay(n,n,{type:Sx,data:e}))})},getInitialSnapshot:(e,t)=>({status:`active`,output:void 0,error:void 0,input:t}),getPersistedSnapshot:e=>e,restoreSnapshot:e=>e}}var Tx={mouseButtons:{left:Y_.ACTION.ROTATE,middle:Y_.ACTION.DOLLY,right:Y_.ACTION.NONE,wheel:Y_.ACTION.DOLLY},touches:{one:Y_.ACTION.TOUCH_ROTATE,two:Y_.ACTION.TOUCH_DOLLY,three:Y_.ACTION.NONE}},Ex={mouseButtons:{left:Y_.ACTION.NONE,middle:Y_.ACTION.NONE,right:Y_.ACTION.ROTATE,wheel:Y_.ACTION.NONE},touches:{one:Y_.ACTION.NONE,two:Y_.ACTION.TOUCH_ROTATE,three:Y_.ACTION.NONE}},{forward:Dx,back:Ox,left:kx,right:Ax,climbUp:jx,climbDown:Mx,cameraLock:Nx}=Et;function Px(e,t){return Ch(e).some(e=>e===t)}function Fx(e){return Px(Dx,e)||Px(Ox,e)||Px(kx,e)||Px(Ax,e)}function Ix(e){return Px(Nx,e.code)&&!e.repeat&&!Xx(e)}function Lx(e){return Fx(e)||Px(jx,e)||Px(Mx,e)||oh(e)}var Rx=new Set;function zx(e){return oh(`${e}Left`)||oh(`${e}Right`)}var Bx=new WeakSet,Vx=new _;function Hx(e){Vx.copy(e),Ph(wc.move,{x:e.x,y:e.y})}function Ux(){Ph(wc.jump,!0)}var Wx=e=>Rx.has(e);function Gx(e,t){return Number(Ch(e).some(Wx))-Number(Ch(t).some(Wx))}var Kx=new _;function qx(){return Kx.set(Gx(Ax,kx),Gx(Dx,Ox)).add(Vx)}function Jx(){return Gx(jx,Mx)}function Yx(){return Ch(Nx).some(Wx)}function Xx(e){if(e.defaultPrevented&&!Bx.has(e))return!0;let t=e.target;return t instanceof HTMLElement?t.isContentEditable||t.matches(`input, textarea, select`)?!0:e.key!==` `&&e.key!==`Enter`?!1:e.metaKey||e.ctrlKey?t.matches(`a[href]`):t.matches(`button, a[href], [role=treeitem], [role=menuitem], [role=option]`):!1}function Zx(e,t,n){let r=Zh(t,n),i=()=>{Rx.clear(),eg()},a=e=>{if(e.metaKey){i();return}if(Xx(e)||e.ctrlKey&&!zx(`Control`)||e.altKey&&!zx(`Alt`))return;let{code:n}=e,r=e.repeat||Rx.has(n);for(let e of ch(n))bm(e,ih+n,r);if(Px(Nx,n)){Rx.add(n);return}Lx(n)&&((!t||t.queryFirst(wf)!==void 0)&&(e.preventDefault(),Bx.add(e)),!r&&Rx.add(n))},o=e=>{let{code:t}=e;Rx.delete(t);for(let e of ch(t))Gh(e,ih+t)},s=new AbortController,{signal:c}=s;return e.addEventListener(`keydown`,a,{signal:c}),e.addEventListener(`keyup`,o,{signal:c}),e.addEventListener(`blur`,i,{signal:c}),e.document.addEventListener(`visibilitychange`,i,{signal:c}),()=>{s.abort(),i(),r()}}var Z=t(Ze(),1),Q=t(n(),1);function Qx({children:e,...t}){let n=(0,Q.useContext)(my);t={...n,...t},t.transition=yy(t.transition,n.transition),t.isStatic=Ly(()=>t.isStatic);let r=(0,Q.useMemo)(()=>t,[JSON.stringify(t.transition),t.transformPagePoint,t.reducedMotion,t.skipAnimations,t.isValidProp]);return(0,Z.jsx)(my.Provider,{value:r,children:e})}var $x=[`keydown`,`pointerdown`,`touchend`],eS=!1,tS=!1;function nS(){try{return Pe.getContext()??void 0}catch(e){Pe.setContext(null),console.warn(`Web Audio is unavailable in this browser, so the game runs silent: its sounds, music and footsteps play nothing, and the game needs no change. The browser said: ${String(e)}`);return}}function rS(){let e=nS();if(e!==void 0&&!eS){eS=!0;for(let e of $x)window.addEventListener(e,()=>{tS||rS()?.resume()})}return e}function iS(){return tS=!0,eS&&rS()?.suspend(),()=>{tS=!1,eS&&navigator.userActivation?.hasBeenActive!==!1&&rS()?.resume()}}var aS=new Map,oS=Promise.resolve(void 0);function sS(e){if(rS()===void 0)return oS;let t=aS.get(e);return t===void 0&&(t=new s().loadAsync(e),aS.set(e,t)),t}var cS=function(e){return e.Music=`music`,e.Effects=`effects`,e.Interface=`interface`,e.Voice=`voice`,e}({}),lS={music:`musicVolume`,effects:`effectsVolume`,interface:`interfaceVolume`,voice:`voiceVolume`},uS=.5;function dS(e){return e<=0?0:10**(uS*(e-100)/20)}var fS=6;function pS(e){return e<=100?dS(e):10**(fS*(Math.min(e,200)-100)/100/20)}function mS(e,t){let n=e[lS[t]];return dS(e.masterVolume)*(t===`voice`?pS(n):dS(n))}function hS({channel:e,base:t=1},n){let r=t*mS(q.getState(),e);return n(r),q.subscribe(i=>{let a=t*mS(i,e);a!==r&&(r=a,n(r))})}function gS(e,t){return hS(t,t=>{e.gain.value=t})}var _S=new WeakMap;function vS(e){let t=_S.get(e);return t===void 0&&(t=e.createGain(),t.connect(e.destination),gS(t,{channel:`effects`}),_S.set(e,t)),t}function yS(e){let t=rS();t?.state===`running`&&sS(e).then(e=>{if(e===void 0)return;let n=t.createBufferSource();n.buffer=e,n.connect(vS(t)),n.start()})}function bS({name:e}){try{return(0,Q.useLayoutEffect)(()=>dg(e),[e]),null}catch(e){throw B(`PendingDraw`,e)}}function xS(e){return e&&!e.hold?e.plays:0}var SS=new Set;function CS({world:e,clip:t,end:n}){let r=`${t.name}\n${n}`;return n>t.duration&&!SS.has(r)&&Dc(e,`playClip: end is ${n} s, past the end of the clip "${t.name}", which is ${t.duration} s long, so it plays to its end. Pass an end of ${t.duration} or less.`)&&SS.add(r),n>0?Math.min(n,t.duration):t.duration}function wS({action:e,end:t,deltaSeconds:n}){e.time+n*e.timeScale<t||(e.time=t,e.paused=!0)}function TS(e){let t=null;return e.traverse(e=>{!t&&e instanceof y&&/spine/i.test(e.name)&&(t=e)}),t}function ES(e=0){return{plays:e,clip:null,tracks:[],active:!1,time:0,start:0,end:0,speed:1,fadeSeconds:0,hold:!1,stopped:!1,weight:0,applied:!1}}function DS(e){if(e.applied){for(let t=0;t<e.tracks.length;t++){let{target:n,base:r}=e.tracks[t];n.fromArray(r)}e.applied=!1}}var OS=new Set,kS=new Set;function AS({world:e,root:t,spine:n,addedPose:r,clip:i}){if(!n){let n=[];t.traverse(e=>{e instanceof y&&n.push(e.name)});let r=n.join(`, `);!OS.has(r)&&Dc(e,`playClip: the model has no bone named like a spine, so "${i.name}" plays on ClipLayer.UpperBody over its whole body. Its bones: ${r||`none`}.`)&&OS.add(r)}let a=[];for(let e of i.tracks){let{nodeName:i,propertyName:o}=De.parseTrackName(e.name),s=De.findNode(t,i);if(!s||n&&!MS(s,n))continue;let c=o===`quaternion`?s.quaternion:o===`position`?s.position:o===`scale`?s.scale:null;if(!c)continue;let l=c instanceof P?r?.tracks.find(t=>t.name===e.name):void 0;a.push({target:c,sampler:jS(e),added:l?new P().fromArray(jS(l).evaluate(0)):null,base:[0,0,0,0]})}return a}function jS(e){return e.createInterpolant()}function MS(e,t){for(let n=e;n;n=n.parent)if(n===t)return!0;return!1}var NS=new P,PS=new j;function FS({world:e,entity:t,layer:n,root:r,spine:i,clips:a,addedPose:o,deltaSeconds:s}){let c=t.get(js);if(c&&c.plays!==n.plays){n.plays=c.plays;let t=c.name?a.get(c.name):void 0;if(t)t!==n.clip&&(n.tracks=AS({world:e,root:r,spine:i,addedPose:o,clip:t})),n.clip=t,n.active=!0,n.end=CS({world:e,clip:t,end:c.end}),n.start=Math.min(c.start,n.end),n.time=n.start,n.speed=c.speed,n.fadeSeconds=c.fadeSeconds,n.hold=c.hold,n.stopped=!1;else if(n.stopped=!0,c.name&&!kS.has(c.name)){let t=[...a.keys()].join(`, `);Dc(e,`playClip: there is no clip named "${c.name}" to play on ClipLayer.UpperBody, so it plays none. The clips: ${t||`none`}.`)&&kS.add(c.name)}}if(!n.active)return;let l=!!c?.name&&!n.stopped,u=n.time;n.time=Math.min(n.time+s*n.speed,n.end);let d=Math.min(n.fadeSeconds,(n.end-n.start)/n.speed/2),f=l&&(n.hold||(n.end-n.time)/n.speed>d);if(n.weight=n.fadeSeconds>0?F.clamp(n.weight+(f?1:-1)*s/n.fadeSeconds,0,1):Number(f),n.weight===0){n.active=f||l&&u<n.end;return}for(let e=0;e<n.tracks.length;e++){let{target:t,sampler:r,added:i,base:a}=n.tracks[e],o=r.evaluate(n.time);t instanceof P?(t.toArray(a),NS.fromArray(o),i&&NS.multiply(i),t.slerp(NS,n.weight)):(t.toArray(a),t.lerp(PS.fromArray(o),n.weight))}n.applied=!0}var IS=new Map,LS=new WeakMap;function RS(e,t){let n=IS.get(e);return n||IS.set(e,n=[]),n.push(t),()=>{let r=n.indexOf(t);r>=0&&n.splice(r,1),n.length===0&&IS.get(e)===n&&IS.delete(e)}}function zS(e){let t=LS.get(e);if(t)return t;let n=new Map,r=[];return t={posed:{root:e,bone:t=>{let i=n.get(t);if(i===void 0){let r=De.sanitizeNodeName(t),a;e.traverse(e=>{!a&&e instanceof y&&(e.name===t||e.name===r)&&(a=e)}),i=a?{bone:a,quaternion:new P,position:new j,scale:new j}:null,n.set(t,i)}if(i)return r.includes(i)||(i.quaternion.copy(i.bone.quaternion),i.position.copy(i.bone.position),i.scale.copy(i.bone.scale),r.push(i)),i.bone}},bones:n,reached:r},LS.set(e,t),t}function BS({entity:e,root:t,seconds:n}){let r=IS.get(e);if(!r)return!1;let{posed:i}=zS(t);for(let e=0;e<r.length;e++)r[e](i,n);return!0}function VS(e){let t=LS.get(e);if(!t)return;let{reached:n}=t;for(let e=0;e<n.length;e++){let{bone:t,quaternion:r,position:i,scale:a}=n[e];t.quaternion.copy(r),t.position.copy(i),t.scale.copy(a)}n.length=0}function HS(e,t=Sg){return We(qy,e,t)}HS.preload=(e,t=Sg)=>{We.preload(qy,e,t)};function US(e){(0,Q.useEffect)(()=>()=>e.traverse(e=>{e instanceof T&&e.skeleton.dispose()}),[e])}var WS=class extends cm{constructor(e,t,n){super(e,t,n);let r=this._customProgramCacheKey;this._customProgramCacheKey=()=>`${r()}|${String(this._onBeforeCompileBase)}${this.readProgramKey()}`}readProgramKey(){return``}},GS=16,KS=new oe,qS=new oe,JS=new oe;function YS(e){let t=e.parent;for(;t;){if(!t.visible)return!1;if(!t.parent)return t.isScene===!0;t=t.parent}return!1}function XS(e){let t=[];return e.traverse(e=>{e instanceof T&&t.push(e)}),t}function ZS(e){let{material:t,geometry:n}=e;return!Array.isArray(t)&&Object.keys(n.morphAttributes).length===0}var QS=class{source;place;mesh;ownsMaterial;copies=new Map;constructor(e,t,n,r){this.source=e,this.place=t,this.mesh=n,this.ownsMaterial=r}},$S=class extends WS{batch;uniformKey;constructor(e,t,n,r){super(t,n,{capacity:GS}),this.batch=e,this.uniformKey=r}readProgramKey(){return`|skinned batch ${this.uniformKey}`}onBeforeShadow(e,t,n,r,i,a,o){this.batch.updateOnce(e.info.render.frame),super.onBeforeShadow(e,t,n,r,i,a,o)}onBeforeRender(e,t,n,r,i,a){this.batch.updateOnce(e.info.render.frame),super.onBeforeRender(e,t,n,r,i,a)}computeBoundingBox(){let e=this.boundingBox??=new d;e.makeEmpty();let t=new d,n=this.batch.findPart(this);for(let r of n?.copies.values()??[])this.getVisibilityAt(r.id)&&(r.mesh.computeBoundingBox(),r.mesh.boundingBox&&e.union(t.copy(r.mesh.boundingBox).applyMatrix4(r.mesh.matrixWorld)));e.isEmpty()||e.applyMatrix4(JS.copy(this.matrixWorld).invert())}raycast(){}},eC=class extends xe{parts;ownParts;uniforms;copies=new Set;updatedFrame=-1;warmHolds=0;warmIds=[];onEmpty;constructor(e,t={}){super(),this.name=`skinned batch of ${e.name||`a model`}`,this.uniforms=t.uniforms;let n=[];XS(e).forEach((e,r)=>{if(!ZS(e))return;let i=this.createPart(e,r,t);i&&n.push(i)}),this.parts=n,this.ownParts=n}get copyCount(){return this.copies.size}addCopy(e){let t=[],n=XS(e);for(let e of this.ownParts){let r=n[e.place];r?.geometry===e.source.geometry&&r.visible&&t.push(this.addCopyPart(e,r))}let r={root:e,parts:t,remove:()=>{if(this.copies.delete(r)){for(let e of t)e.part.copies.delete(e.id),nC(e.part.mesh,e.id),e.mesh.visible=!0;this.copies.size===0&&this.onEmpty?.()}}};return this.copies.add(r),r}update(){for(let e of this.ownParts){let{mesh:t}=e,n=e.source.skeleton.bones.length,r=t.boneTexture.image.data;qS.copy(t.matrixWorld).invert();for(let i of e.copies.values()){let e=YS(i.mesh);if(t.getVisibilityAt(i.id)!==e&&t.setVisibilityAt(i.id,e),e){aC(i,r,i.id*n),t.boneTexture.enqueueUpdate(i.id),t.setColorAt(i.id,i.color);for(let e in i.uniforms)t.setUniformAt(i.id,e,i.uniforms[e])}}}}updateOnce(e){e!==this.updatedFrame&&(this.updatedFrame=e,this.update())}holdWarmUp(){this.warmHolds===0&&(this.warmIds=this.ownParts.map(e=>this.addWarmInstance(e))),this.warmHolds+=1;let e=!0;return()=>{e&&(e=!1,--this.warmHolds,!(this.warmHolds>0)&&(this.ownParts.forEach((e,t)=>nC(e.mesh,this.warmIds[t])),this.warmIds=[]))}}findPart(e){return this.ownParts.find(t=>t.mesh===e)}dispose(){for(let e of[...this.copies])e.remove();for(let{mesh:e,ownsMaterial:t}of this.ownParts){e.dispose();let n=[t?e.material:void 0,e.customDepthMaterial,e.customDistanceMaterial];for(let e of n)e&&!Array.isArray(e)&&e.dispose();e.geometry.dispose()}this.removeFromParent(),super.dispose()}createPart(e,t,n){let r=e.material,i=n.dress?.(r,e);if((i??r).transparent)return null;let a=i??r.clone(),o=Object.entries(this.uniforms??{}).map(([e,t])=>`${e}:${rC(t)}`).join(`,`),s=e.geometry.clone(),c=new $S(this,s,a,o);return c.name=e.name,c.frustumCulled=!1,c.perObjectFrustumCulled=!1,c.castShadow=n.castShadow??!1,c.receiveShadow=n.receiveShadow??!1,c.customDepthMaterial=new me,c.customDistanceMaterial=new Me,c.initSkeleton(e.skeleton,!1),this.uniforms&&Object.keys(this.uniforms).length>0&&c.initUniformsPerInstance({fragment:Object.fromEntries(Object.entries(this.uniforms).map(([e,t])=>[e,rC(t)]))}),c.setColorAt(0,tC),this.add(c),new QS(e,t,c,i===void 0)}addInstance(e){let t=e.mesh;t.instancesCount===t.capacity&&(t.resizeBuffers(t.capacity*2),t.boneTexture.resize(t.capacity));let n=-1;return t.addInstances(1,(e,t)=>{n=t}),n}addWarmInstance(e){let t=this.addInstance(e),{boneTexture:n}=e.mesh,r=e.source.skeleton.bones.length;return n.image.data.fill(0,t*r*16,(t+1)*r*16),n.enqueueUpdate(t),t}addCopyPart(e,t){let n=this.addInstance(e);t.visible=!1;let r={part:e,mesh:t,id:n,color:new he(1,1,1),uniforms:iC(this.uniforms??{})};return e.copies.set(n,r),r}},tC=new he(1,1,1);function nC(e,t){e.removeInstances(t),e.instancesCount===0&&(e.count=0)}function rC(e){return typeof e==`number`?`float`:`isColor`in e||`z`in e?`w`in e?`vec4`:`vec3`:`vec2`}function iC(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,typeof t==`number`?t:t.clone()]))}function aC(e,t,n){let{mesh:r}=e,{bones:i,boneInverses:a,boneMatrices:o}=r.skeleton,s=JS.multiplyMatrices(qS,r.matrixWorld).multiply(r.bindMatrixInverse);for(let e=0;e<i.length;e++){let c=i[e];c?KS.multiplyMatrices(c.matrixWorld,a[e]):KS.identity(),o&&KS.toArray(o,e*16),KS.premultiply(s).multiply(r.bindMatrix),KS.toArray(t,(n+e)*16)}}var oC=new WeakMap;function sC(e,t){let n=oC.get(e);n||oC.set(e,n=new WeakMap);let r=n.get(t);return r||n.set(t,r=new Map),r}function cC(e,t){let n=e.get(t);n&&(clearTimeout(n.releaseTimer),n.releaseTimer=setTimeout(()=>lC(e,t),3e4))}function lC(e,t){let n=e.get(t);!n||n.holders>0||n.batch.copyCount>0||(e.delete(t),n.batch.dispose())}function uC(e,{key:t=``,...n}={}){let r=L(e=>e.scene),i=Eg(eh.Batch),a=sC(r,e),o=a.get(t);if(!o){let r=new eC(i?e:new xe,n);o={batch:r,holders:0},a.set(t,o),r.onEmpty=()=>cC(a,t)}let{batch:s}=o;(0,Q.useLayoutEffect)(()=>{let e=a.get(t);if(e&&e.batch===s)return e.holders+=1,s.parent!==r&&r.add(s),()=>{--e.holders,cC(a,t)}},[s,a,t,r]);let c=U(e=>e.covered);return(0,Q.useLayoutEffect)(()=>c?s.holdWarmUp():void 0,[s,c]),s}function dC({url:e,lift:t,animation:n,entity:r,material:i}){try{let{scene:a,animations:o}=HS(e),s=(0,Q.useMemo)(()=>t??On(a),[t,a]),c=ay(r,hd),l=ay(r,js),[u]=(0,Q.useState)(()=>xS(r?.get(hd))),[d]=(0,Q.useState)(()=>xS(r?.get(js)));return n||c||l?(0,Z.jsx)(yC,{url:e,scene:a,animations:o,animation:n??``,entity:r,seenPlays:u,seenUpperPlays:d,standing:s,material:i}):i?(0,Z.jsx)(fC,{scene:a,standing:s,material:i}):(0,Z.jsx)(W_,{object:a,"position-y":s,"rotation-y":dr,castShadow:!0,receiveShadow:!0})}catch(e){throw B(`StandingModelView`,e)}}function fC({scene:e,standing:t,material:n}){try{let r=(0,Q.useMemo)(()=>{let t=Ky(e);return t.traverse(e=>{e instanceof k&&(e.castShadow=!0,e.receiveShadow=!0,e.material=Dg(n,e.material))}),t},[n,e]);return US(r),(0,Z.jsx)(`primitive`,{object:r,dispose:null,"position-y":t,"rotation-y":dr})}catch(e){throw B(`DressedModel`,e)}}var pC=new Set;function mC({world:e,url:t,name:n,animations:r,by:i}){let a=`${t}\n${n}`,o=r.map(e=>e.name).join(`, `);!pC.has(a)&&Dc(e,`${i} names "${n}", a clip the model ${t} lacks, so it plays none. Its clips: ${o||`none`}.`)&&pC.add(a)}var hC=new WeakMap;function gC(e){let t=hC.get(e);return t||hC.set(e,t=e.clone()),t}function _C(e){return{plays:e,action:null,fadeSeconds:0,hold:!1,start:0,end:0,speed:1,stopped:!1,weight:0}}function vC({world:e,entity:t,url:n,animations:r,oneShot:i,mixer:a,loop:s,deltaSeconds:c}){let l=t.get(hd);if(l&&l.plays!==i.plays){i.plays=l.plays;let t=l.name?we.findByName(r,l.name):void 0;if(t){let n=a.clipAction(gC(t));i.action!==n&&i.action?.stop(),i.end=CS({world:e,clip:t,end:l.end}),i.start=Math.min(l.start,i.end),i.speed=l.speed,n.reset().setLoop(o,1),n.clampWhenFinished=!0,n.time=i.start,n.timeScale=i.speed,n.play(),i.action=n,i.fadeSeconds=l.fadeSeconds,i.hold=l.hold,i.stopped=!1}else i.stopped=!0,l.name&&mC({world:e,url:n,name:l.name,animations:r,by:`playClip`})}let{action:u,start:d,end:f,speed:p}=i;if(!u)return;wS({action:u,end:f,deltaSeconds:c});let m=s?Math.min(i.fadeSeconds,(f-d)/p/2):0,h=!!l?.name&&!i.stopped&&(i.hold||(f-u.time)/p>m);i.weight=s&&i.fadeSeconds>0?F.clamp(i.weight+(h?1:-1)*c/i.fadeSeconds,0,1):Number(h),u.setEffectiveWeight(i.weight),s?.setEffectiveWeight(1-i.weight),!h&&i.weight===0&&(u.stop(),i.action=null)}function yC({url:e,scene:t,animations:n,animation:r,entity:i,seenPlays:a,seenUpperPlays:o,standing:s,material:c}){try{let l=W(),{skinned:u,fileMaterials:d}=(0,Q.useMemo)(()=>{let e=Ky(t),n=new Map;return e.traverse(e=>{e instanceof k&&(e.castShadow=!0,e.receiveShadow=!0,n.set(e,e.material)),e instanceof T&&(e.frustumCulled=!1)}),{skinned:e,fileMaterials:n}},[t]),f=(0,Q.useMemo)(()=>{for(let[e,t]of d)e.material=Dg(c,t);return u},[u,d,c]);US(f);let p=uC(t,{key:c?Mg(c):``,dress:c&&(e=>Ag(c,e)),castShadow:!0,receiveShadow:!0});(0,Q.useLayoutEffect)(()=>{let e=p.addCopy(f);return()=>e.remove()},[p,f]);let m=(0,Q.useMemo)(()=>new _e(f),[f]),h=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{if(!r)return;let t=we.findByName(n,r);if(!t){mC({world:l,url:e,name:r,animations:n,by:`The entity's animation`});return}let i=m.clipAction(t).play();return h.current=i,()=>{h.current=null,i.stop()}},[r,n,m,e,l]),(0,Q.useEffect)(()=>()=>{m.stopAllAction(),m.uncacheRoot(f)},[f,m]);let[g]=(0,Q.useState)(()=>_C(a)),[_]=(0,Q.useState)(()=>ES(o)),v=(0,Q.useMemo)(()=>TS(f),[f]),y=(0,Q.useMemo)(()=>new Map(n.map(e=>[e.name,e])),[n]);return I(z(`AnimatedModelView`,(t,r)=>{VS(f),DS(_),i?.isAlive()&&vC({world:l,entity:i,url:e,animations:n,oneShot:g,mixer:m,loop:h.current,deltaSeconds:r}),m.update(r),i?.isAlive()&&(FS({world:l,entity:i,layer:_,root:f,spine:v,clips:y,deltaSeconds:r}),BS({entity:i,root:f,seconds:r}))})),(0,Z.jsx)(`primitive`,{object:f,dispose:null,"position-y":s,"rotation-y":dr})}catch(e){throw B(`AnimatedModelView`,e)}}function bC({name:e,animation:t,entity:n,material:r,children:i}){try{let a=an(e);return(0,Z.jsxs)(Q.Suspense,{fallback:(0,Z.jsx)(bS,{name:`the model ${a}`}),children:[(0,Z.jsx)(dC,{url:a,lift:Tt(e),animation:t,entity:n,material:r??fl(e)}),i]})}catch(e){throw B(`ModelView`,e)}}function xC({model:e,color:t=`white`}){try{return e===void 0?(0,Z.jsxs)(`mesh`,{"position-y":.4,castShadow:!0,children:[(0,Z.jsx)(`octahedronGeometry`,{args:[.2]}),(0,Z.jsx)(`meshStandardMaterial`,{color:t,emissive:t,emissiveIntensity:.5})]}):(0,Z.jsx)(bC,{name:e})}catch(e){throw B(`LootView`,e)}}function SC(e,t,n){let r=null,i=e=>{r=e,e.add(gn({path:t})),n(e)},a=e.get(Kt)?.get(t);a?.isAlive()&&i(a);let o=e.onAdd(hf,e=>{e.get(hf)?.id===t&&i(e)}),s=e.onRemove(hf,e=>{e===r&&(r=null,n(null))});return()=>{o(),s(),r?.isAlive()&&r.remove(gn)}}function CC(e,t=Xf){return(0,Q.useCallback)(n=>{e.isAlive()&&(n?e.add(t({object:n})):e.remove(t))},[e,t])}var wC=(0,Q.createContext)(null),TC=(0,Q.createContext)(null);function EC(e){return e===void 0?null:e instanceof P?e.toArray():[...e]}function DC(e){return e===void 0?null:typeof e==`number`?e:e instanceof j?e.toArray():[...e]}function OC({prefab:e,model:t,animation:n,material:r,name:i,position:a=[0,0,0],rotation:o,scale:s,authority:c=eo.Server,body:l,collider:u,ai:d,children:f}){try{let p=t??e?.model,m=n??e?.animation,h=u??e?.collider,g=l??e?.body,_=W(),v=Pv(),y=(0,Q.use)(wC),[b,x]=(0,Q.useState)(null);p!==void 0&&an(p);let S=h&&JSON.stringify(h),C=g&&JSON.stringify(g),w=(0,Q.useMemo)(()=>h!==void 0&&rf(qo(h)),[S]),T=(0,Q.useMemo)(()=>w&&p!==void 0&&$o(p),[w,p]);w&&Bf(p,T);let E=(0,Q.useRef)(a),D=(0,Q.useRef)(o),O=(0,Q.useRef)(s),k=(0,Q.useRef)(c),ee=(0,Q.useRef)(h),A=(0,Q.useRef)(g),j=(0,Q.useRef)(e),M=(0,Q.useRef)(p);(0,Q.useEffect)(()=>{if(v!==void 0&&_.has(Kt))return SC(_,v,x);let e=ya(_,j.current,{position:E.current,rotation:D.current,scale:O.current,model:M.current,collider:ee.current,body:A.current});e.add(ei({context:k.current}),$n),v!==void 0&&_.has(Aa)&&e.add(gn({path:v})),y!==null&&e.add(ln({ground:y})),x(e);let t=_.onRemove(mo,t=>{t===e&&x(null)});return()=>{t(),e.isAlive()&&il(_,e)}},[_,v,y]);let te=(0,Q.useRef)({colliderWords:S,bodyWords:C});return(0,Q.useEffect)(()=>{if(!b?.isAlive()||b.has(hf))return;let e=te.current;if(e.colliderWords===S&&e.bodyWords===C)return;if(te.current={colliderWords:S,bodyWords:C},!h){b.remove(oi(Du),oi(zs),oi(Fd));return}let t=qo(h);ki(b,Du,{colliders:t});let n=Sc(g);ki(b,zs,n);let r=[...g?.ignore??[]];b.has(oi(Fd))?ki(b,Fd,{ignore:r}):r.length>0&&b.add(oi(Fd)({ignore:r}))},[b,S,C]),b===null?null:(0,Z.jsx)(MC,{entity:b,model:p,animation:m,material:r,name:i,position:a,rotation:o,scale:s,authority:c,ai:d,children:v===void 0?f:(0,Z.jsx)(Vv,{value:v,children:f})})}catch(e){throw B(`Entity`,e)}}var kC=new j,AC=new P;function jC(e,t){Eo(e.get(Pn)?.handle??void 0,t,{})}function MC({entity:e,model:t,animation:n=``,material:r,name:i,position:a,rotation:o,scale:s,authority:c,ai:l,children:u}){try{let d=W(),f=!e.has(hf),p=JSON.stringify(a),m=JSON.stringify(EC(o)),h=JSON.stringify(DC(s));(0,Q.useEffect)(()=>{let t=f&&e.isAlive()?e.get(mo):void 0;if(!t)return;let n=JSON.parse(p),r=!t.position.equals(kC.set(...n));t.position.copy(kC),e.set(mo,t),r&&jC(d,e)},[d,e,f,p]),(0,Q.useEffect)(()=>{let t=f&&e.isAlive()?e.get(mo):void 0;if(!t)return;let n=JSON.parse(m);n?n.length===4?AC.fromArray(n):Gi(AC,[n[0],n[1],n[2]]):AC.identity();let r=!t.rotation.equals(AC);t.rotation.copy(AC),e.set(mo,t),r&&jC(d,e)},[d,e,f,m]),(0,Q.useEffect)(()=>{let t=f&&e.isAlive()?e.get(mo):void 0;if(!t)return;let n=JSON.parse(h);n===null?t.scale.setScalar(1):typeof n==`number`?t.scale.setScalar(n):ft(t.scale,[n[0],n[1],n[2]]),e.set(mo,t)},[e,f,h]),(0,Q.useEffect)(()=>{f&&e.isAlive()&&e.set(ei,{context:c})},[e,f,c]),(0,Q.useEffect)(()=>{f&&e.isAlive()&&(t===void 0?e.remove(Ur):e.has(Ur)?e.set(Ur,{name:t,animation:n}):e.add(Ur({name:t,animation:n})))},[e,f,t,n]);let g=l&&JSON.stringify(l);(0,Q.useEffect)(()=>{if(f&&e.isAlive()){if(g===void 0)e.remove(im);else{let{is:t=``,facts:n=[],actions:r=[]}=JSON.parse(g);e.has(im)?e.set(im,{is:t,facts:n,actions:r}):e.add(im({is:t,facts:n,actions:r}))}}},[e,f,g]);let _=CC(e),v=Jv(),y=rf(e.get(oi(Du))?.colliders??[]),b=(0,Q.useMemo)(()=>y&&t!==void 0?Cl(t):void 0,[y,t]);(0,Q.useEffect)(()=>{y&&t!==void 0&&e.isAlive()&&b&&e.add(co({points:b}))},[e,y,t,b]);let x=Jy({id:String(e.id()),name:i,through:i===void 0?OC:void 0,owner:OC,kind:yh.Entity,entityId:Fc(d,e)});return(0,Z.jsx)(TC,{value:e,children:(0,Z.jsx)(rb,{value:x,children:(0,Z.jsxs)(`group`,{ref:_,name:i,children:[t!==void 0&&!v&&(0,Z.jsx)(bC,{name:t,animation:n,entity:e,material:r}),u]})})})}catch(e){throw B(`AliveEntity`,e)}}function NC(){let e=(0,Q.use)(TC);if(e===null)throw R(Error(`useEntity() is called outside an <Entity>: call it in a component rendered inside <Entity>.`),`SP0008`,`useEntity`);return e}function PC(e,t,n){let{name:r,settings:i}=RC(e,t);if(t.predicted)throw R(Error(`sendMessage(world, ${r}) sends a plain message: "${r}" is a press, so send it with sendPress(world, handle, payload).`),`SP0028`,`sendMessage`);return zC(e,r,i,n)}function FC(e,t,n,...[r]){let{name:i,settings:a}=RC(e,t);if(!t.predicted)throw R(Error(`sendPress(world, ${i}) sends a press: "${i}" is a plain message, so send it with sendMessage(world, handle, payload).`),`SP0029`,`sendPress`);let o=r?.entity;if(o&&!UC(e,o))return Dc(e,`sendPress: "${i}" was not sent, since it names an entity her player does not control: pass one readControlled(world, usePlayer()) lists.`),mg.NotYours;let s=o??Ol(e)??HC(e);if(!s)return VC(e,`sendPress`,i),mg.NoPlayer;let c=Gl(e,a.shape,n);return c.missing===void 0&&!df(c.payload,a.shape)?(LC(e,`sendPress`,i,a,n),mg.InvalidPayload):s===HC(e)&&!Md(e)?zC(e,i,a,n):(Al(e,{entity:s,name:i,payload:n}),null)}function IC(e,t,n){let{name:r,settings:i}=RC(e,t);return zC(e,r,i,n)}function LC(e,t,n,r,i){Dc(e,`${t}: "${n}" was not sent, since its payload ${BC(i)} is not of its shape, ${JSON.stringify(r.shape)}: each field it declares, in range, and no other.`)}function RC(e,t){let{name:n}=t;if(!e.get(da)?.get(n))throw R(Error(`"${n}" is no message of this world: add the ${n.slice(0,n.indexOf(`.`))} plugin to plugins in src/game.ts.`),`SP0030`,void 0);return t}function zC(e,t,n,r){let i=Gl(e,n.shape,r);if(i.missing!==void 0)return Dc(e,`sendMessage: "${t}" was not sent, since its field ${i.missing} names an entity no longer there, or one only this page holds.`),mg.MissingEntity;if(!df(i.payload,n.shape))return LC(e,`sendMessage`,t,n,r),mg.InvalidPayload;if(e.has(Kt))return Xm.getState().sendMessage({name:t,payload:i.payload});let a=Ol(e);return a?(Vt(e,{entity:a,name:t,payload:r}),null):(VC(e,`sendMessage`,t),mg.NoPlayer)}function BC(e){try{return JSON.stringify(e)}catch{return`(one JSON cannot write)`}}function VC(e,t,n){Dc(e,`${t}: "${n}" went nowhere, since this world has no player's character to send it as; spawn the <CharacterSpawn> before a screen sends.`)}function HC(e){let t=e.query(oi(bf));return Md(e)?t.find(e=>Yr(e,bf)?.role===la.Player):t.find(e=>Ts(e))}function UC(e,t){if(t===HC(e))return!0;let n=xd(e,t);return n?.has(oi(bf))?Md(e)||Ts(n):!1}function WC(e,t){GC(e,t),KC(e.trait,t)}function GC({trait:e,plugin:t,wiki:n,source:r,description:i,ranges:a},o,s=[e]){let c=NC();t&&Br(pd(c),t);let l=Ge(),u=$y(l?.type)??`Behaviour`,d=(0,Q.useId)();Jy({id:`${c.id()}:${d}`,name:u,kind:yh.Behaviour,props:o,wiki:n,source:r,description:i,ranges:a,entity:c,traits:s})}function KC(e,t){let n=NC(),r=(0,Q.useRef)(void 0),i=!n.has(hf);(0,Q.useEffect)(()=>{i&&n.isAlive()&&(n.has(e)?bg(r.current,t)||n.set(e,t):n.add(e(t)),r.current=t)},[n,i,e,t]),(0,Q.useEffect)(()=>()=>{i&&n.isAlive()&&n.remove(e)},[n,i,e])}function qC(e,t,n={}){let r=W(),i=(0,Q.useRef)(t);i.current=t;let{entity:a}=n;if(e.delivery===ko.ServerOnly)throw R(Error(`useEvent(${e.name}) listens for a server-only event, which stays on the room and never reaches a view: read it in a system with readEvents, or declare it reliable.`),`SP0391`,`useEvent`);(0,Q.useEffect)(()=>xu(r,e,e=>i.current(e),a),[r,e,a])}function JC({speed:e}){try{return WC(An,{speed:e}),null}catch(e){throw B(`Spin`,e)}}function YC({height:e,seconds:t=2}){try{return WC(vc,{height:e,seconds:t}),null}catch(e){throw B(`Bob`,e)}}function XC({reward:e,radius:t=1,sound:n}){try{WC(gi,{reward:e,radius:t});let r=NC(),i=Gv();return(0,Q.useEffect)(()=>{n!==void 0&&!i&&sS(n)},[n,i]),qC(qr,()=>{n!==void 0&&yS(n)},{entity:r}),null}catch(e){throw B(`Pickup`,e)}}function ZC({maximum:e}){try{WC(Yt,{current:e,maximum:e});let t=NC();return(0,Q.useEffect)(()=>{t.isAlive()&&!t.has(hf)&&ot(t,{[_o]:{base:e,min:1}})},[t,e]),null}catch(e){throw B(`Health`,e)}}function QC({seconds:e=5,clip:t=``}){try{if(Od(e,`set <Respawn seconds={5} />.`),(0,Q.use)(TC)===null)throw R(Error(`<Respawn> is outside an <Entity>: put it inside the <Entity>, beside its <Health>. A player's character's respawn is <CharacterSpawn respawn={{ seconds: 5 }} />.`),`SP0015`,`Respawn`);return GC(Ri,{seconds:e,clip:t}),KC(Ri.trait,{seconds:e,clip:t,inPlace:!0}),null}catch(e){throw B(`Respawn`,e)}}var $C=[$l.trait,jt],ew={};function tw({speed:e,reach:t=1,walks:n=!1,radius:r=jt.schema.radius,height:i=jt.schema.height,collisionMask:a=ro,controller:o}){try{let s={speed:e,reach:t,walks:n},c={radius:r,height:i,collisionMask:a&&Sn(a)},l=(0,Q.useMemo)(()=>dt(o),[o]);return GC($l,{...s,...c},$C),KC($l.trait,s),KC(jt,c),KC(Ya,l),KC(Jn,ew),null}catch(e){throw B(`Chase`,e)}}function nw({item:e,count:t=1,radius:n=1,id:r}){try{vs(e),Mu(t);let i=W(),[a]=(0,Q.useState)(()=>r===void 0?void 0:i.get(pl)?.[r]),o=a??t;return(0,Q.useEffect)(()=>{if(r===void 0||!i.has(Bc))return;let e=rw.get(i);if(e||rw.set(i,e=new Set),e.has(r))throw R(Error(`Two <Loot> have the id "${r}": they would share one count in the save. Give each its own.`),`SP0016`,`Loot`);return e.add(r),()=>void e.delete(r)},[i,r]),o===0?null:(0,Z.jsx)(iw,{item:e,count:o,radius:n,id:r??``})}catch(e){throw B(`Loot`,e)}}var rw=new WeakMap;function iw({item:e,count:t,radius:n,id:r}){try{let{model:i,color:a}=vs(e);return WC(Us,{item:e,count:t,radius:n,id:r}),Gv()?null:(0,Z.jsx)(xC,{model:i,color:a})}catch(e){throw B(`LaidLoot`,e)}}function aw({accepts:e}){try{return WC(Tl,{accepts:e}),null}catch(e){throw B(`Lock`,e)}}function ow(){return(Ch(Et.interact)[0]??``).replace(/^Key/,``)}function sw(e,t,n){let r=e.get(mo)?.position,i=t?.get(mo)?.position;return r!==void 0&&i!==void 0&&i.distanceTo(r)<=n}function cw({prompt:e,radius:t=1.5,onInteract:n}){try{WC(Na,{prompt:e,radius:t});let r=W(),i=NC(),a=Gv(),[o,s]=(0,Q.useState)(!1),c=ry(wf,ei,hf),l=(0,Q.useRef)(n);(0,Q.useEffect)(()=>{l.current=n},[n]);let u=(0,Q.useCallback)(()=>{let e=i.get(Na.trait);return i.has(hf)?sw(i,c,e?.radius??t):e?.near??!1},[i,c,t]),d=(0,Q.useCallback)(()=>{l.current?.();let e=tf(r,i);e?tc(e,sn,{by:null},{entity:i}):PC(r,Ga,{entity:Fc(r,i)})},[i,r]);I(z(`Interact`,()=>{let e=u();s(e),fo(r,i,e)&&d()})),(0,Q.useEffect)(()=>{if(a)return;let e=e=>{Ch(Et.interact).some(t=>t===e.code)&&(e.metaKey||e.ctrlKey||e.altKey||Xx(e)||u()&&d())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[a,u,d]);let f=G(i,Xf)?.object;return!o||!f?null:Je((0,Z.jsx)(z_,{name:`interact-prompt`,center:!0,position:[0,1.5,0],children:(0,Z.jsxs)(xy,{as:`p`,className:`pointer-events-none flex items-center gap-1.5 whitespace-nowrap`,children:[(0,Z.jsx)(`kbd`,{className:`rounded border border-white/60 px-1.5 font-sans text-[11px] leading-4 font-semibold pointer-coarse:hidden`,children:ow()}),e]})}),f)}catch(e){throw B(`Interact`,e)}}function lw({radius:e=1,onEnter:t,onExit:n}){try{WC(oa,{radius:e});let r=NC(),i=ry(wf,ei,hf),a=(0,Q.useRef)(!1),o=e=>{e!==a.current&&(a.current=e,e?t?.():n?.())};return qC(Yu,()=>{r.has(hf)||o(!0)},{entity:r}),qC(Tr,()=>{r.has(hf)||o(!1)},{entity:r}),I(z(`Trigger`,()=>{r.isAlive()?r.has(hf)&&o(sw(r,i,r.get(oa.trait)?.radius??e)):o(!1)})),null}catch(e){throw B(`Trigger`,e)}}var uw=ym()(()=>({slots:[],equipment:{}}));function dw(e=!0){(0,Q.useEffect)(()=>e?xh():void 0,[e])}var fw=t(R_(),1),pw=function(e){return e.Glass=`glass`,e.Bare=`bare`,e}({}),mw=K(`rounded-(--radius-pane) border-2 bg-clip-padding p-3 shadow-lg`,cy.glassSurface,cy.glassBorder,cy.glassShadow),hw=`rounded-xl border border-menu-edge bg-menu-surface text-white shadow-[0_12px_32px_rgb(0_0_0/0.45)] backdrop-blur-md`,gw=K(hw,`bg-black [background-image:linear-gradient(var(--color-menu-surface),var(--color-menu-surface))] shadow-2xl shadow-black/60`),_w=`[@media(min-width:2200px)_and_(min-height:1200px)]:[zoom:1.3]`,vw={glass:mw,bare:``},yw=function(e){return e.Above=`above`,e.At=`at`,e}({});function bw(e){try{let{row:t,ref:n}=Zy(`Panel`,e),r=Gv();if(dw(e.freeCursor===!0&&!r),r)return null;let i=(0,Z.jsx)(ib,{value:t,children:e.children});return e.anchor===void 0?(0,Z.jsx)(xw,{...e,ref:n,children:i}):(0,Z.jsx)(Ew,{...e,children:i})}catch(e){throw B(`Panel`,e)}}function xw({slot:e,order:t,variant:n=`glass`,className:r,style:i,children:a,ref:o}){try{let s=Qy(e);return s===void 0?null:(0,fw.createPortal)((0,Z.jsx)(`div`,{ref:o,style:{...i,order:t},className:K(`flex flex-col items-center gap-2`,vw[n],r),children:a}),s)}catch(e){throw B(`SlotPanel`,e)}}var Sw={above:`-mt-2 -translate-x-1/2 -translate-y-full`,at:`-translate-1/2`},Cw=new d,ww=new j,Tw=new j;function Ew({anchor:e,maxDistance:t=1/0,variant:n=`glass`,className:r,style:i,children:a}){try{let o=He(),s=(0,Q.useRef)(null),c=(0,Q.useRef)(null);return I(z(`AnchoredPanel`,({camera:n})=>{let r=s.current,i=r?.parent;if(!r||!i)return;let a=e===`above`?Cw.setFromObject(i):null;if(r.position.y=a&&!a.isEmpty()?a.max.y-i.getWorldPosition(ww).y:0,c.current){let e=n.position.distanceTo(r.getWorldPosition(Tw));c.current.style.display=e>t?`none`:``}})),(0,Z.jsx)(`group`,{ref:s,name:`panel-anchor`,children:(0,Z.jsx)(z_,{ref:c,style:i,className:K(`pointer-events-none flex flex-col items-center gap-2 whitespace-nowrap`,Sw[e],vw[n],r),children:(0,Z.jsx)(o,{children:a})})})}catch(e){throw B(`AnchoredPanel`,e)}}var Dw=ym()(()=>({player:{},appVersion:null,framed:typeof window<`u`&&window.parent!==window,initialized:!1,seat:null,save:null,unanswered:!1}));function Ow({framed:e,appVersion:t,initialized:n}){return e&&t!==null&&!n}var kw=null;function Aw({appVersion:e}){return e!==null&&e>=Op[Ap.Fullscreen]}function jw({appVersion:e}){return e!==null&&e>=Mp[Ip.Fullscreen]}var Mw=null;function Nw(){let e=Dw.getState();if(!kw||!Aw(e))return null;if(!jw(e))return kw({type:Ap.Fullscreen}),Promise.resolve(void 0);Mw?.(!1);let t=new Promise(e=>{Mw=t=>{Mw=null,e(t)}});return kw({type:Ap.Fullscreen}),t}var Pw=null;function Fw(e){return Pw=e,()=>{Pw===e&&(Pw=null)}}function Iw(e){return kw?(kw(e),!0):!1}var Lw=null;function Rw(){let{appVersion:e}=Dw.getState();!kw||e===null||e<Op[Ap.Menu]||kw({type:Ap.Menu,open:Lw??!0})}function zw(e){e!==Lw&&(Lw=e,Rw())}function Bw(e,t){let{style:n}=e.document.documentElement;for(let e of jp){let r=t[e];r===void 0?n.removeProperty(`--game-inset-${e}`):n.setProperty(`--game-inset-${e}`,`${r}px`)}}function Vw({mountedScene:e,loading:t}){return e!==null&&!t}function Hw(e,t){let n=e=>t({type:Ap.Settings,...e}),r=Gy(q,{settings:e,send:n}),i=pb({muted:e.muted,send:n});return()=>{r(),i()}}function Uw({code:e,reason:t}){if(e!==4009&&e!==4010)return;let{key:n=``,retry:r=!1}=vv(t)??{};if(!r)return{key:n,owner:n===``?`the record`:n,reason:e===4010?`a newer version of the game wrote it`:`the room could not load it`}}var Ww={[H.Connecting]:Np.Connecting,[H.Joined]:Np.Joined,[H.Reconnecting]:Np.Reconnecting,[H.Rejoining]:Np.Rejoining,[H.Closed]:Np.Closed};function Gw(e){return Xm.subscribe(({status:t},n)=>{let{appVersion:r}=Dw.getState();t===n.status||r===null||r<Op[Ap.Connection]||e({type:Ap.Connection,status:Ww[t]})})}var Kw=null;function qw(){let{appVersion:e}=Dw.getState();return!kw||e===null||e<Mp[Ip.Seat]?Promise.resolve(null):(Kw?.(null),new Promise(e=>{Kw=t=>{Kw=null,e(t)}}))}function Jw(e){return Xm.subscribe(({refusal:t},n)=>{let{appVersion:r}=Dw.getState();if(!t||t===n.refusal||r===null||r<Op[Ap.SaveLoadFailed])return;let i=Uw(t);i&&e({type:Ap.SaveLoadFailed,...i})})}function Yw(e,t){let n=e=>t.postMessage(e);kw=n;let r;t.addEventListener(`message`,t=>{let i=Lp.safeParse(t.data);if(!i.success){console.warn(`Refused a message from the app that is not on the channel's list.`,t.data,i.error.issues);return}switch(i.data.type){case Ip.Init:{let t=kp.safeParse(i.data.credential);Dw.setState({player:i.data.player,initialized:!0,seat:t.success?t.data:null,save:i.data.save??null}),Bw(e,i.data.insets);break}case Ip.Insets:Bw(e,i.data.insets);break;case Ip.Settings:r?.(),r=Hw(i.data.settings,n);break;case Ip.Leave:if(i.data.moved){Xm.getState().move(),n({type:Ap.Left,released:!1});break}Xm.getState().leave().then(e=>n({type:Ap.Left,released:e}));break;case Ip.Saved:Pw?.stored(i.data.number);break;case Ip.SaveFailed:Pw?.failed(i.data.number);break;case Ip.SaveNow:Pw?Pw.saveNow():n({type:Ap.Save,record:null,cloud:!0});break;case Ip.Seat:{let e=kp.safeParse(i.data.credential);Kw?.(e.success?{url:e.data.room,seat:e.data.ticket}:null);break}case Ip.Fullscreen:Mw?.(i.data.shown)}}),t.start();let i=Jw(n),a=Gw(n);Lw!==null&&Rw();let o,s=()=>{o?.(),n({type:Ap.Ready})};return Vw(U.getState())?s():o=U.subscribe(e=>{Vw(e)&&s()}),()=>{o?.(),i(),a(),Kw?.(null),Mw?.(!1),r?.(),kw===n&&(kw=null),t.close()}}function Xw(e){if(e.parent===e)return()=>void 0;let t,n=i=>{if(i.source!==e.parent)return;let a=Pp.safeParse(i.data),[o]=i.ports;a.success&&o&&(e.removeEventListener(`message`,n),clearTimeout(r),Dw.setState({appVersion:a.data.version}),t=Yw(e,o))};e.addEventListener(`message`,n);let r=setTimeout(()=>Dw.setState({unanswered:!0}),2e3),i={type:Fp.Hello,version:11,release:`0.1.0-beta.15`};return e.parent.postMessage(i,`*`),()=>{clearTimeout(r),e.removeEventListener(`message`,n),t?.()}}var Zw;function Qw(){typeof window<`u`&&(Zw??=Xw(window))}function $w(){let e=W(),[,t]=(0,Q.useReducer)(e=>e+1,0);return iy(wf),iy(oi(bf)),(0,Q.useEffect)(()=>{let n=[e.onChange(wf,t),e.onChange(ei,t),e.onAdd(ei,t)];return()=>{for(let e of n)e()}},[e]),Ol(e)}function eT(e){return G(e,vf)}function tT(){let e=$w()??null,t=eT(e)??vf.schema,{id:n,name:r}=Dw(e=>e.player);return{entity:e,health:t.current,maximumHealth:t.maximum,id:n,name:r}}function nT({slot:e=Xy.Right}){try{let{entity:t}=tT(),n=uw(e=>e.slots);return(0,Z.jsx)(bw,{slot:e,variant:pw.Bare,children:n.map((e,n)=>{if(!e)return null;let{displayName:r,equip:i}=vs(e.item);return(0,Z.jsx)(by,{onPress:()=>{t&&(i?Rc(t,n):zd(t,{slot:n}))},children:`${r} ×${e.count}`},n)})})}catch(e){throw B(`Bag`,e)}}function rT({degrees:e,min:t,max:n,fixed:r},i){return r||i===null?e:F.clamp(i,t,n)}var iT=16/9;function aT(e,t){let n=F.degToRad(e)/2;return F.radToDeg(2*Math.atan(Math.tan(n)/t))}function oT(e){return Number.isFinite(e)&&e>0?e:1}function sT(e,t){let n=aT(e,iT),r=oT(t);return r>=1?n:aT(n,r)}var cT=new Set,lT=new WeakMap,uT=(0,Q.createContext)(null);function dT(e,t){e&&lT.set(e,{player:{},...lT.get(e),...t})}function fT(e){let t=(0,Q.use)(Yv),n=(0,Q.use)(uT)!==null,r=Ge();(0,Q.useEffect)(()=>{n||dT(t,{player:e,owner:pT(r)})})}function pT(e){for(let t=e?.return;t&&t.type!==Vv;t=t.return){if(!gT(t.type))continue;let e=mT(t);return{Component:t.elementType,props:e.memoizedProps,holdsCamera:hT(e)}}}function mT(e){let t=[],n=e;for(;n.return;n=n.return)t.push(n);let r=n.stateNode?.current;for(let n of t.reverse()){let t=r?.child??null;for(;t&&t!==n&&t!==n.alternate;)t=t.sibling;if(!t)return e;r=t}return r??e}function hT(e){for(let t=e.child;t;t=t.sibling)if(cT.has(t.type)||hT(t))return!0;return!1}function gT(e){return typeof e==`function`||typeof e==`object`&&!!e&&(`render`in e||`compare`in e)}function _T(e,t,n=!0){cT.add(e);let r=(0,Q.use)(Yv),i=(0,Q.use)(uT)!==null;(0,Q.useEffect)(()=>{n&&!i&&dT(r,{camera:{Component:e,props:t}})})}function vT({shot:e}){try{let t=Eg(eh.Line);return(0,Z.jsxs)(`group`,{name:`tracer`,children:[t&&(0,Z.jsx)(G_,{points:[e.from,e.to],color:`#ffe38a`,lineWidth:2}),e.hit&&(0,Z.jsxs)(`mesh`,{name:e.critical?`critical hit marker`:`hit marker`,position:e.to,children:[(0,Z.jsx)(`octahedronGeometry`,{args:[e.critical?.2:.12]}),(0,Z.jsx)(`meshBasicMaterial`,{color:e.critical?`#ffc629`:`#ff4d4d`,depthTest:!1})]})]})}catch(e){throw B(`ShotView`,e)}}var yT=function(e){return e.Primary=`primary`,e.Secondary=`secondary`,e}({}),bT=6,xT=150,ST=new _,CT=new _,wT=new _,TT=new de;function ET({name:e,kind:t=kd.Instant,damage:n,range:r,shotsPerSecond:i,speed:a,model:o,pellets:s,spread:c,pierce:l,zoneDamage:u,stats:d,friendlyFire:f,data:p,judge:m,rules:h,button:g=`primary`}){try{let _=W(),v=Gv(),y=L(e=>e.get),[b,x]=(0,Q.useState)(null),S=(0,Q.useRef)(null),C=Xm(e=>e.refusedShot);return(0,Q.useEffect)(()=>Ns(_,e,{kind:t,damage:n,range:r,shotsPerSecond:i,speed:a,model:o,pellets:s,spread:c,pierce:l,zoneDamage:u,stats:d,friendlyFire:f,data:p,judge:m,rules:h}),[_,e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h]),(0,Q.useEffect)(()=>{if(v)return;let b={kind:t,damage:n,range:r,shotsPerSecond:i,speed:a,model:o,pellets:s,spread:c,pierce:l,zoneDamage:u,stats:d,friendlyFire:f,data:p,judge:m,rules:h},C=g===`secondary`?2:0,w=-1/0,T=!1,E=e=>{e.button===C&&(T=e.target===y().gl.domElement,ST.set(e.clientX,e.clientY))},D=n=>{if(n.button!==C)return;let r=performance.now(),i=Ol(_),a=T&&ST.distanceTo(CT.set(n.clientX,n.clientY))<=bT;if(T=!1,!a||!i||i.has(xo)||i.has(yr)||!cs(i,e)||r-w<1e3/_d(b,i,lu.ShotsPerSecond))return;let{camera:o,size:s,gl:c}=y(),l=Yh(c.domElement);l?wT.set(0,0):wT.set((n.clientX-s.left)/s.width*2-1,-((n.clientY-s.top)/s.height)*2+1),TT.setFromCamera(wT,o);let u=Ug(_,{character:i,pointer:TT.ray,weapon:b,throughCrosshair:l});u&&(w=r,_.has(Kt)||Dm(wm.Shot),S.current=null,_.has(Kt)?S.current=Xm.getState().sendShot({weapon:e,origin:u.origin.toArray(),direction:u.direction.toArray(),...Qg(_,b)===b_.Page&&{hits:qg(_,{shooter:i,origin:u.origin,direction:u.direction,weapon:b})}}):t===kd.Projectile?jo(ys(_),{origin:u.origin,direction:u.direction,weapon:{...b,damage:_d(b,i,lu.Damage),range:_d(b,i,lu.Range),speed:_d(b,i,lu.Speed),zoneDamage:_d(b,i,lu.ZoneDamage)},weaponName:e,shooter:i}):u.target&&ia(ys(_),u.target,{amount:Nt(_d(b,i,lu.Damage),u.zone,_d(b,i,lu.ZoneDamage)),source:i,weapon:e,zone:u.zone?.name??null,data:p??null}),t===kd.Instant&&x({from:u.origin.clone(),to:u.end.clone(),hit:u.target!==null,critical:u.zone!==null}))},O=e=>{e.target===y().gl.domElement&&e.preventDefault()};return window.addEventListener(`pointerdown`,E),window.addEventListener(`pointerup`,D),C===2&&window.addEventListener(`contextmenu`,O),()=>{window.removeEventListener(`pointerdown`,E),window.removeEventListener(`pointerup`,D),window.removeEventListener(`contextmenu`,O)}},[_,v,y,e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g]),(0,Q.useEffect)(()=>{C!==null&&C.shot===S.current&&x(e=>e&&{...e,hit:!1})},[C]),qC(nc,({record:e})=>{let{characterId:t}=Xm.getState(),n=S.current;if(n===null||e.shot!==n||e.shooter!==t)return;let r=e.hits.some(e=>e.zone!==void 0);x(e=>e&&{...e,critical:r})}),(0,Q.useEffect)(()=>{if(!b)return;let e=setTimeout(()=>x(null),xT);return()=>clearTimeout(e)},[b]),b&&(0,Z.jsx)(vT,{shot:b})}catch(e){throw B(`Weapon`,e)}}var DT=`absolute bg-white shadow-[0_0_2px_black]`;function OT(){try{return _g(e=>e.captured)?(0,Z.jsx)(Yy,{children:(0,Z.jsxs)(`div`,{"data-crosshair":!0,"aria-hidden":!0,className:`pointer-events-none fixed top-1/2 left-1/2 size-4 -translate-x-1/2 -translate-y-1/2`,children:[(0,Z.jsx)(`div`,{className:`${DT} top-1/2 left-0 h-0.5 w-full -translate-y-1/2`}),(0,Z.jsx)(`div`,{className:`${DT} top-0 left-1/2 h-full w-0.5 -translate-x-1/2`})]})}):null}catch(e){throw B(`Crosshair`,e)}}var kT=new _;function AT(){let e=W(),t=L(e=>e.gl.domElement),n=_g(e=>e.captured),r=ry(V);return(0,Q.useEffect)(()=>Dh(t),[t]),(0,Q.useEffect)(()=>{r?.get(V)?.startLocked&&vh(t)&&r.set(V,{locked:!0})},[r,t]),(0,Q.useEffect)(()=>{let{ownerDocument:n}=t,r=n.defaultView,i=()=>{_g.getState().freed||($g(e)&&vh(t)?Bh(t):Hh(t))},a=n=>{Ix(n)&&vh(t)&&(Ig(e),i())},o=t=>{t.deltaY!==0&&(j_(e,t.deltaY<0),i())},s=n=>{Yh(t)&&m_(e,kT.set(n.movementX,n.movementY))},c=e.onChange(V,()=>{$g(e)||Hh(t)}),l=()=>{hh.getState().open||_g.getState().freed||$g(e)&&vh(t)&&Bh(t)},u=_g.subscribe(({freed:e},r)=>{!e&&r.freed&&Ah()&&(n.pointerLockElement===t?n.addEventListener(`pointerlockchange`,l,{once:!0}):l())});return r?.addEventListener(`keydown`,a),t.addEventListener(`wheel`,o,{passive:!0}),n.addEventListener(`pointermove`,s),()=>{c(),u(),n.removeEventListener(`pointerlockchange`,l),r?.removeEventListener(`keydown`,a),t.removeEventListener(`wheel`,o),n.removeEventListener(`pointermove`,s),Hh(t)}},[e,t]),n}function jT(e){(0,Q.useEffect)(()=>{if(e===void 0)return;let t,n=()=>{t?.(),t=void 0},r=n=>{n.code!==e||Xx(n)||(n.preventDefault(),!(t||hh.getState().open)&&(t=xh()))},i=t=>{t.code===e&&(t.preventDefault(),n())};return window.addEventListener(`keydown`,r),window.addEventListener(`keyup`,i),window.addEventListener(`blur`,n),()=>{window.removeEventListener(`keydown`,r),window.removeEventListener(`keyup`,i),window.removeEventListener(`blur`,n),n()}},[e])}var MT=`button, [role="button"], a[href], input, select, textarea`,NT=`[data-engine-menu], [data-devtools], [data-loading-cover], [data-also-in-menu], [inert]`,PT=250,FT=new Set;function IT(e){return(e.getAttribute(`aria-label`)??e.textContent??``).trim().replace(/\s+/g,` `).slice(0,60)||e.tagName}function LT(e){if(e.matches(`:disabled`)||e.closest(NT)||e.getAttribute(`aria-keyshortcuts`)?.trim())return!1;let t=getComputedStyle(e);return t.pointerEvents===`none`?!1:typeof e.checkVisibility==`function`?e.checkVisibility({opacityProperty:!0,visibilityProperty:!0}):t.display!==`none`&&t.visibility!==`hidden`}function RT(){let e=W(),t=_g(e=>e.captured),n=_g(e=>e.freed),r=U(e=>e.covered);(0,Q.useEffect)(()=>{if(!t||n||r||!e.has(Bc))return;let i,a=()=>{i=void 0;for(let t of document.querySelectorAll(MT)){let n=IT(t);!FT.has(n)&<(t)&&(FT.add(n),Dc(e,`"${n}" is a control on screen while the camera captures the cursor, so no click reaches it. Free the cursor while it shows, with freeCursor on its Panel or Modal or with useFreeCursor, or bind it to a key and name the key with aria-keyshortcuts, keyShortcuts on a Button.`))}},o=()=>{i??=setTimeout(a,PT)};o();let s=new MutationObserver(o);return s.observe(document.body,{childList:!0,subtree:!0,attributes:!0}),()=>{s.disconnect(),clearTimeout(i)}},[t,n,r,e])}var zT={travel:5,milliseconds:400};function BT(){let e=W(),t=L(e=>e.gl.domElement),n=L(e=>e.events.connected),r=L(e=>e.get),i=(0,Q.useRef)({startedAt:0,fromX:0,fromY:0,furthest:0});(0,Q.useEffect)(()=>{let e=({clientX:e,clientY:t})=>{let{fromX:n,fromY:r,furthest:a}=i.current;i.current.furthest=Math.max(a,Math.hypot(e-n,t-r))},{ownerDocument:n}=t;return n.addEventListener(`pointermove`,e),()=>{n.removeEventListener(`pointermove`,e)}},[t]),(0,Q.useEffect)(()=>{if(!(n instanceof EventTarget))return;let a=e=>{if(!(e instanceof MouseEvent))return;let{timeStamp:t,clientX:n,clientY:r}=e;i.current={startedAt:t,fromX:n,fromY:r,furthest:0}},o=n=>{if(!(n instanceof MouseEvent)||!e.queryFirst(V)?.get(V)?.clickToWalk||Yh(t))return;let{startedAt:a,furthest:o}=i.current;if(o>zT.travel||n.timeStamp-a>zT.milliseconds)return;let s=r();s.events.compute?.(n,s);let c=e.queryFirst(lf,Xf)?.get(Xf)?.object,[l]=c?s.raycaster.intersectObject(c,!1):[];if(e.has(xt)&&Vr(e,s.raycaster))return;let u=Ba(e,s.raycaster.ray,l?.distance);u?Zn(e,u):l&&cc(e,l.point)};return n.addEventListener(`pointerdown`,a),n.addEventListener(`click`,o),()=>{n.removeEventListener(`pointerdown`,a),n.removeEventListener(`click`,o)}},[n,r,e,t])}function VT(){let e=L(e=>e.get);return(0,Q.useMemo)(()=>class extends Y_{timedFrame=-1;update(t){let n=e(),r=yb(n),i=r!==this.timedFrame;return this.timedFrame=r,super.update(i?_b(n,t):t)}},[e])}function HT({follow:e=Yp.ViewTarget,distance:t,pitch:n,through:r=tE,settle:i=!0,latch:a=!1,fov:o=sl.fov,fieldOfView:s=null,minDistance:c=sl.minDistance,maxDistance:l=sl.maxDistance,minPolarAngle:u=sl.minPolarAngle,maxPolarAngle:d=sl.maxPolarAngle,firstPersonMinPolarAngle:f=sl.firstPersonMinPolarAngle,firstPersonMaxPolarAngle:p=sl.firstPersonMaxPolarAngle,bodyNearEye:m=pm.Fade,eyeHeightFraction:h=sl.eyeHeightFraction,tuning:g}={}){let[_,v]=(0,Q.useState)(null),y=VT(),[b,x]=(0,Q.useState)(null),S=W(),C=q(e=>e.fieldOfView),w=L(e=>e.size.width/e.size.height),T=s?sT(rT(s,C),w):o,E=(0,Q.useMemo)(()=>({fov:T,minDistance:c,maxDistance:l,minPolarAngle:u,maxPolarAngle:d,firstPersonMinPolarAngle:f,firstPersonMaxPolarAngle:p,bodyNearEye:m,eyeHeightFraction:h,settle:i,latch:a}),[T,c,l,u,d,f,p,m,h,i,a]),D=(0,Q.useMemo)(()=>({...E,...g}),[E,g]),O=(0,Q.useRef)(D),k=(0,Q.useRef)(t),ee=(0,Q.useRef)(t);(0,Q.useEffect)(()=>{_&&t!==ee.current&&(ee.current=t,t!==void 0&&_.dollyTo(t,!0))},[_,t]);let A=(0,Q.useRef)(n),j=(0,Q.useRef)(s);(0,Q.useEffect)(()=>{O.current=D,k.current=t,A.current=n,j.current=s},[D,t,n,s]);let M=Jy({id:b&&String(b.id()),through:r,kind:yh.Entity,entityId:b?Fc(S,b):void 0}),{wiki:te,description:ne,ranges:re}=hm;Jy({id:b&&`${b.id()}:settings`,parent:M,name:`Settings`,kind:yh.Behaviour,props:D,wiki:te,description:ne,ranges:re,entity:b??void 0,traits:[V]}),(0,Q.useEffect)(()=>{if(!_)return;let t=S.spawn(V({orbit:_,follow:e,...O.current,fieldOfView:j.current}));x(t);let n=t.get(V);n&&nm(n);let r=Ol(S)?.get(mo)?.rotation,i=e===null?_.azimuthAngle:r?ud(r):0,a=A.current===void 0?_.polarAngle:Math.PI/2-F.degToRad(A.current);return _.rotateTo(i,a,!1),_.dollyTo(k.current??_.distance,!1),()=>{x(null),rm(S),t.destroy()}},[_,S,e]);let ie=ay(b,V),N=(0,Q.useRef)(D);(0,Q.useEffect)(()=>{if(!b||!ie||bg(N.current,D))return;N.current=D,b.set(V,D);let e=b.get(V);e&&nm(e)},[b,ie,D]);let ae=(0,Q.useRef)(s);return(0,Q.useEffect)(()=>{b&&ie&&!bg(ae.current,s)&&(ae.current=s,b.set(V,{fieldOfView:s}))},[b,ie,s]),{ref:v,impl:y,...Tx}}var UT=function(e){return e.Default=`default`,e.Shooter=`shooter`,e.Classic=`classic`,e}({}),WT={minDistance:sl.minDistance,maxDistance:sl.maxDistance,fieldOfView:sl.fieldOfView,minFieldOfView:zy.fieldOfView.min,maxFieldOfView:zy.fieldOfView.max,fixedFieldOfView:!1,minPolarAngle:sl.minPolarAngle,maxPolarAngle:sl.maxPolarAngle,firstPersonMinPolarAngle:sl.firstPersonMinPolarAngle,firstPersonMaxPolarAngle:sl.firstPersonMaxPolarAngle,bodyNearEye:pm.Fade,eyeHeightFraction:sl.eyeHeightFraction,shoulderOffset:sl.shoulderOffset,pivotRise:sl.pivotRise,lookSpeed:sl.lookSpeed},GT={...WT,fieldOfView:102,lookSpeed:F.degToRad(.5),shoulderOffset:.55,pivotRise:.45,distance:2.75,pitch:10},KT={default:{...WT,firstPerson:!0,lockToggle:!0,startLocked:!1,clickToWalk:!1,orbitButton:yT.Secondary},shooter:{...GT,firstPerson:!0,lockToggle:!1,startLocked:!0,clickToWalk:!1,orbitButton:yT.Secondary},classic:{...WT,firstPerson:!1,lockToggle:!1,startLocked:!1,clickToWalk:!0,orbitButton:yT.Primary}},{ROTATE:qT,DOLLY:JT,NONE:YT}=Y_.ACTION,XT={[yT.Primary]:Tx.mouseButtons,[yT.Secondary]:{left:YT,middle:JT,right:qT,wheel:JT}},ZT={left:YT,middle:YT,right:YT,wheel:JT};function QT({rig:e,orbitButton:t,freeCursorKey:n}){try{let r=_g(e=>e.captured);return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(X_,{makeDefault:!0,...e,mouseButtons:r?ZT:XT[t]}),(0,Z.jsx)($T,{freeCursorKey:n})]})}catch(e){throw B(`LockableOrbit`,e)}}function $T({freeCursorKey:e}){try{return AT(),jT(e),RT(),BT(),(0,Z.jsx)(OT,{})}catch(e){throw B(`OrbitLock`,e)}}function eE(e){let t=W(),n=(0,Q.use)(Yv),r=ry(V)?.get(V)?.orbit;(0,Q.useEffect)(()=>{let i=n?.camera;if(!e||!r||!i)return;let{framing:a}=i.getState();a&&mm(t,a);let o=()=>{let e=Kp(t);e&&i.getState().keepFraming(e)};return r.addEventListener(`rest`,o),()=>{r.removeEventListener(`rest`,o),o()}},[e,r,n,t])}function tE(e){try{let{follow:t,preset:n=`default`,distance:r=KT[n].distance,pitch:i=KT[n].pitch,rememberFraming:a=!1,freeCursorKey:o,...s}=e;_T(tE,e,t!==null),eE(a);let c=t!==null,{minDistance:l=KT[n].minDistance,maxDistance:u=KT[n].maxDistance,fieldOfView:d=KT[n].fieldOfView,minFieldOfView:f=KT[n].minFieldOfView,maxFieldOfView:p=KT[n].maxFieldOfView,fixedFieldOfView:m=KT[n].fixedFieldOfView,minPolarAngle:h=KT[n].minPolarAngle,maxPolarAngle:g=KT[n].maxPolarAngle,firstPersonMinPolarAngle:_=KT[n].firstPersonMinPolarAngle,firstPersonMaxPolarAngle:v=KT[n].firstPersonMaxPolarAngle,bodyNearEye:y=KT[n].bodyNearEye,eyeHeightFraction:b=KT[n].eyeHeightFraction,shoulderOffset:x=KT[n].shoulderOffset,pivotRise:S=KT[n].pivotRise,lookSpeed:C=KT[n].lookSpeed,firstPerson:w=c&&KT[n].firstPerson,lockToggle:T=c&&KT[n].lockToggle,startLocked:E=c&&KT[n].startLocked,clickToWalk:D=KT[n].clickToWalk}=s,{orbitButton:O}=KT[n],k=q(e=>e.mouseSensitivity),ee=q(e=>e.invertLook),A=q(e=>e.shiftLock),j=W();(0,Q.useEffect)(()=>{!A&&T&&j.queryFirst(V)?.set(V,{locked:!1})},[A,T,j]);let M=HT({follow:t,distance:r,pitch:i,minDistance:l,maxDistance:u,fieldOfView:(0,Q.useMemo)(()=>({degrees:d,min:f,max:p,fixed:m}),[d,f,p,m]),minPolarAngle:h,maxPolarAngle:g,firstPersonMinPolarAngle:_,firstPersonMaxPolarAngle:v,bodyNearEye:y,eyeHeightFraction:b,tuning:{firstPerson:w,lockToggle:T&&A,lockToggleOffered:T,clickToWalk:D,startLocked:E,playerLook:!0,lookSpeed:C*k,shoulderOffset:x,pivotRise:S,rotateSpeed:k,invertLook:ee}});return Gv()?null:(0,Z.jsx)(QT,{rig:M,orbitButton:O,freeCursorKey:o})}catch(e){throw B(`Camera`,e)}}function nE({track:e,fov:t}){try{let n=(0,Q.useRef)(null),[{eye:r,aim:i,look:a}]=(0,Q.useState)(()=>({eye:new j,aim:new j,look:new j})),o=iy(Ju,Ir,Xf),s=(0,Q.useMemo)(()=>s_(o,e),[o,e]);return I(z(`TrackChaseCamera`,(t,o)=>{if(Xh(Uh.getState()))return;let c=n.current,l=s?.get(Xf)?.object?.position,u=s?.get(Ir)?.distance;if(!c||!l||u===void 0)return;Kg(e,u,l,r,i);let{eyeResponse:d,aimResponse:f,snapDistance:p}=o_;c.position.distanceTo(r)>p&&(c.position.copy(r),a.copy(i)),c.position.lerp(r,F.damp(0,1,d,o)),a.lerp(i,F.damp(0,1,f,o)),c.lookAt(a)})),(0,Z.jsx)(J_,{makeDefault:!0,ref:n,fov:t})}catch(e){throw B(`TrackChaseCamera`,e)}}var rE={turnRate:Zr.turnRate,holdSeconds:Zr.holdSeconds,latchTurn:Zr.latchTurn};function iE(e){try{let{track:t,fov:n=sl.fov}=e;return _T(iE,e),Gv()?null:t?(0,Z.jsx)(nE,{track:t,fov:n}):(0,Z.jsx)(aE,{fov:n})}catch(e){throw B(`ChaseCamera`,e)}}function aE({fov:e}){try{let t=W(),n=HT({through:iE,latch:!0,fov:e,tuning:rE}),r=(0,Q.useRef)(0);return I(z(`FacingChaseCamera`,(e,n)=>{if(Xh(Uh.getState()))return;r.current-=n;let i=t.queryFirst(V)?.get(V),a=i?.orbit,o=Gp(t)?.get(mo)?.rotation;if(!i||!a||!o||r.current>0)return;let s=F.euclideanModulo(ud(o)-a.azimuthAngle+Math.PI,2*Math.PI)-Math.PI,c=i.turnRate*n;a.rotate(F.clamp(s,-c,c),0,!1)})),(0,Z.jsx)(X_,{makeDefault:!0,...n,onControlStart:()=>{r.current=1/0},onControlEnd:()=>{r.current=t.queryFirst(V)?.get(V)?.holdSeconds??Zr.holdSeconds}})}catch(e){throw B(`FacingChaseCamera`,e)}}var oE=`const vec2 curve = vec2(0.115, 0.165);
|
|
3
|
+
const float scanlineCount = 240.0;
|
|
4
|
+
const float scanlineDepth = 0.30;
|
|
5
|
+
const float triadCount = 200.0;
|
|
6
|
+
const float grille = 0.34;
|
|
7
|
+
const float bar = 0.045;
|
|
8
|
+
const float flickerDepth = 0.028;
|
|
9
|
+
const float grain = 0.022;
|
|
10
|
+
const float vignette = 0.58;
|
|
11
|
+
const float gain = 1.34;
|
|
12
|
+
const float halo = 0.10;
|
|
13
|
+
const vec3 sheen = vec3(0.55, 1.0, 0.78);
|
|
14
|
+
const vec3 room = vec3(0.012, 0.03, 0.022);
|
|
15
|
+
|
|
16
|
+
float hash(vec2 p) {
|
|
17
|
+
p = fract(p * vec2(123.34, 456.21));
|
|
18
|
+
p += dot(p, p + 45.32);
|
|
19
|
+
return fract(p.x * p.y);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// Bends the flat UVs as curved glass does: the corners pull inward.
|
|
23
|
+
vec2 bend(vec2 uv) {
|
|
24
|
+
uv = uv * 2.0 - 1.0;
|
|
25
|
+
vec2 squared = uv.yx * uv.yx;
|
|
26
|
+
uv += uv * squared * curve * uCurvature;
|
|
27
|
+
return uv * 0.5 + 0.5;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
void main() {
|
|
31
|
+
vec2 uv = bend(vUv);
|
|
32
|
+
float t = uTime;
|
|
33
|
+
|
|
34
|
+
// Inside the bent picture, with a soft edge; outside is the room's dark.
|
|
35
|
+
vec2 inBounds = step(vec2(0.0), uv) * step(uv, vec2(1.0));
|
|
36
|
+
float inside = inBounds.x * inBounds.y;
|
|
37
|
+
vec2 edge = min(uv, 1.0 - uv);
|
|
38
|
+
inside *= smoothstep(0.0, 0.020, min(edge.x, edge.y));
|
|
39
|
+
|
|
40
|
+
// Colour fringing: red and blue sampled a little off, more toward the edge.
|
|
41
|
+
vec2 direction = uv - 0.5;
|
|
42
|
+
vec2 offset = direction * (0.0010 + 0.0075 * dot(direction, direction));
|
|
43
|
+
vec3 colour;
|
|
44
|
+
colour.r = texture2D(uMap, uv + offset).r;
|
|
45
|
+
colour.g = texture2D(uMap, uv).g;
|
|
46
|
+
colour.b = texture2D(uMap, uv - offset).b;
|
|
47
|
+
|
|
48
|
+
// Halation: six wide taps, so bright glyphs bloom into the glass.
|
|
49
|
+
float spread = 0.0038;
|
|
50
|
+
vec3 wide = texture2D(uMap, uv + vec2(spread, 0.0)).rgb
|
|
51
|
+
+ texture2D(uMap, uv + vec2(-spread, 0.0)).rgb
|
|
52
|
+
+ texture2D(uMap, uv + vec2(0.0, spread)).rgb
|
|
53
|
+
+ texture2D(uMap, uv + vec2(0.0, -spread)).rgb
|
|
54
|
+
+ texture2D(uMap, uv + vec2(spread, spread) * 0.72).rgb
|
|
55
|
+
+ texture2D(uMap, uv + vec2(-spread, -spread) * 0.72).rgb;
|
|
56
|
+
colour += wide * (halo / 6.0);
|
|
57
|
+
|
|
58
|
+
// Scanlines: dark bands that drift with time.
|
|
59
|
+
float line = sin(uv.y * 3.14159265 * scanlineCount + t * 4.0);
|
|
60
|
+
colour *= mix(1.0 - scanlineDepth * uScanlines, 1.0, line * line);
|
|
61
|
+
|
|
62
|
+
// Phosphor grille: red, green and blue stripes across the width.
|
|
63
|
+
float stripe = vUv.x * 6.2831853 * triadCount;
|
|
64
|
+
colour *= (1.0 - grille) + grille * cos(stripe + vec3(0.0, 2.094, 4.188));
|
|
65
|
+
colour *= gain;
|
|
66
|
+
|
|
67
|
+
// A bright bar rolls up the screen.
|
|
68
|
+
float roll = fract(uv.y * 0.5 - t * 0.07);
|
|
69
|
+
roll = smoothstep(0.0, 0.05, roll) * (1.0 - smoothstep(0.05, 0.18, roll));
|
|
70
|
+
colour += roll * bar;
|
|
71
|
+
|
|
72
|
+
// A soft reflection low on the glass.
|
|
73
|
+
colour += (1.0 - smoothstep(0.0, 0.55, distance(uv, vec2(0.50, 0.15)))) * 0.030 * sheen;
|
|
74
|
+
|
|
75
|
+
// Darker corners, a flicker and film grain.
|
|
76
|
+
float shade = 1.0 - smoothstep(0.30, 0.98, length((uv - 0.5) * vec2(1.05, 1.0)));
|
|
77
|
+
colour *= mix(1.0 - vignette, 1.0, shade);
|
|
78
|
+
colour *= 1.0 - flickerDepth * uFlicker * sin(t * 8.0);
|
|
79
|
+
colour += (hash(vUv + fract(t * 0.37)) - 0.5) * grain;
|
|
80
|
+
|
|
81
|
+
// The room's colour around the picture, lit by the glass's spill.
|
|
82
|
+
float spill = (1.0 - smoothstep(0.18, 0.85, length(vUv - 0.5))) * 0.05;
|
|
83
|
+
colour = mix(room + sheen * spill * 0.42, colour, inside);
|
|
84
|
+
colour = max(colour, room * 0.34);
|
|
85
|
+
gl_FragColor = vec4(colour, 1.0);
|
|
86
|
+
}
|
|
87
|
+
`,sE={};function cE({fragment:e,uniforms:t=sE,transparent:n=!1,clock:r=`world`,material:i}){try{let a=Eg(eh.Shader),o=wg(e,t),s=Object.keys(t).join(` `),c=(0,Q.useMemo)(()=>{let e={uTime:{value:0},uPointer:{value:new _}};for(let t of s.split(` `))t&&(e[t]={value:null});return e},[s]),l=(0,Q.useMemo)(()=>new re({uniforms:c,vertexShader:Tg,fragmentShader:o,transparent:n,depthWrite:!n}),[c,o,n]);(0,Q.useEffect)(()=>()=>l.dispose(),[l]);let u=(0,Q.useMemo)(()=>Ag(i,l),[i,l]),d=(0,Q.useRef)(t);return d.current=t,I(z(`ShaderView`,(e,t)=>{r===`world`?l.uniforms.uTime.value=rg.getState().seconds:l.uniforms.uTime.value+=Fg(e,t),l.uniforms.uPointer.value.copy(e.pointer);for(let[e,t]of Object.entries(d.current))l.uniforms[e].value=t})),a?(0,Z.jsx)(`primitive`,{object:u,attach:`material`}):(0,Z.jsx)(`meshBasicMaterial`,{visible:!1})}catch(e){throw B(`ShaderView`,e)}}function lE(e){try{return(0,Z.jsx)(cE,{...e})}catch(e){throw B(`Shader`,e)}}function uE({map:e,curvature:t=1,scanlines:n=1,flicker:r=1}){try{return(0,Z.jsx)(lE,{fragment:oE,uniforms:{uMap:e,uCurvature:t,uScanlines:n,uFlicker:r}})}catch(e){throw B(`CrtMaterial`,e)}}var dE=e=>`#include "lygia/generative/snoise.glsl"
|
|
88
|
+
|
|
89
|
+
const vec3 shallowTint = vec3(0.55, 0.92, 0.86);
|
|
90
|
+
const vec3 sky = vec3(0.68, 0.84, 0.96);
|
|
91
|
+
const vec3 foamColour = vec3(0.94, 0.98, 1.0);
|
|
92
|
+
const float shoreWidth = 0.14;
|
|
93
|
+
const float foamWidth = 0.035;
|
|
94
|
+
|
|
95
|
+
void main() {
|
|
96
|
+
// The flat normal, from the screen-space slope of the position. It comes
|
|
97
|
+
// before the discard below, since a slope is undefined once neighbouring
|
|
98
|
+
// pixels have left.
|
|
99
|
+
vec3 normal = normalize(cross(dFdx(vWorldPosition), dFdy(vWorldPosition)));
|
|
100
|
+
|
|
101
|
+
${e} if (inland < 0.0) discard;
|
|
102
|
+
|
|
103
|
+
// Waves: two layers of noise scrolling across each other, on the world's
|
|
104
|
+
// ground so a longer river keeps the same wave, -1 to 1.
|
|
105
|
+
vec2 ground = vWorldPosition.xz / max(uWaveSize, 0.01);
|
|
106
|
+
float drift = uTime * uWaveSpeed;
|
|
107
|
+
float waves = 0.6 * snoise(ground + vec2(0.30, 0.20) * drift)
|
|
108
|
+
+ 0.4 * snoise(ground * 2.3 - vec2(0.25, -0.35) * drift);
|
|
109
|
+
|
|
110
|
+
// Depth: shallow at the shore and deep inland, the line moved by the waves.
|
|
111
|
+
float shore = inland + waves * 0.012;
|
|
112
|
+
float depth = smoothstep(0.0, shoreWidth, shore);
|
|
113
|
+
|
|
114
|
+
// Colour: the deep colour in sRGB, as the constants are written, lightened
|
|
115
|
+
// toward the shallow tint near the shore, with brighter crests.
|
|
116
|
+
vec3 deep = sRGBTransferOETF(vec4(uColor, 1.0)).rgb;
|
|
117
|
+
vec3 colour = mix(mix(deep, shallowTint, 0.55), deep, depth);
|
|
118
|
+
colour += smoothstep(0.5, 0.95, waves) * 0.07;
|
|
119
|
+
|
|
120
|
+
// Foam: a bright line where the water is shallowest, broken by noise.
|
|
121
|
+
float breakup = 0.5 + 0.5 * snoise(ground * 4.0 - vec2(0.4, 0.1) * drift);
|
|
122
|
+
float foam = (1.0 - smoothstep(0.0, foamWidth, shore)) * smoothstep(0.25, 0.6, breakup);
|
|
123
|
+
foam = max(foam, 1.0 - smoothstep(0.0, 0.012, shore));
|
|
124
|
+
|
|
125
|
+
// Sky: a fake reflection, stronger where the view grazes the surface.
|
|
126
|
+
vec3 view = normalize(cameraPosition - vWorldPosition);
|
|
127
|
+
float fresnel = pow(1.0 - abs(dot(view, normal)), 3.0);
|
|
128
|
+
fresnel = clamp(fresnel + waves * 0.08, 0.0, 1.0);
|
|
129
|
+
colour = mix(colour, sky, fresnel * 0.7);
|
|
130
|
+
|
|
131
|
+
colour = mix(colour, foamColour, foam);
|
|
132
|
+
gl_FragColor = vec4(colour, 1.0);
|
|
133
|
+
}
|
|
134
|
+
`,fE=dE(` // The shore: how far this point lies inside the plane's edge, 0 at the
|
|
135
|
+
// edge and 0.5 at the centre, or inside the circle when round.
|
|
136
|
+
vec2 edge = min(vUv, 1.0 - vUv);
|
|
137
|
+
float inland = mix(min(edge.x, edge.y), 0.5 - length(vUv - 0.5), uRound);
|
|
138
|
+
`),pE=dE(` // The sea's bed: the ground under the point, on the triangle the ground's mesh draws
|
|
139
|
+
// there: each cell split from its far-left to its near-right corner.
|
|
140
|
+
vec2 grid = clamp((vWorldPosition.xz + uGrid.x) / uGrid.y, 0.0, uGrid.z - 1.0);
|
|
141
|
+
vec2 corner = min(floor(grid), uGrid.z - 2.0);
|
|
142
|
+
vec2 along = grid - corner;
|
|
143
|
+
float near = texture2D(uGround, (corner + 0.5) / uGrid.z).r;
|
|
144
|
+
float right = texture2D(uGround, (corner + vec2(1.5, 0.5)) / uGrid.z).r;
|
|
145
|
+
float far = texture2D(uGround, (corner + vec2(0.5, 1.5)) / uGrid.z).r;
|
|
146
|
+
float both = texture2D(uGround, (corner + 1.5) / uGrid.z).r;
|
|
147
|
+
float bed = along.x + along.y <= 1.0
|
|
148
|
+
? near + along.x * (right - near) + along.y * (far - near)
|
|
149
|
+
: both + (1.0 - along.x) * (far - both) + (1.0 - along.y) * (right - both);
|
|
150
|
+
|
|
151
|
+
// The shore: the water's depth over it, a metre of depth to a tenth of
|
|
152
|
+
// a pond's inland, so the shallows span 1.4 m of depth.
|
|
153
|
+
float inland = (uLevel - bed) * 0.1;
|
|
154
|
+
`);function mE({color:e=`#1f6f8b`,waveSize:t=1,waveSpeed:n=1,round:r=!1}){try{let i=(0,Q.useMemo)(()=>new he(e),[e]);return(0,Z.jsx)(cE,{clock:`effects`,fragment:fE,uniforms:{uColor:i,uWaveSize:t,uWaveSpeed:n,uRound:+!!r}})}catch(e){throw B(`WaterMaterial`,e)}}var hE=`const float radius = 0.31;
|
|
155
|
+
const vec3 violet = vec3(0.55, 0.52, 1.0);
|
|
156
|
+
|
|
157
|
+
float hash(vec3 p) {
|
|
158
|
+
p = fract(p * 0.3183099 + vec3(0.1, 0.2, 0.3));
|
|
159
|
+
p *= 17.0;
|
|
160
|
+
return fract(p.x * p.y * p.z * (p.x + p.y + p.z));
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
float noise(vec3 x) {
|
|
164
|
+
vec3 i = floor(x);
|
|
165
|
+
vec3 f = fract(x);
|
|
166
|
+
f = f * f * (3.0 - 2.0 * f);
|
|
167
|
+
return mix(
|
|
168
|
+
mix(mix(hash(i), hash(i + vec3(1, 0, 0)), f.x),
|
|
169
|
+
mix(hash(i + vec3(0, 1, 0)), hash(i + vec3(1, 1, 0)), f.x), f.y),
|
|
170
|
+
mix(mix(hash(i + vec3(0, 0, 1)), hash(i + vec3(1, 0, 1)), f.x),
|
|
171
|
+
mix(hash(i + vec3(0, 1, 1)), hash(i + vec3(1, 1, 1)), f.x), f.y),
|
|
172
|
+
f.z);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
float fbm(vec3 p) {
|
|
176
|
+
float v = 0.0;
|
|
177
|
+
float a = 0.5;
|
|
178
|
+
for (int i = 0; i < 5; i++) {
|
|
179
|
+
v += a * noise(p);
|
|
180
|
+
p = p * 2.03 + vec3(1.7);
|
|
181
|
+
a *= 0.5;
|
|
182
|
+
}
|
|
183
|
+
return v;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
void main() {
|
|
187
|
+
vec2 uv = vUv - 0.5;
|
|
188
|
+
float r = length(uv);
|
|
189
|
+
float t = uTime * uSpeed;
|
|
190
|
+
// Every colour below is ThreeUI's, scaled by how far uColor is from violet.
|
|
191
|
+
vec3 tint = uColor / violet;
|
|
192
|
+
vec3 colour = vec3(0.0);
|
|
193
|
+
float alpha = 0.0;
|
|
194
|
+
|
|
195
|
+
if (r < radius) {
|
|
196
|
+
// The sphere's normal under this pixel, turning slowly about y.
|
|
197
|
+
float z = sqrt(radius * radius - r * r);
|
|
198
|
+
vec3 normal = normalize(vec3(uv, z));
|
|
199
|
+
float angle = t * 0.15;
|
|
200
|
+
mat3 spin = mat3(cos(angle), 0.0, sin(angle), 0.0, 1.0, 0.0, -sin(angle), 0.0, cos(angle));
|
|
201
|
+
vec3 point = spin * normal;
|
|
202
|
+
|
|
203
|
+
// Two layers of smoke, the second warped by the first.
|
|
204
|
+
float f1 = fbm(point * 2.6 + vec3(0.0, t * 0.12, 0.0));
|
|
205
|
+
float f2 = fbm(point * 4.5 - vec3(t * 0.08, 0.0, t * 0.05) + f1 * 1.8);
|
|
206
|
+
float veil = smoothstep(0.35, 0.75, f2);
|
|
207
|
+
colour = mix(vec3(0.04, 0.02, 0.12), vec3(0.22, 0.16, 0.55), f1 * 1.2);
|
|
208
|
+
colour = mix(colour, vec3(0.62, 0.60, 0.98), veil * 0.65);
|
|
209
|
+
colour *= tint;
|
|
210
|
+
|
|
211
|
+
// Fresnel at the edge, a highlight on top and a thin bright rim.
|
|
212
|
+
float fresnel = pow(1.0 - z / radius, 2.2);
|
|
213
|
+
float top = pow(max(dot(normal, normalize(vec3(0.0, 0.7, 0.7))), 0.0), 3.0);
|
|
214
|
+
float rim = smoothstep(radius - 0.03, radius, r);
|
|
215
|
+
colour += tint * uIntensity * (vec3(0.55, 0.55, 1.0) * fresnel * 1.1
|
|
216
|
+
+ vec3(0.45, 0.42, 0.9) * top * 0.35
|
|
217
|
+
+ vec3(0.6, 0.58, 1.0) * rim * 0.6);
|
|
218
|
+
alpha = 1.0;
|
|
219
|
+
} else {
|
|
220
|
+
// The glow outside, faded to nothing before the plane's edge.
|
|
221
|
+
float glow = clamp(exp(-(r - radius) * 14.0), 0.0, 1.0);
|
|
222
|
+
glow *= 1.0 - smoothstep(0.4, 0.5, r);
|
|
223
|
+
colour = violet * tint * glow * 0.8 * uIntensity;
|
|
224
|
+
// Intensity fades the glow's cover too, or at 0 it would darken
|
|
225
|
+
// what lies behind the orb.
|
|
226
|
+
alpha = glow * 0.85 * clamp(uIntensity, 0.0, 1.0);
|
|
227
|
+
}
|
|
228
|
+
gl_FragColor = vec4(colour, alpha);
|
|
229
|
+
}
|
|
230
|
+
`;function gE({color:e=`#8c85ff`,speed:t=1,intensity:n=1}){try{let r=(0,Q.useMemo)(()=>new he(e).convertLinearToSRGB(),[e]);return(0,Z.jsx)(lE,{fragment:hE,uniforms:{uColor:r,uSpeed:t,uIntensity:n},transparent:!0})}catch(e){throw B(`EnergyOrbMaterial`,e)}}var _E=`vec2 hash(vec2 p) {
|
|
231
|
+
p = vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)));
|
|
232
|
+
return -1.0 + 2.0 * fract(sin(p) * 43758.5453123);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Simplex noise in two dimensions.
|
|
236
|
+
float noise(vec2 p) {
|
|
237
|
+
const float K1 = 0.366025404;
|
|
238
|
+
const float K2 = 0.211324865;
|
|
239
|
+
vec2 i = floor(p + (p.x + p.y) * K1);
|
|
240
|
+
vec2 a = p - i + (i.x + i.y) * K2;
|
|
241
|
+
vec2 o = (a.x > a.y) ? vec2(1.0, 0.0) : vec2(0.0, 1.0);
|
|
242
|
+
vec2 b = a - o + K2;
|
|
243
|
+
vec2 c = a - 1.0 + 2.0 * K2;
|
|
244
|
+
vec3 h = max(0.5 - vec3(dot(a, a), dot(b, b), dot(c, c)), 0.0);
|
|
245
|
+
vec3 n = h * h * h * h * vec3(dot(a, hash(i)), dot(b, hash(i + o)), dot(c, hash(i + 1.0)));
|
|
246
|
+
return dot(n, vec3(70.0));
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Distance to a ring of the given radius and width, bent by a wave and noise.
|
|
250
|
+
float ring(vec2 p, vec2 center, float radius, float width, float warp, float t) {
|
|
251
|
+
p.y += sin(p.x * 2.0 + t * 0.3) * warp;
|
|
252
|
+
p.x += noise(p * 1.5 + t * 0.1) * (warp * 0.8);
|
|
253
|
+
return abs(length(p - center) - radius) - width;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
void main() {
|
|
257
|
+
float t = uTime * uSpeed;
|
|
258
|
+
// ThreeUI's screen coordinates, with its ring centred on the plane.
|
|
259
|
+
vec2 st = (vUv - 0.5) * 2.0 + 0.5;
|
|
260
|
+
vec2 center = vec2(0.5);
|
|
261
|
+
|
|
262
|
+
float core = exp(-ring(st, center, 0.6, 0.02, 0.15, t) * 30.0);
|
|
263
|
+
float fringe = exp(-ring(st, center, 0.65, 0.06, 0.2, t) * 10.0);
|
|
264
|
+
float wash = (1.0 - smoothstep(-0.5, 1.5, length(st - center))) * 0.15;
|
|
265
|
+
// Faded to nothing before the plane's edge, so no square shows.
|
|
266
|
+
float edge = 1.0 - smoothstep(0.8, 1.0, length(vUv - 0.5) * 2.0);
|
|
267
|
+
core *= edge * uIntensity;
|
|
268
|
+
fringe *= edge * uIntensity;
|
|
269
|
+
wash *= edge * uIntensity;
|
|
270
|
+
|
|
271
|
+
vec3 colour = vec3(1.0) * core + uColor * fringe
|
|
272
|
+
+ uColor * wash * (sin(t * 0.5) * 0.2 + 0.8);
|
|
273
|
+
float alpha = clamp(core + fringe + wash, 0.0, 1.0);
|
|
274
|
+
colour = vec3(1.0) - exp(-colour * 1.5);
|
|
275
|
+
gl_FragColor = vec4(colour, alpha * 0.6);
|
|
276
|
+
}
|
|
277
|
+
`;function vE({color:e=`#1e3a8a`,speed:t=1,intensity:n=1}){try{let r=(0,Q.useMemo)(()=>new he(e).convertLinearToSRGB(),[e]);return(0,Z.jsx)(lE,{fragment:_E,uniforms:{uColor:r,uSpeed:t,uIntensity:n},transparent:!0})}catch(e){throw B(`PortalMaterial`,e)}}var yE=new _,bE=new _,xE=new le(new j(0,1,0),0),SE=new j,CE=new de,{ROTATE:wE,DOLLY:TE,NONE:EE,TOUCH_DOLLY_ROTATE:DE}=Y_.ACTION,OE={left:EE,middle:EE,right:wE,wheel:TE},kE={one:EE,two:DE,three:EE},AE=new WeakSet;function jE(e,t){let n=kh.getState(),{camera:r}=e,i=`aspect`in r?r.aspect:1,a=n.readMapFlight(r.position,i);if(!a){n.endMapFlight();return}if(AE.has(e))return;AE.add(e);let[o,s,c]=a.eye,[l,u,d]=a.target,f=Math.hypot(o-l,s-u,c-d),p=t.queryFirst(V);p?.set(V,{maxDistance:f});let m=p?.get(V);m&&nm(m);let{smoothTime:h}=e;e.smoothTime=ji.flightSmoothTime,e.setLookAt(o,s,c,l,u,d,!0).then(()=>{AE.delete(e),e.smoothTime=h,kh.getState().endMapFlight()})}function ME(e,t,n,r){bE.set((n-t.x)/t.width*2-1,(r-t.y)/t.height*-2+1),xE.constant=-e.getTarget(SE).y,CE.setFromCamera(bE,e.camera);let i=CE.ray.intersectPlane(xE,new j);return i&&i.distanceTo(e.camera.position)<=ji.maxDistance?i:null}function NE(e,t){let n=null,r=!1,i=e=>e.button===1||e.button===0&&kg.getState().tool===null,a=r=>{if(!i(r))return;if(n){n=null;return}kh.getState().endMapFlight();let a=ME(t,e.getBoundingClientRect(),r.clientX,r.clientY);a&&(n={id:r.pointerId,at:a,from:new _(r.clientX,r.clientY),dragged:!1},e.setPointerCapture(r.pointerId))},o=t=>{n?.id===t.pointerId&&(r=n.dragged,n=null,e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId))},s=r=>{if(n?.id!==r.pointerId||(n.from.distanceTo(new _(r.clientX,r.clientY))>ji.clickSlop&&(n.dragged=!0),!n.dragged))return;let i=ME(t,e.getBoundingClientRect(),r.clientX,r.clientY);if(!i)return;let a=t.getTarget(new j).add(n.at).sub(i);t.moveTo(a.x,a.y,a.z,!1)},c=e=>{r&&(r=!1,e.stopImmediatePropagation(),e.preventDefault())};return e.addEventListener(`pointerdown`,a),e.addEventListener(`pointermove`,s),e.addEventListener(`pointerup`,o),e.addEventListener(`pointercancel`,o),e.addEventListener(`click`,c,!0),()=>{e.removeEventListener(`pointerdown`,a),e.removeEventListener(`pointermove`,s),e.removeEventListener(`pointerup`,o),e.removeEventListener(`pointercancel`,o),e.removeEventListener(`click`,c,!0)}}function PE(e,t){let n=e=>{if(!e.ctrlKey)return;e.preventDefault(),e.stopImmediatePropagation(),kh.getState().endMapFlight();let n=.95**(e.deltaY/10*ji.pinchDollySpeed);t.dolly(t.distance*(1-n),!0)},r={capture:!0,passive:!1};return e.addEventListener(`wheel`,n,r),()=>e.removeEventListener(`wheel`,n,r)}function FE(){try{let e=W(),t=L(e=>e.camera),n=(0,Q.use)(LE),r=L(e=>e.events.connected??e.gl.domElement),[i]=(0,Q.useState)(()=>t.getWorldDirection(new j)),[a,o]=(0,Q.useState)(null),s=(0,Q.useRef)(null),c=(0,Q.useRef)(null),{ref:l,...u}=HT({follow:null,through:FE,minDistance:ji.minDistance,maxDistance:ji.maxDistance,minPolarAngle:ji.minPolarAngle,maxPolarAngle:ji.maxPolarAngle}),d=(0,Q.useCallback)(e=>{if(o(e),e){let t=e.camera.position,n=i.y<0?-t.y/i.y:1/0,r=Math.min(n,ji.lookAhead),a=t.clone().addScaledVector(i,r);e.setLookAt(t.x,t.y,t.z,a.x,a.y,a.z,!1),e.dollyToCursor=!0}l(e)},[l,i]);return(0,Q.useEffect)(()=>{if(a)return kh.getState().mapFlight&&jE(a,e),kh.subscribe((t,n)=>{t.mapFlight&&!n.mapFlight&&jE(a,e)})},[a,e]),(0,Q.useEffect)(()=>{if(!a||!(r instanceof HTMLElement))return;let e=NE(r,a),t=PE(r,a);return()=>{e(),t()}},[r,a]),I(z(`MapCamera`,(e,t)=>{if(Xh(Uh.getState())||!a)return;let{distance:n}=a,{mapFlight:r}=kh.getState();if(r||s.current===null)s.current=n,c.current=r?null:a.getTarget(SE).y;else if(n!==s.current){let e=Math.log2(n/s.current);s.current=n,a.rotate(0,-e*ji.tiltPerDoubling,!1)}let i=yE.copy(qx()).clampLength(0,1),o=Jx(),l=i.lengthSq()>0||o!==0;l&&r&&kh.getState().endMapFlight();let u=a.getTarget(SE);if(c.current!==null&&u.y!==c.current&&a.moveTo(u.x,c.current,u.z,!1),!l)return;let d=n*ji.panShare*t;i.y!==0&&a.forward(i.y*d,!0),i.x!==0&&a.truck(i.x*d,0,!0),o!==0&&a.rotate(o*ji.turnRate*t,0,!0),a.update(0)})),Gv()?null:(0,Z.jsx)(X_,{makeDefault:n===null,camera:n??void 0,...u,mouseButtons:OE,touches:kE,ref:d})}catch(e){throw B(`MapCamera`,e)}}var IE=typeof __GAME_ENGINE_DEV__==`boolean`&&!__GAME_ENGINE_DEV__?()=>null:(0,Q.lazy)(()=>Rp(async()=>{let{StandInTools:e}=await import(`../chunks/BOIXSUZ_.js`);return{StandInTools:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63]),import.meta.url).then(({StandInTools:e})=>({default:e}))),LE=(0,Q.createContext)(null),RE=-.5,zE=.75,BE=[`aspect`],VE=[`fov`,`near`,`far`,`zoom`],HE=[`left`,`right`,`top`,`bottom`],UE=[`near`,`far`,`zoom`];function WE(e,t,n){let r=!1;for(let i of n)t[i]!==e[i]&&(t[i]=e[i],r=!0);return r}function GE(e,t){t.position.copy(e.position),t.quaternion.copy(e.quaternion),t.view?.enabled&&t.clearViewOffset(),e instanceof ae&&t instanceof ae?(WE(t,e,BE)&&e.updateProjectionMatrix(),WE(e,t,VE)&&t.updateProjectionMatrix()):e instanceof m&&t instanceof m&&(WE(t,e,HE)&&e.updateProjectionMatrix(),WE(e,t,UE)&&t.updateProjectionMatrix())}function KE(e){return e instanceof ae?new ae().copy(e,!1):new m().copy(e,!1)}function qE(e){let t=KE(e);return t.clearViewOffset(),t}function JE({children:e}){try{let t=W(),n=L(e=>e.controls),r=L(e=>e.get),[i]=(0,Q.useState)(()=>qE(r().camera)),[a]=(0,Q.useState)(()=>r().camera),[o]=(0,Q.useState)(()=>KE(a));return(0,Q.useLayoutEffect)(()=>()=>GE(o,a),[o,a]),(0,Q.useLayoutEffect)(()=>{let e=new Map;function n(t){let n=t.get(V);n&&n.orbit?.camera!==i&&(e.set(t,n),t.remove(V))}rm(t),t.query(V).forEach(n);let r=t.onAdd(V,n);return()=>{r();for(let[t,n]of e)t.isAlive()&&t.add(V(n))}},[t,i]),(0,Q.useEffect)(()=>{if(n&&`enabled`in n&&n.enabled===!0)return n.enabled=!1,()=>{n.enabled=!0}},[n]),I(z(`StandIn`,e=>GE(i,e.camera)),RE),I(z(`StandIn`,e=>{i.updateMatrixWorld(),GE(i,e.camera),e.internal.priority===1&&e.gl.render(e.scene,e.camera)}),zE),(0,Z.jsxs)(LE,{value:i,children:[e,(0,Z.jsx)(Q.Suspense,{children:(0,Z.jsx)(IE,{})})]})}catch(e){throw B(`StandIn`,e)}}function YE(){try{let e=kh(e=>e.freeCamera),t=kh(e=>e.mapCamera);return Gv()||!e&&!t?null:(0,Z.jsx)(JE,{children:e?(0,Z.jsx)(QE,{}):(0,Z.jsx)(FE,{})})}catch(e){throw B(`StandInCamera`,e)}}var XE=new _,ZE={metresPerSecond:li.metresPerSecond,rotateSpeed:li.rotateSpeed};function QE(){try{let e=W(),t=L(e=>e.camera),n=(0,Q.use)(LE),r=L(e=>e.gl.domElement),i=kg(e=>e.tool!==null),[a]=(0,Q.useState)(()=>t.getWorldDirection(new j)),{ref:o,...s}=HT({follow:null,through:QE,minDistance:li.pivotDistance,maxDistance:li.pivotDistance,minPolarAngle:0,maxPolarAngle:Math.PI,tuning:ZE}),c=(0,Q.useRef)(null),l=(0,Q.useCallback)(e=>{if(c.current=e,e){let t=e.camera.position,n=t.clone().addScaledVector(a,li.pivotDistance);e.setLookAt(t.x,t.y,t.z,n.x,n.y,n.z,!1)}o(e)},[o,a]);return gb(z(`FreeCamera`,(t,n)=>{if(Xh(Uh.getState()))return;let r=e.queryFirst(V)?.get(V),i=c.current,a=XE.copy(qx()).clampLength(0,1),o=Jx();if(!r||!i?.enabled||a.lengthSq()===0&&o===0)return;let s=r.metresPerSecond*(Yx()?li.boostFactor:1)*n;i.dollyInFixed(a.y*s,!1),i.truck(a.x*s,0,!1),i.elevate(o*s,!1),i.update(0)})),(0,Q.useEffect)(()=>{if(!i)return;function e(e){let t=c.current;t?.enabled&&(e.preventDefault(),t.dollyInFixed(-e.deltaY*li.wheelMetres,!1))}return r.addEventListener(`wheel`,e,{passive:!1}),()=>r.removeEventListener(`wheel`,e)},[i,r]),Gv()?null:(0,Z.jsx)(X_,{makeDefault:n===null,camera:n??void 0,...s,...i&&Ex,ref:l})}catch(e){throw B(`FreeCamera`,e)}}function $E({resource:e}){try{let t=W(),n=Yc(t,e);WC(Zs(e),Id(n));let r=NC(),{maximum:i}=n;return(0,Q.useEffect)(()=>{r.isAlive()&&!r.has(hf)&&ot(r,{[ed(e)]:{base:i,min:0}})},[r,e,i]),null}catch(e){throw B(`Resource`,e)}}function eD(e,t){return G(e,wd(t))}function tD({entity:e,resource:t,color:n,label:r,showValue:i,className:a,classNames:o}){try{let s=W(),c=eD(e,t),l=Yc(s,t);return!c||!(c.maximum>0)?null:(0,Z.jsx)(Fy,{label:r??l.label,value:c.current,maximum:c.maximum,reserved:c.reserved,color:n??l.color,showValue:i,className:a,classNames:o})}catch(e){throw B(`ResourceBar`,e)}}var nD=Y_.ACTION.NONE;function rD(e){try{let{azimuth:t=0,polar:n=F.degToRad(80),distance:r=9}=e;_T(rD,e);let{ref:i,...a}=HT({through:rD,settle:!1,minPolarAngle:n,maxPolarAngle:n,minDistance:r,maxDistance:r}),o=(0,Q.useRef)(null),s=(0,Q.useCallback)(e=>{o.current=e,i(e)},[i]);return(0,Q.useEffect)(()=>{let e=o.current;e&&(e.rotateTo(t,n,!1),e.dollyTo(r,!1))},[t,n,r]),Gv()?null:(0,Z.jsx)(X_,{makeDefault:!0,ref:s,...a,minAzimuthAngle:t,maxAzimuthAngle:t,mouseButtons:{left:nD,middle:nD,right:nD,wheel:nD},touches:{one:nD,two:nD,three:nD}})}catch(e){throw B(`SideCamera`,e)}}function iD(e){try{let t=W(),n=NC(),{to:r,...i}=e,a=JSON.stringify(i);return(0,Q.useEffect)(()=>{if(!n.isAlive())return;let e=tf(t,n);if(!e)return;let i={...JSON.parse(a),to:r},o=Gs(e,n,i);return()=>{let e=o.isAlive()?tf(t,o):null;e&&kc(e,o)}},[t,n,a,r]),null}catch(e){throw B(`Joint`,e)}}function aD(){try{let e=NC();return GC(Fl,{}),(0,Q.useEffect)(()=>(e.isAlive()&&!e.has(ka)&&e.add(ka),()=>{let t=e.isAlive()&&e.get(ka);if(t){for(let n of Object.values(mf))t[n]&&Tc(e,n);e.remove(ka)}}),[e]),null}catch(e){throw B(`Equipment`,e)}}var oD=(0,Q.createContext)(null);function sD({children:e,didCatch:t,error:n,resetErrorBoundary:r}){let i=(0,Q.useMemo)(()=>({didCatch:t,error:n,resetErrorBoundary:r}),[t,n,r]);return(0,Q.createElement)(oD.Provider,{value:i},e)}var cD={didCatch:!1,error:null},lD=class extends Q.Component{constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=cD}static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(...e){let{didCatch:t}=this.state;t&&(this.props.onReset?.({args:e,reason:`imperative-api`}),this.setState(cD))}componentDidCatch(e,t){this.props.onError?.(e,t)}componentDidUpdate(e,t){let{didCatch:n}=this.state,{resetKeys:r}=this.props;n&&t.didCatch&&uD(e.resetKeys,r)&&(this.props.onReset?.({next:r,prev:e.resetKeys,reason:`keys`}),this.setState(cD))}render(){let{children:e,fallbackRender:t,FallbackComponent:n,fallback:r}=this.props,{didCatch:i,error:a}=this.state,o=e;if(i){let e={error:a,resetErrorBoundary:this.resetErrorBoundary};if(typeof t==`function`)o=t(e);else if(n)o=(0,Q.createElement)(n,e);else if(`fallback`in this.props)o=r;else throw a}return(0,Q.createElement)(sD,{didCatch:i,error:a,resetErrorBoundary:this.resetErrorBoundary},o)}};function uD(e=[],t=[]){return e.length!==t.length||e.some((e,n)=>!Object.is(e,t[n]))}function dD(e){return typeof e==`object`&&!!e&&`didCatch`in e&&typeof e.didCatch==`boolean`&&`error`in e&&`resetErrorBoundary`in e&&typeof e.resetErrorBoundary==`function`}function fD(e){if(!dD(e))throw Error(`ErrorBoundaryContext not found`)}function pD(){let e=(0,Q.useContext)(oD);fD(e);let{error:t,resetErrorBoundary:n}=e,[r,i]=(0,Q.useState)({error:null,hasError:!1}),a=(0,Q.useMemo)(()=>({error:t,resetBoundary:()=>{n(),i({error:null,hasError:!1})},showBoundary:e=>i({error:e,hasError:!0})}),[t,n]);if(r.hasError)throw r.error;return a}var mD,hD=0,gD=null,_D=null;function vD(){return CD()!==null}function yD(e,t={}){let n=CD();if(n===null||hD>=10)return;hD+=1;let{code:r,label:i}=np(e),a={...t};for(let[e,t]of Object.entries(i))t!==void 0&&Object.assign(a,{[e]:t});let{system:o,tick:s,scene:c,componentStack:l,call:u,entity:d,boundary:f,component:p}=a;gD??=TD(n),gD.then(t=>{let n=t.clone();o!==void 0&&n.setTag(`system`,o),c!==void 0&&n.setTag(`scene`,c),r!==void 0&&n.setTag(`code`,r),u!==void 0&&n.setTag(`call`,u),f!==void 0&&n.setTag(`boundary`,f),p!==void 0&&n.setTag(`component`,p),n.setContext(`engine`,{tick:s,componentStack:l,entity:d?.key}),SD(n,e)},e=>console.warn(`The error tracker did not load.`,e))}function bD(){if(_D)return;let e=e=>{e.error!=null&&yD(e.error)},t=e=>yD(e.reason);window.addEventListener(`error`,e),window.addEventListener(`unhandledrejection`,t),_D=()=>{window.removeEventListener(`error`,e),window.removeEventListener(`unhandledrejection`,t)}}typeof window<`u`&&vD()&&bD();var xD=`__sentry_captured__`;function SD(e,t){if(typeof t!=`object`||!t){e.captureException(t);return}let n=Object.getOwnPropertyDescriptor(t,xD);try{n&&Reflect.deleteProperty(t,xD),e.captureException(t)}finally{Reflect.deleteProperty(t,xD),n&&Object.defineProperty(t,xD,n)}}function CD(){if(mD!==void 0)return mD;let e=typeof document>`u`?null:document.querySelector(`meta[name="${Tp}"]`)?.getAttribute(`content`);return mD=e?wD(e):null,mD}function wD(e){try{let t=Dp.safeParse(JSON.parse(e));if(t.success)return t.data;console.warn(`The page's error reports tag is not valid.`,t.error)}catch(e){console.warn(`The page's error reports tag is not JSON.`,e)}return null}async function TD(e){let t=await Rp(()=>import(`../chunks/D-J5r5vm.js`),__vite__mapDeps([64,1]),import.meta.url),n=new t.BrowserClient({dsn:e.dsn,tunnel:Ep,release:e.release,transport:e=>t.makeFetchTransport(e,(e,t)=>fetch(e,t)),stackParser:t.defaultStackParser,integrations:[t.dedupeIntegration(),t.linkedErrorsIntegration()],dataCollection:{userInfo:!1},beforeSend:(e,t)=>{delete e.user,delete e.breadcrumbs;let[n]=e.exception?.values??[];if(n&&t.originalException!==void 0){let{message:e,code:r}=np(t.originalException);n.value=r?`${e} [${r}]`:e}return e}}),r=new t.Scope;return r.setClient(n),n.init(),r.setTags({game:e.game,version:String(e.version),release:e.release}),r}yn.schema.radius;function ED(e,t){let n=e.get(xl);if(n){e.remove(xl);for(let e of n)t({type:pv.Item,intent:e})}}var DD=new d,OD=new j,kD=new oe;function AD(e,t){let n=e.get(Xf)?.object;if(n)return n.updateWorldMatrix(!0,!1),ND(DD.setFromObject(n),t)}function jD(e,t,n){let r=MD(e,t,DD);return r&&ND(r,n)}function MD(e,t,n){let{geometry:r}=e;r.boundingBox||r.computeBoundingBox();let i=r.boundingBox;if(i)return e.updateWorldMatrix(!0,!1),e.getMatrixAt(t,kD),kD.premultiply(e.matrixWorld),n.copy(i).applyMatrix4(kD)}function ND(e,{camera:t,width:n,height:r}){if(e.isEmpty())return;t.updateMatrixWorld();let i=1/0,a=1/0,o=-1/0,s=-1/0;for(let c=0;c<8;c++){if(OD.set(c&1?e.max.x:e.min.x,c&2?e.max.y:e.min.y,c&4?e.max.z:e.min.z).project(t),OD.z>1)return;let l=(OD.x+1)/2*n,u=(1-OD.y)/2*r;i=Math.min(i,l),o=Math.max(o,l),a=Math.min(a,u),s=Math.max(s,u)}return i=Math.round(i),a=Math.round(a),{left:i,top:a,width:Math.round(o)-i,height:Math.round(s)-a}}var PD=960;function FD(e){return e.isMesh===!0}function ID(e){return e.userData.gizmo===!0||e.userData.screenOverlay===!0}function LD(e){let t=[],n=[],r=e=>{if(e.visible){if(ID(e)){n.push(e);return}FD(e)&&t.push(e);for(let t of e.children)r(t)}};return r(e),{meshes:t,overlays:n}}function RD(e){return e.transparent&&e.alphaTest===0||e.blending===2}function zD(e,t){let n=t,i=new r({map:n?.alphaTest?n.map??null:null,alphaTest:n?.alphaTest??0,fog:!1,toneMapped:!1});return t&&(i.side=t.side),i.color.setHex(e,``),i.onBeforeCompile=e=>{e.fragmentShader=e.fragmentShader.replace(`#include <map_fragment>`,`#include <map_fragment>
|
|
278
|
+
diffuseColor.rgb = diffuse;`)},i.customProgramCacheKey=()=>`spawnite-sighting`,i}function BD(e){let t=e.getAttribute(`role`),n=(e.getAttribute(`aria-label`)??e.textContent??``).trim().replace(/\s+/g,` `).slice(0,40);return[e.tagName.toLowerCase(),...t?[`role=${t}`]:[],...n?[`"${n}"`]:[]].join(` `)}function VD(e,{renderer:t,scene:n,camera:r}){if(Am(t))throw R(Error(`Seeing what the camera shows reads pixels back through WebGL, which WebGPURenderer cannot do at once: measure sightings under WebGL.`),`SP0530`,void 0);let i=t.getDrawingBufferSize(new _),a=Math.min(1,PD/Math.max(1,i.x)),o=Math.max(1,Math.round(i.x*a)),s=Math.max(1,Math.round(i.y*a)),c=new h(o,s),l=new Uint8Array(o*s*4),{meshes:u,overlays:d}=LD(n),f=new Map;e.forEach((e,t)=>{for(let n of e)n.traverseVisible(e=>{FD(e)&&!f.has(e)&&f.set(e,t+1)})});let p=u.map(e=>({mesh:e,material:e.material,visible:e.visible,instanceColor:e.instanceColor??null})),m=[],g=n.background,v=n.fog,y=n.overrideMaterial,b=t.getClearColor(new he),x=t.getClearAlpha(),S=t.getRenderTarget(),C=()=>{t.setRenderTarget(c),t.clear(),t.render(n,r),t.readRenderTargetPixels(c,0,0,o,s,l)},w=t=>{let n=t*4,r=l[n]<<16|l[n+1]<<8|l[n+2];return r>e.length?0:r},T=()=>{let t=Array(e.length+1).fill(0),n=t.map(()=>({left:o,right:-1,bottom:s,top:-1}));for(let e=0;e<o*s;e++){let r=w(e);if(r===0)continue;t[r]+=1;let i=n[r],a=e%o,s=Math.floor(e/o);i.left=Math.min(i.left,a),i.right=Math.max(i.right,a),i.bottom=Math.min(i.bottom,s),i.top=Math.max(i.top,s)}return{counts:t,boxes:n.map(e=>e.right<0?void 0:e)}},E=e=>{let t=e.map(()=>({pixel:-1,distance:1/0}));for(let n=0;n<o*s;n++){let r=w(n),i=e[r];if(!i)continue;let a=n%o-(i.left+i.right)/2,s=Math.floor(n/o)-(i.bottom+i.top)/2,c=a*a+s*s;c>=t[r].distance||(t[r]={pixel:n,distance:c})}return t.map(({pixel:e})=>e)};try{for(let e of d)e.visible=!1;n.background=null,n.fog=null,n.overrideMaterial=null,t.setClearColor(0,1);for(let{mesh:e,material:t}of p){let n=Array.isArray(t)?t[0]:t;if(n&&RD(n)&&!f.has(e)){e.visible=!1;continue}let r=zD(f.get(e)??0,n);m.push(r),e.material=r,`instanceColor`in e&&(e.instanceColor=null)}C();let r=T(),i=E(r.boxes),{width:a,height:c,left:l,top:u}=t.domElement.getBoundingClientRect(),h=e=>l+e/o*a,g=e=>u+(s-e)/s*c;return e.map((e,n)=>{let a=n+1;for(let{mesh:e,visible:t}of p)e.visible=f.get(e)===a&&t;C();let c=T();for(let{mesh:e,visible:t}of p)e.visible=t;let l=c.boxes[a],u=l&&{x:h(l.left),y:g(l.top+1),width:h(l.right+1)-h(l.left),height:g(l.bottom)-g(l.top+1)},d=i[a],m=d>=0&&[h(d%o+.5),g(Math.floor(d/o)+.5)],_=m&&document.elementFromPoint?.(...m),v=_&&_!==t.domElement&&BD(_);return{visible:r.counts[a],inView:c.counts[a],...u&&{box:u},...m&&{point:m},...v&&{coveredBy:v},pixels:o*s}})}finally{for(let{mesh:e,material:t,visible:n,instanceColor:r}of p)e.material=t,e.visible=n,`instanceColor`in e&&(e.instanceColor=r);for(let e of m)e.dispose();for(let e of d)e.visible=!0;n.background=g,n.fog=v,n.overrideMaterial=y,t.setClearColor(b,x),t.setRenderTarget(S),c.dispose()}}var HD=new d,UD=new f,WD=new j,GD=[],KD=[],qD=[],JD=new j,YD=[],XD=new _,ZD=Object.freeze({gizmo:!0}),QD=Object.freeze({screenOverlay:!0}),$D=[];function eO(e){e.traverseVisible(e=>{e.userData.screenOverlay===!0&&$D.push(e)});for(let e of $D)e.visible=!1;return()=>{for(let e of $D)e.visible=!0;$D.length=0}}function tO(e,t){let n=e.get(Xf)?.object;if(n)return rO(HD.setFromObject(n),t)}function nO(e,t,n){let r=MD(e,t,HD);return r&&rO(r,n)}function rO(e,{renderer:t,scene:n,camera:r,stack:i}){e.getBoundingSphere(UD);let a=r.clone();WD.copy(r.position).sub(UD.center);let o=Vp(r,UD.radius);WD.lengthSq()===0&&WD.set(0,0,1),a.position.copy(WD.normalize().multiplyScalar(o)).add(UD.center),a.lookAt(UD.center);let s=eO(n);try{return lO({renderer:t,scene:n,eye:a,stack:i})}finally{s()}}function iO({renderer:e,scene:t,camera:n,stack:r,overlays:i=!0}){let a=i?void 0:eO(t);try{return lO({renderer:e,scene:t,eye:n,stack:r})}finally{a?.()}}function aO(e,{renderer:t,scene:n,width:r,height:i,stack:a,overlays:o}){let s=r/i,c=new j(...e.target),l=c.distanceTo(new j(...e.eye)),u=l*2+(e.ortho??0)*2,d=e.ortho===void 0?new ae(e.fov,s,.1,Math.max(u,2e3)):new m(-e.ortho*s/2,e.ortho*s/2,e.ortho/2,-e.ortho/2,.1,u);d.position.set(...e.eye),e.eye[0]===e.target[0]&&e.eye[2]===e.target[2]&&d.up.set(0,0,-1),d.lookAt(c),d.updateMatrixWorld();let f=(e.ortho??2*l*Math.tan(F.degToRad(e.fov)/2))/2*Math.hypot(s,1);n.traverseVisible(e=>{e.userData.gizmo===!0&&GD.push(e),e instanceof N&&e.castShadow&&KD.push(e)});for(let e of GD)e.visible=!1;let p=o?void 0:eO(n),h=n.fog;n.fog=null;for(let e of KD)sO(e,c,f);try{return lO({renderer:t,scene:n,eye:d,stack:a,width:r,height:i})}finally{for(let e of GD)e.visible=!0;GD.length=0,p?.(),n.fog=h,KD.forEach(cO),KD.length=0,qD.length=0}}var oO=[`left`,`right`,`top`,`bottom`,`near`,`far`];function sO(e,t,n){let r=e.shadow.camera;qD.push(oO.map(e=>r[e])),e.updateWorldMatrix(!0,!1),e.target.updateWorldMatrix(!0,!1),e.shadow.updateMatrices(e),JD.copy(t).applyMatrix4(r.matrixWorldInverse);let i=n+Math.max(Math.abs(r.near),Math.abs(r.far));r.left=JD.x-i,r.right=JD.x+i,r.bottom=JD.y-i,r.top=JD.y+i,r.near=-JD.z-i,r.far=-JD.z+i,r.updateProjectionMatrix()}function cO(e,t){let n=e.shadow.camera;oO.forEach((e,r)=>n[e]=qD[t][r]),n.updateProjectionMatrix()}function lO({renderer:e,scene:t,eye:n,stack:r,width:i,height:a}){if(!r)return e.render(t,n),e.domElement.toDataURL(`image/png`);let{composer:o,camera:s}=r;for(let e of o.passes)Reflect.get(e,`camera`)===s&&YD.push(e);let c=o.getRenderer();c.getSize(XD);let l=c.autoClear,u=uO(n)!==uO(s);try{o.setMainCamera(n);for(let e of YD)Reflect.set(e,`camera`,n);return u&&YD.forEach(fO),o.setSize(i??XD.x,a??XD.y,!1),c.autoClear=!0,o.render(0),e.domElement.toDataURL(`image/png`)}finally{c.autoClear=l,o.setSize(XD.x,XD.y,!1);for(let e of YD)Reflect.set(e,`camera`,s);u&&YD.forEach(fO),YD.length=0,o.setMainCamera(s)}}var uO=e=>e instanceof m,dO=e=>`configureEffectCompositer`in e;function fO(e){dO(e)&&(e.configureSampleDependentPasses(),e.configureEffectCompositer(e.configuration.depthBufferType,uO(e.camera)))}function pO(e){let t=new d,n=new d;return e.updateWorldMatrix(!0,!0),e.traverseVisible(e=>{if(!(e instanceof k||e instanceof fe||e instanceof Ce))return;let r=Zp(e)||e instanceof T?e:e.geometry;r.computeBoundingBox(),r.boundingBox&&t.union(n.copy(r.boundingBox).applyMatrix4(e.matrixWorld))}),t}var mO=[X.Hips,X.Spine,X.Chest,X.UpperChest,X.RightUpperArm,X.RightLowerArm,X.RightHand],hO=[X.Spine,X.Chest,X.UpperChest],gO=new j(0,1,0),_O=new j(1,0,0),vO=new P,yO=new P,bO=new P,xO=new P,SO=new P,CO=new P,wO=new P,TO=new j,EO=new P,DO=new P;function OO(e,t,n){let{legTurnLimit:r,movingSpeed:i,backwardMargin:a,sideStepBand:o}=Sr.aim,s=n.backward;if(n.legYaw=0,n.backward=!1,n.clip=null,Math.hypot(t.x,t.z)<i)return n;let c=Math.atan2(-t.x,-t.z),l=F.euclideanModulo(c-e+Math.PI,2*Math.PI)-Math.PI;n.backward=Math.abs(l)>Math.PI/2+(s?-a:a);let u=n.backward?l-Math.sign(l)*Math.PI:l;return n.legYaw=F.clamp(u,-r,r),Math.abs(Math.abs(l)-Math.PI/2)<o?n.clip=l<0?bd.Right:bd.Left:n.backward&&(n.clip=bd.Backpedal),n}function kO(e,t){let n=e.humanoid.getNormalizedBoneNode(X.RightUpperArm);return n?(n.getWorldPosition(TO),Math.atan2(t.y-TO.y,Math.hypot(t.x-TO.x,t.z-TO.z))):0}function AO(e){e.forEach(jO)}function jO(e,t){t.quaternion.copy(e)}function MO(e,t){let n=t.get(e);n?n.copy(e.quaternion):t.set(e,e.quaternion.clone())}function NO(e,t){for(let n of mO){let r=e.humanoid.getNormalizedBoneNode(n);r&&MO(r,t.clipRotations)}}function PO(e,t,n){let r=e.parent;r&&(MO(r,n),MO(e,n),t!==0&&(r.parent?r.parent.getWorldQuaternion(xO):xO.identity(),vO.setFromAxisAngle(gO,t),r.quaternion.premultiply(EO.copy(xO).invert().multiply(vO).multiply(xO)),DO.multiplyQuaternions(xO,r.quaternion),e.quaternion.premultiply(EO.copy(DO).invert().multiply(vO.invert()).multiply(DO))))}function FO(e,t){let{vrm:n,aim:r}=e;if(!n)return;let{humanoid:i}=n,{pitchLimit:a,spinePitchShare:o}=Sr.aim,s=(n.meta.metaVersion===`0`?1:-1)*F.clamp(t,-a,a)*r.weight,c=i.getNormalizedBoneNode(X.Hips),l=0;for(let e of hO)i.getNormalizedBoneNode(e)&&l++;let u=!0;for(let e of hO){let t=i.getNormalizedBoneNode(e);t&&(r.weight>0&&t.quaternion.premultiply(yO.setFromAxisAngle(_O,s*o/l)),u&&c&&r.legYaw!==0&&t.quaternion.premultiply(vO.setFromAxisAngle(gO,-r.legYaw)),u=!1)}if(c&&r.legYaw!==0&&c.quaternion.premultiply(vO.setFromAxisAngle(gO,r.legYaw)),r.weight===0)return;let d=i.getNormalizedBoneNode(X.RightUpperArm),f=d?.parent;d&&f&&(SO.setFromAxisAngle(_O,s).multiply(vO.setFromAxisAngle(gO,Math.PI/2)),n.scene.getWorldQuaternion(bO),f.getWorldQuaternion(xO),SO.premultiply(bO).premultiply(xO.invert()),d.quaternion.slerp(SO,r.weight),i.getNormalizedBoneNode(X.RightLowerArm)?.quaternion.slerp(wO,r.weight),i.getNormalizedBoneNode(X.RightHand)?.quaternion.slerp(CO.setFromAxisAngle(gO,-Math.PI/2),r.weight))}var IO=.001;function LO(e,t,n){let r=F.damp(e,t,Sr.aim.response,n);return Math.abs(r-t)<IO?t:r}function RO(e,t,n,r){e.weight=LO(e.weight,+!!t,r),e.legYaw=LO(e.legYaw,t?n.legYaw:0,r)}var zO=new P,BO=new j;function VO(){for(let e=0;e<vx.length;e++){let t=vx[e],n=this.original.getBoneNode(t);if(n==null)continue;let r=this.getBoneNode(t),i=this._parentWorldRotations[t];if(zO.copy(i).invert(),n.quaternion.copy(r.quaternion).multiply(i).premultiply(zO).multiply(this._boneRotations[t]),t===`hips`){r.getWorldPosition(BO);let e=n.parent;e.updateWorldMatrix(!0,!1),n.position.copy(BO.applyMatrix4(e.matrixWorld.invert()))}}}function HO(e){let t=e._normalizedHumanBones;if(!t?._parentWorldRotations||!t._boneRotations||typeof t.original?.getBoneNode!=`function`)throw R(Error(`three-vrm's humanoid no longer holds the _normalizedHumanBones rig of 3.5.5, which the engine's rig update reads.`),`SP0253`,void 0);t.update=VO}function UO(e,t){e.lookAt?.update(t),e.expressionManager?.update(),e.nodeConstraintManager?.update(),e.springBoneManager?.update(t);for(let n of e.materials??[])n.update?.(t)}function WO(e){let t=Cc(e,jr);return t===void 0?void 0:t.seconds-t.left}var GO=new P,KO=new j,qO=new j,JO=new j,YO=new P,XO=new P,ZO=new P,QO=new P,$O=new j;function ek(e,t){let n=zf(e,t);if(!n)return null;let{aimHand:r}=n;if(r===!1)return null;let{castAim:i}=Sr;return r===void 0||r===!0?n.kind===_n.Area?null:i:{inSeconds:r.inSeconds??i.inSeconds,holdSeconds:r.holdSeconds??i.holdSeconds,outSeconds:r.outSeconds??i.outSeconds}}function tk(e,t,n,r){let i=t.get(Sl),a=i?.ability;if(a!==void 0&&a!==n.ability){n.ability=a;let t=ek(e,a);n.aimEnabled=t!==null,t&&(n.window=t)}else a===void 0&&(n.ability=null);if(!i||!a||!n.aimEnabled){let{holdSeconds:e,outSeconds:i}=n.window??Sr.castAim;if(n.request!==null){n.request=null;let r=WO(t);n.heldSeconds=r===void 0?0:Math.max(0,e-r)}return n.heldSeconds>0?(n.heldSeconds-=r,n.weight=1,n):(n.weight=Math.max(0,n.weight-(i>0?r/i:1)),n.weight===0&&(n.target=null),n)}let{inSeconds:o}=n.window??Sr.castAim,s=i.secondsLeft;return n.request!==i.request&&(n.request=i.request,n.target=i.target),n.target&&!n.target.isAlive()&&(n.target=null),n.weight=o>0?F.smoothstep(o-s,0,o):+(s<=0),n}function nk(e,t,n,r,i){if(i<=0||!Hr(r,$O))return!1;let a=e.humanoid.getNormalizedBoneNode(X.RightHand),o=a?.parent;return!a||!o||(t.getWorldQuaternion(GO),t.getWorldPosition(KO),qO.copy(n).applyQuaternion(GO).normalize(),JO.subVectors($O,KO),JO.lengthSq()<1e-6)?!1:(JO.normalize(),YO.setFromUnitVectors(qO,JO),a.getWorldQuaternion(XO),o.getWorldQuaternion(ZO),QO.copy(YO).multiply(XO).premultiply(ZO.invert()),a.quaternion.slerp(QO,i),!0)}var rk=new j(0,0,-1),ik=new j(.05,-.94,-.34).normalize(),ak=new j(-.85,0,-.53).normalize(),ok=[85,100,65].map(e=>F.degToRad(e)),sk=[45,25,25].map(e=>F.degToRad(e)),ck=e=>e.map((e,t)=>({bone:e,axis:rk,bend:ok[t]})),lk={thumb:[X.RightThumbMetacarpal,X.RightThumbProximal,X.RightThumbDistal].map((e,t)=>({bone:e,axis:t===0?ik:ak,bend:sk[t]})),index:ck([X.RightIndexProximal,X.RightIndexIntermediate,X.RightIndexDistal]),middle:ck([X.RightMiddleProximal,X.RightMiddleIntermediate,X.RightMiddleDistal]),ring:ck([X.RightRingProximal,X.RightRingIntermediate,X.RightRingDistal]),little:ck([X.RightLittleProximal,X.RightLittleIntermediate,X.RightLittleDistal])},uk=Object.keys(lk);function dk(e,t,n){let r=e.meta.metaVersion!==`0`;for(let i of uk)for(let{bone:a,axis:o,bend:s}of lk[i]){let c=e.humanoid.getNormalizedBoneNode(a);if(!c)continue;let l=n.get(c);l?l.copy(c.quaternion):n.set(c,c.quaternion.clone()),c.quaternion.setFromAxisAngle(o,s*t[i]),r&&(c.quaternion.x=-c.quaternion.x,c.quaternion.z=-c.quaternion.z)}}var fk=new Set([fu.Idle,fu.Run]),pk=new Set([fu.Run,fu.Jump,fu.RunJump]),mk=new j,hk=new j,gk=new j,_k=new P,vk=new P,yk=new ke,bk=new P,xk=new ke,Sk={legYaw:0,backward:!1,clip:null},Ck=new ke;function wk({head:e,vrm:t,settings:n,angles:r,deltaSeconds:i}){let{yaw:a,pitch:o}=(()=>{let{lookAt:n}=t,r=n?.target;return!n||!r||!e.parent?{yaw:0,pitch:0}:(e.getWorldPosition(mk),e.parent.getWorldQuaternion(_k),gk.subVectors(r.getWorldPosition(hk),mk).applyQuaternion(_k.invert()).normalize(),yk.setFromQuaternion(vk.setFromUnitVectors(n.faceFront,gk),`YXZ`),{yaw:F.radToDeg(yk.y),pitch:F.radToDeg(yk.x)})})(),s=F.smoothstep(180-Math.abs(a),0,n.fadeDegrees),c=(e,t)=>F.clamp(e*n.share,-t,t)*s;r.yaw=F.damp(r.yaw,c(a,n.yawLimit),n.response,i),r.pitch=F.damp(r.pitch,c(o,n.pitchLimit),n.response,i),e.quaternion.premultiply(bk.setFromEuler(xk.set(F.degToRad(r.pitch),F.degToRad(r.yaw),0,`YXZ`)))}var Tk=new Set;function Ek(e,t){let n=Object.entries(Bn(e)??{}).map(([e,t])=>({mark:e,seconds:t})).sort((e,t)=>e.seconds-t.seconds),r=n.findIndex(({seconds:e})=>e>=t);return{name:e,marks:n,crossed:r<0?n.length:r}}function Dk(e,t,n,r){let i=t.get(hd),{mixer:a,clips:o}=n;if(i&&i.plays!==n.oneShotPlays){n.oneShotPlays=i.plays;let t=i.name?o.get(i.name):void 0;if(t){let{fadeSeconds:r,hold:a,speed:o}=i,s=CS({world:e,clip:t,end:i.end}),c=Math.min(i.start,s);n.oneShot={clip:t,...Ek(i.name,c),fadeSeconds:r,hold:a,start:c,end:s,speed:o,playing:!0,restart:!0};return}if(n.oneShot&&(n.oneShot.playing=!1),i.name&&!Tk.has(i.name)){let t=[...o.keys()].join(`, `);Dc(e,`playClip: the character has no clip named "${i.name}", so she plays none. Her clips: ${t}. Name a VRMA clip with registerClip before she draws.`)&&Tk.add(i.name)}}let{oneShot:s}=n;if(!s?.playing||s.restart)return;let c=a?.existingAction(s.clip)?.time??0,{start:l,end:u,speed:d}=s,f=Math.min(s.fadeSeconds,(u-l)/d/2);(!i?.name||!s.hold&&(pk.has(r)||(u-c)/d<=f))&&(s.playing=!1)}function Ok({world:e,entity:t,played:n,time:r,plays:i}){for(;n.crossed<n.marks.length&&n.marks[n.crossed].seconds<=r;){let{mark:r,seconds:a}=n.marks[n.crossed++];tc(e,bu,{clip:n.name,mark:r,seconds:a,plays:i},{entity:t})}}var kk={band:{enter:.06,leave:.05},height:1.8},Ak=new j,jk=0;function Mk(e,t,n,r){let i=r??(Ts(t)?uo.AlwaysAnimate:uo.CullUpdateTransforms),a=t.get(Xf)?.object;if(!e||!a||i===uo.AlwaysAnimate)return Uu.Full;let o=t.get(lr)?.height||kk.height;if(Ak.copy(a.position),Ak.y+=o/2,!qc(e,Ak,o))return Uu.Hidden;let s=rs(e,Ak,o/2);return Qu(n===Uu.Full,s,kk.band)?Uu.Full:Uu.Halved}var Nk=et(Ar);function Pk(e,t){let n=Cn(e),r=e.get(tu);jk+=1,nd(e,Nk,([i],a)=>{let s=a.get(sd),{mixer:c,vrm:l,clips:d,current:f}=i;if(!s||!c||!l)return;let p=i.detail===Uu.Hidden;if(i.detail=Mk(r,a,i.detail,i.cullingMode),i.owedSeconds+=t,i.detail===Uu.Hidden||i.detail===Uu.Halved&&!p&&(jk+a.id())%2==1)return;let m=i.owedSeconds;i.owedSeconds=0;let h=a.get(lt),g=a.get(Ob),_=a.get(Xn),v=_?.active===!0,y=v||(g?.strafing??(h?fc(n,h,wc.strafe):s.strafe)),b=a.get(Gu),x=a.get(mo);Sk.backward=i.aim.backward,y&&b&&x?OO(Ck.setFromQuaternion(g?.rotation??x.rotation,`YXZ`).y,b,Sk):(Sk.legYaw=0,Sk.backward=!1,Sk.clip=null);let S=s.state===fu.Run&&Sk.clip?d.get(Sk.clip):void 0;S&&Sk.clip!==bd.Backpedal&&(Sk.legYaw=0),Dk(e,a,i,s.state);let{oneShot:C}=i,w=C?.playing?C.clip:void 0,T=au(a,Rt,`clip`),E=T?d.get(T):void 0,D=E&&T?T:s.state,O=w??E??S??d.get(s.state);if(!O)throw R(Error(`The character has no clip for the ${s.state} pose: its CharacterAnimation trait's clips hold none for it. Draw the character with the engine's <CharacterSpawn>, which binds a clip for every pose.`),`SP0376`,void 0,a);let k=C?.restart===!0&&O===w;C&&(C.restart=!1);let ee=!w&&ef(D),A=!w&&fk.has(D),j=f!==null&&f.loop===2201!==A;if(f?.getClip()!==O||k||j){let e=C&&(O===C.clip||f?.getClip()===C.clip)?C.fadeSeconds:void 0,t=s.state===fu.Idle&&f!==null&&[fu.Run,...Object.values(bd)].some(e=>f.getClip()===d.get(e)),n=a.get(oo)?.deceleration??Mn.deceleration,r=b?hr(Bu(b),n)+m:0,l=a.get(Nr)?.turnSeconds,p=c.clipAction(O),h=A&&p.isRunning()&&p.getEffectiveWeight()>0,g=h||p===f||O===w&&p.isScheduled()?p.getEffectiveWeight():0;h||p.reset(),C&&O===w&&(p.time=C.start),p.setLoop(A?u:o,A?1/0:1),p.clampWhenFinished=!A,p.timeScale=C&&O===w?C.speed:ee&&l?O.duration/l:1,p.play();let _=e??(ee?.06:t?r:Sr.loopFadeS);if(f){let e=new Map([[p,g]]);for(let t of d.values()){let n=c.existingAction(t);n&&n!==p&&n.getEffectiveWeight()>0&&e.set(n,n.getEffectiveWeight())}i.blend={startWeights:e,elapsedSeconds:0,durationSeconds:_}}i.current=p}let{blend:M}=i,te=null;if(M){M.elapsedSeconds+=m;let e=M.durationSeconds>0?Math.min(M.elapsedSeconds/M.durationSeconds,1):1;for(let[t,n]of M.startWeights)t.setEffectiveWeight(F.lerp(n,+(t===i.current),e));e===1&&(te=M)}let{current:ne}=i;ne&&ne.getClip()===d.get(fu.Run)&&(ne.timeScale=Sk.backward?-1:1),i.aim.backward=Sk.backward,RO(i.aim,y,Sk,m),VS(l.scene),AO(i.aim.clipRotations);let re=a.get(Hi)?.curl;AO(i.gripClipRotations),re||i.gripClipRotations.clear();let ie=l.humanoid.getNormalizedBoneNode(X.Head);ie&&i.clipHeadRotation&&ie.quaternion.copy(i.clipHeadRotation);let N=i.upperBody??=ES();DS(N);let ae=C&&c.existingAction(C.clip);C&&ae?.loop===2200&&(C.playing||ae!==i.current)&&wS({action:ae,end:C.end,deltaSeconds:m}),c.update(m);let oe=N.plays;FS({world:e,entity:a,layer:N,root:l.scene,spine:l.humanoid.getNormalizedBoneNode(X.Spine),clips:d,addedPose:i.armSpread,deltaSeconds:m}),N.plays!==oe&&N.active&&(i.upperBodyMarks=Ek(a.get(js)?.name??``,N.start)),NO(l,i.aim),FO(i,_&&v?kO(l,_):g?.pitch??(h?Yo(fc(n,h,wc.pitch)):s.pitch)),re&&dk(l,re,i.gripClipRotations),ie&&(i.clipHeadRotation=(i.clipHeadRotation??new P).copy(ie.quaternion),wk({head:ie,vrm:l,settings:i.headTurn??Sr.headTurn,angles:i.headAngles,deltaSeconds:m})),l.humanoid.update(),l.scene.updateWorldMatrix(!0,!0);let se=tk(e,a,i.castAim,m),ce=a.get(En)?.object,le=a.get(zo);if(se.weight>0&&se.target&&ce&&le&&nk(l,ce,le.forward,se.target,se.weight)&&(l.humanoid.update(),l.scene.updateWorldMatrix(!0,!0)),p&&l.springBoneManager?.reset(),BS({entity:a,root:l.scene,seconds:m})&&l.scene.updateWorldMatrix(!0,!0),UO(l,p?t:m),C&&Ok({world:e,entity:a,played:C,time:c.existingAction(C.clip)?.time??0,plays:i.oneShotPlays}),N.active&&Ok({world:e,entity:a,played:i.upperBodyMarks,time:N.time,plays:N.plays}),te){for(let e of te.startWeights.keys())e!==i.current&&e.stop();i.blend===te&&(i.blend=null)}})}function Fk(e,t){$r(e),t.scene.updateWorldMatrix(!0,!0),t.springBoneManager?.reset()}var Ik=new WeakSet;function Lk(e){Ik.add(e)}var Rk={BloomEffect:`bloom`,SelectiveBloomEffect:`selective bloom`,SMAAEffect:`SMAA`,DepthOfFieldEffect:`depth of field`,SSAOEffect:`SSAO`,GodRaysEffect:`god rays`,OutlineEffect:`outline`,TiltShiftEffect:`tilt shift`},zk=3;function Bk(e,t){if(Ik.has(e)){let t=[{label:`ambient occlusion`,target:e,method:`render`},{label:`ambient occlusion: transparency`,target:e,method:`renderTransparency`}],n=Reflect.get(e,`effectCompositerQuad`);return typeof n==`object`&&n&&t.push({label:`ambient occlusion: composite`,target:n,method:`render`}),t}if(e.name===`RenderPass`)return[{label:`scene`,target:e,method:`render`}];if(e.name===`CopyPass`)return[{label:`copy`,target:e,method:`render`}];if(e.name===`EffectPass`){let{effects:n}=e;return[{label:t===0?`effects`:`effects ${t+1}`,target:e,method:`render`,detail:n.map(e=>e.name).join(`, `)},...n.flatMap(e=>{let t=e.name===`ToneMappingEffect`&&e.mode===zk?`tone mapping`:Rk[e.name];return t===void 0?[]:[{label:t,target:e,method:`update`}]})]}return[{label:e.name,target:e,method:`render`}]}function Vk(e,t){if(nh(e,eh.GpuScopes))return[];let n={label:`shadow map`,target:e.shadowMap,method:`render`};if(!t)return[n,{label:`scene`,target:e,method:`render`}];let r=0;return[n,...t.passes.filter(e=>e.enabled).flatMap(e=>{let t=Bk(e,r);return e.name===`EffectPass`&&(r+=1),t})]}function Hk(e){return pg()?(window.__GAME_GPU_SCOPES__=e,()=>{window.__GAME_GPU_SCOPES__===e&&delete window.__GAME_GPU_SCOPES__}):()=>void 0}var Uk=.02,Wk=.3,Gk=.1,Kk=.005,qk=.05,Jk=`voice-gate`,Yk=`
|
|
279
|
+
const lookahead = Math.round(sampleRate * ${Uk});
|
|
280
|
+
const holdSamples = Math.round(sampleRate * ${Wk});
|
|
281
|
+
const tailSamples = Math.round(sampleRate * ${Gk});
|
|
282
|
+
const fadeStep = 1 / (sampleRate * ${Kk});
|
|
283
|
+
const reportSamples = Math.round(sampleRate * ${qk});
|
|
284
|
+
const silence = -120;
|
|
285
|
+
|
|
286
|
+
function toDecibels(power) {
|
|
287
|
+
return power > 0 ? Math.max(silence, 10 * Math.log10(power)) : silence;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
class VoiceGate extends AudioWorkletProcessor {
|
|
291
|
+
constructor() {
|
|
292
|
+
super();
|
|
293
|
+
this.mode = "${bp.OpenMic}";
|
|
294
|
+
this.threshold = ${xp.voiceSensitivity};
|
|
295
|
+
this.gain = 1;
|
|
296
|
+
this.pushing = false;
|
|
297
|
+
this.ring = new Float32Array(lookahead + 4096);
|
|
298
|
+
this.write = lookahead;
|
|
299
|
+
this.read = 0;
|
|
300
|
+
this.openFor = 0;
|
|
301
|
+
this.level = 0;
|
|
302
|
+
this.counted = 0;
|
|
303
|
+
this.loudestIn = 0;
|
|
304
|
+
this.loudestOut = 0;
|
|
305
|
+
this.port.onmessage = ({ data }) => {
|
|
306
|
+
if (data.mode !== undefined) this.mode = data.mode;
|
|
307
|
+
if (data.thresholdDecibels !== undefined) this.threshold = data.thresholdDecibels;
|
|
308
|
+
if (data.gain !== undefined) this.gain = data.gain;
|
|
309
|
+
if (data.pushing !== undefined) this.pushing = data.pushing;
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
process(inputs, outputs) {
|
|
314
|
+
const input = inputs[0] && inputs[0][0];
|
|
315
|
+
const output = outputs[0][0];
|
|
316
|
+
const size = output.length;
|
|
317
|
+
let power = 0;
|
|
318
|
+
for (let index = 0; index < size; index++) {
|
|
319
|
+
const sample = input ? input[index] * this.gain : 0;
|
|
320
|
+
power += sample * sample;
|
|
321
|
+
this.ring[this.write] = sample;
|
|
322
|
+
this.write = (this.write + 1) % this.ring.length;
|
|
323
|
+
}
|
|
324
|
+
power /= size;
|
|
325
|
+
// The hold counts from the block that was loud, which plays a
|
|
326
|
+
// lookahead later.
|
|
327
|
+
if (this.mode === "${bp.PushToTalk}") {
|
|
328
|
+
if (this.pushing) this.openFor = lookahead + tailSamples;
|
|
329
|
+
else this.openFor = Math.max(0, this.openFor - size);
|
|
330
|
+
} else if (toDecibels(power) >= this.threshold)
|
|
331
|
+
this.openFor = lookahead + holdSamples;
|
|
332
|
+
else this.openFor = Math.max(0, this.openFor - size);
|
|
333
|
+
const target = this.openFor > 0 ? 1 : 0;
|
|
334
|
+
let passed = 0;
|
|
335
|
+
for (let index = 0; index < size; index++) {
|
|
336
|
+
if (this.level < target) this.level = Math.min(target, this.level + fadeStep);
|
|
337
|
+
else if (this.level > target) this.level = Math.max(target, this.level - fadeStep);
|
|
338
|
+
const sample = this.ring[this.read] * this.level;
|
|
339
|
+
this.read = (this.read + 1) % this.ring.length;
|
|
340
|
+
output[index] = sample;
|
|
341
|
+
passed += sample * sample;
|
|
342
|
+
}
|
|
343
|
+
for (let channel = 1; channel < outputs[0].length; channel++)
|
|
344
|
+
outputs[0][channel].set(output);
|
|
345
|
+
this.loudestIn = Math.max(this.loudestIn, power);
|
|
346
|
+
this.loudestOut = Math.max(this.loudestOut, passed / size);
|
|
347
|
+
this.counted += size;
|
|
348
|
+
if (this.counted >= reportSamples) {
|
|
349
|
+
this.port.postMessage({
|
|
350
|
+
inputDecibels: toDecibels(this.loudestIn),
|
|
351
|
+
outputDecibels: toDecibels(this.loudestOut),
|
|
352
|
+
open: target === 1,
|
|
353
|
+
});
|
|
354
|
+
this.counted = 0;
|
|
355
|
+
this.loudestIn = 0;
|
|
356
|
+
this.loudestOut = 0;
|
|
357
|
+
}
|
|
358
|
+
return true;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
registerProcessor("${Jk}", VoiceGate);
|
|
363
|
+
`,Xk=1e3,Zk;function Qk(e){return{mode:e.voiceMode,thresholdDecibels:e.voiceSensitivity,gain:dS(e.microphoneVolume)}}async function $k(e){if(e.state===`running`)return!0;let t=e.resume().then(()=>!0),n=new Promise(e=>setTimeout(()=>e(!1),Xk));return Promise.race([t,n]).catch(()=>!1)}function eA(e){let t=()=>{let{voiceMode:t}=q.getState();e.enabled=t!==bp.PushToTalk||J.getState().pushing};t();let n=q.subscribe(t),r=J.subscribe(t),i=nA();return{track:e,stop:()=>{n(),r(),i(),e.stop(),J.setState({pushing:!1})}}}async function tA(e){if(typeof AudioWorkletNode>`u`)return eA(e);let t;try{if(t=new AudioContext({latencyHint:`interactive`}),Zk??=URL.createObjectURL(new Blob([Yk],{type:`text/javascript`})),await t.audioWorklet.addModule(Zk),!await $k(t))throw R(Error(`No sound yet.`),`SP0247`,void 0)}catch{return t?.close(),eA(e)}let n=t.createMediaStreamSource(new MediaStream([e])),r=new AudioWorkletNode(t,Jk,{channelCount:1,channelCountMode:`explicit`,outputChannelCount:[1]}),i=t.createMediaStreamDestination();n.connect(r).connect(i);let a=e=>r.port.postMessage(e);a({...Qk(q.getState()),pushing:J.getState().pushing});let o=q.subscribe((e,t)=>{let n=Qk(e),r=Qk(t);(n.mode!==r.mode||n.thresholdDecibels!==r.thresholdDecibels||n.gain!==r.gain)&&a(n)}),s=J.subscribe(({pushing:e},t)=>{e!==t.pushing&&a({pushing:e})}),c=nA(),l=-1/0;r.port.onmessage=({data:e})=>{let t=performance.now();e.outputDecibels>=-55&&(l=t);let n=t-l<=fb*1e3,r=J.getState();(r.talking!==n||r.inputDecibels!==e.inputDecibels)&&J.setState({talking:n,inputDecibels:e.inputDecibels})};let[u]=i.stream.getAudioTracks();return{track:u,stop:()=>{o(),s(),c(),r.port.onmessage=null,n.disconnect(),r.disconnect(),u.stop(),e.stop(),t.close(),J.setState({talking:!1,pushing:!1})}}}function nA(){let e=e=>{let{voiceMode:t,pushToTalkKey:n}=q.getState();return t===bp.PushToTalk&&e.code===n},t=t=>{t.repeat||!e(t)||Xx(t)||J.setState({pushing:!0})},n=e=>{e.code===q.getState().pushToTalkKey&&J.setState({pushing:!1})},r=()=>J.setState({pushing:!1}),i=q.subscribe((e,t)=>{(e.pushToTalkKey!==t.pushToTalkKey||e.voiceMode!==t.voiceMode)&&r()});return window.addEventListener(`keydown`,t),window.addEventListener(`keyup`,n),window.addEventListener(`blur`,r),()=>{i(),window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,n),window.removeEventListener(`blur`,r)}}async function rA({noiseSuppression:e,autoGainControl:t}){let[n]=(await navigator.mediaDevices.getUserMedia({audio:{channelCount:1,echoCancellation:!0,noiseSuppression:e,autoGainControl:t}})).getAudioTracks();return n}function iA(e){if(e===void 0)return 1;let{playerVolumes:t,mutedPlayers:n}=J.getState();return n.includes(e)?0:pS(t[e]??100)}function aA(e,t){let n=1,r=NaN,i=()=>{let i=n*iA(e);i!==r&&(r=i,t(r))},a=hS({channel:cS.Voice},e=>{n=e,i()}),o=J.subscribe(i);return()=>{a(),o()}}var oA=new WeakMap;function sA(e){let t=oA.get(e);if(t===void 0){let n=e.createDynamicsCompressor();n.threshold.value=-3,n.knee.value=0,n.ratio.value=20,n.attack.value=.002,n.release.value=.2,n.connect(e.destination),t=n,oA.set(e,t)}return t}function cA(e,t){let n=typeof AudioContext>`u`?void 0:rS();if(n===void 0)return;let r=n.createMediaStreamSource(e),i=n.createGain();r.connect(i).connect(sA(n));let a=!0,o=aA(t,e=>{a?i.gain.value=e:i.gain.setTargetAtTime(e,n.currentTime,.015),a=!1});return()=>{o(),r.disconnect(),i.disconnect()}}function lA(e,t){let n=new Audio,r=new MediaStream([e]);n.srcObject=r;let i=cA(r,t),a;i?(n.muted=!0,a=i):a=aA(t,e=>{n.volume=Math.min(1,e)});function o(){s(),n.play().catch(()=>void 0)}function s(){for(let e of $x)window.removeEventListener(e,o)}let c=!1;return n.play().catch(()=>{if(!c)for(let e of $x)window.addEventListener(e,o)}),()=>{c=!0,a(),s(),n.pause(),n.srcObject=null}}function uA(){return Th()||typeof navigator<`u`&&navigator.userActivation?.hasBeenActive===!0?Promise.resolve():new Promise(e=>{let t=()=>{for(let e of $x)window.removeEventListener(e,t,!0);e()};for(let e of $x)window.addEventListener(e,t,!0)})}function dA(e){let t=!1,n,r=()=>{!t&&n&&e(n.state)};return navigator.permissions?.query({name:`microphone`}).then(e=>{n=e,n.addEventListener(`change`,r),r()}).catch(()=>void 0),window.addEventListener(`focus`,r),()=>{t=!0,n?.removeEventListener(`change`,r),window.removeEventListener(`focus`,r)}}function fA(){if(typeof RTCPeerConnection<`u`)try{new RTCPeerConnection().close()}catch{}}var pA={openMicrophone:rA,playTrack:lA,processMicrophone:tA,waitForActivation:uA,watchMicrophonePermission:dA,warm:fA},mA=[1,1,2,4,8];function hA(e){return mA[Math.min(e,mA.length-1)]*1e3*(1-Math.random()/2)}function gA(e){return e>=4e3&&e<=4999}var _A=new Set([$_,Q_,_v]),vA=new Set([_v]),yA=new Set([$_]);function bA(e){return`spawnite.rejoin:${e}`}function xA(e){try{return globalThis.sessionStorage?.getItem(bA(e))??void 0}catch{return}}function SA(e,t){try{t===void 0?globalThis.sessionStorage?.removeItem(bA(e)):globalThis.sessionStorage?.setItem(bA(e),t)}catch{}}var CA=new TextEncoder,wA=new Uint8Array(4096);function TA(e){return wA.length<e.length*3&&(wA=new Uint8Array(e.length*3)),CA.encodeInto(e,wA).written}function EA(e){if(typeof e!=`string`)return e.length>Ea;let t=e;return t.length*3<=32768?!1:t.length>32768||TA(t)>Ea}function DA(e,t){if(!EA(t))return!1;let n=e.type===pv.Message?`The game message "${e.name}"`:`The "${e.type}" message`;return console.warn(`${n} was not sent: as JSON it is past the room's ${Ea} bytes (maximumFrameBytes), which would close the connection. Shorten the text it carries, or split it across messages.`),!0}function OA(e){try{return new WebSocket(e)}catch(t){console.error(`The room's address ${e} cannot be opened: check that it starts with ws:// or wss://, and that the page's content security policy allows it.`,t);return}}var kA={refusal:null,full:null},AA={closed:[{target:`#connection.${H.Closed}`}],rejoin:[{guard:`seatSource`,target:`#connection.${H.Rejoining}`},{target:`#connection.${H.Closed}`}]},jA=(e,t,n)=>({initial:`away`,states:{away:{initial:e,after:{giveUp:AA[t]},on:{OPENED:`open`},states:{dialing:{entry:`dial`,on:{DROPPED:`waiting`}},waiting:{after:{retry:`dialing`},exit:`countTry`}}},open:{after:{ping:{target:`open`,reenter:!0,actions:`ping`}},on:{WELCOME:`#connection.${H.Joined}`,DROPPED:n}}}});function MA(e,t,n){return!e.rejoined&&t.type===`REFUSED`&&t.refusal!==null&&n.has(t.refusal.code)}var NA=kt({types:{context:{},events:{}},actions:{dial:()=>void 0,restartClock:()=>void 0,ping:()=>void 0,hangUp:()=>void 0,abandon:()=>void 0,forgetRejoin:()=>void 0,useSeat:(e,t)=>void 0,countTry:Ka(({context:e})=>({tries:e.tries+1}))},actors:{takeSeat:wx(()=>Promise.resolve(null))},guards:{silent:()=>!1,seatSource:()=>!1,seatLost:({context:e,event:t})=>MA(e,t,_A),staleKey:({context:e,event:t})=>MA(e,t,yA),roomFailed:({context:e,event:t})=>MA(e,t,vA)},delays:{retry:({context:e})=>hA(e.tries),ping:1e3,giveUp:6e4}}).createMachine({id:`connection`,initial:H.Connecting,context:{...kA,tries:0,rejoined:!1,closedByPage:!1},on:{CLOSE:{target:`.${H.Closed}`,actions:Ka({closedByPage:!0})},REFUSED:{target:`.${H.Closed}`,actions:Ka(({event:{refusal:e,full:t}})=>({refusal:e,full:t}))}},states:{[H.Connecting]:{...jA(`dialing`,`closed`,`#connection.${H.Reconnecting}`),on:{REFUSED:{guard:`staleKey`,target:H.Rejoining}}},[H.Joined]:{entry:[`restartClock`,Ka({tries:0,rejoined:!1})],initial:`pinging`,states:{pinging:{entry:`ping`,after:{ping:[{guard:`silent`,target:`#connection.${H.Reconnecting}`,actions:`abandon`},{target:`pinging`,reenter:!0}]}}},on:{WELCOME:{target:H.Joined,reenter:!0},DROPPED:H.Reconnecting,REFUSED:{guard:`roomFailed`,target:H.Rejoining}}},[H.Reconnecting]:{...jA(`waiting`,`rejoin`,`#connection.${H.Reconnecting}`),on:{REFUSED:{guard:`seatLost`,target:H.Rejoining}}},[H.Rejoining]:{entry:[`abandon`,`forgetRejoin`,Ka({tries:0,rejoined:!0})],after:{giveUp:`#connection.${H.Closed}`},initial:`seating`,states:{seating:{invoke:{src:`takeSeat`,onDone:[{guard:({event:e})=>e.output===null,target:`#connection.${H.Closed}`},{target:`trying`,actions:{type:`useSeat`,params:({event:e})=>e.output}}],onError:`#connection.${H.Closed}`}},trying:jA(`waiting`,`closed`,`#connection.${H.Rejoining}.trying`)}},[H.Closed]:{type:`final`,entry:`hangUp`}}}),PA=Object.values(H);function FA({url:e,playerName:t,wire:n,avatar:r,seat:i,voice:a=!0,devices:o=pA,build:s=fh(),reconnectGiveUpSeconds:c=60,onStatus:l,takeSeat:u},d){let f={url:e,seat:i},p,m,h=typeof __GAME_ENGINE_DEV__==`boolean`&&__GAME_ENGINE_DEV__?Mh():void 0,g=(e,t,n)=>{if(Rh&&xm.sendClientText&&xm.sendClientText(typeof t==`string`?t:sv(n)),w.sentBytes+=typeof t==`string`?TA(t):t.length,!h)return e.send(t);h.uplink.hold(()=>{e.readyState===WebSocket.OPEN&&e.send(t)})},_=()=>{m?.close(),m=void 0},v=e=>void Rp(async()=>{let{openVoice:e}=await import(`../chunks/CjTILWD4.js`);return{openVoice:e}},__vite__mapDeps([65,1,13,43,10,3,11,12,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,51,52,40,2,6,45,66]),import.meta.url).then(({openVoice:t})=>{x()||p!==e||(_(),J.getState().enterRoom(f.url),m=t(y,o))}).catch(e=>console.warn(`Voice stopped: its code did not load, as on a page left open across a deploy. Reload the page to get voice back:`,e)),y=e=>{let t=tv(e,n??dv.Binary);return DA(e,t)?mg.TooLarge:E||p?.readyState!==WebSocket.OPEN||S()||e.type===pv.Message&&C()!==H.Joined?mg.NotJoined:(g(p,t,e),null)},b=ao(NA.provide({actions:{dial:()=>j(),restartClock:()=>Lh(d),ping:()=>{if(p?.readyState!==WebSocket.OPEN||E)return;let e={type:pv.Ping,sent:performance.now()};g(p,sv(e),e)},hangUp:()=>{_(),h?.close(),p?.close()},abandon:()=>{_(),O=Ym.Gone;let e=p;p=void 0,e?.close()},forgetRejoin:()=>{T=void 0,SA(f.url,void 0)},useSeat:(e,t)=>{f=t}},actors:{takeSeat:wx(()=>(u?u():Promise.resolve(f)).catch(e=>{throw tp(e,{boundary:ip.Room,room:`taking a seat to join ${f.url} again`}),console.error(`The room connection closed: taking a seat to join again failed.`,e),e}))},guards:{silent:()=>performance.now()-ee>=15e3,seatSource:({context:e})=>u!==void 0&&!e.rejoined,staleKey:({context:e,event:t})=>T!==void 0&&MA(e,t,yA)},delays:{giveUp:c*1e3}})),x=()=>b.getSnapshot().status===`done`,S=()=>{let e=b.getSnapshot();return e.matches(H.Reconnecting)||e.matches(H.Rejoining)},C=()=>{let e=b.getSnapshot();return PA.find(t=>e.matches(t))??H.Closed},w={backlog:Ub(),receivedBytes:0,sentBytes:0,refusedShotOrigins:0,get status(){return C()},get notice(){let{context:e}=b.getSnapshot();switch(C()){case H.Connecting:return F_.Connecting;case H.Joined:return null;case H.Reconnecting:return F_.Reconnecting;case H.Rejoining:return F_.Rejoining;case H.Closed:return e.closedByPage?null:e.refusal?.code===4013?F_.Ended:F_.Failed}},get refusal(){return b.getSnapshot().context.refusal},get full(){return b.getSnapshot().context.full},get buildMismatch(){return D},get lastDrop(){return O},sendMoves:e=>y(IA(kb(e),k)),sendEdit:y,sendWalk:y,sendShot:y,sendItem:y,sendMessage:y,sendPress:e=>y(IA(e,k)),leave:()=>{let e=p;if(E||!b.getSnapshot().matches(H.Joined)||e?.readyState!==WebSocket.OPEN)return w.close(),Promise.resolve(!1);let t={type:pv.Leave};return g(e,sv(t),t),E=!0,new Promise(t=>{let n=n=>{clearTimeout(i),e.removeEventListener(`close`,r),n&&(T=void 0,SA(f.url,void 0)),w.close(),t(n)},r=e=>n(e.code===rv),i=setTimeout(()=>n(!1),1e3);e.addEventListener(`close`,r)})},move:()=>{let e=p;E=!0,T=void 0,SA(f.url,void 0),e?.readyState===WebSocket.OPEN&&e.close(cv),w.close()},close:()=>{x()||b.send({type:`CLOSE`})}},T=xA(e),E=!1,D=null,O=null,k=0,ee=0,A=(e,t)=>{try{e(t)}catch(e){throw tp(e,{boundary:ip.Room,room:`${t.type} from ${f.url}`}),e}},j=()=>{let e=OA(f.url);if(!e)return b.send({type:`REFUSED`,...kA});p=e,e.binaryType=`arraybuffer`;let i=()=>{if(p!==e)return;b.send({type:`OPENED`});let i={type:pv.Join,protocolVersion:21,name:t,wire:n??dv.Binary,avatar:r,rejoin:T,build:s,seat:f.seat,baseline:!0,predicted:fn(),presses:!0},a=sv(i);if(DA(i,a))return b.send({type:`REFUSED`,...kA});g(e,a,i)};e.addEventListener(`open`,e=>A(i,e));let o=t=>{if(p!==e)return;ee=performance.now();let{data:n}=t,r;if(typeof n==`string`)r=n,w.receivedBytes+=TA(n);else if(n instanceof ArrayBuffer)r=new Uint8Array(n),w.receivedBytes+=n.byteLength;else return;let i;try{i=ev(r)}catch(t){console.error(`A frame from the room that does not read.`,t),e.close();return}let a=[];for(let e of i)if(Rh&&xm.receiveRoomFrame?.(e.frame),c(e.message)&&a.push(e.message),x())return;ax(w.backlog,a,{hidden:globalThis.document?.visibilityState===`hidden`})},c=t=>{if(t.type===lv.Ack&&t.level!==void 0&&(k=t.level),t.type===lv.Pong)return w.refusedShotOrigins=t.refusedShotOrigins??0,Um(d,t,performance.now()),!1;if(t.type===lv.Voice)return m?.receive(t),!1;if(t.type===lv.Welcome){if(t.protocolVersion!==21)return D={room:fv(t.protocolVersion),page:fv(21)},b.send({type:`REFUSED`,refusal:{code:ov,reason:JSON.stringify(D)},full:null}),!1;D=s!==void 0&&t.build!==void 0&&t.build!==s?{room:t.build,page:s}:null,T=t.rejoin,k=t.level??0,SA(f.url,T),_(),a&&v(e),b.send({type:`WELCOME`})}return!0},l=t=>{if(p===e&&(_(),!(x()||E))){if(!gA(t.code))return O=t.code===1009?Ym.MessageTooLarge:Ym.Gone,O===Ym.MessageTooLarge&&console.warn(`The room closed the connection on a message too large for it (code ${uv}, a frame past its maximumFrameBytes), not a network drop. Rejoining it; the message is not sent again.`),b.send({type:`DROPPED`});D=t.code===4006?av(t.reason)??null:null,b.send({type:`REFUSED`,refusal:{code:t.code,reason:t.reason},full:t.code===4004?hv(t.reason)??null:null})}};e.addEventListener(`message`,e=>h?h.downlink.hold(()=>A(o,e)):A(o,e)),e.addEventListener(`close`,e=>h?h.downlink.hold(()=>A(l,e)):A(l,e))},M=C();return b.subscribe(()=>{let e=C();e!==M&&(M=e,l?.(e))}),b.start(),!x()&&a&&o.warm&&setTimeout(o.warm,0),w}function IA(e,t){return t===0?e:{...e,level:t}}function LA(e){return new URLSearchParams(e).get(`page-bot`)??void 0}function RA(e){return typeof e==`object`&&!!e&&typeof e.play==`function`}function zA({module:e,load:t,world:n,readCharacter:r,session:i,input:a,sendMessage:o}){let s=null,c,l=!1,u=!1,d=(e,t={})=>o({name:e,payload:t}),f=()=>{let e=i.roomTick,t=s===null?1:Math.max(e-s,1);return s=e,t*El},p=()=>{if(!c){u=!0;return}let e=i.player?.isAlive()?i.player:null,t=r()?.isAlive()?r():null;l||!e&&!t||c.play({world:n,player:e,controlled:e?Zu(n,e):[],character:t,input:a,send:d,moveSeconds:f()})};return t(e).then(({bot:t})=>{if(!l){if(!RA(t)){console.warn(`?page-bot: ${e} exports no bot with a play, so the page plays no part of its own: export a SceneBot with play({ world, character, send }) beside the scene.`);return}c=t,u&&p()}},t=>console.warn(`?page-bot: ${e} did not load: ${t instanceof Error?t.message:String(t)}. Fix the module's error, or drop ?page-bot from the address.`)),{play:p,stop(){l=!0}}}var BA=0,VA=ym()((e,t)=>({coins:0,spend:n=>{if(!(n>0))throw R(Error(`Cannot spend ${n}: not a positive amount`),`SP0370`,`useWallet`);let{coins:r}=t();return r<n?!1:(BA+=n,e({coins:r-n}),!0)}}));function HA(){let e=BA;return BA=0,e}var UA=3,WA=[],GA=[],KA=[],qA=0,JA=[],YA=new he,XA=new he(0,0,0);function ZA(e,t){let n=qA++;WA[n]=e,GA[n]=t,KA[n]=e.visible;let{children:r}=e;for(let e=0;e<r.length;e++)ZA(r[e],n)}function QA(e){return!!e.material}function $A(e){let t=e;return t.isLight===!0||t.isLightProbeGrid===!0}function ej({material:e,userData:t}){let n=e;return n.transparent===!0&&!n.depthWrite&&!t.treatAsOpaque||!!t.cannotReceiveAO}function tj({material:e,userData:t}){let n=e;return n.transparent===!0&&n.depthWrite===!0&&!t.treatAsOpaque}function nj(e){for(let e=0;e<qA;e++)JA[e]=!1;for(let t=qA-1;t>0;t--){let n=WA[t];if(!n)continue;let r=KA[t];QA(n)?(r&&=e(n),JA[t]=r):(JA[t]=r&&(JA[t]||$A(n)),r=JA[t]),n.visible=r,JA[t]&&(JA[GA[t]]=!0)}return JA[0]}function rj(e,t,n,r){t.setRenderTarget(n);let i=nj(r);t.clear(!0,!0,!0),e.depthCopyPass.render(t),i&&t.render(e.scene,e.camera)}function ij(e){let{scene:t,camera:n}=this,r=t.background;e.getClearColor(YA);let i=e.getClearAlpha(),a=e.autoClearDepth,o=t.matrixWorldAutoUpdate,s=n.matrixWorldAutoUpdate,{shadowMap:c}=e,l=c.autoUpdate,u=c.needsUpdate;qA=0,ZA(t,-1),t.background=null,e.autoClearDepth=!1,e.setClearColor(XA,0),t.matrixWorldAutoUpdate=!1,n.matrixWorldAutoUpdate=!1,c.autoUpdate=!1,c.needsUpdate=!1;let{uniforms:d}=this.depthCopyPass.material;d.depthTexture.value=this.depthTexture,d.reverseDepthBuffer.value=this.configuration.depthBufferType===UA;try{rj(this,e,this.transparencyRenderTargetDWFalse,ej),rj(this,e,this.transparencyRenderTargetDWTrue,tj)}finally{for(let e=0;e<qA;e++){let t=WA[e];t&&(t.visible=KA[e]),WA[e]=null}qA=0,c.autoUpdate=l,c.needsUpdate=u,n.matrixWorldAutoUpdate=s,t.matrixWorldAutoUpdate=o,e.setClearColor(YA,i),t.background=r,e.autoClearDepth=a}}function aj(e){e.renderTransparency=ij}var oj=rt({part:ny.Grading});function sj(e){let t=W(),n=e.join(` `);(0,Q.useEffect)(()=>{let e=n.split(` `).filter(Boolean).map(e=>t.spawn(oj({part:e})));return()=>e.forEach(e=>e.destroy())},[t,n])}function cj(){let e=iy(oj).map(e=>e.get(oj)?.part).sort().join(` `);return(0,Q.useMemo)(()=>new Set(e.split(` `).filter(Boolean)),[e])}var lj={LINEAR:0,REINHARD:1,REINHARD2:2,REINHARD2_ADAPTIVE:3,UNCHARTED2:4,OPTIMIZED_CINEON:5,CINEON:5,ACES_FILMIC:6,AGX:7,NEUTRAL:8},uj=Xs(async()=>{let{Bloom:e,EffectComposer:t,EffectComposerContext:n,groupPasses:r,N8AO:i,ToneMapping:a,Vignette:o,wrapEffect:s}=await Rp(async()=>{let{Bloom:e,EffectComposer:t,EffectComposerContext:n,groupPasses:r,N8AO:i,ToneMapping:a,Vignette:o,wrapEffect:s}=await import(`../chunks/BvrPFs0h.js`);return{Bloom:e,EffectComposer:t,EffectComposerContext:n,groupPasses:r,N8AO:i,ToneMapping:a,Vignette:o,wrapEffect:s}},__vite__mapDeps([67,68,1,2,3,4,5,6,7,8,9,69,70]),import.meta.url),{ContrastEffect:c,Effect:l,Pass:u,SaturationEffect:d,TintEffect:f}=await Rp(async()=>{let{ContrastEffect:e,Effect:t,Pass:n,SaturationEffect:r,TintEffect:i}=await import(`../chunks/BzuN4nW7.js`);return{ContrastEffect:e,Effect:t,Pass:n,SaturationEffect:r,TintEffect:i}},__vite__mapDeps([71,3,70]),import.meta.url);return{Bloom:e,BrightnessContrast:s(c),Effect:l,EffectComposer:t,EffectComposerContext:n,groupPasses:r,HueSaturation:s(d),N8AO:i,Pass:u,Tint:s(f),ToneMapping:a,Vignette:o}},`The post-processing libraries are read before they load`);function dj({children:e,toneMapping:t=lj.ACES_FILMIC,multisampling:n,ref:r,fromLook:i=!1}){try{let a=W(),o=Bv().multisampling,s=Gv(),c=Eg(eh.PostProcessing),[l,u]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{if(s)return;let e=a.spawn(qh({fromLook:i}));return u(e),()=>{e.destroy(),u(null)}},[a,s,i]);let d=Jy({id:l&&String(l.id()),through:dj,kind:yh.Entity,entityId:l?Fc(a,l):void 0});return s||!l||!c?null:(0,Z.jsx)(TC,{value:l,children:(0,Z.jsx)(rb,{value:d,children:(0,Z.jsx)(Q.Suspense,{fallback:(0,Z.jsx)(bS,{name:`the post-processing stack`}),children:(0,Z.jsx)(pj,{ref:r,multisampling:n??o,toneMapping:t,children:e})})})})}catch(e){throw B(`PostProcessing`,e)}}var fj=(0,Q.createContext)(!1);function pj({children:e,toneMapping:t,multisampling:n,ref:r}){try{let i=(0,Q.use)(uj.load());return(0,Z.jsxs)(i.EffectComposer,{ref:r,multisampling:n,children:[(0,Z.jsx)(vj,{}),(0,Z.jsx)(fj,{value:t!==!1,children:(0,Z.jsx)(mj,{children:e})}),t===!1?null:(0,Z.jsx)(i.ToneMapping,{mode:t})]})}catch(e){throw B(`LoadedComposer`,e)}}function mj({children:e}){try{let t=(0,Q.use)(uj.load()),n=(0,Q.use)(t.EffectComposerContext),r=W(),[,i]=(0,Q.useState)(0),a=(0,Q.useMemo)(()=>({...n,requestRebuild:()=>{n.requestRebuild(),i(e=>e+1)}}),[n]),[o]=(0,Q.useState)(()=>({})),s=(0,Q.useRef)(null),c=Ve(s),l=(0,Q.useRef)(new WeakSet);return(0,Q.useLayoutEffect)(()=>{for(let{object:e}of c.current?.parent?.children??[]){if(e===o||e instanceof t.Effect||e instanceof t.Pass||l.current.has(e))continue;let n=`PostProcessing was handed a ${e.constructor?.name??typeof e}, which is not an Effect or a Pass of the "postprocessing" library the engine draws with, so the stack draws without it. Build it from "postprocessing" at the version @spawnite/engine names as its peer, and mount it as <primitive object={effect} />: a class from a second copy of the library, such as another version in the game's dependencies, is one the stack cannot use.`;if(r.has(Bc))throw R(Error(n),`SP0011`,void 0);l.current.add(e),console.error(n)}}),(0,Z.jsxs)(t.EffectComposerContext,{value:a,children:[e,(0,Z.jsx)(`primitive`,{ref:s,object:o})]})}catch(e){throw B(`CheckedChildren`,e)}}var hj=new WeakMap,gj=new _;function _j(e){return hj.get(e)}function vj(){try{let{composer:e,camera:t}=(0,Q.use)((0,Q.use)(uj.load()).EffectComposerContext),n=L(e=>e.viewport.dpr);return(0,Q.useLayoutEffect)(()=>{let{outputBuffer:t}=e;t.samples!==0&&(t.samples=0,t.dispose())},[e]),(0,Q.useLayoutEffect)(()=>{let{width:t,height:n}=e.getRenderer().getSize(gj);e.setSize(t,n)},[e,n]),(0,Q.useLayoutEffect)(()=>{let n=e.getRenderer(),r={composer:e,camera:t};return hj.set(n,r),()=>{hj.get(n)===r&&hj.delete(n)}},[e,t]),null}catch(e){throw B(`StackRegistration`,e)}}function yj(e,t){WC(e,t);let{requestRebuild:n}=(0,Q.use)((0,Q.use)(uj.load()).EffectComposerContext);return(0,Q.useLayoutEffect)(()=>n()),(0,Q.useLayoutEffect)(()=>n,[n]),G(NC(),e.trait)??t}function bj(e){try{return sj([ny.Bloom]),Nv(e=>e.bloom)?(0,Z.jsx)(xj,{...e}):null}catch(e){throw B(`Bloom`,e)}}var xj=function({intensity:e=.6,threshold:t=.85,radius:n=.7}){let r=(0,Q.use)(uj.load()),i=(0,Q.useMemo)(()=>({intensity:e,threshold:t,radius:n}),[e,t,n]),a=yj(ph,i),o=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{o.current&&(o.current.luminanceMaterial.threshold=a.threshold,o.current.mipmapBlurPass.radius=a.radius)},[a.threshold,a.radius]),(0,Z.jsx)(r.Bloom,{ref:o,mipmapBlur:!0,intensity:a.intensity})};function Sj(e){try{return sj([ny.Occlusion]),Nv(e=>e.occlusion)?(0,Z.jsx)(Cj,{...e}):null}catch(e){throw B(`AmbientOcclusion`,e)}}var Cj=function({radius:e=2,intensity:t=2,quality:n,halfResolution:r}){let i=(0,Q.use)(uj.load()),a=Bv(),o=(0,Q.use)(fj),s=n??a.occlusionQuality,c=r??a.halfResolution,l=(0,Q.useMemo)(()=>({radius:e,intensity:t}),[e,t]),u=yj(Nh,l),d=(0,Q.useRef)(null);return(0,Q.useLayoutEffect)(()=>{d.current?.setQualityMode(Cp(s))},[s,c,u.radius,u.intensity]),(0,Q.useLayoutEffect)(()=>{d.current&&(aj(d.current),Lk(d.current),o?i.groupPasses.delete(d.current):i.groupPasses.add(d.current))}),(0,Z.jsx)(i.N8AO,{ref:d,aoRadius:u.radius,intensity:u.intensity,quality:s,halfRes:c})};function wj({offset:e=.3,darkness:t=.5}){try{let n=(0,Q.use)(uj.load()),r=(0,Q.useMemo)(()=>({offset:e,darkness:t}),[e,t]),i=yj(ng,r);return(0,Z.jsx)(n.Vignette,{offset:i.offset,darkness:i.darkness})}catch(e){throw B(`Vignette`,e)}}var Tj=Math.floor(oc/El);function Ej(e){let t=Math.min(e,ix()??Tj);return{steps:t,frameSeconds:t*El,leftoverSeconds:0}}var Dj={steps:0,frameSeconds:0,leftoverSeconds:0},Oj=new _,kj=[];function Aj(e,t){return jj??=Mj(e,t).finally(()=>{jj=void 0}),jj}var jj;function Mj(e,t){let{info:n}=e().gl,r=n.autoReset;n.autoReset=!1;let i=new Float64Array(t),a=0,o=NaN,s={...n.render};return new Promise(c=>{let l=Ye(()=>{let d=performance.now();if(Number.isNaN(o)||(i[a++]=d-o),o=d,a<t){n.reset();let t=e();t.internal.frames<2&&t.invalidate(2);return}l(),u(),n.autoReset=r;let{triangles:f,points:p,lines:m}=s,h=Lm(s),{geometries:g,textures:_}=n.memory;c({render:{calls:h,triangles:f,points:p,lines:m},memory:{geometries:g,textures:_},frame:Wo(`frame`,i),frames:t})}),u=qe(()=>{s={...n.render}});e().invalidate()})}var Nj=1;function Pj({room:e}){try{let t=W(),n=(0,Q.use)(Yv)?.scenes,r=(0,Q.useRef)(!1),i=(0,Q.useRef)(0),a=(0,Q.useRef)(void 0),{showBoundary:o}=pD();(0,Q.useEffect)(()=>(rg.setState({running:!0}),Gj),[]);let s=(0,Q.useRef)({}),c=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{if(!e)return;let n=Ib();Rh&&dm();let i=0,a=(Rh&&xm.openRoom?xm.openRoom:FA)({...e,onStatus:()=>{c.current===o&&Hj(o)},...e.seat!==void 0&&{takeSeat:qw}},n.clock);a.backlog.holds=e=>t.get(Kt)?.get(e)?.isAlive()===!0;let o={connection:a,session:n,connectionText:e.connectionText,countedSeconds:0,totalledCorrections:0,countedMessages:0,countedSteps:0,countedStepMilliseconds:0,countedCorrectionMilliseconds:0};c.current=o,Xm.setState({status:H.Connecting,notice:zg(a.notice,e.connectionText),sendEdit:a.sendEdit,leave:a.leave,move:a.move,sendMessage:e=>a.sendMessage({...e,type:pv.Message}),sendShot:e=>{if(n.clock.pongs===0)return null;Dm(wm.Shot);let r=i++,o=Yb(n,performance.now());return a.sendShot({...e,type:pv.Shot,step:o,id:r}),Rh&&sm(t,l().camera,{id:r,step:o,weapon:e.weapon,origin:e.origin,direction:e.direction}),r},readViewStep:()=>n.clock.pongs===0?null:Yb(n,performance.now())});let s=()=>{if(document.visibilityState!==`hidden`||r.current)return;ox(a.backlog);let e=n.character?.get(ac);n.character&&e&&e.corners.length>0&&n.character.set(ac,{corners:[]}),Mb(t,n,e=>a.sendMoves([e])),Bj(o)};document.addEventListener(`visibilitychange`,s);let u=Rb(t,n,a.sendWalk),d=Rh?LA(window.location.search):void 0;return d!==void 0&&(o.pageBot=zA({module:d,load:e=>Rp(()=>import(e),[],import.meta.url),world:t,readCharacter:()=>n.character,session:n,input:{set:Ph},sendMessage:e=>Xm.getState().sendMessage(e)})),()=>{o.pageBot?.stop(),u(),document.removeEventListener(`visibilitychange`,s),a.close(),c.current=null}},[e,t]);let l=L(e=>e.get);(0,Q.useEffect)(()=>{if(Rh)return xm.attachLoop?.({world:t,readThree:l,readRoom:()=>c.current,leftover:i}),()=>xm.attachLoop?.(null)},[t,l]),(0,Q.useEffect)(()=>Wh({world:t,readThree:l}),[t,l]),(0,Q.useEffect)(()=>Hk(()=>{let{gl:e}=l();return Vk(e,_j(e)?.composer)}),[l]),(0,Q.useEffect)(()=>hb(l(),t=>{if(!e&&Xh(Uh.getState()))return 0;let{paused:n,pendingFrames:r,speed:i}=kh.getState();return n?Ej(r).frameSeconds:t*i}),[l,e]),(0,Q.useEffect)(()=>{let t=`always`,n=()=>{let e=l();e.frameloop===`demand`&&e.invalidate()},r=e=>{let n=l();e!==(n.frameloop===`demand`)&&(e&&(t=n.frameloop),bb(n,e?`demand`:t),n.invalidate())},i,a=({paused:t,editing:a,pendingFrames:o},s)=>{let c=t&&!a&&!e;r(c),c&&i===void 0&&(i=setInterval(n,1e3)),c||(clearInterval(i),i=void 0),(!s||o>=s.pendingFrames)&&n()};a(kh.getState());let o=kh.subscribe(a),s=B_.subscribe(n);return()=>{o(),s(),clearInterval(i),r(!1)}},[l,e]);let u=()=>{let{gl:e,scene:t,camera:n}=l();return{renderer:e,scene:t,camera:n,stack:_j(e)}},d=e=>(l().invalidate(),e);(0,Q.useEffect)(()=>zh({world:t,input:s.current,scenes:n},{capture:e=>d(tO(e,u())),captureInstance:(e,t)=>d(nO(e,t,u())),captureView:(e,t)=>{let{gl:n,scene:r,size:i}=l();return d(aO(e,{renderer:n,scene:r,...i,stack:_j(n),overlays:t?.overlays}))},captureScreen:e=>d(iO({...u(),overlays:e?.overlays})),project:e=>{let{camera:t,size:n}=l();return AD(e,{camera:t,...n})},projectInstance:(e,t)=>{let{camera:n,size:r}=l();return jD(e,t,{camera:n,...r})},readBounds:()=>pO(l().scene),readEntityBounds:e=>{let t=e.get(Xf)?.object,n=t&&pO(t);return n&&!n.isEmpty()?n:void 0},readCamera:()=>l().camera,readStats:e=>Aj(l,e),readThree:l,measureSeen:e=>{let{gl:t,scene:n,camera:r}=l();return d(VD(e,{renderer:t,scene:n,camera:r}))}}),[t,n,l]);let f=kh(e=>e.frameTiming),p=q(e=>e.performanceStats===Sp.Detailed),m=f||p;return(0,Q.useEffect)(()=>{if(!m)return;let e=yg(l().gl),t=Ye(Wm),n=qe(Om);return()=>{t(),n(),e()}},[m,l]),gb(z(`Frameloop`,(e,n)=>{if(r.current)return;let u=Oh()||Ys(t);u!==U.getState().loading&&U.setState({loading:u});let d=c.current,f=Xh(Uh.getState());if(cu(t),(f||dh(t)||Ys(t))&&!d){Rh&&xm.beginFrame?.(n,0),st(t),ms(t,{tick:Nu(t)+i.current/El,wallMilliseconds:0,rate:0});return}let p=kh.getState(),{steps:m,frameSeconds:h,leftoverSeconds:g}=p.paused?p.pendingFrames>0?Ej(p.pendingFrames):Dj:pu(i.current,n*p.speed);Rh&&xm.beginFrame?.(n,h),p.paused&&m>0&&kh.setState({pendingFrames:p.pendingFrames-m}),i.current=g;try{let e=s.current,r=p.freeCamera||p.mapCamera,i=f||r,o=Cn(t);og(o,e,i),Fj(t,o,e);let c=HA(),u=a.current;c>0&&u&&!t.has(Kt)&&ld(t)===u&&!er(ys(t),u,c)&&Dc(t,`useWallet().spend took ${c} coins the wallet no longer holds, so the wallet kept its coins: a system spent them first. Spend in a system with spendCoins(step, character, amount), which answers false before anything is handed over.`),d&&(Vj(t,d),d.session.character&&ED(d.session.character,d.connection.sendItem),d.session.snapshotSeconds+=n),hu(t,l().camera);let _=d?performance.now():0,v=xm.readRoomFrame?.(),y=v?.now??performance.now(),b=d&&!p.paused?Bb(d.session,v?.seconds??n,y):null;jm(Vm.Other);let x=t=>{mh(o,e,t),i&&e.changes&&(e.changes.length=0)},S=n=>{x(n.session.tick);let r=jb(t,n.session,e);Bj(n),r&&kj.push(r)},C=m;if(d&&b){C=b.after,Lb(d.session,b.skipped);for(let e=0;e<b.after;e++)S(d)}else for(let n=0;n<m;n++){if(!d){x(Nu(t)),yc(t,{deltaSeconds:El,input:e});continue}S(d)}C>0&&Fm(f&&!r),d&&Db(kj)&&d.connection.sendMoves(kj),kj.length=0,d?.session.pace&&!b&&cx(d.session.pace,d.session.tick),jm(Vm.Step),d&&(d.countedSteps+=C,d.countedStepMilliseconds+=performance.now()-_,Uj(t,d,n));let w=d?.session.pace;ms(t,{tick:w?.tick??Nu(t)+g/.016666666666666666,wallMilliseconds:v?performance.now():y,rate:p.paused?0:w&&d?d.session.clock.rate*w.pace:p.speed}),a.current=Ij(t),zj(t),C>0&&(Wj(C),bh(rg.getState())),jm(Vm.Other),If(t,h),jm(Vm.PoseAndAnimation);let T=d?.session.pace;$r(t,p.paused?1:T?T.tick-Math.floor(T.tick):g/El),Vb(t,{input:e,frameSeconds:h}),d&&ll(t,Pb(d.session)),jm(Vm.TransformsAndCamera),sg(t),jm(Vm.Other),Pk(t,h),jm(Vm.PoseAndAnimation),st(t),zp(t,h),em(t,{deltaSeconds:h,scale:By(q.getState())}),jm(Vm.TransformsAndCamera),lh(),Rh&&xm.endFrame?.()}catch(e){r.current=!0,rg.setState({running:!1}),tp(e,{boundary:ip.Frame,frame:`Frameloop`,tick:Nu(t)}),o(e)}})),null}catch(e){throw B(`Frameloop`,e)}}function Fj(e,t,n){if(!t.places.has(wc.heading.name))return;let r=fc(t,n,wc.move);Oj.set(r.x,r.y);let i=$g(e);Lc(t,n,wc.heading,Wp(e,Oj)),Lc(t,n,wc.strafe,i),Lc(t,n,wc.pitch,i?c_(e):0)}function Ij(e){let t=ld(e);if(!t)return;let n=t.get(Lt)?.coins??0;return n!==VA.getState().coins&&VA.setState({coins:n}),t}var Lj=[],Rj={};function zj(e){let t=Ol(e);if(!t)return;let n=t.get(hn)??Lj,r=t.get(ka)??Rj,i=uw.getState();(n!==i.slots||r!==i.equipment)&&uw.setState({slots:n,equipment:r})}function Bj({session:e,connection:t}){for(let n of e.sentPresses.splice(0))t.sendPress(n)}function Vj(e,t){let{connection:n,session:r}=t,{backlog:i}=n,a=document.visibilityState!==`hidden`,o=a&&(i.welcome!==null||i.delta!==null),s=a&&!zb(i);if(s){let n=r.corrections,a=performance.now();Fb(e,i,r),r.corrections>n&&(t.countedCorrectionMilliseconds+=performance.now()-a);for(let e of i.refusals)Xm.setState({refusedShot:e}),Rh&&Jp(e.shot,e.rule,e.reason);t.countedMessages+=+!!i.welcome+(i.delta?.sends??0),sx(i)}if(o&&t.pageBot?.play(),Hj(t),!s)return;let c=Ab(e);c!==Xm.getState().players&&Xm.setState({players:c})}function Hj({connection:e,session:t,connectionText:n}){let{status:r,refusal:i,full:a,buildMismatch:o,lastDrop:s}=e,c=r===H.Joined&&t.edits,l=Xm.getState(),u=zg(e.notice,n,i?.code===4013?i.reason:void 0);(u?.kind!==l.notice?.kind||u?.text!==l.notice?.text||r!==l.status||t.characterId!==l.characterId||c!==l.edits||i!==l.refusal||a!==l.full||o!==l.buildMismatch||s!==l.lastDrop)&&Xm.setState({status:r,characterId:t.characterId,edits:c,refusal:i,full:a,buildMismatch:o,lastDrop:s,notice:u})}function Uj(e,t,n){let{session:r}=t;if(r.corrections>t.totalledCorrections&&(Xm.setState({correctionsTotal:Xm.getState().correctionsTotal+r.corrections-t.totalledCorrections}),t.totalledCorrections=r.corrections),t.totalledCorrections=Math.min(t.totalledCorrections,r.corrections),t.countedSeconds+=n,t.countedSeconds<Nj)return;let i=t.countedSeconds,{clock:a}=r;Xm.setState({snapshotsPerSecond:t.countedMessages/i,bytesPerSecond:t.connection.receivedBytes/i,sentBytesPerSecond:t.connection.sentBytes/i,leadTicks:r.pace&&a.pongs>0?r.pace.tick-Tm(a,performance.now()):null,stepMilliseconds:t.countedSteps>0?t.countedStepMilliseconds/t.countedSteps:0,corrections:r.corrections,correctionMetres:r.correctionMetres,correctionFields:r.correctionFields.splice(0),correctionWarning:Nb(e,r),replayedSteps:r.replayedSteps,takenSweeps:r.takenSweeps,tiedSweeps:r.tiedSweeps,correctionMilliseconds:t.countedCorrectionMilliseconds,rerunMilliseconds:r.rerunMilliseconds,predictionChecks:e.get(zu)?.checks?.readFindings()??[],roundTripMilliseconds:a.roundTripMilliseconds,jitterMilliseconds:a.jitterMilliseconds,roomStepMilliseconds:a.roomStepMilliseconds,interpolationMilliseconds:a.interpolationSeconds*1e3,sendRate:r.sendRate,refusedShotOrigins:t.connection.refusedShotOrigins}),r.corrections=0,t.totalledCorrections=0,r.correctionMetres=0,r.correctionChecks=0,r.replayedSteps=0,r.rerunMilliseconds=0,r.takenSweeps=0,r.tiedSweeps=0,t.connection.receivedBytes=0,t.connection.sentBytes=0,t.countedSeconds=0,t.countedMessages=0,t.countedSteps=0,t.countedStepMilliseconds=0,t.countedCorrectionMilliseconds=0}function Wj(e){let t=rg.getState().steps+e;rg.setState({steps:t,seconds:t*El})}function Gj(){HA(),Hx(new _),VA.setState(VA.getInitialState(),!0),uw.setState(uw.getInitialState(),!0),rg.setState(rg.getInitialState(),!0),U.setState({loading:!0}),Xm.setState(Xm.getInitialState(),!0),hh.setState(hh.getInitialState(),!0),kh.getState().setEditing(!1);let{tree:e,frameTiming:t}=kh.getState();kh.setState({...kh.getInitialState(),tree:e,frameTiming:t},!0)}var Kj=`local`;function qj({world:e}){try{return(0,Q.useEffect)(()=>{let{id:t,name:n}=Dw.getState().player,r=Tu(e,{account:t??Kj,name:n??``,seat:ws(e),role:la.Player,avatar:``});return Dl(e,r,{returning:!1,rethrow:!0}),()=>{Ls(e,r,fs.RoomClosing,e=>{throw e.error})}},[e]),null}catch(e){throw B(`LocalPlayer`,e)}}var Jj=[fp.Levels,fp.Loot,fp.Random];function Yj(e,t){if(!e||!t)return[];let n=[];e.scope===vn.World&&n.push(`The save has scope "world", and this game has rooms: a room's world is shared, so one player's save must not restore it. Read and restore the player's state from her character.`);for(let t of e.include??[])Jj.includes(t)&&n.push(`The save includes "${t}", and this game has rooms: ${t===fp.Random?`a room seeds its own random stream`:`a room's ${t} are the room's, not one player's`}. Drop it from include.`);return n}var Xj=`spawnite:start-save`,Zj=new Map,Qj=null,$j=new Map,eM=0,tM=new Map;function nM(e,t){let n=`stores.${e}`,r=`the store "${e}"`;return{ok:!1,key:n,owner:r,reason:t,message:`The save did not load: ${r}'s key ${n} failed, ${t}. Nothing was restored, and the save must not be written over.`}}function rM(e){if(typeof e!=`object`||!e)return!1;let{version:t}=e;return Number.isInteger(t)&&t>=0}function iM(e,t){if(!rM(t))return nM(e.name,`its entry is no { version, state } with a whole version from 0`);let{version:n=0,migrate:r}=e.api.persist.getOptions();if(t.version>n)return nM(e.name,`version ${t.version} wrote it, and this game reads up to version ${n}`);if(t.version===n)return{state:t.state};if(!r)return nM(e.name,`it is at version ${t.version}, and the store gives no migrate to version ${n}`);let i=t=>nM(e.name,`its migrate threw: ${t instanceof Error?t.message:String(t)}`);try{let e=r(t.state,t.version);return e instanceof Promise?e.then(e=>({state:e}),i):{state:e}}catch(e){return i(e)}}function aM(e){let t=new Map,n=()=>[...Zj.values()].find(({name:n})=>e!==void 0&&Object.hasOwn(e,n)&&!t.has(n)),r=()=>{for(let i=n();i;i=n()){let n=i,a=iM(n,e?.[n.name]),o=e=>{if(`ok`in e)return e;t.set(n.name,e.state)};if(a instanceof Promise)return a.then(e=>o(e)??r());let s=o(a);if(s)return s}return t};return r()}function oM(e){return{getItem:()=>{if(!Qj||!$j.has(e))return null;let t=Zj.get(e);return{state:$j.get(e),version:t?.api.persist.getOptions().version??0}},setItem:()=>void 0,removeItem:()=>void 0}}function sM(e){if(e.loaded=!1,tM.delete(e.name),e.api.persist.rehydrate(),e.loaded=e.api.persist.hasHydrated(),e.loaded)return null;let t=tM.get(e.name);return nM(e.name,tM.has(e.name)?`its merge threw: ${t instanceof Error?t.message:String(t)}`:`zustand did not load it`)}async function cM(e){let t=Qj,n=eM;if(!t)return;if(t.entries&&Object.hasOwn(t.entries,e.name)){let r=await iM(e,t.entries[e.name]);if(eM!==n||!Qj)return;if(`ok`in r){t.refuse(r);return}$j.set(e.name,r.state)}let r=sM(e);r&&t.refuse(r)}function lM(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>typeof e!=`function`))}function uM(e,t){let n=Zj.get(e);if(n&&!yl(Error().stack))throw R(Error(`Two persisted stores are named "${e}": each name is one entry in the player's save. Give one of them another name.`),`SP0351`,void 0);let r={name:e,api:t,loaded:n?.loaded??!1};return Zj.set(e,r),!n&&Qj&&queueMicrotask(()=>void cM(r)),n&&lM(n.api.getState())}var dM=((e,t)=>(n,r,i)=>{let a=t.merge??((e,t)=>({...t,...e})),o=V_(e,{...t,merge:(e,n)=>{if(e===void 0)return n;try{return a(e,n)}catch(e){throw tM.set(t.name,e),e}},storage:oM(t.name),skipHydration:!0})(n,r,i),s=uM(t.name,i);return s?{...o,...s}:o});function fM(e){for(let t of Zj.values()){if(!e.has(t.name))continue;let{merge:n}=t.api.persist.getOptions();try{n?.(e.get(t.name),t.api.getState())}catch(e){return tM.delete(t.name),nM(t.name,`its merge threw: ${e instanceof Error?e.message:String(e)}`)}}return null}function pM(e){if(Qj)return null;Qj=e,$j=new Map(e.states);let t=++eM,n=null;for(let t of Zj.values()){if(!e.states.has(t.name)&&e.entries!==void 0&&Object.hasOwn(e.entries,t.name)){t.loaded=!1,cM(t);continue}let r=sM(t);n??=r}return{refused:n,unbind:({keep:e=!0}={})=>{if(eM===t&&Qj!==null){Qj=null;for(let t of Zj.values())t.loaded=!1,e||t.api.setState(t.api.getInitialState(),!0)}}}}function mM(){let e=new Map;if(!Qj)return{};for(let t of Zj.values()){if(!t.loaded)continue;let{version:n=0,partialize:r=e=>e}=t.api.persist.getOptions();e.set(t.name,{version:n,state:r(t.api.getState())})}return Object.fromEntries(e)}function hM(){return[...Zj.keys()]}function gM(e){if(e!==`always`&&e!==`optional`)return;let t=hM();if(t.length!==0)return`${t.map(e=>`"${e}"`).join(`, `)} ${t.length===1?`is a persisted store`:`are persisted stores`}, but this game plays in rooms, and a room is the only writer of a room game's save. Save the value from the server half, with a plugin's save, and make the store without persist.`}var _M=function(e){return e.Platform=`platform`,e.Browser=`browser`,e.Nowhere=`nowhere`,e}({}),vM={destination:`nowhere`,load:()=>({record:null,next:1}),hand:()=>void 0};function yM(e){return`${e}-record`}function bM(e,t,n){let r=yM(t),i=`${r}-cleared`,a,o=()=>{let t=n?.takeStart();if(t)return t;let a=e();return n&&(a.getItem(i)??``)!==n.cleared?null:a.getItem(r)};return{destination:`browser`,load:()=>({record:JSON.parse(o()??`null`),next:1}),hand:({number:t,cloud:o,text:s})=>{try{let t=e();t.setItem(r,s),n&&t.setItem(i,n.cleared)}catch{o&&a?.failed(t);return}o&&a?.stored(t)},connect:e=>(a=e,()=>{a===e&&(a=void 0)})}}var xM=null;function SM(){return xM!==null}var CM=null;function wM(e){e?.scheduler.stop(),e?.disconnect?.(),CM===e&&(CM=null)}function TM(e,t){if(Object.keys(t).length===0)return e;let n=Object.fromEntries([...Object.entries(e.stores??{}),...Object.entries(t)]);return{...e,stores:n}}function EM(e){return{ok:!1,key:``,owner:`the record`,reason:e,message:`The save did not load: the record failed, ${e}. Nothing was restored, and the save must not be written over.`}}function DM(e){return{ok:!1,key:``,owner:`the record`,reason:e.reason,message:`The save is past its size limit: ${e.reason}. The game stops, and opens again once a version of the game trims the save.`,pastLimit:!0}}function OM(e,t){if(!e?.ok)return null;let n=JSON.stringify(e.record);return l_(new TextEncoder().encode(n).byteLength)?t(n).then(e=>{let t=N_(e);return t&&DM(t)}):null}function kM(e,t){return!e.refused&&(e.refused=t,e.scheduler.stop(),e.host.loadFailed?.(t),!0)}var AM=e=>e instanceof Error?e.message:String(e);function jM({name:e,session:t,host:n,report:r,onRefused:i,page:a,clock:o,pack:s}){if(xM)throw R(Error(`A page save is already open: one Game on the page saves.`),`SP0350`,void 0);let c=Xe()(()=>({status:S_.Unsaved,destination:`nowhere`,problem:null,size:null})),l=!1,u=!1,d,f,p=null,m=()=>{u&&a?.visibilityState===`hidden`&&CM?.scheduler.flush()},h=()=>{if(t.owners.length===0&&hM().length===0)return null;let e=t.read();return e?.ok?{ok:!0,record:TM(e.record,mM())}:e},g={ok:!0,record:{},states:new Map},_=(e,t)=>(e.loadFailed?.(t),t),v=(e,t)=>n=>(f?.({keep:!1}),f=void 0,_(e,EM(`${t}: ${AM(n)}`))),y=e=>{CM&&kM(CM,e)&&i?.(e)},b=t=>{if(l)return g;if(c.setState({destination:t.destination}),t.destination!==`nowhere`&&CM){if(CM.name!==e)wM(CM);else if(CM.refused)return CM.refused;else{let e=CM.read();return x(t,{record:e?.ok?e.record:null,next:1},!0)}}let n=v(t,`it could not be read`),r;try{r=t.load()}catch(e){return n(e)}return r instanceof Promise?r.then(e=>x(t,e,!1),n):x(t,r,!1)},x=(e,t,n)=>{let r=v(e,`it could not be restored`);try{let i=S(e,t,n);return i instanceof Promise?i.catch(r):i}catch(e){return r(e)}},S=(e,t,n)=>{let{record:r}=t;if(!bt(r)||r.stores===void 0)return C(e,t,new Map,n);let i=bt(r.stores)?aM(r.stores):EM(`its stores is no record of keys`),a=r=>r instanceof Map?C(e,t,r,n):_(e,r);return i instanceof Promise?i.then(a):a(i)},C=(e,n,r,i)=>{let{record:a}=n;if(l)return g;let o=fM(r)??t.load(a);if(!o.ok)return _(e,o);let c=pM({states:r,entries:bt(a)&&bt(a.stores)?a.stores:void 0,refuse:y});if(c?.refused)return c.unbind({keep:!1}),_(e,c.refused);if(f=c?.unbind,p=bt(a)?a:null,e.destination===`nowhere`)return o;let u=i?null:OM(h(),s??I_);return u instanceof Promise?u.then(t=>w(e,n,o,i,t)):w(e,n,o,i,u)},w=(t,n,i,p,v)=>{let{record:b}=n;return l?(f?.({keep:!1}),f=void 0,g):v?(f?.({keep:!1}),f=void 0,_(t,v)):(p&&CM?CM.disconnect?.():CM={name:e,scheduler:__({read:()=>CM?.read()??null,hand:e=>CM?.host.hand(e),firstNumber:n.next,stored:b!==null,onChange:e=>CM?.onChange(e),onPastLimit:e=>CM?.refuse(DM(e)),report:(e,t)=>CM?.report(e,t),clock:o,pack:s}),host:t,disconnect:void 0,read:h,onChange:()=>void 0,report:r,refused:null,refuse:()=>void 0},CM.host=t,CM.refuse=y,CM.read=h,CM.report=r,CM.onChange=e=>c.setState(e),CM.disconnect=t.connect?.(CM.scheduler),u=!0,d=t,a?.addEventListener(`visibilitychange`,m),CM.scheduler.start(),c.setState(CM.scheduler.state),i)},T={status:c,loaded:n instanceof Promise?n.then(b):b(n),save:()=>{u&&CM?.scheduler.save()},refuse:e=>{u&&d&&!l&&y(e)},close:()=>{if(l)return;l=!0,a?.removeEventListener(`visibilitychange`,m),xM===T&&(xM=null);let e=u?CM:null;if(!e){f?.();return}let t=()=>e.scheduler.text===null?p:JSON.parse(e.scheduler.text),n;try{let e=h();n=e===null?null:e.ok?JSON.parse(JSON.stringify(e.record)):t()}catch(e){r(`error`,`The save could not read the record as the game closed: ${AM(e)}. The record read before it is kept.`),n=t()}finally{f?.()}let i=n;e.read=()=>i===null?null:{ok:!0,record:i},e.onChange=()=>void 0,e.refuse=t=>void kM(e,t),e.scheduler.pause(),e.scheduler.saveNow().catch(()=>void 0)}};return xM=T,T}function MM(){xM?.save()}var NM=(0,Q.createContext)(null),PM=Xe()(()=>({status:S_.Unsaved,destination:`nowhere`,problem:null,size:null}));function FM(){return vm((0,Q.use)(NM)??PM)}function IM({body:e,next:t}){let n;return{destination:_M.Platform,load:async()=>({record:e===null?null:await d_(e),next:t}),hand:({number:e,body:t,versions:r,cloud:i})=>{!Iw({type:Ap.Save,record:{number:e,body:t,versions:r},cloud:i})&&i&&n?.failed(e)},loadFailed:({key:e,owner:t,reason:n,pastLimit:r})=>void Iw({type:Ap.SaveLoadFailed,key:e,owner:t,reason:n,...r&&{pastLimit:!0}}),connect:e=>{n=e;let t=Fw({stored:t=>e.stored(t),failed:t=>e.failed(t),saveNow:()=>void e.saveNow().catch(()=>null).then(e=>{e||Iw({type:Ap.Save,record:null,cloud:!0})})});return()=>{t(),n===e&&(n=void 0)}}}}var LM=`browser`;function RM(){return{cleared:document.querySelector(`meta[name="spawnite-saves-cleared"]`)?.getAttribute(`content`)??``,takeStart:()=>{try{let e=sessionStorage.getItem(Xj);return sessionStorage.removeItem(Xj),e}catch{return null}}}}function zM({framed:e,appVersion:t,initialized:n,save:r,unanswered:i}){if(!e)return LM;if(t===null)return i?LM:void 0;if(n)return r}function BM(e,t){return t===LM?bM(()=>localStorage,e,Rh?RM():void 0):t===null?vM:IM(t)}function VM(e){let t=zM(Dw.getState());return t===void 0?new Promise(t=>{let n=Dw.subscribe(r=>{let i=zM(r);i!==void 0&&(n(),t(BM(e,i)))})}):BM(e,t)}function HM(){return typeof __GAME_ENGINE_MANIFEST__>`u`?void 0:wp(__GAME_ENGINE_MANIFEST__)}var UM=class extends Error{refused;constructor(e){super(e.message),this.name=`SaveLoadError`,this.refused=e}};function WM(e){let t=HM(),n=[gM(t),...Yj(e,t!==void 0&&t!==`none`)].filter(e=>e!==void 0);if(n.length>0)throw Error(n.join(` `))}var GM=(e,t)=>e===`warn`?console.warn(t):console.error(t),KM=new WeakMap,qM=null,JM={ok:!0,record:{},states:new Map};function YM(e){e.pageSave?.close(),KM.get(e.world)===e&&KM.delete(e.world),qM===e&&(qM=null)}function XM(e,{name:t,room:n}){let r=KM.get(e);if(r)return r;qM&&YM(qM);let i=e.has(Bc),a={world:e,pageSave:null,load:JM,stop:()=>void 0},o=Vg(e);return o&&SM()?(i&&console.warn(`A second <Game> mounted on the page while another saves: "${t}" saves nothing, and its persisted stores stay the first Game's.`),a.load=o.load(null)):o&&(a.pageSave=jM({name:t,session:o,host:n||pg()||Zm()?vM:VM(t),report:i?GM:()=>void 0,onRefused:e=>a.stop(e),page:document}),a.load=a.pageSave.loaded),KM.set(e,a),qM=a,a}var ZM=e=>!(e instanceof Promise)&&e.ok;function QM({name:e,world:t,save:n,room:r,children:i}){try{let{showBoundary:a}=pD(),[o,s]=(0,Q.useState)(()=>XM(t,{name:e,room:r})),[c,l]=(0,Q.useState)(()=>ZM(o.load)),u=(0,Q.useRef)({name:e,save:n,room:r,showBoundary:a});return(0,Q.useLayoutEffect)(()=>{u.current={name:e,save:n,room:r,showBoundary:a}}),(0,Q.useLayoutEffect)(()=>{let e=KM.get(t)??XM(t,u.current);if(qM===e&&(qM=null),t.has(Bc))try{WM(u.current.save)}catch(t){throw YM(e),t}s(e);let n=!0;e.stop=e=>{n&&u.current.showBoundary(new UM(e))};let r=e.pageSave?Bg(t,e.pageSave.refuse):()=>void 0,i=t=>{t.ok?n&&l(!0):e.stop(t)},{load:a}=e;return a instanceof Promise?a.then(i,e=>{n&&u.current.showBoundary(e)}):i(a),()=>{n=!1,r(),YM(e),l(!1)}},[t]),(0,Z.jsxs)(NM,{value:o.pageSave?.status??null,children:[c&&!r&&(0,Z.jsx)(qj,{world:t}),c?i:null]})}catch(e){throw B(`GameSave`,e)}}function $M(){let e=tN();if(!e)throw R(Error(`useLevels found no levels: pass defineLevels(...) to Game's levels`),`SP0009`,`useLevels`);return e}function eN(){let e=tN();if(!e)return null;let{levels:t,current:n}=e;return{number:t.findIndex(e=>e.id===n)+1,count:t.length}}function tN(){let e=W(),{scenes:t}=Rv(`useLevels`),n=ry(Zt)??null,r=G(n,Zt),i=(0,Q.useMemo)(()=>r?Er(e):[],[r,e]),a=(0,Q.useCallback)(n=>mr(e,n)?(t.getState().reload(),!0):!1,[e,t]);return r?{levels:i,current:r.current,next:Ru(e),play:a}:null}var nN=`${dp.Engine}.${fp.Levels}`;function rN(){try{let e=W(),t=Vg(e)?.owners.some(({key:e})=>e===nN)??!1,n=ry(Zt)??null,r=G(n,Zt)?.finished,i=(0,Q.useRef)(r);return(0,Q.useEffect)(()=>{t&&r!==i.current&&(i.current=r,MM())},[t,r]),null}catch(e){throw B(`LevelProgress`,e)}}function iN(e){let{framed:t,appVersion:n,initialized:r,player:i,seat:a}=Dw(),[o,s]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{if(!t||n!==null)return;let e=setTimeout(()=>s(!0),2e3);return()=>clearTimeout(e)},[t,n]);let c=(0,Q.useMemo)(()=>e&&a&&{...e,url:a.room,seat:a.ticket,playerName:i.name??e.playerName},[e,a,i.name]);return r?c??e:t&&(n!==null||!o)?void 0:e}var aN=function(e){return e.Page=`page`,e.Assets=`assets`,e.Room=`room`,e.World=`world`,e.Shaders=`shaders`,e}({}),oN={page:`Loading the game`,assets:`Loading models and textures`,room:`Joining the game`,world:`Building the world`,shaders:`Preparing shaders`},sN={page:400,assets:5400,room:400,world:100,shaders:1900},cN=50,lN=.95,uN=.8;function dN({stages:e,expected:t,pageMilliseconds:n}){let r=e.map(e=>Math.max(cN,e===`page`?n:t[e])),i=r.reduce((e,t)=>e+t,0),a=0;return e.map((e,t)=>{let n=a/i;return a+=r[t],{stage:e,from:n,to:a/i,milliseconds:r[t]}})}function fN({plan:e,passedAt:t,shares:n,now:r}){let i=e.findIndex(({stage:e})=>t[e]===void 0);if(i===-1)return{value:1,stage:null};let{stage:a,from:o,to:s,milliseconds:c}=e[i],l=i===0?0:t[e[i-1].stage],u=n[a],d=u===void 0?pN(Math.max(0,r-(l??r)),c):Math.min(Math.max(u,0),lN);return{value:o+(s-o)*d,stage:a}}function pN(e,t){let n=e/t;if(n<=uN)return n;let r=(e-uN*t)/t;return uN+.1499999999999999*(1-Math.exp(-r))}function mN(){return`spawnite-loading:${globalThis.location?.pathname??`/`}`}function hN(){try{let e=JSON.parse(globalThis.localStorage?.getItem(mN())??`null`);if(typeof e!=`object`||!e)return;let t=Object.values(aN).map(t=>[t,Reflect.get(e,t)]);return t.some(([,e])=>typeof e!=`number`||!Number.isFinite(e))?void 0:Object.fromEntries(t)}catch{return}}function gN(e){try{globalThis.localStorage?.setItem(mN(),JSON.stringify(e))}catch{}}var $={root:`pointer-events-none fixed inset-0 z-[60] overflow-hidden bg-loading-background font-sans text-loading-text antialiased`,foot:`visible absolute inset-x-0 bottom-0 px-[max(1.5rem,6vw)] pb-[max(1.75rem,env(safe-area-inset-bottom))]`,meter:`relative mt-10 pt-9`,percent:`absolute top-0 left-[max(calc(var(--loading-progress)*100%),3ch)] -translate-x-full font-display text-2xl leading-none font-semibold tabular-nums`,track:`h-0.5 w-full bg-loading-track`,fill:`h-full w-[calc(var(--loading-progress)*100%)] bg-loading-bar`,under:`mt-3 flex items-baseline justify-between gap-6 text-sm`,stage:`text-loading-label`,notice:`shrink-0 text-xs text-loading-label`,problem:`mt-8 max-w-[60ch]`,problemTitle:`text-lg font-semibold`,problemDetail:`mt-1 text-sm text-loading-label`,retry:`pointer-events-auto mt-4 inline-block rounded-md border border-loading-text/35 px-4 py-2 text-sm font-medium hover:bg-loading-text/10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-loading-text`,noticeLink:`pointer-events-auto ml-1 font-bold underline underline-offset-2`},_N=`spawnite-loading`,vN=`Loading the game`;[`<div id="${_N}" class="${$.root}" role="progressbar" aria-label="Loading" aria-valuemin="0" aria-valuemax="100" aria-valuetext="${vN}">`,`<div class="${$.foot}">`,`<div data-shell-stall role="status" class="absolute bottom-full ${$.problem}">`,`<p class="${$.problemTitle}">This is taking longer than usual</p>`,`<p class="${$.problemDetail}">Still loading the game.</p>`,`<a href="" class="${$.retry}">Reload</a>`,`</div>`,`<div class="${$.meter}">`,`<span class="${$.percent}" aria-hidden="true"></span>`,`<div class="${$.track}"><div class="${$.fill}"></div></div>`,`</div>`,`<div class="${$.under}">`,`<span class="${$.stage}">${vN}</span>`,`<p class="${$.notice}">Made with<a href="https://spawnite.com" target="_blank" rel="noopener noreferrer" class="${$.noticeLink}">Spawnite</a></p>`,`</div>`,`</div>`,`</div>`].join(``),[`#${_N} { position: fixed; inset: 0; z-index: 60; overflow: hidden; background-color: var(--color-loading-background, oklch(14.5% 0 0)); color: var(--color-loading-text, oklch(97% 0 0)); }`,`@layer base { #${_N} > div { visibility: hidden; } }`,`@property --loading-progress { syntax: "<number>"; inherits: true; initial-value: 0; }`,`@keyframes spawnite-loading-page { to { --loading-progress: 0.2; } }`,`#${_N} { animation: spawnite-loading-page 12s cubic-bezier(0.2, 0.7, 0.3, 1) forwards; }`,`#${_N} [aria-hidden] { counter-reset: loading-percent calc(var(--loading-progress) * 100 - 0.5); }`,`#${_N} [aria-hidden]::after { content: counter(loading-percent) "%"; }`,`@keyframes spawnite-loading-stall { to { visibility: visible; } }`,`#${_N} [data-shell-stall] { visibility: hidden; animation: spawnite-loading-stall 0s 20s forwards; }`].join(`
|
|
364
|
+
`);function yN(){let e=globalThis.document?.getElementById(_N);if(!e)return null;let t=Number.parseFloat(getComputedStyle(e).getPropertyValue(`--loading-progress`));return e.remove(),Number.isFinite(t)?t:0}var bN=function(e){return e.Stall=`stall`,e.Failure=`failure`,e}({}),xN=7;function SN({value:e,label:t,problem:n,retry:r,title:i,line:a,tips:o,art:s}){try{let c=n?.kind===`failure`,l=e===null?null:Math.floor(e*100),u={"--loading-progress":e??0};return(0,Z.jsx)(fy,{features:vy,children:(0,Z.jsxs)(hy.div,{className:$.root,style:u,role:e===null?`alert`:`progressbar`,"aria-label":e===null?void 0:`Loading`,"aria-valuemin":e===null?void 0:0,"aria-valuemax":e===null?void 0:100,"aria-valuenow":l??void 0,"aria-valuetext":e===null?void 0:`${t}, ${l}%`,initial:!1,exit:{opacity:0,transition:{duration:.5,ease:`easeOut`}},children:[s&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(wN,{src:s}),(0,Z.jsx)(`div`,{className:`absolute inset-0 bg-linear-to-t from-loading-background from-20% via-loading-background/60 via-50% to-transparent`})]}),(0,Z.jsxs)(`div`,{className:$.foot,children:[i&&(0,Z.jsx)(`h1`,{className:`font-display text-[clamp(2.75rem,8vw,6rem)] leading-[0.92] font-bold tracking-tight text-balance`,children:i}),a&&(0,Z.jsx)(`p`,{className:`mt-3 max-w-[42ch] text-[clamp(1rem,1.6vw,1.25rem)] text-loading-text/75`,children:a}),n?(0,Z.jsxs)(`div`,{className:$.problem,role:`status`,children:[(0,Z.jsx)(`p`,{className:$.problemTitle,children:n.title}),(0,Z.jsx)(`p`,{className:$.problemDetail,children:n.detail}),(0,Z.jsx)(`button`,{type:`button`,onClick:r??CN,className:$.retry,children:`Reload`})]}):o&&o.length>0&&(0,Z.jsx)(TN,{tips:o}),l!==null&&(0,Z.jsxs)(`div`,{className:$.meter,children:[(0,Z.jsx)(`span`,{className:$.percent,"aria-hidden":!0,children:`${l}%`}),(0,Z.jsx)(`div`,{className:$.track,children:(0,Z.jsx)(`div`,{className:`${$.fill}${c?` opacity-40`:``}`})})]}),(0,Z.jsxs)(`div`,{className:$.under,children:[(0,Z.jsx)(`span`,{className:$.stage,children:t}),(0,Z.jsx)(Ey,{className:$.notice})]})]})]})})}catch(e){throw B(`LoadingScreen`,e)}}function CN(){window.location.reload()}function wN({src:e}){try{let[t,n]=(0,Q.useState)(!1);return(0,Z.jsx)(`img`,{src:e,alt:``,onLoad:()=>n(!0),className:`absolute inset-0 size-full object-cover transition-opacity duration-700 motion-reduce:transition-none ${t?`opacity-100`:`opacity-0`}`})}catch(e){throw B(`Art`,e)}}function TN({tips:e}){try{let[t,n]=(0,Q.useState)(0),r=gy();(0,Q.useEffect)(()=>{if(e.length<2)return;let t=setInterval(()=>n(t=>(t+1)%e.length),xN*1e3);return()=>clearInterval(t)},[e.length]);let i=e[t%e.length];return(0,Z.jsx)(`div`,{className:`mt-8 grid max-w-[60ch] text-sm text-loading-label`,children:(0,Z.jsx)(py,{mode:`popLayout`,initial:!1,children:(0,Z.jsx)(hy.p,{className:`col-start-1 row-start-1`,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:r?0:.6},children:i},t)})})}catch(e){throw B(`Tips`,e)}}function EN({screen:e}){try{let[t,n]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>(U.setState({covered:!t}),()=>U.setState({covered:!1})),[t]),(0,Q.useEffect)(()=>t?void 0:iS(),[t]),(0,Q.useEffect)(()=>()=>U.setState({settled:!1,ready:!1}),[]),(0,Z.jsx)(py,{onExitComplete:()=>Dm(wm.Lift),children:!t&&(0,Z.jsx)(`div`,{"data-loading-cover":!0,className:`contents`,children:(0,Z.jsx)(AN,{screen:e,onReady:()=>n(!0)})},`screen`)})}catch(e){throw B(`LoadingCover`,e)}}var DN=2,ON=Object.values(aN).filter(e=>e!==aN.Room),kN=Object.values(aN);function AN({screen:e,onReady:t}){try{let[n]=(0,Q.useState)(()=>performance.now()),r=W().has(Kt),i=W().has(Bc),[a]=(0,Q.useState)(()=>dN({stages:r?kN:ON,expected:hN()??sN,pageMilliseconds:n})),o=UN(),s=NN(o),c=a.every(({stage:e})=>e===aN.Shaders||s[e]);(0,Q.useEffect)(()=>{U.setState({settled:c})},[c]);let l=IN(c),u=c&&(s[aN.Shaders]||l),d=PN(a,{...s,[aN.Shaders]:u}),[f,p]=(0,Q.useState)(()=>fN({plan:a,passedAt:d,shares:FN(o),now:n}).value),m=(0,Q.useEffectEvent)((e=0)=>{let t=fN({plan:a,passedAt:d,shares:FN(o),now:performance.now()}).value;p(n=>Math.max(n,e,t))});(0,Q.useLayoutEffect)(()=>{let e=yN();e!==null&&m(e)},[]),(0,Q.useEffect)(()=>m(),[d,o]),(0,Q.useEffect)(()=>{let e=requestAnimationFrame(function t(){m(),e=requestAnimationFrame(t)});return()=>cancelAnimationFrame(e)},[]);let h=f>=1;(0,Q.useEffect)(()=>{h&&(HN(a,d),t())},[h,a,d,t]);let g=a.find(e=>d[e.stage]===void 0)?.stage??aN.Shaders,_=oN[g],v=LN(d,o),y=zN(r)??(v?BN(_,i?VN():[]):null);return jN(e)?(0,Z.jsx)(SN,{...e,value:f,label:_,problem:y,retry:MN}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(e,{value:f,stage:g,label:_,problem:y,retry:MN}),(0,Z.jsx)(Ey,{className:`pointer-events-none fixed inset-x-0 bottom-6 z-[60] text-center`})]})}catch(e){throw B(`LoadingSteps`,e)}}function jN(e){return typeof e==`object`&&!(`$$typeof`in e)}function MN(){window.location.reload()}function NN(e){let t=U(e=>e.mountedScene),n=U(e=>e.loading),r=U(e=>e.ready),i=hg(e=>e.runsFrames),a=Jv(),o=iy(wf,ei,sd,tt(Xf)).length+iy(lf,tt(Xf)).length,s=iy(wf,ei,sd).length,c=(G(W(),Ti)?.count??0)>0;return{[aN.Page]:!0,[aN.Assets]:e===DN&&t!==null&&(!n||!i),[aN.Room]:s>0||c||!i,[aN.World]:t!==null&&(o===0||a),[aN.Shaders]:r||!i}}function PN(e,t){let[n,r]=(0,Q.useState)(()=>({[aN.Page]:performance.now()})),i=n;for(let{stage:n}of e)if(i[n]===void 0){if(!t[n])break;i={...i,[n]:performance.now()}}i!==n&&r(i);let a=(0,Q.useRef)(new Set);return(0,Q.useEffect)(()=>{for(let{stage:t}of e){let e=n[t];e===void 0||a.current.has(t)||(a.current.add(t),Dm(wm.Stage,t,e))}},[e,n]),i}function FN(e){let{loaded:t,total:n}=B_.getState();return{[aN.Assets]:(e+t)/(DN+n)}}function IN(e){let[t,n]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>{if(!e)return;let t=setTimeout(()=>{console.warn(`The shader compile timed out after 10 s; the loading screen lifts without it, and the first frames may stall. Cut the materials and lights the first scene draws, or bring the rest in with a later scene.`),n(!0)},1e4);return()=>clearTimeout(t)},[e]),t}function LN(e,t){let[n,r]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>{r(!1);let e=B_.getState().loaded,t=0,n=setInterval(()=>{let n=B_.getState().loaded;t=n===e?t+1:0,e=n,r(t>=20)},1e3);return()=>clearInterval(n)},[e,t]),n}function RN({full:e,buildMismatch:t,refusal:n,notice:r}){return n?.code===4007?n.reason:n?.code===4009?`We couldn't load your progress. Try again in a moment.`:n?.code===4010?`A newer version of the game saved your progress. Join again to play on it.`:t?`The room runs another build of the game (room ${t.room}, this page ${t.page}).`:e?`This game is full: ${e.players} of ${e.maxPlayers} players.`:n?.code===4013?n.reason||(r?.kind===F_.Ended?r.text:t_[F_.Ended]):`Check your connection and try again.`}function zN(e){let t=iy(wf,ei).length,n=rg(e=>e.running),r=Dw(Ow),i=Xm(e=>e.status===H.Closed),a=Xm(e=>e.full),o=Xm(e=>e.buildMismatch),s=Xm(e=>e.refusal),c=Xm(e=>e.notice);return!e||t>0||!n||r||!i?null:{kind:bN.Failure,title:`Couldn't join the game`,detail:RN({full:a,buildMismatch:o,refusal:s,notice:c})}}function BN(e,t){let n=`Still ${e.charAt(0).toLowerCase()}${e.slice(1)}.`;return{kind:bN.Stall,title:`This is taking longer than usual`,detail:t.length===0?n:`${n} Waiting on ${t.join(`, `)}.`}}function VN(){return gh().slice(0,3).map(({name:e})=>e.split(/[?#]/)[0].split(`/`).pop()||e)}function HN(e,t){let n={...hN()??sN},r=0;for(let{stage:i}of e){let e=t[i];if(e===void 0)return;n[i]=e-r,r=e}gN(n)}function UN(){let[e,t]=(0,Q.useState)(0);return(0,Q.useEffect)(()=>{let e=!0,n=()=>{e&&t(e=>e+1)};for(let e of[Nc(),gt()])e.then(n,n);return()=>{e=!1}},[]),e}function WN(){return typeof matchMedia==`function`?matchMedia(`(pointer: coarse)`):null}function GN(){let[e,t]=(0,Q.useState)(()=>WN()?.matches===!0);return(0,Q.useEffect)(()=>{let e=WN();if(!e)return;let n=()=>t(e.matches);return e.addEventListener(`change`,n),()=>e.removeEventListener(`change`,n)},[]),e}var KN=K(hw,`pointer-events-auto grid size-[44px] cursor-pointer place-items-center rounded-xl text-white/90 transition motion-reduce:transition-none`,cy.controlFocusRing),qN=`relative z-10 w-max flex-row flex-wrap items-start`,JN={maxWidth:`calc(100vw - 2rem - ${lb.left} - ${lb.right})`},YN=Xe()(()=>({}));function XN(e){if(e)return YN.setState({element:e}),()=>{YN.getState().element===e&&YN.setState({element:void 0})}}function ZN(e,t){let n=parseFloat(getComputedStyle(e).rowGap)||0,r=0;for(let i of e.children){let e=getComputedStyle(i);e.display===`none`||Number(e.order)>=t||(r+=i.getBoundingClientRect().height+n)}return r}function QN({menuButton:e=!1,microphoneButton:t=!0}){try{let n=J(e=>e.open||e.unavailable)&&t,r=GN();if(!e&&!n)return null;let i=(0,Z.jsx)(`div`,{ref:XN,"data-corner-place":!0,className:`contents`});return(0,Z.jsx)(bw,{slot:Xy.TopLeft,variant:pw.Bare,order:-1,className:qN,style:JN,children:r?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`div`,{className:`flex basis-full flex-row gap-2`,children:[e&&(0,Z.jsx)(eP,{}),n&&(0,Z.jsx)(tP,{})]}),i]}):(0,Z.jsxs)(Z.Fragment,{children:[e&&(0,Z.jsx)(eP,{}),n&&(0,Z.jsx)(tP,{}),i]})})}catch(e){throw B(`CornerButtons`,e)}}function $N(){try{let e=J(e=>e.open||e.unavailable),t=GN(),[n,r]=(0,Q.useState)(0);return(0,Q.useLayoutEffect)(()=>{let e=document.querySelector(`[data-slot="${Xy.TopLeft}"]`);if(!(e instanceof HTMLElement))return;let t=()=>r(ZN(e,-1));t();let n=new MutationObserver(t);return n.observe(e,{childList:!0}),()=>n.disconnect()},[]),e?(0,Z.jsxs)(`div`,{className:`fixed flex gap-2`,style:{top:`calc(1rem + ${lb.top} + ${n}px)`,left:`calc(1rem + ${lb.left})`},children:[t&&(0,Z.jsx)(`span`,{"data-menu-button-place":!0,className:`size-[44px]`}),(0,Z.jsx)(tP,{})]}):null}catch(e){throw B(`MenuMicrophoneButton`,e)}}function eP(){try{return(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Menu`,onClick:()=>hh.getState().openMenu(),className:K(KN,`active:scale-95`),children:(0,Z.jsx)(Py,{name:`menu`,className:`size-[20px]`})})}catch(e){throw B(`MenuTouchButton`,e)}}function tP(){try{let e=db(e=>e.muted),t=J(e=>e.talking),n=J(e=>e.pushing),r=J(e=>e.inputDecibels),i=q(e=>e.voiceMode===bp.PushToTalk),a=GN()&&i&&!e,o=e?`muted`:a&&n?`holding`:t?`sending`:`silent`,s=zy.voiceSensitivity,c=t?(F.clamp(r,s.min,s.max)-s.min)/(s.max-s.min):0,l=K(KN,(o===`sending`||o===`holding`)&&`border-voice-speaking/70`,o===`holding`&&`scale-95`),u=(0,Z.jsx)(rP,{level:c,muted:e});if(a){let e=e=>{e.currentTarget.setPointerCapture?.(e.pointerId),J.setState({pushing:!0})},t=()=>J.setState({pushing:!1});return(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Hold to talk`,"data-voice-state":o,"data-also-in-menu":!0,onPointerDown:e,onPointerUp:t,onPointerCancel:t,onLostPointerCapture:t,onContextMenu:e=>e.preventDefault(),className:K(l,`touch-none select-none [-webkit-touch-callout:none]`),children:u})}return(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Mute microphone`,"aria-pressed":e,"data-voice-state":o,"data-also-in-menu":!0,onClick:()=>db.setState({muted:!e}),className:K(l,`active:scale-95`),children:u})}catch(e){throw B(`MicrophoneButton`,e)}}var nP={x:9,y:3,width:6,height:11};function rP({level:e,muted:t}){try{let n=(0,Q.useId)(),r=nP.height*e;return(0,Z.jsxs)(`svg`,{"aria-hidden":!0,viewBox:`0 0 24 24`,fill:`none`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`,className:K(`size-[24px]`,t&&`text-menu-muted`),children:[(0,Z.jsx)(`clipPath`,{id:n,children:(0,Z.jsx)(`rect`,{...nP,rx:`3`})}),(0,Z.jsx)(`rect`,{"data-voice-level":!0,x:nP.x,y:nP.y+nP.height-r,width:nP.width,height:r,clipPath:`url(#${n})`,className:`fill-voice-speaking transition-[height,y] duration-75 motion-reduce:transition-none`}),(0,Z.jsx)(`rect`,{...nP,rx:`3`,stroke:`currentColor`}),(0,Z.jsx)(`path`,{d:`M5.5 11a6.5 6.5 0 0 0 13 0M12 17.5V21`,stroke:`currentColor`}),t&&(0,Z.jsxs)(`g`,{"data-voice-slash":!0,children:[(0,Z.jsx)(`path`,{d:`M4 4l16 16`,strokeWidth:`4.5`,className:`stroke-menu-surface`}),(0,Z.jsx)(`path`,{d:`M4 4l16 16`,strokeWidth:`2.25`,className:`stroke-voice-muted`})]})]})}catch(e){throw B(`MicrophoneGlyph`,e)}}var iP=[1,.85,.7,.5],aP=`Custom`,oP={[_p.Shadows]:{label:`Shadows`,description:`The sun's shadows and how sharp their edges are. Off casts none.`,cost:{gpu:Kb.High}},[_p.PostProcessing]:{label:`Post-processing`,description:`The game's look: its colour grade, darker corners and the glow round bright things.`,cost:{gpu:Kb.Medium}},[_p.AmbientOcclusion]:{label:`Ambient occlusion`,description:`Soft shading where surfaces meet, under a tree or at the foot of a wall.`,cost:{gpu:Kb.High}},[_p.AntiAliasing]:{label:`Anti-aliasing`,description:`Smooths jagged edges. A screen as sharp as a phone's or a Retina display needs none, and draws none.`,cost:{gpu:Kb.Medium}},[_p.Foliage]:{label:`Foliage`,description:`How much grass, how many bushes and tufts, and how far from you each still draws.`,cost:{gpu:Kb.Medium,cpu:Kb.Low}},[_p.Terrain]:{label:`Terrain detail`,description:`Varies the ground's textures and blends where one ground meets another.`,cost:{gpu:Kb.Low}}},sP={quality:`Lower presets draw fewer pixels, shadows and effects, so a slower device keeps up. Automatic picks a preset for this device once and keeps it. Changing one of the rows below makes it Custom.`,renderScale:`How sharp the world is drawn. Lower looks softer and runs at a higher frame rate. Menus and the HUD stay sharp.`,dynamicResolution:`Softens the world for a moment when the frame rate drops, and sharpens it again once it recovers, to keep the game smooth. Menus and the HUD stay sharp. On by default on a phone or tablet.`},cP=[_p.AntiAliasing,_p.Shadows,_p.AmbientOcclusion,_p.Foliage,_p.Terrain,_p.PostProcessing];function lP({store:e,group:t,offered:n}){try{let r=vm(e,e=>e.levels),i=vm(e,e=>Sv(e,t)),a=Tv(r,t,n),o=a.length>1?a:Tv(r,t),{label:s,description:c,cost:l}=oP[t],u=o.find(e=>e.levels.includes(i)),d=n=>{let r=bv(e.getState());e.getState().setGroupLevel(t,n.levels.includes(r)?void 0:n.level)};return o.length===2&&o[0].name===`Off`&&t!==_p.AntiAliasing?(0,Z.jsx)(Xb,{label:s,description:c,cost:l,value:u===o[1],onChange:e=>d(e?o[1]:o[0])}):(0,Z.jsx)(Zb,{label:s,description:c,cost:l,options:o.map(e=>e.name),value:u?.name??``,onChange:e=>{let t=o.find(t=>t.name===e);t&&d(t)}})}catch(e){throw B(`GroupRow`,e)}}function uP(e,t){let n=e??t,r=vm(n,e=>e.level),i=vm(n,$v),a=vm(n,e=>e.automatic),o=vm(n,e=>e.renderScale??1),s=vm(n,Mv),c=vm(n,e=>e.dynamicScale),l=vm(n,e=>e.levels),u=vm(n,e=>Cv(Ov(e).pixelRatio,e.renderScale??1)),d=ry(lf)!==void 0,f=ry(qh)!==void 0,p=cj(),m=vm(n,e=>e.groups);if(e===null)return[];let h=[vp.Auto,...wv],g=h.map(e=>Av[e]),_=e=>`${Math.round(e*100)}%`,v={[_p.Shadows]:d,[_p.PostProcessing]:m[_p.PostProcessing]!==void 0||Tv(l,_p.PostProcessing,p).length>1,[_p.AmbientOcclusion]:m[_p.AmbientOcclusion]!==void 0||Tv(l,_p.AmbientOcclusion,p).length>1,[_p.AntiAliasing]:f&&!u,[_p.Foliage]:d,[_p.Terrain]:d};return[{key:`quality`,element:(0,Z.jsx)(Zb,{label:`Quality preset`,description:sP.quality,cost:{gpu:Kb.High},note:r===vp.Auto&&a&&!i?`Automatic chose ${Av[a.level]} for ${jv[a.deviceClass]}`:void 0,options:i?[...g,aP]:g,value:i?aP:Av[r],onChange:t=>{let n=h.find(e=>Av[e]===t);n&&e.getState().setLevel(n)}})},{key:`renderScale`,element:(0,Z.jsx)(Zb,{label:`3D resolution`,description:sP.renderScale,cost:{gpu:Kb.High},options:iP.map(_),value:_(iP.reduce((e,t)=>Math.abs(t-o)<Math.abs(e-o)?t:e)),onChange:t=>{let n=iP.find(e=>_(e)===t);n&&e.getState().setRenderScale(n)}})},{key:`dynamicResolution`,element:(0,Z.jsx)(Xb,{label:`Dynamic 3D resolution`,description:sP.dynamicResolution,cost:{gpu:Kb.Low},note:s&&c<o?`Drawing at ${_(c)} now`:void 0,value:s,onChange:t=>e.getState().setDynamicResolution(t)})},...cP.filter(e=>v[e]&&(e===_p.PostProcessing||e===_p.AmbientOcclusion||Tv(l,e).length>1)).map(t=>({key:t,element:(0,Z.jsx)(lP,{store:e,group:t,offered:p})}))]}var dP=20,fP=ym()(()=>({refreshRate:null}));function pP(e,t){return e===null||t===null||t>=e?1:Math.max(1,Math.round(e/t))}function mP(e){let t=[];for(let n=2;n<=4;n+=1){let r=Math.round(e/n);r>=dP&&t.push(r)}return t}function hP(e){return pP(fP(e=>e.refreshRate),e)>1}var gP=function(e){return e.Good=`good`,e.Warn=`warn`,e.Bad=`bad`,e}({}),_P=function(e){return e.FramesPerSecond=`framesPerSecond`,e.FrameTime=`frameTime`,e.Ping=`ping`,e.Jitter=`jitter`,e.RoomStep=`roomStep`,e}({});function vP(e){return e*55/60}function yP(e,t){let n=vP(t);switch(e){case`framesPerSecond`:return{warn:n,bad:30,higherIsBetter:!0};case`frameTime`:return{warn:1e3/n,bad:1e3/30,higherIsBetter:!1};case`ping`:return{warn:80,bad:150,higherIsBetter:!1};case`jitter`:return{warn:10,bad:30,higherIsBetter:!1};case`roomStep`:return{warn:8,bad:14,higherIsBetter:!1}}}function bP(e,t,n=60){let{warn:r,bad:i,higherIsBetter:a}=yP(e,n),o=e=>a?t<e:t>e;return o(i)?`bad`:o(r)?`warn`:`good`}var xP=[30,48,50,60,72,75,90,100,120,144,165,170,175,180,200,240,280,300,360,480,500],SP=30,CP=5e3,wP;function TP(e){wP=e}function EP(){return wP}var DP=4,OP=class{rate=null;nextRate=null;nextRateReadings=0;read(e){return e===null||e===this.rate?(e!==null&&(this.nextRateReadings=0),this.rate):(this.nextRateReadings=e===this.nextRate?this.nextRateReadings+1:1,this.nextRate=e,(this.rate===null||this.nextRateReadings>=DP)&&(this.rate=e),this.rate)}},kP=class{times=new Float64Array(CP);durations=new Float32Array(CP);sorted=new Float32Array(CP);next=0;count=0;addFrame(e,t){let n=this.times.length;this.count===n&&this.times[this.next]>=e-1e4&&this.grow(),this.times[this.next]=e,this.durations[this.next]=t,this.next=(this.next+1)%this.times.length,this.count=Math.min(this.count+1,this.times.length)}measureOnePercentLow(e){let t=this.copyRecent(e,this.sorted);if(t===0)return null;let n=this.sorted.subarray(0,t).sort(),r=Math.ceil(t/100),i=0;for(let e=t-r;e<t;e+=1)i+=n[e];return 1e3*r/i}estimateRefreshRate(e){let t=this.copyRecent(e,this.sorted);if(t<SP)return null;let n=this.sorted.subarray(0,t).sort(),r=n[Math.floor(t*.05)],i=0,a=0;for(let e=0;e<t&&n[e]<=r*1.5;e+=1)i+=n[e],a+=1;let o=1e3*a/i;return xP.find(e=>Math.abs(e-o)<=e*.03)??Math.round(o)}sampleFrameTimes(e,t){let n=Array(t).fill(null),r=e-1e4,i=1e4/t;for(let e=0;e<this.count;e+=1){let a=(this.next-1-e+this.times.length)%this.times.length,o=this.times[a];if(o<r)break;let s=Math.min(t-1,Math.floor((o-r)/i)),c=n[s];n[s]=Math.max(c??0,this.durations[a])}return n}grow(){let e=this.times.length,t=new Float64Array(e*2),n=new Float32Array(e*2);for(let r=0;r<e;r+=1){let i=(this.next+r)%e;t[r]=this.times[i],n[r]=this.durations[i]}this.times=t,this.durations=n,this.sorted=new Float32Array(e*2),this.next=e}copyRecent(e,t){let n=e-1e4,r=0;for(let e=0;e<this.count;e+=1){let i=(this.next-1-e+this.times.length)%this.times.length;if(this.times[i]<n)break;t[r]=this.durations[i],r+=1}return r}},AP=500,jP=60,MP=`–`,NP=`n/a`,PP=[Sp.Off,Sp.Minimal,Sp.Standard,Sp.Detailed],FP={[Sp.Off]:`Off`,[Sp.Minimal]:`FPS`,[Sp.Standard]:`Graph`,[Sp.Detailed]:`Full`};function IP(){let{performanceStats:e,changeSetting:t}=q.getState(),n=PP[(PP.indexOf(e)+1)%PP.length];t(`performanceStats`,n)}function LP(e){return e instanceof HTMLElement&&(e.isContentEditable||e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.tagName===`SELECT`)}function RP(){(0,Q.useEffect)(()=>{let e=e=>{Ch(Et.performanceStats).some(t=>t===e.code)&&(e.repeat||LP(e.target)||(e.preventDefault(),IP()))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[])}var zP={history:new kP,count:0};function BP(){try{return q(e=>e.performanceStats!==Sp.Off)?(0,Z.jsx)(HP,{}):null}catch(e){throw B(`CanvasFrameCounter`,e)}}function VP(e){return typeof e==`number`&&Math.abs(performance.now()-e)<1e3}function HP(){try{(0,Q.useEffect)(()=>Ye(e=>{VP(e)&&TP(e)}),[]);let e=(0,Q.useRef)(void 0);return gb(z(`CountFrames`,(t,n)=>{let r=EP(),i=r!==void 0&&(e.current===void 0||r>e.current)?r:void 0,a=i??performance.now(),o=e.current===void 0||i===void 0?n*1e3:a-e.current;e.current=a,zP.count+=1,zP.history.addFrame(a,o)})),null}catch(e){throw B(`CountFrames`,e)}}function UP(e){let t=new OP,n=performance.now();zP.count=0,zP.history=new kP;let r=setInterval(()=>{let r=performance.now(),i=r-n,a=zP.count,{history:o}=zP,s=t.read(o.estimateRefreshRate(r));e({framesPerSecond:a*1e3/i,lowFramesPerSecond:o.measureOnePercentLow(r),refreshRate:s,frameTimes:o.sampleFrameTimes(r,jP),cost:Jm()}),zP.count=0,n=r},AP);return()=>clearInterval(r)}function WP(){try{let e=q(e=>e.performanceStats),t=U(e=>e.covered);return RP(),e===Sp.Off||t?null:(0,Z.jsx)(XP,{mode:e})}catch(e){throw B(`PerformanceStats`,e)}}function GP(e){return e.toFixed(1)}function KP(e){return Math.round(e).toString()}function qP(e){let t=[...e.querySelectorAll(`[data-stat-row]`)],n=e.closest(`[data-slot]`),r=t.at(-1);if(!n||!r)return t.length;let i=n.getBoundingClientRect().bottom,a=e.getBoundingClientRect().bottom-r.getBoundingClientRect().bottom,o=t.findIndex(e=>e.getBoundingClientRect().bottom+a>i+.5);return o===-1?t.length:o}function JP(e,t){let[n,r]=(0,Q.useState)(null),i=n&&n.block===e&&n.rowsKey===t?n.rows:void 0;return(0,Q.useLayoutEffect)(()=>{e&&i===void 0&&r({block:e,rowsKey:t,rows:qP(e)})},[e,t,i]),(0,Q.useEffect)(()=>{if(!e)return;let t=()=>r(null);window.addEventListener(`resize`,t);let n=e.closest(`[data-slot]`),i=new MutationObserver(t);n&&i.observe(n,{childList:!0});let a=typeof ResizeObserver>`u`?void 0:new ResizeObserver(t);return n&&a?.observe(n),()=>{window.removeEventListener(`resize`,t),i.disconnect(),a?.disconnect()}},[e]),i}var YP=`flex h-4 items-center gap-2.5`;function XP({mode:e}){try{let[t,n]=(0,Q.useState)(null),[r,i]=(0,Q.useState)(null),a=Xm(xg(e=>({joined:e.status===H.Joined,ping:e.roundTripMilliseconds,jitter:e.jitterMilliseconds}))),o=vm(YN,e=>e.element);(0,Q.useEffect)(()=>UP(n),[]);let s=t?.refreshRate??60,c=FP[PP[(PP.indexOf(e)+1)%PP.length]],l=e!==Sp.Minimal,u=e===Sp.Detailed,d=t?.cost??null,f=[];l&&f.push({key:`low`,cells:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(QP,{label:`1% low`,trailingLabel:!0,value:t?.lowFramesPerSecond==null?MP:KP(t.lowFramesPerSecond),level:t?.lowFramesPerSecond==null?void 0:bP(_P.FramesPerSecond,t.lowFramesPerSecond,s)}),(0,Z.jsx)(eF,{label:`Frame time, last 10 seconds`,points:t?.frameTimes??[],ceiling:1e3/30*1.25})]})}),u&&f.push({key:`frame`,cells:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(QP,{label:`CPU`,value:d?GP(d.cpuMilliseconds):MP,unit:d?`ms`:void 0,level:d?bP(_P.FrameTime,d.cpuMilliseconds,s):void 0}),(0,Z.jsx)(QP,{label:`GPU`,value:d?d.gpuMilliseconds===null?NP:GP(d.gpuMilliseconds):MP,unit:d?.gpuMilliseconds==null?void 0:`ms`,level:d?.gpuMilliseconds==null?void 0:bP(_P.FrameTime,d.gpuMilliseconds,s)})]})});let p=JP(r,f.map(e=>e.key).join()),m=f.slice(0,p),h=(0,Z.jsxs)(`button`,{ref:i,type:`button`,"aria-label":`Performance stats, ${FP[e]}. Show ${c}.`,"aria-keyshortcuts":`F2`,onClick:IP,className:K(_w,`pointer-events-auto flex shrink-0 cursor-pointer flex-col overflow-hidden rounded-md bg-menu-surface px-2 py-[3px] text-left text-white select-none`),children:[(0,Z.jsxs)(`span`,{className:YP,children:[(0,Z.jsx)(QP,{label:`FPS`,trailingLabel:!0,value:t?KP(t.framesPerSecond):MP,level:t?bP(_P.FramesPerSecond,t.framesPerSecond,s):void 0}),a.joined&&(0,Z.jsx)(QP,{label:`Ping`,hiddenLabel:!0,value:KP(a.ping),unit:`ms`,level:bP(_P.Ping,a.ping)}),u&&a.joined&&(0,Z.jsx)(QP,{label:`Jitter`,hiddenLabel:!0,value:`±${KP(a.jitter)}`,level:bP(_P.Jitter,a.jitter),className:`-ml-1.5 min-w-0 text-left`})]}),m.map(e=>(0,Z.jsx)(`span`,{"data-stat-row":!0,className:YP,children:e.cells},e.key))]});return o?(0,fw.createPortal)(h,o):(0,Z.jsx)(bw,{slot:Xy.TopLeft,variant:pw.Bare,order:-1,className:qN,style:JN,children:h})}catch(e){throw B(`PerformanceReadout`,e)}}var ZP={[gP.Good]:`text-reading-good`,[gP.Warn]:`text-reading-warn`,[gP.Bad]:`text-reading-bad`};function QP({label:e,value:t,unit:n,level:r,trailingLabel:i=!1,hiddenLabel:a=!1,className:o}){try{return(0,Z.jsxs)(`span`,{className:`flex items-baseline gap-1 whitespace-nowrap`,children:[(0,Z.jsx)(`span`,{"data-stat-label":!0,className:a?`sr-only`:K(`text-[11px] leading-4 font-medium text-menu-muted`,i&&`order-last`),children:e}),(0,Z.jsxs)(`span`,{"data-level":r,className:K(`min-w-[3ch] text-right text-[12px] leading-4 font-semibold tabular-nums`,r?ZP[r]:`text-white/90`,o),children:[t,n&&(0,Z.jsx)(`span`,{className:`ml-0.5 text-[11px] font-medium text-menu-muted`,children:n})]})]})}catch(e){throw B(`Stat`,e)}}function $P(e,{width:t,height:n,ceiling:r}){let i=t/Math.max(1,e.length-1),a=``,o=!1;return e.forEach((e,t)=>{if(e===null){o=!1;return}let s=(t*i).toFixed(1),c=(n-Math.min(e,r)/r*n).toFixed(1);a+=`${o?`L`:`M`}${s} ${c}`,o=!0}),a}function eF({label:e,points:t,ceiling:n}){try{let r={width:48,height:12,ceiling:n};return(0,Z.jsx)(`svg`,{role:`img`,"aria-label":e,width:r.width,height:r.height,className:`block shrink-0 overflow-visible text-white/40`,children:(0,Z.jsx)(`path`,{d:$P(t,r),fill:`none`,stroke:`currentColor`,strokeWidth:1,strokeLinejoin:`round`})})}catch(e){throw B(`Sparkline`,e)}}var tF={family:`ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif`,weight:600,outline:`rgba(0, 0, 0, 0.7)`,shadow:`rgba(0, 0, 0, 0.5)`,fill:`rgba(0, 0, 0, 0.5)`,speaking:`#34d399`},nF=[`M12 19v3`,`M19 10v2a7 7 0 0 1-14 0v-2`],rF=`M9 5a3 3 0 0 1 6 0v7a3 3 0 0 1-6 0Z`;function iF(){return getComputedStyle(document.documentElement).getPropertyValue(`--color-voice-speaking`).trim()||tF.speaking}function aF(e,t,n,r){let i=Math.ceil(t*1.3),a=r?Math.round(t*.6):3,o=r?Math.round(t*.25):3,s=n?Math.round(t*10/12):0,c=n?Math.round(t*4/12):0;return{width:a*2+s+c+e,height:i+o*2,bottom:r?0:o,microphoneLeft:a,microphoneSize:s,textLeft:a+s+c}}function oF({name:e,speaking:t,color:n,size:r,background:i}){let a=`${tF.weight} ${r}px ${tF.family}`,o=document.createElement(`canvas`),s=o.getContext(`2d`),c=typeof s?.measureText==`function`;c&&(s.font=a);let l=aF(Math.ceil(c?s.measureText(e).width:e.length*r*.6),r,t,i);if(!c)return{texture:null,layout:l};let{width:u,height:d}=l,f=Math.min(3,Math.max(2,Math.ceil(devicePixelRatio)));o.width=u*f,o.height=d*f,s.scale(f,f);let p=d/2;if(i?(s.beginPath(),s.roundRect(0,0,u,d,d/2),s.fillStyle=tF.fill,s.fill()):(s.shadowColor=tF.shadow,s.shadowOffsetY=f,s.shadowBlur=2*f),s.lineJoin=`round`,s.lineCap=`round`,t){let{microphoneLeft:e,microphoneSize:t}=l;s.save(),s.translate(e,p-t/2),s.scale(t/24,t/24);let n=nF.map(e=>new Path2D(e)),r=new Path2D(rF);s.lineWidth=3+24/t,s.strokeStyle=tF.outline;for(let e of[...n,r])s.stroke(e);s.shadowColor=`transparent`;let i=iF();s.lineWidth=3,s.strokeStyle=i;for(let e of n)s.stroke(e);s.fillStyle=i,s.fill(r),s.restore()}s.font=a,s.textBaseline=`middle`,s.lineWidth=2,s.strokeStyle=tF.outline,s.strokeText(e,l.textLeft,p),s.shadowColor=`transparent`,s.fillStyle=n,s.fillText(e,l.textLeft,p);let m=new Ee(o);return m.colorSpace=te,m.minFilter=x,m.generateMipmaps=!1,{texture:m,layout:l}}function sF({name:e,speaking:t,color:n,size:r,background:i}){try{let a=(0,Q.useMemo)(()=>oF({name:e,speaking:t,color:n,size:r,background:i}),[e,t,n,r,i]);(0,Q.useEffect)(()=>()=>a.texture?.dispose(),[a]);let{width:o,height:s,bottom:c}=a.layout;return(0,Z.jsxs)(`mesh`,{"position-y":s/2-c,scale:[o,s,1],renderOrder:1e3,raycast:()=>!1,children:[(0,Z.jsx)(`planeGeometry`,{}),(0,Z.jsx)(`meshBasicMaterial`,{map:a.texture,transparent:!0,depthTest:!1,depthWrite:!1,toneMapped:!1})]})}catch(e){throw B(`Nameplate`,e)}}var cF=function(e){return e.Metres=`metres`,e.Pixels=`pixels`,e}({}),lF=new P,uF=new P,dF=new j,fF=new j,pF=new j,mF=new j,hF=new WeakMap;function gF(e,t,n){if(`isOrthographicCamera`in e&&e.isOrthographicCamera)return(e.top-e.bottom)/e.zoom/n;let{fov:r,zoom:i}=e;return 2*t*Math.tan(F.degToRad(r)/2)/i/n}function _F(e,t,n){let r=hF.get(e);if(t>=1){if(n.delete(e),!r)return;hF.delete(e),e.opacity=r.opacity,e.transparent!==r.transparent&&(e.transparent=r.transparent,e.needsUpdate=!0);return}r||(r={opacity:e.opacity,transparent:e.transparent},hF.set(e,r)),n.add(e),e.transparent||(e.transparent=!0,e.needsUpdate=!0),e.opacity=r.opacity*t}function vF(e,t,n){e.traverse(e=>{let{material:r}=e;if(r){if(!Array.isArray(r))return _F(r,t,n);for(let e of r)_F(e,t,n)}})}function yF({offset:e=[0,0,0],units:t=`metres`,maxDistance:n=1/0,fade:r=0,children:i}){try{let a=(0,Q.useRef)(null),[o]=(0,Q.useState)(()=>new Set);return(0,Q.useEffect)(()=>()=>{for(let e of o)_F(e,1,o)},[o]),I(z(`Billboard`,({camera:i,size:s})=>{let c=a.current,l=c?.parent;if(!c||!l)return;c.position.fromArray(e),l.getWorldQuaternion(lF),i.getWorldQuaternion(uF),c.quaternion.copy(lF.invert().multiply(uF)),c.getWorldPosition(fF),i.getWorldPosition(pF);let u=pF.distanceTo(fF);if(c.visible=u<=n,!c.visible)return;if(t===`pixels`){i.getWorldDirection(mF);let e=gF(i,Math.max(i.near,mF.dot(fF.sub(pF))),s.height);l.getWorldScale(dF),c.scale.set(e/dF.x,e/dF.y,e/dF.z)}else c.scale.setScalar(1);let d=r>0&&Number.isFinite(n)?F.clamp((n-u)/r,0,1):1;(d<1||o.size>0)&&vF(c,d,o)})),(0,Z.jsx)(`group`,{ref:a,name:`billboard`,children:i})}catch(e){throw B(`Billboard`,e)}}function bF(e){let t=G(e,fi)?.name,n=G(e,jd)?.name,r=G(e,Rt)?.name,i=G(e,Ur)?.name;return t||n||r||us(i??``)}function xF(e){let t=e!==void 0&&Ts(e),n=e?.get(hf)?.id;return J(e=>t?e.talking:n!==void 0&&e.speakers.includes(n))}var SF=rt(),CF=.2;function wF(e){if(e===!1)return null;let t=e===!0?{}:typeof e==`function`||`$$typeof`in e?{component:e}:e;if(t.show===`none`)return null;let n=t.distance??30,r=t.fade??(t.distance===void 0?void 0:[n*2/3,n]);return{fade:r??[20,30],teamFade:r??[1/0,1/0],offset:t.offset??[0,.15,0],size:t.size??12,background:t.background??!1,color:t.color??`#ffffff`,throughWalls:t.throughWalls??`team`,show:t.show??`all`,component:t.component??sF}}function TF({setting:e}){try{let t=W(),n=wF(e),r=n!==null,i=q(e=>e.showPlayerNames),a=iy(wf,jd,Xf),o=iy(wf,ei).find(Ts),s=G(o,Bl)?.name??``;return(0,Q.useEffect)(()=>{if(r)return t.add(SF),()=>t.remove(SF)},[t,r]),!n||!i?null:a.filter(e=>!Ts(e)).map(e=>(0,Z.jsx)(kF,{entity:e,options:n,ownTeam:s},e))}catch(e){throw B(`Nameplates`,e)}}var EF=new j,DF=new j,OF={ray:new be,range:0,target:null};function kF({entity:e,options:t,ownTeam:n}){try{let r=W(),i=bF(e),a=G(e,Bl),o=G(e,Xf)?.object,s=G(e,lr)?.height,c=G(e,jt),l=xF(e),u=(0,Q.useRef)(null),d=(0,Q.useRef)(0),f=a!==void 0&&a.name!==``&&a.name===n,[p,m]=f?t.teamFade:t.fade,h=t.throughWalls===`always`||t.throughWalls===`team`&&f;if(I(z(`CharacterNameplate`,({camera:t},n)=>{let i=u.current,a=i?.children[0];if(i&&a){if(h){i.visible=!0;return}d.current-=n,!(d.current>0)&&(d.current=CF,t.getWorldPosition(EF),a.getWorldPosition(DF),OF.ray.origin.copy(EF),OF.range=OF.ray.direction.subVectors(DF,EF).length(),!(OF.range===0||OF.range>m)&&(OF.ray.direction.divideScalar(OF.range),OF.target=e,i.visible=di(r,OF)===null))}})),!i||!o||t.show===`team`&&!f)return null;let g=s||c?.height||Vu.height,[_,v,y]=t.offset,b=t.component;return Je((0,Z.jsx)(`group`,{name:`nameplate`,ref:u,children:(0,Z.jsx)(yF,{offset:[_,g+v,y],units:cF.Pixels,maxDistance:m,fade:Number.isFinite(m)?m-p:0,children:(0,Z.jsx)(b,{entity:e,name:i,speaking:l,color:a?.color||t.color,teammate:f,size:t.size,background:t.background})})}),o)}catch(e){throw B(`CharacterNameplate`,e)}}var AF={[ub.Denied]:`Microphone blocked. You can hear the others, and they cannot hear you. To talk, allow the microphone from the site controls at the left of the address bar.`,[ub.Unavailable]:`No microphone found. You can hear the others, and they cannot hear you.`},jF={[ub.Denied]:`Microphone blocked: the others cannot hear you`,[ub.Unavailable]:`No microphone: the others cannot hear you`};function MF(){try{let e=J(e=>e.access),t=J(e=>e.heard.length>0)?jF[e]:void 0,[n,r]=(0,Q.useState)(null);return n!==null&&n!==e&&r(null),(0,Q.useEffect)(()=>{if(!t)return;let n=setTimeout(()=>r(e),1e4);return()=>clearTimeout(n)},[e,t]),!t||n===e?null:(0,Z.jsx)(bw,{slot:Xy.BottomLeft,variant:pw.Bare,children:(0,Z.jsxs)(`div`,{role:`status`,className:K(hw,_w,`flex items-center gap-2 px-2.5 py-1 text-xs leading-5 whitespace-nowrap text-white/75`),children:[(0,Z.jsx)(Py,{name:`mic-off`,className:`size-3.5 shrink-0 text-red-300`}),(0,Z.jsx)(`span`,{children:t}),(0,Z.jsx)(`span`,{className:`text-white/45 pointer-coarse:hidden`,children:`Esc to fix`})]})})}catch(e){throw B(`VoiceStatus`,e)}}var NF={[bp.OpenMic]:`Open mic`,[bp.PushToTalk]:`Push to talk`},PF={microphone:`Whether other players in the room hear you.`,unavailable:`Voice runs when the game plays on the platform. This development room carries none.`,voiceMode:`Open mic sends you while you speak, and not the quiet room around you. Push to talk sends you while you hold the key.`,voiceModeTouch:`Open mic sends you while you speak, and not the quiet room around you. Push to talk sends you while you hold the microphone button.`,pushToTalkKey:`The key you hold to talk. Choose it, then press a key.`,microphoneVolume:`How loud your microphone is before it is sent.`,noiseSuppression:`Takes steady noise such as a fan out of your microphone. Turn it off for music.`,autoGainControl:`Keeps your voice at an even level. Your browser may change your system's microphone level for it.`,playerVolume:`How loud this player is to you alone. Past 100% plays a quiet player louder, up to twice as loud. The button mutes them.`,notHeard:`This player sends no voice to you now: their microphone is off, or their browser has not joined voice.`};function FF(e){return{Backquote:"`",Space:`Space`,CapsLock:`Caps Lock`,ShiftLeft:`Left Shift`,ShiftRight:`Right Shift`,ControlLeft:`Left Ctrl`,ControlRight:`Right Ctrl`,AltLeft:`Left Alt`,AltRight:`Right Alt`,Tab:`Tab`}[e]??e.replace(/^(Key|Digit)/,``)}function IF(){try{let e=db(e=>e.muted),t=J(e=>e.access),n=J(e=>e.open),r=J(e=>e.unavailable),i=q(),{changeSetting:a}=i,o=GN();return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Xb,{label:`Microphone`,description:r?PF.unavailable:AF[t]??PF.microphone,value:!e,onChange:e=>db.setState({muted:!e})}),n&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Zb,{label:`Voice mode`,description:o?PF.voiceModeTouch:PF.voiceMode,options:Object.values(NF),value:NF[i.voiceMode],onChange:e=>{let t=Object.values(bp).find(t=>NF[t]===e);t&&a(`voiceMode`,t)}}),i.voiceMode===bp.PushToTalk&&!o&&(0,Z.jsx)(RF,{label:`Push-to-talk key`,description:PF.pushToTalkKey,value:i.pushToTalkKey,onChange:e=>a(`pushToTalkKey`,e)}),(0,Z.jsx)(LF,{value:i.microphoneVolume,onChange:e=>a(`microphoneVolume`,e)}),(0,Z.jsx)(Xb,{label:`Noise suppression`,description:PF.noiseSuppression,value:i.noiseSuppression,onChange:e=>a(`noiseSuppression`,e)}),(0,Z.jsx)(Xb,{label:`Automatic gain`,description:PF.autoGainControl,value:i.autoGainControl,onChange:e=>a(`autoGainControl`,e)})]})]})}catch(e){throw B(`VoiceRows`,e)}}function LF({value:e,onChange:t}){try{let n=(0,Q.useId)(),r=J(e=>e.talking),i=J(e=>e.inputDecibels),{min:a,max:o,step:s}=zy.microphoneVolume,c=zy.voiceSensitivity,l=F.clamp(i,c.min,c.max),u=(l-c.min)/(c.max-c.min),d=`Microphone volume`;return(0,Z.jsx)(Hb,{label:d,description:PF.microphoneVolume,descriptionId:n,stacked:!0,children:(0,Z.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,Z.jsx)(jy,{label:d,"aria-describedby":n,min:a,max:o,step:s,value:e,onChange:t}),(0,Z.jsx)(`div`,{role:`meter`,"aria-label":`Microphone level`,"aria-valuemin":c.min,"aria-valuemax":c.max,"aria-valuenow":Math.round(l),className:`-mt-1.5 h-1 overflow-hidden rounded-full bg-white/10`,children:(0,Z.jsx)(`div`,{"data-voice-meter":!0,className:K(`h-full rounded-full`,r?`bg-emerald-400`:`bg-amber-300/80`),style:{width:`${u*100}%`}})})]}),(0,Z.jsx)(`span`,{className:`flex h-9 w-20 shrink-0 items-center justify-end border border-transparent px-2 text-[15px] text-white tabular-nums`,children:e})]})})}catch(e){throw B(`MicrophoneVolumeField`,e)}}function RF({label:e,description:t,value:n,onChange:r}){try{let i=(0,Q.useId)(),[a,o]=(0,Q.useState)(!1);return(0,Z.jsx)(Hb,{label:e,description:t,descriptionId:i,children:(0,Z.jsx)(`div`,{className:`flex justify-end`,children:(0,Z.jsx)(`button`,{type:`button`,"aria-label":e,"aria-describedby":i,onClick:()=>o(!a),onKeyDown:e=>{a&&(e.preventDefault(),e.stopPropagation(),e.code!==`Escape`&&r(e.code),o(!1))},onBlur:()=>o(!1),className:K(`h-9 min-w-28 cursor-pointer rounded-md border px-3 text-[15px] font-semibold transition-colors motion-reduce:transition-none`,a?`border-menu-accent bg-menu-accent/15 text-white`:`border-menu-edge bg-menu-raised text-white hover:border-menu-muted/60`,cy.controlFocusRing),children:a?`Press a key`:FF(n)})})})}catch(e){throw B(`KeyField`,e)}}function zF(){let e=W(),t=iy(jd,hf),[,n]=(0,Q.useState)(0);return(0,Q.useEffect)(()=>e.onChange(jd,()=>n(e=>e+1)),[e]),t.filter(e=>!Ts(e)).map(e=>({key:e.get(hf)?.id??``,name:e.get(jd)?.name??``})).filter(({key:e,name:t})=>e!==``&&t!==``).sort((e,t)=>e.name.localeCompare(t.name))}function BF(e,{open:t,heard:n,speakers:r,mutedPlayers:i}){if(t)return i.includes(e)?`Muted by you`:r.includes(e)?`Speaking`:n.includes(e)?`In voice`:`Not in voice`}function VF(){try{let e=zF(),t=J(xg(({open:e,heard:t,speakers:n,mutedPlayers:r,playerVolumes:i})=>({open:e,heard:t,speakers:n,mutedPlayers:r,playerVolumes:i}))),n=qb(e=>Object.values(e.hidden).includes(`microphone`)),{setPlayerVolume:r,mutePlayer:i}=J.getState();return e.map(({key:e,name:a})=>{let o=BF(e,t),s=t.mutedPlayers.includes(e);return(0,Z.jsx)(`div`,{"data-person":!0,children:t.heard.includes(e)&&!n?(0,Z.jsx)(Wb,{label:a,note:o,description:PF.playerVolume,...mb,value:t.playerVolumes[e]??100,display:e=>`${e}%`,onChange:t=>r(e,t),end:(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Mute ${a}`,"aria-pressed":s,onClick:()=>i(e,!s),onKeyDown:e=>e.stopPropagation(),className:K(`flex h-9 w-20 shrink-0 cursor-pointer items-center justify-center rounded-md border border-menu-edge transition-colors motion-reduce:transition-none`,s?`bg-red-500/20 text-red-200`:`bg-menu-raised text-white hover:border-menu-muted/60`,cy.controlFocusRing),children:(0,Z.jsx)(Py,{name:s?`volume-x`:`volume-2`,className:`size-4`})})}):(0,Z.jsx)(HF,{name:a,note:o})},e)})}catch(e){throw B(`PeopleRows`,e)}}function HF({name:e,note:t}){try{let n=(0,Q.useId)();return(0,Z.jsx)(Hb,{label:e,note:t,description:t===`Not in voice`?PF.notHeard:void 0,descriptionId:n,children:(0,Z.jsx)(`span`,{})})}catch(e){throw B(`PersonField`,e)}}function UF(e){try{let t=(0,Q.useId)(),n=qb(e=>e.showSettingRow),r=qb(e=>e.hideSettingRow);return(0,Q.useEffect)(()=>n(t,e),[t,e,n]),(0,Q.useEffect)(()=>()=>r(t),[t,r]),null}catch(e){throw B(`SettingRow`,e)}}function WF({setting:e}){try{let t=(0,Q.useId)(),n=qb(e=>e.hideEngineRow),r=qb(e=>e.showEngineRow);return(0,Q.useEffect)(()=>(n(t,e),()=>r(t)),[t,e,n,r]),null}catch(e){throw B(`HideSetting`,e)}}var GF=typeof __GAME_ENGINE_DEV__==`boolean`&&__GAME_ENGINE_DEV__?(0,Q.lazy)(()=>Rp(async()=>{let{ReplaySettingRow:e}=await import(`../chunks/B8f3enUO.js`);return{ReplaySettingRow:e}},__vite__mapDeps([72,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,73,39,40,36,37,38,41,42,43,50,51,52,45,57,74,75,76,77]),import.meta.url).then(({ReplaySettingRow:e})=>({default:e}))):void 0,KF={[Y.Video]:{name:`Video`,short:`video`,about:`How the game fills your screen, what the world costs to draw, and how much of it you see. The world stays in view behind this panel, so each change shows as you make it.`,seeThrough:!0},[Y.Audio]:{name:`Audio`,short:`audio`,about:`How loud each kind of sound plays, and who hears you.`,seeThrough:!1},[Y.Game]:{name:`Game`,short:`game`,about:`Settings this game adds.`,seeThrough:!1},[Y.Controls]:{name:`Controls`,short:`controls`,about:`How the camera answers your mouse, your trackpad and your keys.`,seeThrough:!1},[Y.Interface]:{name:`Interface`,short:`interface`,about:`What shows over the world, such as other players' names. The world stays in view behind this panel, so each change shows as you make it.`,seeThrough:!0},[Y.Accessibility]:{name:`Accessibility`,short:`accessibility`,about:`Less motion on screen, for comfort.`,seeThrough:!1}},qF={[Y.Video]:[`fullscreenOnPlay`,`frameRateCap`,`fieldOfView`,`performanceStats`,`grassSway`],[Y.Interface]:[`showPlayerNames`],[Y.Audio]:[`masterVolume`,`musicVolume`,`effectsVolume`,`interfaceVolume`,`voiceVolume`,`voiceMode`,`voiceSensitivity`,`pushToTalkKey`,`microphoneVolume`,`noiseSuppression`,`autoGainControl`],[Y.Controls]:[`mouseSensitivity`,`invertLook`,`shiftLock`],[Y.Accessibility]:[`reducedMotion`,`cameraShake`],[Y.Game]:[]},JF=`Off`;function YF(e,t){if(t===null)return JF;let n=e.reduce((e,n)=>Math.abs(n-t)<Math.abs(e-t)?n:e);return String(n)}var XF={frameRateCap:`The most frames a second the game draws. A cap saves battery and heat on a laptop or phone. Each option divides the screen's rate evenly, so every frame lasts as long as the last.`,fieldOfView:`How much of the world you see, in degrees across a 16:9 screen. Wider shows more, and draws each thing smaller. A wider screen sees more at the sides; held upright, the figure runs top to bottom.`,fixedFieldOfView:`This game sets its own field of view.`,grassSway:`The grass moves in the wind. Off by default at Low quality and under Reduced motion, and on at Medium and High, until you set it.`,fullscreenOnPlay:`Play also fills the screen.`,performanceStats:`The frame rate and more, in the top-left corner. F2 steps through the levels while you play, and on a touch screen a tap on the overlay does.`,showPlayerNames:`Each other player's name over their head, with a microphone while they speak.`,windowLayout:`Puts every window you moved back where the game first opened it.`,masterVolume:`Every sound. Each 20 points lower sounds about half as loud.`,musicVolume:`Music and background sound.`,effectsVolume:`Every other sound in the game.`,interfaceVolume:`Menu and HUD sounds, such as a click or a card turning.`,voiceVolume:`Other players' voices. Past 100% plays every voice louder, up to twice as loud.`,mouseSensitivity:`How fast the camera turns. Type in the box for an exact value.`,invertLook:`Moving the mouse up looks down.`,shiftLock:`Shift locks the camera behind your shoulder, and your character turns with it. Shift again lets it go.`,reducedMotion:`Animated screens move less, and the camera does not shake. Follows your device until you set it.`,cameraShake:`How much big moments shake the screen, from none at 0 to the game's own at 100. Reduced motion turns it off.`},ZF={frameRateCap:{gpu:Kb.High,cpu:Kb.High},fieldOfView:{gpu:Kb.Low,cpu:Kb.Low},grassSway:{gpu:Kb.Low}};function QF(e){let t=e.queryFirst(V)?.get(V);return t?{fieldOfView:t.fieldOfView,playerLook:t.playerLook,lockToggleOffered:t.lockToggleOffered,shakes:t.orbit!==null}:null}function $F(){let e=W(),t=_g(e=>e.canvas),[n,r]=(0,Q.useState)(()=>QF(e));return(0,Q.useEffect)(()=>{let t=()=>r(t=>{let n=QF(e);return n!==null&&t!==null&&bg(n,t)?t:n}),n=()=>queueMicrotask(t),i=[e.onAdd(V,n),e.onChange(V,n),e.onRemove(V,n)];return n(),()=>i.forEach(e=>e())},[e]),{camera:n,capturable:t!==null&&vh(t),fullscreen:document.fullscreenEnabled===!0||Aw(Dw.getState())}}function eI(e){return(e<1?e.toPrecision(3):e.toFixed(3)).replace(/(\.\d\d\d*?)0+$/,`$1`)}function tI(){return q(xg(({changeSetting:e,resetSettings:t,...n})=>n))}function nI(e){let t=tI(),{changeSetting:n}=q.getState(),r=(0,Q.use)(Yv),i=fP(e=>e.refreshRate),a=i===null?[]:mP(i),o=uP(r?.quality??null,Wv),s=qv(),c=ry(lf),l=J(e=>e.open),u=J(e=>e.unavailable),d=qb(xg(e=>Object.values(e.hidden))),f=W(),p=ay(f,SF),m=zF().length>0,{camera:h,capturable:g,fullscreen:_}=e,v=ey(),y=vm(v,e=>Object.keys(e.places).length>0),b=h?.fieldOfView??null,x=e=>n(`mouseSensitivity`,e),S=r!==null&&c!==void 0&&{key:`grassSway`,section:`Quality`,element:(0,Z.jsx)(Xb,{label:`Grass sway`,description:XF.grassSway,cost:ZF.grassSway,value:Hy(t,s),onChange:e=>n(`grassSway`,e)})},C={[Y.Video]:[g&&_&&{key:`fullscreenOnPlay`,section:`Display`,element:(0,Z.jsx)(Xb,{label:`Fullscreen on Play`,description:XF.fullscreenOnPlay,value:t.fullscreenOnPlay,onChange:e=>n(`fullscreenOnPlay`,e)})},a.length>0&&{key:`frameRateCap`,section:`Display`,element:(0,Z.jsx)(Zb,{label:`Frame rate limit`,description:XF.frameRateCap,cost:ZF.frameRateCap,options:[JF,...a.map(String)],value:YF(a,t.frameRateCap),onChange:e=>n(`frameRateCap`,e===JF?null:Number(e))})},b!==null&&{key:`fieldOfView`,section:`Display`,element:(0,Z.jsx)(Wb,{label:`Field of view`,description:b.fixed?XF.fixedFieldOfView:XF.fieldOfView,cost:b.fixed?void 0:ZF.fieldOfView,min:b.min,max:b.max,step:zy.fieldOfView.step,value:rT(b,t.fieldOfView),disabled:b.fixed,display:e=>`${e}°`,onChange:e=>n(`fieldOfView`,e)})},{key:`performanceStats`,section:`Display`,element:(0,Z.jsx)(Zb,{label:`Performance stats`,description:XF.performanceStats,options:PP.map(e=>FP[e]),value:FP[t.performanceStats],onChange:e=>{let t=PP.find(t=>FP[t]===e);t&&n(`performanceStats`,t)}})},...o.flatMap(e=>[{...e,section:`Quality`},...e.key===`foliage`?[S]:[]]),...o.some(e=>e.key===`foliage`)?[]:[S]],[Y.Interface]:[p&&{key:`showPlayerNames`,element:(0,Z.jsx)(Xb,{label:`Show other players' names`,description:XF.showPlayerNames,value:t.showPlayerNames,onChange:e=>n(`showPlayerNames`,e)})},y&&{key:`windowLayout`,element:(0,Z.jsx)(nx,{label:`Window layout`,description:XF.windowLayout,action:`Reset`,onPress:()=>v.getState().forgetPlaces()})},GF!==void 0&&{key:`keepReplay`,element:(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(GF,{})})}],[Y.Audio]:[...[[`masterVolume`,`Master volume`],[`musicVolume`,`Music volume`],[`effectsVolume`,`Effects volume`],[`interfaceVolume`,`Interface volume`]].map(([e,r])=>({key:e,section:`Volume`,element:(0,Z.jsx)(Wb,{label:r,description:XF[e],...zy[e],value:t[e],onChange:t=>n(e,t)})})),l&&{key:`voiceVolume`,section:`Volume`,element:(0,Z.jsx)(Wb,{label:`Voice volume`,description:XF.voiceVolume,...zy.voiceVolume,value:t.voiceVolume,display:e=>`${e}%`,onChange:e=>n(`voiceVolume`,e)})},(l||u)&&{key:`microphone`,section:`Voice chat`,element:(0,Z.jsx)(IF,{})},m&&{key:`people`,section:`People`,element:(0,Z.jsx)(VF,{})}],[Y.Controls]:[h?.playerLook===!0&&{key:`mouseSensitivity`,element:(0,Z.jsx)(Wb,{label:`Camera sensitivity`,description:XF.mouseSensitivity,...Wy,value:Vy(t.mouseSensitivity),display:()=>eI(t.mouseSensitivity),onChange:e=>x(Uy(e)),end:(0,Z.jsx)(Ny,{label:`Camera sensitivity value`,value:t.mouseSensitivity,display:eI,onChange:x,className:`shrink-0`})})},h?.playerLook===!0&&{key:`invertLook`,element:(0,Z.jsx)(Xb,{label:`Invert vertical look`,description:XF.invertLook,value:t.invertLook,onChange:e=>n(`invertLook`,e)})},h?.lockToggleOffered===!0&&g&&{key:`shiftLock`,element:(0,Z.jsx)(Xb,{label:`Lock camera with Shift`,description:XF.shiftLock,value:t.shiftLock,onChange:e=>n(`shiftLock`,e)})}],[Y.Accessibility]:[{key:`reducedMotion`,element:(0,Z.jsx)(Xb,{label:`Reduced motion`,description:XF.reducedMotion,value:t.reducedMotion??Ry(),onChange:e=>n(`reducedMotion`,e)})},h?.shakes===!0&&{key:`cameraShake`,element:(0,Z.jsx)(Wb,{label:`Screen shake`,description:XF.cameraShake,...zy.cameraShake,value:t.cameraShake,onChange:e=>n(`cameraShake`,e)})}],[Y.Game]:[]},w=e=>d.includes(e)||e===`voiceVolume`&&d.includes(`microphone`),T=e=>e!==!1&&!w(e.key);return{[Y.Video]:C.video.filter(T),[Y.Interface]:C.interface.filter(T),[Y.Audio]:C.audio.filter(T),[Y.Controls]:C.controls.filter(T),[Y.Accessibility]:C.accessibility.filter(T),[Y.Game]:[]}}function rI(e){let[t,n]=(0,Q.useState)(null),[r,i]=(0,Q.useState)(null),a=t=>t?.tab===e?t:null,o=a(r)?.id??null;return{describe:(0,Q.useMemo)(()=>({describeHovered:(t,r)=>n(n=>r?{tab:e,id:t,detail:r}:n?.id===t?null:n),describeFocused:(t,n)=>i(r=>n?{tab:e,id:t,detail:n}:r?.id===t?null:r),activeId:o}),[e,o]),detail:(a(t)??a(r))?.detail??null}}function iI(e){let t=new Map([[void 0,[]]]);for(let n of e){let e=n[1].section,r=t.get(e)??[];r.push(n),t.set(e,r)}return[...t].filter(([,e])=>e.length>0).map(([e,t])=>({section:e,rows:t}))}function aI(e){for(let t of e)t.kind!==$b.Button&&t.defaultValue!==void 0&&t.onChange(t.defaultValue)}var oI=4,sI=new WeakMap;function cI({onBack:e}){try{let t=nI($F()),n=qb(e=>e.rows),r=(0,Q.useMemo)(()=>Object.entries(n),[n]),i=e=>r.filter(([,t])=>(t.tab??Y.Game)===e),a=Object.values(Y).filter(e=>t[e].length>0||i(e).length>0),o=(0,Q.use)(Yv),s=o??Wv,[c,l]=(0,Q.useState)(()=>sI.get(s)??Y.Video),u=e=>{sI.set(s,e),l(e)},d=a.length===0,f=a.includes(c)?c:a[0]??Y.Game,{describe:p,detail:m}=rI(f),h=(0,Q.useRef)(new Map),[g,_]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{if(!g)return;let e=setTimeout(()=>_(!1),oI*1e3);return()=>clearTimeout(e)},[g]);let v=(0,Q.useRef)(f);(0,Q.useEffect)(()=>{h.current.get(v.current)?.focus()},[]);let y=(0,Q.useId)(),b=e=>qF[e].length>0||e===Y.Video&&o!==null||i(e).some(([,e])=>e.kind!==$b.Button&&e.defaultValue!==void 0),x=e=>{q.getState().resetSettings(qF[e]),e===Y.Video&&o?.quality.getState().resetQuality(),aI(i(e).map(([,e])=>e))},S=()=>{if(!g){_(!0);return}_(!1),q.getState().resetSettings(),o?.quality.getState().resetQuality(),aI(r.map(([,e])=>e))},C=e=>{let t=a.indexOf(f),n={ArrowRight:1,ArrowDown:1,ArrowLeft:-1,ArrowUp:-1,Home:-t,End:a.length-1-t}[e.key];if(n===void 0)return;e.preventDefault();let r=a[(t+n+a.length)%a.length];u(r),h.current.get(r)?.focus()},w=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{w.current&&(w.current.scrollTop=0)},[f]),(0,Q.useEffect)(()=>{h.current.get(f)?.scrollIntoView?.({block:`nearest`,inline:`nearest`})},[f]),(0,Z.jsxs)(`div`,{role:`dialog`,"aria-label":`Settings`,"data-see-through":KF[f].seeThrough||void 0,className:K(gw,`@container/panel relative flex h-[min(38rem,calc(100dvh-1.5rem))] w-[min(68rem,calc(100vw-1.5rem))] flex-col overflow-hidden transition-colors motion-reduce:transition-none`,`lg:data-[see-through]:bg-black/75 lg:data-[see-through]:bg-none lg:data-[see-through]:backdrop-blur-none`,_w),children:[(0,Z.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col @2xl/panel:flex-row`,children:[(0,Z.jsxs)(`nav`,{className:`flex shrink-0 flex-col border-b border-menu-edge @2xl/panel:w-56 @2xl/panel:border-r @2xl/panel:border-b-0`,children:[(0,Z.jsx)(`h2`,{className:`px-6 pt-5 pb-3 font-display text-2xl leading-none font-bold pointer-coarse:px-5 @2xl/panel:pt-6 @2xl/panel:pb-5`,children:`Settings`}),(0,Z.jsx)(`div`,{role:`tablist`,"aria-label":`Settings sections`,className:`flex scroll-px-3 gap-1 overflow-x-auto px-3 py-1 @2xl/panel:flex-col @2xl/panel:gap-0.5 @2xl/panel:overflow-visible @2xl/panel:pb-4`,children:a.map(e=>{let t=e===f;return(0,Z.jsxs)(`button`,{ref:t=>{t?h.current.set(e,t):h.current.delete(e)},type:`button`,role:`tab`,id:`${y}-${e}`,"aria-selected":t,"aria-controls":`${y}-panel`,tabIndex:t?0:-1,"data-menu-focus":t||void 0,onClick:()=>u(e),onKeyDown:C,className:K(`relative h-11 shrink-0 cursor-pointer rounded-lg px-3 text-left text-[15px] font-semibold whitespace-nowrap transition-colors motion-reduce:transition-none`,cy.controlFocusRing,t?`text-white @2xl/panel:bg-menu-raised`:`text-menu-muted hover:text-white @2xl/panel:hover:bg-white/[0.04]`),children:[KF[e].name,t&&(0,Z.jsx)(`span`,{"aria-hidden":!0,className:`absolute inset-x-3 bottom-0 h-0.5 rounded-full bg-menu-accent @2xl/panel:inset-x-auto @2xl/panel:inset-y-3 @2xl/panel:left-0 @2xl/panel:h-auto @2xl/panel:w-[3px]`})]},e)})})]}),(0,Z.jsx)(Jb,{value:p,children:(0,Z.jsx)(`div`,{ref:w,role:d?void 0:`tabpanel`,id:`${y}-panel`,"aria-labelledby":d?void 0:`${y}-${f}`,className:`menu-scroll @container/rows relative min-h-0 min-w-0 flex-1 overflow-y-auto px-6 py-3 pointer-coarse:px-5`,children:d?(0,Z.jsx)(`p`,{className:`py-3 text-[15px] text-menu-muted`,children:`This game has no settings to change.`}):(0,Z.jsx)(lI,{engineRows:t[f],gameRows:i(f)})})}),(0,Z.jsx)(`aside`,{"data-setting-detail":!0,"aria-hidden":!0,className:`hidden w-72 shrink-0 flex-col gap-4 border-l border-menu-edge px-6 py-6 @5xl/panel:flex`,children:m?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`h3`,{className:`font-display text-xl leading-tight font-bold text-white`,children:m.label}),m.image&&(0,Z.jsx)(`img`,{src:m.image,alt:``,className:`aspect-video w-full rounded-lg border border-menu-edge object-cover`}),m.description&&(0,Z.jsx)(`p`,{className:`text-[15px] leading-6 text-white/80`,children:m.description}),m.cost&&(0,Z.jsxs)(`div`,{className:`mt-1 flex flex-col gap-2 border-t border-menu-edge pt-4`,children:[(0,Z.jsx)(`p`,{className:`text-[13px] font-semibold text-menu-muted`,children:`Performance cost`}),(0,Z.jsx)(ex,{cost:m.cost})]})]}):(0,Z.jsx)(`p`,{className:`text-[15px] leading-6 text-menu-muted`,children:KF[f].about})})]}),(0,Z.jsxs)(`footer`,{className:`flex shrink-0 items-center gap-2 border-t border-menu-edge px-6 py-3 pointer-coarse:px-5`,children:[(0,Z.jsx)(`button`,{type:`button`,onClick:S,className:K(`-ml-3 h-10 shrink-0 cursor-pointer rounded-lg px-3 text-sm font-semibold transition-colors hover:bg-white/[0.07] motion-reduce:transition-none`,g?`text-white`:`text-menu-muted hover:text-white`,cy.controlFocusRing),children:g?`Confirm reset all`:`Reset all`}),(0,Z.jsx)(`div`,{className:`flex-1`}),b(f)&&(0,Z.jsxs)(`button`,{type:`button`,onClick:()=>x(f),className:K(`h-10 shrink-0 cursor-pointer rounded-lg px-3 text-sm font-semibold text-menu-muted transition-colors hover:bg-white/[0.07] hover:text-white motion-reduce:transition-none`,cy.controlFocusRing),children:[`Reset `,KF[f].short]}),(0,Z.jsx)(rx,{onPress:e,variant:Gb.Primary,className:`min-w-28 shrink-0`,children:`Back`})]})]})}catch(e){throw B(`SettingsPanel`,e)}}function lI({engineRows:e,gameRows:t}){try{return(0,Z.jsxs)(Z.Fragment,{children:[e.map((t,n)=>(0,Z.jsxs)(Q.Fragment,{children:[t.section&&t.section!==e[n-1]?.section&&(0,Z.jsx)(tx,{children:t.section}),t.element]},t.key)),iI(t).map(({section:e,rows:t})=>(0,Z.jsxs)(Q.Fragment,{children:[e&&(0,Z.jsx)(tx,{children:e}),t.map(([e,t])=>(0,Z.jsx)(Qb,{row:t},e))]},e??``))]})}catch(e){throw B(`TabRows`,e)}}function uI({room:e,page:t}){return`The room runs another build of the game (room ${e}, this page ${t}). Play may act oddly until the room is updated.`}var dI=ym()(()=>({text:null}));Xm.subscribe(({buildMismatch:e})=>{!e&&dI.getState().text!==null&&dI.setState({text:null})});function fI(){let e=Xm(e=>e.buildMismatch),t=dI(e=>e.text);if(!e)return null;let n=uI(e);return n===t?null:n}function pI({note:e}){try{return(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Dismiss`,className:`pointer-events-auto -mr-1 shrink-0 cursor-pointer rounded p-0.5 opacity-70 hover:opacity-100 focus-visible:opacity-100 focus-visible:outline-2 focus-visible:outline-white`,onClick:()=>dI.setState({text:e}),children:(0,Z.jsx)(Py,{name:`x`,className:`size-4`})})}catch(e){throw B(`DismissButton`,e)}}function mI(){try{let e=fI(),t=_g(e=>e.captured);return e?(0,Z.jsx)(bw,{slot:Xy.BottomLeft,variant:pw.Bare,children:(0,Z.jsxs)(`div`,{className:K(hw,_w,`flex max-w-80 items-start gap-2.5 px-3 py-2 text-[13px] leading-5`),children:[(0,Z.jsx)(`span`,{role:`status`,children:e}),!t&&(0,Z.jsx)(pI,{note:e})]})}):null}catch(e){throw B(`BuildNote`,e)}}function hI(){try{let e=fI();return e?(0,Z.jsxs)(`p`,{className:`-mt-1 mb-2 flex items-start gap-2 px-1 text-[13px] leading-5 text-menu-muted`,children:[(0,Z.jsx)(`span`,{children:e}),(0,Z.jsx)(pI,{note:e})]}):null}catch(e){throw B(`MenuBuildNote`,e)}}var gI=typeof __GAME_ENGINE_DEV__==`boolean`&&__GAME_ENGINE_DEV__?(0,Q.lazy)(()=>Rp(async()=>{let{ReplayMenuRows:e}=await import(`../chunks/B8f3enUO.js`);return{ReplayMenuRows:e}},__vite__mapDeps([72,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,73,39,40,36,37,38,41,42,43,50,51,52,45,57,74,75,76,77]),import.meta.url).then(({ReplayMenuRows:e})=>({default:e}))):void 0;function _I(){uh({type:`FULLSCREEN_CHANGED`,shown:document.fullscreenElement!==null,covered:U.getState().covered})}var vI=.5;async function yI(e){let{innerWidth:t,innerHeight:n}=e;await Nw()&&e.innerWidth===t&&e.innerHeight===n&&await new Promise(t=>{let n=()=>{clearTimeout(r),e.removeEventListener(`resize`,n),t()},r=setTimeout(n,vI*1e3);e.addEventListener(`resize`,n)})}function bI(){return Aw(Dw.getState())?()=>yI(window):document.fullscreenEnabled===!0?()=>document.documentElement.requestFullscreen():null}function xI(){return(0,Q.useEffect)(()=>(uh({type:`FULLSCREEN_READ`,shown:document.fullscreenElement!==null}),document.addEventListener(`fullscreenchange`,_I),()=>document.removeEventListener(`fullscreenchange`,_I)),[]),hh(e=>e.fullscreen)}function SI(){let e=W(),[t,n]=(0,Q.useState)(()=>$g(e));return(0,Q.useEffect)(()=>{let t=()=>n($g(e));t();let r=e.onAdd(V,t),i=e.onChange(V,t),a=e.onRemove(V,t);return()=>{r(),i(),a()}},[e]),t}function CI(e){return e.target instanceof Element&&e.target.closest(`[data-devtools]`)!==null||document.querySelector(`[data-devtools] [data-devtools-escape]`)!==null}function wI(){(0,Q.useEffect)(()=>{let e=e=>{let t=e.code||e.key;Ch(Et.menu).some(e=>e===t)&&(t!==`Escape`&&(Xx(e)||e.ctrlKey||e.altKey||e.metaKey)||CI(e)||(e.preventDefault(),e.stopImmediatePropagation(),!e.repeat&&(U.getState().covered||(Th()&&uh({type:`LOCK_READ`,held:!1}),hh.getState().pressEscape()))))};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})},[])}function TI(e,t){(0,Q.useEffect)(()=>{if(!e)return;if(!t){e.open&&e.close();return}let n=()=>{e.open&&e.close(),e.showModal(),(e.querySelector(`[data-menu-focus]`)??e).focus()};n();let r=new MutationObserver(e=>{e.some(({target:e})=>e instanceof HTMLDialogElement&&!e.hasAttribute(`data-engine-menu`)&&e.open)&&n()});return r.observe(document.body,{subtree:!0,attributes:!0,attributeFilter:[`open`]}),()=>r.disconnect()},[e,t])}function EI(){try{return Gv()?null:(0,Z.jsx)(DI,{})}catch(e){throw B(`PlayMenu`,e)}}function DI(){try{let e=_g(e=>e.canvas),t=_g(e=>e.captured),n=_g(e=>e.freed),r=W(),i=SI(),a=hh(e=>e.open),o=hh(e=>e.settingsOpen),s=xI(),c=q(e=>e.fullscreenOnPlay),l=J(e=>AF[e.access]),[u,d]=(0,Q.useState)(null);wI();let f=e!==null&&vh(e),p=U(e=>e.covered),m=GN(),h=qb(e=>Object.values(e.hidden).includes(`microphone`)),g=f&&i&&!t&&!n,_=Th(),v=!p&&(a||o||g&&!_);TI(u,v),(0,Q.useEffect)(()=>zw(v||p),[v,p]),(0,Q.useEffect)(()=>()=>zw(null),[]),(0,Q.useEffect)(()=>{_&&g&&!a&&!o&&e&&Bh(e)},[_,g,a,o,e]);let y=(0,Q.useRef)(null),b=(0,Q.useRef)(!1);(0,Q.useEffect)(()=>()=>y.current?.(),[]);let x=document.fullscreenEnabled===!0,S=e=>{Th()||e&&Nw()||x&&(e||uh({type:`LEAVE_FULLSCREEN`}),(e?document.documentElement.requestFullscreen():document.exitFullscreen()).catch(_I))},C=()=>{if(hh.getState().closeMenu(),!e||!f||!i||n)return;let t=c&&!s&&!Th()?bI():null;if(!t){Bh(e);return}let a=Dw.getState();if(Aw(a)&&!jw(a)||b.current){Bh(e),t().catch(()=>void 0);return}y.current=cg(e,t,{wanted:()=>$g(r),refused:()=>{b.current=!0}})};return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(QN,{menuButton:m&&!v,microphoneButton:!v}),(0,Z.jsxs)(`dialog`,{ref:d,"data-engine-menu":!0,"aria-label":`Menu`,tabIndex:-1,onCancel:e=>e.preventDefault(),onKeyDown:e=>{e.key===`Enter`&&e.target===e.currentTarget&&!o&&(e.preventDefault(),C())},className:K(`m-0 h-dvh max-h-none w-screen max-w-none items-center justify-center overflow-hidden bg-black/50 p-0 outline-none backdrop-blur-sm transition-[background-color,backdrop-filter] duration-200 open:flex backdrop:bg-transparent motion-reduce:transition-none`,`select-none [&_input]:select-text [&_textarea]:select-text`,`has-[[data-see-through]]:bg-black/25 has-[[data-see-through]]:backdrop-blur-none`),children:[v&&(!o||h)&&(0,Z.jsx)($N,{}),v?o?(0,Z.jsx)(cI,{onBack:()=>hh.getState().closeSettings()}):(0,Z.jsxs)(`div`,{className:K(gw,_w,`flex max-h-[calc(100dvh-1.5rem)] w-[min(20rem,calc(100vw-1.5rem))] flex-col gap-1 overflow-y-auto p-3`),children:[(0,Z.jsx)(rx,{onPress:C,variant:Gb.Primary,className:`mb-2 h-12 font-display text-lg`,children:`Play`}),l&&(0,Z.jsx)(`p`,{role:`status`,className:`-mt-1 mb-2 px-1 text-[13px] leading-5 text-menu-muted`,children:l}),(0,Z.jsx)(hI,{}),(0,Z.jsxs)(rx,{onPress:()=>hh.getState().openSettings(),className:`justify-between`,children:[`Settings`,(0,Z.jsx)(`svg`,{"aria-hidden":!0,viewBox:`0 0 16 16`,className:`-mr-1 size-4 text-menu-muted`,children:(0,Z.jsx)(`path`,{d:`M6 3.5 10.5 8 6 12.5`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.75`,strokeLinecap:`round`,strokeLinejoin:`round`})})]}),x&&(0,Z.jsx)(rx,{pressed:s,onPress:()=>S(!s),className:`justify-between`,children:`Fullscreen`}),gI&&(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(gI,{})}),(0,Z.jsxs)(`p`,{className:`mt-2 mb-1 flex items-center justify-center gap-1.5 text-[13px] text-menu-muted pointer-coarse:hidden`,children:[(0,Z.jsx)(`kbd`,{className:`rounded border border-menu-edge bg-menu-raised px-1.5 font-sans text-[11px] leading-4 font-semibold text-white/80`,children:`Esc`}),`brings this menu back`]})]}):null]})]})}catch(e){throw B(`MenuLayer`,e)}}function OI({screen:e}){try{let t=iy(wf,ls).find(Ts),n=G(t,ls);return n?(0,Z.jsx)(e,{seconds:n.seconds,secondsLeft:n.secondsLeft}):null}catch(e){throw B(`RespawnCover`,e)}}function kI({seconds:e,secondsLeft:t}){try{let n=Math.ceil(t),r={"--loading-progress":e>0?t/e:0};return(0,Z.jsx)(`div`,{className:`${$.root} bg-loading-background/55`,style:r,role:`timer`,"aria-label":`Respawning`,children:(0,Z.jsxs)(`div`,{className:$.foot,children:[(0,Z.jsx)(`p`,{className:`font-display text-[clamp(2.25rem,6vw,4.5rem)] leading-[0.92] font-bold tracking-tight tabular-nums`,children:`Back in ${n}`}),(0,Z.jsx)(`div`,{className:`mt-8`,children:(0,Z.jsx)(`div`,{className:$.track,children:(0,Z.jsx)(`div`,{className:$.fill})})}),(0,Z.jsx)(`div`,{className:$.under,children:(0,Z.jsx)(`span`,{className:$.stage,children:`Respawning`})})]})})}catch(e){throw B(`RespawnScreen`,e)}}var AI=ab().Out,jI=1e3;function MI({paced:e}){try{let t=L(e=>e.get),n=L(e=>e.frameloop),r=q(e=>e.frameRateCap),i=pP(fP(e=>e.refreshRate),r),a=(0,Q.useRef)(new kP),o=(0,Q.useRef)(0),s=(0,Q.useRef)(0),c=(0,Q.useRef)(null),l=(0,Q.useRef)(0),u=(0,Q.useCallback)(e=>{if(c.current!==null&&a.current.addFrame(e,e-c.current),c.current=e,e-s.current<jI)return;s.current=e;let t=a.current.estimateRefreshRate(e);t!==null&&Number.isFinite(t)&&(o.current=Math.max(o.current,t),o.current!==fP.getState().refreshRate&&fP.setState({refreshRate:o.current}))},[]);return(0,Q.useEffect)(()=>{let e=()=>{a.current=new kP,o.current=0,c.current=null};return window.addEventListener(`resize`,e),document.addEventListener(`visibilitychange`,e),()=>{window.removeEventListener(`resize`,e),document.removeEventListener(`visibilitychange`,e)}},[]),I(z(`FrameRateCap`,t=>{l.current=t.clock.elapsedTime,!e&&t.frameloop===`always`&&u(performance.now())})),(0,Q.useLayoutEffect)(()=>{let e=t();n===`never`&&!xm.frameloop&&(vb(e),e.clock.start()),e.clock.elapsedTime=l.current},[n,t]),(0,Q.useEffect)(()=>{if(!e||i<=1||n!==`never`||xm.frameloop)return;c.current=null;let r=0,a=0,o=e=>{u(e),r+=1,r%i===0&&(TP(e),NI(t())),a=requestAnimationFrame(o)};return a=requestAnimationFrame(o),()=>cancelAnimationFrame(a)},[e,i,n,t,u]),null}catch(e){throw B(`FrameRateCap`,e)}}function NI(e){e.advance(void 0,!0)}var PI=[1,.85,.7,.6,.5],FI=4,II=.85,LI=.95,RI=.5,zI=3,BI=500,VI=1e3,HI=5e3,UI=2,WI=1e4,GI=1e4,KI=3e5,qI=1.05,JI=2;function YI({minimumScale:e,maximumScale:t},n=1){let r=Math.min(t,n);return r<=e?[r]:[r,...PI.filter(t=>t<r&&t>e),e]}function XI(e,t){return Math.min(t??60,Math.max(e??60,60))}function ZI(){return{notch:0,windows:[],fruitlessDrops:0,stopped:!1,holdOffs:[]}}function QI(e){let t=0,n=0;for(let r of e)t+=r.frames,n+=r.milliseconds;return n>0?t*1e3/n:0}function $I(e,t,n){return{...e,notch:t,windows:[],changedAt:n}}function eL(e,t,n){let r=e.find(e=>e.notch===t),i=r?Math.min(r.milliseconds*2,KI):GI;return[...e.filter(e=>e.notch!==t),{notch:t,until:n+i,milliseconds:i}]}function tL(e,t,{notches:n,targetFrameRate:r}){let{now:i}=t,a=n.length-1,o=Math.min(e.notch,a),s=e.changedAt??i-t.milliseconds-BI,c={...e,notch:o,changedAt:s};if(i-t.milliseconds<s+BI-1)return c;let l=t.frames*1e3/t.milliseconds;if(c.trial){if(l<r*LI)return{...$I(c,c.trial.from,i),trial:void 0,holdOffs:eL(c.holdOffs,o,i)};let e=c.trial.windowsLeft-1;return e>0?{...c,trial:{...c.trial,windowsLeft:e}}:{...c,trial:void 0,windows:[],probation:{notch:o,until:i+WI}}}let u=[...c.windows,t].slice(-4);if(c={...c,windows:u},c.probe){if(u.length<FI)return c;if(QI(u)>=c.probe.frameRate*qI)return{...c,probe:void 0,fruitlessDrops:0};let e=c.fruitlessDrops+1;return{...$I(c,c.probe.from,i),probe:void 0,fruitlessDrops:e,stopped:e>=JI}}if(c.stopped)return c;let d=u.length>=2&&u.slice(-2).every(e=>e.frames*1e3/e.milliseconds<r*RI),f=QI(u),p=u.filter(e=>e.frames*1e3/e.milliseconds<r*II).length,m=u.length===FI&&f<r*II&&p>=zI;if((d||m)&&o<a&&i-s>=VI){let e=c.probation&&c.probation.until>i?c.probation.notch:void 0;return{...$I(c,o+1,i),probe:{from:o,frameRate:f},probation:void 0,holdOffs:e===void 0?c.holdOffs:eL(c.holdOffs,e,i)}}let h=c.holdOffs.some(e=>e.notch===o-1&&e.until>i);return o>0&&!h&&u.length===FI&&f>=r*LI&&i-s>=HI?{...$I(c,o-1,i),trial:{from:o,windowsLeft:UI}}:c}function nL({children:e}){try{let{quality:t}=Rv(`QualityRig`),n=L(e=>e.get),r=L(e=>e.setDpr),i=vm(t,e=>e.deviceRead),a=vm(t,Mv),o=vm(t,e=>Math.min(window.devicePixelRatio,Ov(e).pixelRatio)*Uv(e));return(0,Q.useLayoutEffect)(()=>{t.getState().deviceRead||t.getState().detectDevice({renderer:Dv(n().gl),coarsePointer:Hv(),screenPixels:kv(),devicePixelRatio:Ev()})},[t,n]),(0,Q.useLayoutEffect)(()=>r(o),[r,o]),(0,Z.jsxs)(Z.Fragment,{children:[i&&a&&(0,Z.jsx)(rL,{quality:t}),i?e:null]})}catch(e){throw B(`QualityRig`,e)}}function rL({quality:e}){try{let t=U(e=>e.covered),n=kh(e=>e.paused&&!e.editing),r=hP(q(e=>e.frameRateCap)),i=L(e=>e.frameloop===`never`),a=Lv(),o=vm(e,bv),s=vm(e,e=>e.renderScale??1),c=vm(e,e=>e.dynamicResolutionBounds),l=(0,Q.useMemo)(()=>YI(c,s),[c,s]),u=(0,Q.useRef)(ZI()),d=(0,Q.useRef)({frames:0,since:-1});return(0,Q.useEffect)(()=>{u.current=ZI(),d.current.since=-1,e.getState().setDynamicScale(l[0])},[e,l,a,o]),(0,Q.useEffect)(()=>{let e=()=>{d.current.since=-1};return window.addEventListener(`resize`,e),document.addEventListener(`visibilitychange`,e),()=>{window.removeEventListener(`resize`,e),document.removeEventListener(`visibilitychange`,e)}},[]),I(z(`DynamicResolution`,()=>{let a=d.current;if(t||n||r||i||document.hidden){a.since=-1;return}let o=performance.now();if(a.since<0){a.since=o,a.frames=0;return}a.frames+=1;let s=o-a.since;if(s<500)return;let f=tL(u.current,{frames:a.frames,milliseconds:s,now:o},{notches:l,targetFrameRate:XI(fP.getState().refreshRate,c.targetFrameRate)});f.notch!==u.current.notch&&e.getState().setDynamicScale(l[f.notch]),u.current=f,a.since=o,a.frames=0})),null}catch(e){throw B(`DynamicResolution`,e)}}var iL=new Float32Array(1),aL=new Float32Array(2),oL=new Float32Array(3),sL=new Float32Array(4),cL=new Float32Array(9),lL=new Float32Array(16),uL=[];for(let e of[iL,aL,oL,sL,cL,lL])uL[e.length]=e;function dL(e,t){let n=uL[e.length],r=!1;for(let i=0;i<e.length;i+=1){let a=t[i];e[i]!==a&&(r=!0),e[i]=a,n[i]=a}return r}function fL(e,t){let n=typeof t==`number`?t:Number(t);this.cache[0]!==n&&(this.cache[0]=iL[0]=n,e.uniform1fv(this.addr,iL))}function pL(e,t){let n=this.cache,r,i;if(t instanceof _)r=t.x,i=t.y;else if(typeof t==`object`&&`x`in t)r=t.x,i=t.y;else{dL(n,t)&&e.uniform2fv(this.addr,aL);return}(n[0]!==r||n[1]!==i)&&(n[0]=aL[0]=r,n[1]=aL[1]=i,e.uniform2fv(this.addr,aL))}function mL(e,t){let n=this.cache;if(t instanceof j){if(n[0]===t.x&&n[1]===t.y&&n[2]===t.z)return;n[0]=oL[0]=t.x,n[1]=oL[1]=t.y,n[2]=oL[2]=t.z}else if(t instanceof he){if(n[0]===t.r&&n[1]===t.g&&n[2]===t.b)return;n[0]=oL[0]=t.r,n[1]=oL[1]=t.g,n[2]=oL[2]=t.b}else if(typeof t==`object`&&`x`in t){let e=`z`in t?t.z??0:0;if(n[0]===t.x&&n[1]===t.y&&n[2]===e)return;n[0]=oL[0]=t.x,n[1]=oL[1]=t.y,n[2]=oL[2]=e}else if(typeof t==`object`&&`r`in t){if(n[0]===t.r&&n[1]===t.g&&n[2]===t.b)return;n[0]=oL[0]=t.r,n[1]=oL[1]=t.g,n[2]=oL[2]=t.b}else if(!dL(n,t))return;e.uniform3fv(this.addr,oL)}function hL(e,t){let n=this.cache,r,i,a,o;if(t instanceof Re)r=t.x,i=t.y,a=t.z,o=t.w;else if(t instanceof P)r=t.x,i=t.y,a=t.z,o=t.w;else if(typeof t==`object`&&`x`in t)r=t.x,i=t.y,a=`z`in t?t.z??0:0,o=`w`in t?t.w??0:0;else{dL(n,t)&&e.uniform4fv(this.addr,sL);return}(n[0]!==r||n[1]!==i||n[2]!==a||n[3]!==o)&&(n[0]=sL[0]=r,n[1]=sL[1]=i,n[2]=sL[2]=a,n[3]=sL[3]=o,e.uniform4fv(this.addr,sL))}function gL(e,t){let n=t instanceof se?t.elements:vL(t);dL(this.cache,n)&&e.uniformMatrix3fv(this.addr,!1,cL)}function _L(e,t){let n=t instanceof oe?t.elements:vL(t);dL(this.cache,n)&&e.uniformMatrix4fv(this.addr,!1,lL)}function vL(e){return typeof e==`object`&&`elements`in e?e.elements:e}var yL=new Map([[5126,[fL,1]],[35664,[pL,2]],[35665,[mL,3]],[35666,[hL,4]],[35675,[gL,9]],[35676,[_L,16]]]);function bL(e){for(let t of e.seq){if(t.seq){bL({seq:t.seq});continue}if(t.size!==void 0||t.type===void 0)continue;let e=yL.get(t.type);if(!e||t.setValue===e[0])continue;let[n,r]=e,i=Array.isArray(t.cache)?t.cache:[],a=new Float64Array(r).fill(NaN);for(let e=0;e<r;e+=1){let t=i[e];typeof t==`number`&&(a[e]=t)}t.cache=a,t.setValue=n}}var xL=new WeakSet;function SL(e){let t=e.info.programs;if(t)for(let e of t)!xL.has(e)&&e.isReady()&&(xL.add(e),bL(e.getUniforms()))}function CL(e,t){let n=new Set,r=!1,i=kL(e,(i,a)=>{let o=i.getRenderTarget()!==null;r||n.has(o)||(n.add(o),i.compileAsync(e,a).then(()=>{r||(TL(i),EL(i,e),t())}))});return()=>{r=!0,i()}}async function wL({renderer:e,scene:t,camera:n,target:r,change:i,undo:a}){i();let o=e.getRenderTarget(),s=[e.compileAsync(t,n)];r&&(e.setRenderTarget(r),s.push(e.compileAsync(t,n)),e.setRenderTarget(o)),a(),await Promise.all(s),TL(e)}function TL(e){for(let t of e.info.programs??[])t.getUniforms(),t.getAttributes()}function EL(e,t){let n=new Set,r=t=>{if(typeof t==`object`&&t&&!n.has(t)){if(n.add(t),t.isTexture){e.initTexture(t);return}if(Array.isArray(t))for(let e of t)r(e);else if(DL(t))for(let e of Object.values(t))r(e)}},i=e=>{for(let t of Object.values(e??{}))r(t?.value)};t.traverse(t=>{let n=t.material;if(n)for(let t of Array.isArray(n)?n:[n]){for(let e of Object.values(t))e?.isTexture&&r(e);i(t.uniforms),i(e.properties.get(t).uniforms)}})}function DL(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function OL(e){let t=!1,n=kL(e,(n,r)=>{t||n.compile(e,r)});return()=>{t=!0,n()}}function kL(e,t){let n=e.onBeforeRender,r=(r,i,a,...o)=>{n.call(e,r,i,a,...o);try{t(r,a)}catch(e){console.warn(`The shader warm-up failed, so the first draw compiles the shaders instead. Check the custom materials' shaders:`,e)}};return e.onBeforeRender=r,()=>{e.onBeforeRender===r&&(e.onBeforeRender=n)}}function AL(){try{let e=L(e=>e.get),t=Eg(eh.ProgramWarmUp),n=U(e=>e.mountedScene!==null),r=U(e=>e.covered),i=U(e=>e.mountedScene!==null&&!e.loading&&(e.settled||!e.covered)),[a,o]=(0,Q.useState)(0),s=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{if(t&&!jL(e().gl))return hg.setState({runsFrames:!1}),()=>hg.setState({runsFrames:!0})},[e,t]),(0,Q.useEffect)(()=>{let{gl:i,scene:a,invalidate:o}=e();if(!t||!n||!r||!jL(i))return;let s=OL(a);return o(),s},[e,t,n,r]),(0,Q.useEffect)(()=>{if(!i)return;let{gl:n,scene:r,invalidate:a}=e(),o=()=>U.setState({shadersCompiled:!1});if(!t||!jL(n))return U.setState({shadersCompiled:!0}),o;let s=CL(r,()=>U.setState({shadersCompiled:!0}));return a(),()=>{s(),o()}},[e,t,i,a]),I(z(`WarmPrograms`,({gl:e,invalidate:n})=>{t&&SL(e);let{covered:r,settled:i,shadersCompiled:a,ready:c}=U.getState();if(!r||!i||!a||c){s.current=null;return}let l=e.info?.programs?.length??0;s.current===l?U.setState({ready:!0}):s.current===null?s.current=l:(s.current=null,o(e=>e+1)),n()})),null}catch(e){throw B(`WarmPrograms`,e)}}function jL(e){return typeof e?.compileAsync==`function`}function ML({name:e,component:t}){try{let{scenes:n}=Rv(`Scene`);return(0,Q.useEffect)(()=>n.getState().registerScene(e,t),[n,e,t]),null}catch(e){throw B(`Scene`,e)}}function NL(){try{let{scenes:e,active:t,reloads:n}=Fv(),r=t!==null&&Object.hasOwn(e,t)?e[t]:null,i=Jy({id:t===null?null:Eh(t),name:t??void 0,kind:yh.Scene,type:r??void 0});return(0,Q.useEffect)(()=>(U.setState({mountedScene:t}),t!==null&&Dm(wm.Scene,t),()=>U.setState({mountedScene:null})),[t]),(0,Z.jsx)(rb,{value:i,children:r&&(0,Z.jsx)(Vv,{value:``,children:(0,Z.jsx)(r,{})},`${t}:${n}`)})}catch(e){throw B(`ActiveScene`,e)}}var PL=()=>void 0,FL={seconds:10,left:5};function IL(){try{return(0,Z.jsx)(nb,{children:(0,Z.jsxs)(`div`,{className:`fixed inset-0 flex flex-wrap content-start items-start gap-4 p-4`,children:[(0,Z.jsx)(`div`,{className:mw,children:(0,Z.jsx)(xy,{children:`Glass`})}),(0,Z.jsx)(`div`,{className:K(hw,`p-3`),children:(0,Z.jsx)(xy,{children:`Menu`})}),(0,Z.jsx)(`div`,{className:K(gw,`p-3`),children:(0,Z.jsx)(xy,{children:`Solid menu`})}),Object.values(ly).map(e=>(0,Z.jsx)(by,{variant:e,onPress:PL,children:e},e)),(0,Z.jsx)(by,{onPress:PL,pressed:!1,label:`Off`,children:(0,Z.jsx)(Py,{name:`check`})}),(0,Z.jsx)(Cy,{label:`Tap`,onTap:PL,children:(0,Z.jsx)(Py,{name:`coins`})}),(0,Z.jsx)(Iy,{level:2,children:`Heading`}),(0,Z.jsx)(wy,{icon:`coins`,label:`Coins`,value:12}),(0,Z.jsx)(Fy,{label:`Health`,value:40,maximum:100,showValue:!0}),(0,Z.jsx)(dy,{value:.5,variant:uy.HealthFill,className:`h-2 w-24`}),(0,Z.jsx)(_y,{slots:[{id:`cooldown`,label:`Cooldown`,hotkey:`1`,icon:(0,Z.jsx)(Py,{name:`check`}),cooldown:FL},{id:`casting`,label:`Casting`,icon:(0,Z.jsx)(Py,{name:`coins`}),casting:FL},{id:`short`,label:`Short`,icon:(0,Z.jsx)(Py,{name:`check`}),noResource:25,outOfRange:!0}],onPress:PL}),(0,Z.jsx)(`div`,{className:`menu-scroll h-16 w-32 overflow-y-auto`,children:(0,Z.jsx)(`p`,{className:`h-32 text-white`,children:`Scroll`})}),(0,Z.jsx)(`input`,{type:`range`,className:`menu-slider w-32`,defaultValue:50}),(0,Z.jsx)(`div`,{className:`size-24 bg-black/50 backdrop-blur-sm`}),(0,Z.jsx)(`div`,{className:K(mw,`animate-ping`),children:(0,Z.jsx)(xy,{children:`Press`})})]})})}catch(e){throw B(`EngineWarmHud`,e)}}var LL=(e,t,n)=>new Promise((r,i)=>{var a=e=>{try{s(n.next(e))}catch(e){i(e)}},o=e=>{try{s(n.throw(e))}catch(e){i(e)}},s=e=>e.done?r(e.value):Promise.resolve(e.value).then(a,o);s((n=n.apply(e,t)).next())}),RL={Aa:`aa`,Ih:`ih`,Ou:`ou`,Ee:`ee`,Oh:`oh`,Blink:`blink`,Happy:`happy`,Angry:`angry`,Sad:`sad`,Relaxed:`relaxed`,LookUp:`lookUp`,Surprised:`surprised`,LookDown:`lookDown`,LookLeft:`lookLeft`,LookRight:`lookRight`,BlinkLeft:`blinkLeft`,BlinkRight:`blinkRight`,Neutral:`neutral`},zL={Color:`color`,EmissionColor:`emissionColor`,ShadeColor:`shadeColor`,MatcapColor:`matcapColor`,RimColor:`rimColor`,OutlineColor:`outlineColor`};zL.Color,zL.EmissionColor,zL.ShadeColor,zL.RimColor,zL.OutlineColor,new he,new _,new j,new j,new P;var BL={hips:null,spine:`hips`,chest:`spine`,upperChest:`chest`,neck:`upperChest`,head:`neck`,leftEye:`head`,rightEye:`head`,jaw:`head`,leftUpperLeg:`hips`,leftLowerLeg:`leftUpperLeg`,leftFoot:`leftLowerLeg`,leftToes:`leftFoot`,rightUpperLeg:`hips`,rightLowerLeg:`rightUpperLeg`,rightFoot:`rightLowerLeg`,rightToes:`rightFoot`,leftShoulder:`upperChest`,leftUpperArm:`leftShoulder`,leftLowerArm:`leftUpperArm`,leftHand:`leftLowerArm`,rightShoulder:`upperChest`,rightUpperArm:`rightShoulder`,rightLowerArm:`rightUpperArm`,rightHand:`rightLowerArm`,leftThumbMetacarpal:`leftHand`,leftThumbProximal:`leftThumbMetacarpal`,leftThumbDistal:`leftThumbProximal`,leftIndexProximal:`leftHand`,leftIndexIntermediate:`leftIndexProximal`,leftIndexDistal:`leftIndexIntermediate`,leftMiddleProximal:`leftHand`,leftMiddleIntermediate:`leftMiddleProximal`,leftMiddleDistal:`leftMiddleIntermediate`,leftRingProximal:`leftHand`,leftRingIntermediate:`leftRingProximal`,leftRingDistal:`leftRingIntermediate`,leftLittleProximal:`leftHand`,leftLittleIntermediate:`leftLittleProximal`,leftLittleDistal:`leftLittleIntermediate`,rightThumbMetacarpal:`rightHand`,rightThumbProximal:`rightThumbMetacarpal`,rightThumbDistal:`rightThumbProximal`,rightIndexProximal:`rightHand`,rightIndexIntermediate:`rightIndexProximal`,rightIndexDistal:`rightIndexIntermediate`,rightMiddleProximal:`rightHand`,rightMiddleIntermediate:`rightMiddleProximal`,rightMiddleDistal:`rightMiddleIntermediate`,rightRingProximal:`rightHand`,rightRingIntermediate:`rightRingProximal`,rightRingDistal:`rightRingIntermediate`,rightLittleProximal:`rightHand`,rightLittleIntermediate:`rightLittleProximal`,rightLittleDistal:`rightLittleIntermediate`};function VL(e){return e.invert?e.invert():e.inverse(),e}new j,new P,new j,new P,new j,new P,new P,new j,new j;var HL=Math.sqrt(2)/2;new P(0,0,-HL,HL),new j(0,1,0);var UL=new j,WL=new j;function GL(e,t){return e.matrixWorld.decompose(UL,t,WL),t}function KL(e){return[Math.atan2(-e.z,e.x),Math.atan2(e.y,Math.sqrt(e.x*e.x+e.z*e.z))]}function qL(e){let t=Math.round(e/2/Math.PI);return e-2*Math.PI*t}var JL=new j(0,0,1),YL=new j,XL=new j,ZL=new j,QL=new P,$L=new P,eR=new P,tR=new P,nR=new ke,rR=class e{constructor(e,t){this.offsetFromHeadBone=new j,this.autoUpdate=!0,this.faceFront=new j(0,0,1),this.humanoid=e,this.applier=t,this._yaw=0,this._pitch=0,this._needsUpdate=!0,this._restHeadWorldQuaternion=this.getLookAtWorldQuaternion(new P)}get yaw(){return this._yaw}set yaw(e){this._yaw=e,this._needsUpdate=!0}get pitch(){return this._pitch}set pitch(e){this._pitch=e,this._needsUpdate=!0}get euler(){return console.warn(`VRMLookAt: euler is deprecated. use getEuler() instead.`),this.getEuler(new ke)}getEuler(e){return e.set(F.DEG2RAD*this._pitch,F.DEG2RAD*this._yaw,0,`YXZ`)}copy(e){if(this.humanoid!==e.humanoid)throw Error(`VRMLookAt: humanoid must be same in order to copy`);return this.offsetFromHeadBone.copy(e.offsetFromHeadBone),this.applier=e.applier,this.autoUpdate=e.autoUpdate,this.target=e.target,this.faceFront.copy(e.faceFront),this}clone(){return new e(this.humanoid,this.applier).copy(this)}reset(){this._yaw=0,this._pitch=0,this._needsUpdate=!0}getLookAtWorldPosition(e){let t=this.humanoid.getRawBoneNode(`head`);return e.copy(this.offsetFromHeadBone).applyMatrix4(t.matrixWorld)}getLookAtWorldQuaternion(e){return GL(this.humanoid.getRawBoneNode(`head`),e)}getFaceFrontQuaternion(e){if(this.faceFront.distanceToSquared(JL)<.01)return e.copy(this._restHeadWorldQuaternion).invert();let[t,n]=KL(this.faceFront);return nR.set(0,.5*Math.PI+t,n,`YZX`),e.setFromEuler(nR).premultiply(tR.copy(this._restHeadWorldQuaternion).invert())}getLookAtWorldDirection(e){return this.getLookAtWorldQuaternion($L),this.getFaceFrontQuaternion(eR),e.copy(JL).applyQuaternion($L).applyQuaternion(eR).applyEuler(this.getEuler(nR))}lookAt(e){let t=QL.copy(this._restHeadWorldQuaternion).multiply(VL(this.getLookAtWorldQuaternion($L))),n=this.getLookAtWorldPosition(XL),r=ZL.copy(e).sub(n).applyQuaternion(t).normalize(),[i,a]=KL(this.faceFront),[o,s]=KL(r),c=qL(o-i),l=qL(a-s);this._yaw=F.RAD2DEG*c,this._pitch=F.RAD2DEG*l,this._needsUpdate=!0}update(e){this.target!=null&&this.autoUpdate&&this.lookAt(this.target.getWorldPosition(YL)),this._needsUpdate&&(this._needsUpdate=!1,this.applier.applyYawPitch(this._yaw,this._pitch))}};rR.EULER_ORDER=`YXZ`;var iR=rR;new j(0,0,1),new P,new P,new ke(0,0,0,`YXZ`);var aR=180/Math.PI,oR=new ke,sR=class extends c{constructor(e){super(),this.vrmLookAt=e,this.type=`VRMLookAtQuaternionProxy`;let t=this.rotation._onChangeCallback;this.rotation._onChange(()=>{t(),this._applyToLookAt()});let n=this.quaternion._onChangeCallback;this.quaternion._onChange(()=>{n(),this._applyToLookAt()})}_applyToLookAt(){oR.setFromQuaternion(this.quaternion,iR.EULER_ORDER),this.vrmLookAt.yaw=aR*oR.y,this.vrmLookAt.pitch=aR*oR.x}};function cR(e,t,n){let r=new Map,i=new Map;for(let[r,a]of e.humanoidTracks.rotation.entries()){let e=t.getNormalizedBoneNode(r)?.name;if(e!=null){let t=new ge(`${e}.quaternion`,a.times,a.values.map((e,t)=>n===`0`&&t%2==0?-e:e));i.set(r,t)}}for(let[i,a]of e.humanoidTracks.translation.entries()){let o=t.getNormalizedBoneNode(i)?.name;if(o!=null){let s=e.restHipsPosition.y,c=t.normalizedRestPose.hips.position[1]/s,l=a.clone();l.values=l.values.map((e,t)=>(n===`0`&&t%3!=1?-e:e)*c),l.name=`${o}.position`,r.set(i,l)}}return{translation:r,rotation:i}}function lR(e,t){let n=new Map,r=new Map;for(let[r,i]of e.expressionTracks.preset.entries()){let e=t.getExpressionTrackName(r);if(e!=null){let t=i.clone();t.name=e,n.set(r,t)}}for(let[n,i]of e.expressionTracks.custom.entries()){let e=t.getExpressionTrackName(n);if(e!=null){let t=i.clone();t.name=e,r.set(n,t)}}return{preset:n,custom:r}}function uR(e,t){if(e.lookAtTrack==null)return null;let n=e.lookAtTrack.clone();return n.name=t,n}function dR(e,t){let n=[],r=cR(e,t.humanoid,t.meta.metaVersion);if(n.push(...r.translation.values()),n.push(...r.rotation.values()),t.expressionManager!=null){let r=lR(e,t.expressionManager);n.push(...r.preset.values()),n.push(...r.custom.values())}if(t.lookAt!=null){let r=t.scene.children.find(e=>e instanceof sR);r==null?(console.warn(`createVRMAnimationClip: VRMLookAtQuaternionProxy is not found. Creating a new one automatically. To suppress this warning, create a VRMLookAtQuaternionProxy manually`),r=new sR(t.lookAt),r.name=`VRMLookAtQuaternionProxy`,t.scene.add(r)):r.name===``&&(console.warn(`createVRMAnimationClip: VRMLookAtQuaternionProxy is found but its name is not set. Setting the name automatically. To suppress this warning, set the name manually`),r.name=`VRMLookAtQuaternionProxy`);let i=uR(e,`${r.name}.quaternion`);i!=null&&n.push(i)}return new we(`Clip`,e.duration,n)}var fR=class{constructor(){this.duration=0,this.restHipsPosition=new j,this.humanoidTracks={translation:new Map,rotation:new Map},this.expressionTracks={preset:new Map,custom:new Map},this.lookAtTrack=null}};function pR(e,t){let n=e.length,r=[],i=[],a=0;for(let o=0;o<n;o++){let n=e[o];a<=0&&(a=t,i=[],r.push(i)),i.push(n),a--}return r}var mR=new oe,hR=new j,gR=new P,_R=new P,vR=new P,yR=new Set([`1.0`,`1.0-draft`]),bR=new Set(Object.values(RL)),xR=class{constructor(e){this.parser=e}get name(){return`VRMC_vrm_animation`}afterRoot(e){return LL(this,null,function*(){let t=e.parser.json,n=t.extensionsUsed;if(n==null||n.indexOf(this.name)==-1)return;let r=t.extensions?.[this.name];if(r==null)return;let i=r.specVersion;if(i==null)console.warn(`VRMAnimationLoaderPlugin: specVersion of the VRMA is not defined. Consider updating the animation file. Assuming the spec version is 1.0.`);else{if(!yR.has(i)){console.warn(`VRMAnimationLoaderPlugin: Unknown VRMC_vrm_animation spec version: ${i}`);return}i===`1.0-draft`&&console.warn(`VRMAnimationLoaderPlugin: Using a draft spec version: 1.0-draft. Some behaviors may be different. Consider updating the animation file.`)}let a=this._createNodeMap(r),o=yield this._createBoneWorldMatrixMap(e,r),s=r.humanoid?.humanBones.hips?.node,c=s==null?null:yield e.parser.getDependency(`node`,s),l=new j;c?.getWorldPosition(l),l.y<.001&&console.warn(`VRMAnimationLoaderPlugin: The loaded VRM Animation might violate the VRM T-pose (The y component of the rest hips position is approximately zero or below.)`);let u=e.animations.map((e,n)=>{let r=t.animations[n],i=this._parseAnimation(e,r,a,o);return i.restHipsPosition=l,i});e.userData.vrmAnimations=u})}_createNodeMap(e){let t=new Map,n=new Map,r=e.humanoid?.humanBones;r&&Object.entries(r).forEach(([e,n])=>{let r=n?.node;r!=null&&t.set(r,e)});let i=e.expressions?.preset;i&&Object.entries(i).forEach(([e,t])=>{let r=t?.node;r!=null&&n.set(r,e)});let a=e.expressions?.custom;return a&&Object.entries(a).forEach(([e,t])=>{let{node:r}=t;n.set(r,e)}),{humanoidIndexToName:t,expressionsIndexToName:n,lookAtIndex:e.lookAt?.node??null}}_createBoneWorldMatrixMap(e,t){return LL(this,null,function*(){e.scene.updateWorldMatrix(!1,!0);let n=yield e.parser.getDependencies(`node`),r=new Map;if(t.humanoid==null)return r;for(let[e,i]of Object.entries(t.humanoid.humanBones)){let t=i?.node;if(t!=null){let i=n[t];r.set(e,i.matrixWorld),e===`hips`&&r.set(`hipsParent`,i.parent?.matrixWorld??mR)}}return r})}_parseAnimation(e,t,n,r){let i=e.tracks,a=t.channels,o=new fR;return o.duration=e.duration,a.forEach((e,t)=>{let{node:a,path:s}=e.target,c=i[t];if(a==null)return;let l=n.humanoidIndexToName.get(a);if(l!=null){let e=BL[l];for(;e!=null&&r.get(e)==null;)e=BL[e];if(e??=`hipsParent`,s===`translation`){if(l!==`hips`)console.warn(`The loading animation contains a translation track for ${l}, which is not permitted in the VRMC_vrm_animation spec. ignoring the track`);else{let e=r.get(`hipsParent`),t=pR(c.values,3).flatMap(t=>hR.fromArray(t).applyMatrix4(e).toArray()),n=c.clone();n.values=new Float32Array(t),o.humanoidTracks.translation.set(l,n)}}else if(s===`rotation`){let t=r.get(l),n=r.get(e);t.decompose(hR,gR,hR),gR.invert(),n.decompose(hR,_R,hR);let i=pR(c.values,4).flatMap(e=>vR.fromArray(e).premultiply(_R).multiply(gR).toArray()),a=c.clone();a.values=new Float32Array(i),o.humanoidTracks.rotation.set(l,a)}else throw Error(`Invalid path "${s}"`);return}let u=n.expressionsIndexToName.get(a);if(u!=null){if(s===`translation`){let e=c.times,t=new Float32Array(c.values.length/3);for(let e=0;e<t.length;e++)t[e]=c.values[3*e];let n=new C(`${u}.weight`,e,t);bR.has(u)?o.expressionTracks.preset.set(u,n):o.expressionTracks.custom.set(u,n)}else throw Error(`Invalid path "${s}"`);return}if(a===n.lookAtIndex){if(s===`rotation`)o.lookAtTrack=c;else throw Error(`Invalid path "${s}"`)}}),o}},SR={x:NaN,y:NaN,z:NaN,reachSquared:NaN,nearestSquared:NaN,nearestX:NaN,nearestY:NaN,nearestZ:NaN,nearestFace:0},CR=new WeakMap,wR,TR,ER=8,DR=65535;function OR(e){let{float32:t}=TR,n=Math.max(t[e],Math.min(t[e+3],SR.x))-SR.x,r=Math.max(t[e+1],Math.min(t[e+4],SR.y))-SR.y,i=Math.max(t[e+2],Math.min(t[e+5],SR.z))-SR.z;return n*n+r*r+i*i}function kR(e){let{geometry:t}=wR,{index:n}=t,r=t.getAttribute(`position`).array,i=e*3,a=n?n.getX(i):i,o=n?n.getX(i+1):i+1,s=n?n.getX(i+2):i+2,c=r[a*3],l=r[a*3+1],u=r[a*3+2],d=r[o*3],f=r[o*3+1],p=r[o*3+2],m=r[s*3],h=r[s*3+1],g=r[s*3+2],{x:_,y:v,z:y}=SR,b=d-c,x=f-l,S=p-u,C=m-c,w=h-l,T=g-u,E=c,D=l,O=u,k=_-c,ee=v-l,A=y-u,j=b*k+x*ee+S*A,M=C*k+w*ee+T*A;if(!(j<=0&&M<=0)){let e=_-d,t=v-f,n=y-p,r=b*e+x*t+S*n,i=C*e+w*t+T*n,a=j*i-r*M;if(r>=0&&i<=r)E=d,D=f,O=p;else if(a<=0&&j>=0&&r<=0){let e=j/(j-r);E+=b*e,D+=x*e,O+=S*e}else{let e=_-m,t=v-h,n=y-g,o=b*e+x*t+S*n,s=C*e+w*t+T*n,c=o*M-j*s,l=r*s-o*i;if(s>=0&&o<=s)E=m,D=h,O=g;else if(c<=0&&M>=0&&s<=0){let e=M/(M-s);E+=C*e,D+=w*e,O+=T*e}else if(l<=0&&i-r>=0&&o-s>=0){let e=(i-r)/(i-r+(o-s));E=d+(m-d)*e,D=f+(h-f)*e,O=p+(g-p)*e}else{let e=1/(l+c+a),t=c*e,n=a*e;E+=b*t,D+=x*t,O+=S*t,E+=C*n,D+=w*n,O+=T*n}}}let te=_-E,ne=v-D,re=y-O,ie=te*te+ne*ne+re*re;ie<SR.nearestSquared&&(SR.nearestX=E,SR.nearestY=D,SR.nearestZ=O,SR.nearestSquared=ie,SR.nearestFace=e)}function AR(e,t){for(let n=e;n<e+t;n++)kR(wR.indirect?wR.resolveTriangleIndex(n):n)}function jR(e){let{uint16:t,uint32:n}=TR,r=e*2;if(t[r+15]===DR){AR(n[e+6],t[r+14]);return}let i=e+ER,a=e+n[e+6]*ER,o=OR(i),s=OR(a);if(s<o){let e=i;i=a,a=e;let t=o;o=s,s=t}o<SR.nearestSquared&&o<SR.reachSquared&&jR(i),s<SR.nearestSquared&&s<SR.reachSquared&&jR(a)}function MR(e){let t=CR.get(e);return t||(t={float32:new Float32Array(e),uint16:new Uint16Array(e),uint32:new Uint32Array(e)},CR.set(e,t)),t}function NR(e,t){let{point:n,reach:r,target:i}=t;wR=e,SR.x=n.x,SR.y=n.y,SR.z=n.z,SR.reachSquared=r*r,SR.nearestSquared=1/0;let a=e._roots;for(let e=0;e<a.length;e++)TR=MR(a[e]),jR(0);if(SR.nearestSquared>SR.reachSquared)return!1;let o=Math.sqrt(SR.nearestSquared),s=n.x-SR.nearestX,c=n.y-SR.nearestY,l=n.z-SR.nearestZ,u=1/(Math.sqrt(s*s+c*c+l*l)||1);s*=u,c*=u,l*=u;let{geometry:d}=e,{index:f}=d,p=d.getAttribute(`position`).array,m=SR.nearestFace*3,h=f?f.getX(m):m,g=f?f.getX(m+1):m+1,_=f?f.getX(m+2):m+2,v=p[g*3],y=p[g*3+1],b=p[g*3+2],x=p[_*3]-v,S=p[_*3+1]-y,C=p[_*3+2]-b,w=p[h*3]-v,T=p[h*3+1]-y,E=p[h*3+2]-b,D=S*E-C*T,O=C*w-x*E,k=x*T-S*w,ee=D*D+O*O+k*k;if(ee>0){let e=1/Math.sqrt(ee);D*=e,O*=e,k*=e}else D=0,O=0,k=0;return s*D+c*O+l*k>=0?(i.set(s,c,l),t.depth=o):(i.set(D,O,k),t.depth=-o),!0}var PR=()=>({colliderMatrix:new oe,position:new j,radius:NaN,distance:NaN,direction:new j}),FR=PR(),IR=PR(),LR=FR.direction,RR=new j,zR=new j,BR=new j,VR=class extends dx{calculateCollision(e,t,n,r){return IR.colliderMatrix=e,IR.position=t,IR.radius=n,IR.direction=r,this.measureContact(IR),IR.distance}};function HR(e){LR.subVectors(FR.position,zR.setFromMatrixPosition(FR.colliderMatrix));let t=LR.length(),n=e.inside?e.radius-FR.radius-t:t-FR.radius-e.radius;n<0&&(LR.multiplyScalar(1/t),e.inside&&LR.negate()),FR.distance=n}function UR(e){zR.setFromMatrixPosition(FR.colliderMatrix),BR.subVectors(e.tail,e.offset).applyMatrix4(FR.colliderMatrix),BR.sub(zR);let t=BR.lengthSq();LR.copy(FR.position).sub(zR);let n=BR.dot(LR);n<=0||(t<=n?LR.sub(BR):LR.sub(BR.multiplyScalar(n/t)));let r=LR.length(),i=e.inside?e.radius-FR.radius-r:r-FR.radius-e.radius;i<0&&(LR.multiplyScalar(1/r),e.inside&&LR.negate()),FR.distance=i}function WR(e){let t=this._worldSpaceBoneLength;RR.setFromMatrixPosition(this.bone.matrixWorld),FR.position=e,FR.radius=this.settings.hitRadius;let{colliderGroups:n}=this;for(let r=0;r<n.length;r++){let{colliders:i}=n[r];for(let n=0;n<i.length;n++){let{colliderMatrix:r,shape:a}=i[n];if(FR.colliderMatrix=r,a.constructor===fx?HR(a):a.constructor===px?UR(a):a instanceof VR?a.measureContact(FR):FR.distance=a.calculateCollision(r,e,FR.radius,LR),FR.distance<0){e.addScaledVector(LR,-FR.distance),e.sub(RR);let n=e.length();e.multiplyScalar(t/n).add(RR)}}}}function GR(e,t){let{children:n}=t;for(let t=0;t<n.length;t++){let r=n[t];e._relevantChildrenUpdated(r)||GR(e,r)}}var KR=0,qR=()=>KR;function JR(e){KR++,this._sortJoints();let t=this._ancestors;for(let e=0;e<t.length;e++)t[e].updateWorldMatrix(e===0,!1);let n=this._sortedJoints;for(let t=0;t<n.length;t++){let r=n[t];r.bone.updateMatrix(),r.bone.updateWorldMatrix(!1,!1),r.update(e),GR(this,r.bone)}}function YR(e){let t=e;if(typeof t._sortJoints!=`function`||typeof t._relevantChildrenUpdated!=`function`)throw R(Error(`three-vrm's spring manager no longer holds the _sortJoints and _relevantChildrenUpdated of 3.5.5, which the engine's spring update reads.`),`SP0254`,void 0);t.update=JR}function XR(e){let t=e;if(typeof t._collision!=`function`||typeof t._worldSpaceBoneLength!=`number`)throw R(Error(`three-vrm's spring joint no longer holds the _collision and _worldSpaceBoneLength of 3.5.5, which the engine's spring collision replaces and reads.`),`SP0255`,void 0);t._collision=WR}var ZR=new WeakMap,QR=.035,$R=new j,ez=new j,tz=class extends VR{offset=new j(0,QR,0);ground;type=`ground`;feetFrame=-1;feetX=NaN;feetZ=NaN;feetHeight=NaN;measureContact(e){let{position:t}=e;if($R.setFromMatrixPosition(e.colliderMatrix),this.ground){let e=qR();(e!==this.feetFrame||$R.x!==this.feetX||$R.z!==this.feetZ)&&(this.feetFrame=e,this.feetX=$R.x,this.feetZ=$R.z,this.feetHeight=this.ground.getPointAt($R,ez).y),$R.y+=this.ground.getPointAt(t,ez).y-this.feetHeight}e.direction.set(0,1,0),e.distance=t.y-$R.y-e.radius}},nz=.5,rz=new j,iz={point:rz,reach:NaN,target:new j,depth:NaN},az={point:new j,reach:nz,target:new j,depth:NaN},oz=class extends VR{hips;obstacles=null;type=`obstacles`;springReach=0;queriedAt=new j(NaN,NaN,NaN);hipsClearance=1/0;constructor(e){super(),this.hips=e}measureContact(e){let{obstacles:t}=this;if(e.distance=1/0,t){if(rz.setFromMatrixPosition(this.hips.matrixWorld),!rz.equals(this.queriedAt)){this.queriedAt.copy(rz);let e=this.springReach+nz;iz.reach=e,this.hipsClearance=Math.min(NR(t,iz)?Math.abs(iz.depth):1/0,e)}this.hipsClearance-e.position.distanceTo(this.queriedAt)>nz||(az.point=e.position,az.target=e.direction,NR(t,az)&&(e.distance=az.depth-e.radius-QR))}}};function sz(e,t){let n=new j,r=new j,i=t=>{let i=0;for(let a=t;a!==e.scene&&a.parent;){let e=a.parent;i+=a.getWorldPosition(n).distanceTo(e.getWorldPosition(r)),a=e}return i},a=i(t),o=0;for(let s of e.springBoneManager?.joints??[]){let{bone:e,child:c}=s,l=(c?c.getWorldPosition(r):e.localToWorld(r.copy(e.position).normalize().multiplyScalar(.07))).distanceTo(e.getWorldPosition(n)),u=!1;e.traverseAncestors(e=>{e===t&&(u=!0)});let d=i(e)+l;o=Math.max(o,u?d-a:d+a)}return o+.001}var cz=new WeakMap,lz=new WeakMap;function uz(e,t){let n=lz.get(e);if(!n)throw R(Error(`The body was not prepared.`),`SP0258`,void 0);n.obstacles=t,n.queriedAt.setScalar(NaN)}function dz(e,t){let n=cz.get(e);if(!n)throw R(Error(`The body was not prepared.`),`SP0258`,`followGround`);n.ground=t,n.feetX=NaN}var fz=[{part:`upperArm`,from:X.LeftUpperArm,to:X.LeftLowerArm},{part:`upperArm`,from:X.RightUpperArm,to:X.RightLowerArm},{part:`lowerArm`,from:X.LeftLowerArm,to:X.LeftHand},{part:`lowerArm`,from:X.RightLowerArm,to:X.RightHand}],pz=[X.LeftHand,X.RightHand],mz=new WeakMap,hz=new WeakMap;function gz({name:e,model:t}){return e?`Avatar "${e}"`:t?`The avatar ${t}`:`The avatar`}function _z(e){return hz.get(e)??`The avatar`}function vz(e,t){let n=mz.get(e);if(!n)throw R(Error(`${_z(e)} has no arm colliders to size: give its body armColliders, or leave armColliderRadii out.`),`SP0259`,`sizeArmColliders`);for(let{part:e,shape:r}of n)r.radius=t[e]}var yz=e=>{Sg(e),e.register(e=>new ux(e)),e.register(e=>new xR(e))};function bz(e){let t=new Set(e.expressionManager?.expressions.flatMap(({binds:e})=>e.flatMap(e=>e instanceof gx?[e.material]:[]))),n=new Map;e.scene.traverse(r=>{if(!(r instanceof k))return;let i=r.geometry.morphAttributes.position?.length??0,a=r=>{if(t.has(r))return r;let a=n.get(r)??new Map([[i,r]]);n.set(r,a);let o=a.get(i);return o||(o=r.clone(),a.set(i,o),e.materials?.includes(r)&&e.materials.push(o)),o};r.material=Array.isArray(r.material)?r.material.map(a):a(r.material)})}function xz(e){let t=[];e.scene.traverse(e=>{e instanceof k&&t.push(e)});for(let e of t){if(!Array.isArray(e.material))continue;let[t,n]=e.material;if(!(n instanceof _x&&n.isOutline)||n.transparent)continue;let r=e.clone(!1);r.name=`${e.name} (Outline)`,r.material=n,r.castShadow=!1,r.morphTargetInfluences=e.morphTargetInfluences,e.material=t,t.side!==n.side&&(t.shadowSide=2),e.parent?.add(r)}}var Sz=`outlineOffset *= vViewPosition.z / projectionMatrix[ 1 ].y;`,Cz=`outlineOffset *= ( isOrthographic ? 1.0 : vViewPosition.z ) / projectionMatrix[ 1 ].y;`;function wz(e){e.scene.traverse(e=>{if(e instanceof k){for(let t of[e.material].flat())if(t instanceof _x&&t.isOutline&&!t.vertexShader.includes(Cz)){if(!t.vertexShader.includes(Sz))throw R(Error(`three-vrm's outline shader no longer holds the width line this rewrites`),`SP0260`,void 0);t.vertexShader=t.vertexShader.replace(Sz,Cz)}}})}function Tz(e){let t=new Map;e.scene.traverse(e=>{if(!(e instanceof k)||!e.castShadow||[e.material].flat().some(({alphaTest:e})=>e>0))return;let{normal:n,position:r,color:i}=e.geometry.morphAttributes,a=[e instanceof T,r?.length??0,!!n,!!i].join(),o=t.get(a);o||(o=new me,t.set(a,o)),e.customDepthMaterial=o})}function Ez(e,t){let n=new Map;for(let[t,r]of Object.entries(e.humanoid.rawHumanBones))r&&n.set(r.node,t);let r=e=>{let r=e.colliders[0]?.parent;for(;r&&!n.has(r);)r=r.parent;let i=r?n.get(r):void 0;return i!==void 0&&t.includes(i)},i=new Set;for(let t of e.springBoneManager?.joints??[]){for(let e of t.colliderGroups)r(e)||i.add(e);t.colliderGroups=t.colliderGroups.filter(r)}for(let{colliders:e}of i)for(let t of e)t.removeFromParent()}function Dz(e,t){let n=ZR.get(e);if(n)return n;let r=gz(t);if(hz.set(e,r),lx.removeUnnecessaryVertices(e.scene),lx.combineSkeletons(e.scene),bz(e),e.scene.traverse(e=>{e.castShadow=!0,e.receiveShadow=!0}),Hp(e.scene),e.lookAt){let t=new sR(e.lookAt);t.name=`vrm-look-at`,e.scene.add(t)}t.springColliderBones&&Ez(e,t.springColliderBones);let i=new tz;cz.set(e,i);let a=new mx(i),o=e.humanoid.getRawBoneNode(X.Hips);if(!o)throw R(Error(`${r} has no hips bone to reach its springs from: export it as a humanoid VRM with its hips mapped.`),`SP0526`,`prepareVrm`);let s=new oz(o);lz.set(e,s);let c=new mx(s);e.scene.add(a,c);let l={colliders:[a,c]};HO(e.humanoid),e.springBoneManager&&YR(e.springBoneManager);for(let t of e.springBoneManager?.joints??[])t.colliderGroups.includes(l)||t.colliderGroups.push(l),XR(t);if(e.scene.scale.setScalar(t.scale),e.scene.rotation.y=(t.rotateY??0)+(e.meta.metaVersion===`0`?0:dr),e.scene.updateWorldMatrix(!0,!0),s.springReach=sz(e,o),t.armColliders){let n=t=>{let n=e.humanoid.getRawBoneNode(t);if(!n)throw R(Error(`${r} has no ${t} bone for its arm colliders: map the bone in the VRM's humanoid, or leave armColliders out of its body.`),`SP0527`,`prepareVrm`);return n},i=[],a=[],o=new j;for(let{part:e,from:t,to:r}of fz){let s=n(t);s.worldToLocal(n(r).getWorldPosition(o));let c=new px({tail:o.clone()}),l=new mx(c);s.add(l),i.push({part:e,shape:c}),a.push(l)}for(let e of pz){let t=new fx,r=new mx(t);n(e).add(r),i.push({part:`hand`,shape:t}),a.push(r)}mz.set(e,i);let s={colliders:a},{bonePrefix:c}=t.armColliders;vz(e,t.armColliders.radii);let l=0;for(let t of e.springBoneManager?.joints??[])t.bone.name.startsWith(c)&&(l++,t.colliderGroups.includes(s)||t.colliderGroups.push(s));if(!l)throw R(Error(`${r} has no spring joint whose bone starts with "${c}", so its arm colliders hold off no cloth: set armColliders.bonePrefix to the start of its cloth bones' names.`),`SP0528`,`prepareVrm`)}let u=new d().setFromObject(e.scene),f={height:u.max.y,center:u.getCenter(new j)};return xz(e),wz(e),Tz(e),ZR.set(e,f),f}var Oz=1;function kz(e,t){let n=(t,{out:n,forward:r})=>{let i=t===X.LeftUpperArm?-1:1,a=e.humanoid.getNormalizedBoneNode(t);if(!a)throw R(Error(`${_z(e)} has no ${t} bone to spread: map the bone in the VRM's humanoid.`),`SP0270`,void 0);let o=new P().setFromEuler(new ke(0,i*r,Math.sign(a.position.x)*n)).toArray();return new ge(`${a.name}.quaternion`,[0,Oz],[...o,...o])};return new we(`arm-spread`,Oz,[n(X.LeftUpperArm,t.left),n(X.RightUpperArm,t.right)],ye)}function Az(e,t){(0,Q.useLayoutEffect)(()=>(e.add(lr(t)),()=>{e.isAlive()&&e.remove(lr)}),[e,t])}var jz=new Map;function Mz(e,t){let n=jz.get(e)??[];jz.set(e,n);let r=n.indexOf(t);if(r>=0)return r;let i=n.findIndex(e=>!e?.isAlive()),a=i>=0?i:n.length;return n[a]=t,a}function Nz(e,t,n){let r=jz.get(e)??[];jz.set(e,r),r[n]=t}function Pz(e,t){let n=jz.get(e),r=n?.indexOf(t)??-1;n&&r>=0&&(n[r]=null)}function Fz(e,t){let n=Mz(e,t);return(0,Q.useEffect)(()=>(Nz(e,t,n),()=>Pz(e,t)),[e,t,n]),n===0?e:`${e}#${n}`}function Iz({entity:e,body:t,ground:n,obstacles:r=null,motion:i,armSpread:a,armColliderRadii:o=t.armColliders?.radii,children:s}){try{let[c,l]=HS([Fz(t.model,e),...i?[i]:[]],yz),u=c.userData.vrm,d=i?l.userData.vrmAnimations:void 0,f=Array.isArray(d)?d[0]:void 0;if(!(u instanceof hx))throw R(Error(`The model ${t.model} holds no VRM data: give a .vrm file.`),`SP0379`,`VrmView`);if(i&&!(f instanceof fR))throw R(Error(`The motion ${i} holds no VRM animation: give a .vrma file.`),`SP0380`,`VrmView`);let p=Dz(u,t),{radius:m,height:h}=e.get(jt)??Vu;Az(e,p),(0,Q.useLayoutEffect)(()=>()=>Up(u.scene),[u]),(0,Q.useLayoutEffect)(()=>(dz(u,n),()=>dz(u,void 0)),[n,u]),(0,Q.useLayoutEffect)(()=>(uz(u,r),()=>uz(u,null)),[r,u]),(0,Q.useLayoutEffect)(()=>{o&&vz(u,o)},[o,u]);let g=L(e=>e.camera);(0,Q.useLayoutEffect)(()=>{let{lookAt:e}=u;if(e)return e.target=g,()=>{e.target=null}},[g,u]);let _=(0,Q.useMemo)(()=>i?new _e(u.scene):null,[i,u]);return(0,Q.useEffect)(()=>{if(!_||!(f instanceof fR))return;let e=dR(f,u);return _.clipAction(e).play(),a&&_.clipAction(kz(u,a)).play(),()=>{_.stopAllAction(),_.uncacheRoot(u.scene)}},[f,a,_,u]),I(z(`VrmView`,(e,t)=>{_&&(_.update(t),u.humanoid.update(),u.scene.updateWorldMatrix(!0,!0),u.update(t))})),(0,Z.jsxs)(`group`,{ref:CC(e),children:[(0,Z.jsx)(`primitive`,{object:u.scene,dispose:null,raycast:()=>!1}),(0,Z.jsx)(`mesh`,{"position-y":h/2,visible:!1,children:(0,Z.jsx)(`capsuleGeometry`,{args:[m,h-2*m]})}),s?.({...p,vrm:u})]})}catch(e){throw B(`VrmView`,e)}}var Lz=(0,Q.createContext)(null);function Rz(e,t){let n=CC(e,En);(0,Q.useLayoutEffect)(()=>(n(t),()=>n(null)),[n,t])}var zz=function(e){return e.Idle=`idle`,e.Walk=`walk`,e.Run=`run`,e.Jump=`jump`,e}({}),Bz=function(e){return e.Capsule=`capsule`,e.Box=`box`,e.Sphere=`sphere`,e}({}),Vz=function(e){return e.Ring=`ring`,e.Pulse=`pulse`,e.Sigil=`sigil`,e.Motes=`motes`,e.None=`none`,e}({}),Hz=.6;function Uz({entity:e,shape:t=Bz.Capsule,color:n=Qi.placeholderBody,children:r}){try{let{radius:i,height:a}=e.get(jt)??Vu,o=t===Bz.Sphere?2*i:a;Az(e,(0,Q.useMemo)(()=>({height:o,center:new j(0,o/2,0)}),[o]));let[s,c]=(0,Q.useState)(null);Rz(e,s);let l=(0,Q.useMemo)(()=>s&&{entity:e,object:s},[e,s]);return(0,Z.jsxs)(`group`,{ref:CC(e),children:[(0,Z.jsxs)(`mesh`,{"position-y":o/2,castShadow:!0,children:[t===Bz.Capsule&&(0,Z.jsx)(`capsuleGeometry`,{args:[i,o-2*i]}),t===Bz.Box&&(0,Z.jsx)(`boxGeometry`,{args:[2*i,o,2*i]}),t===Bz.Sphere&&(0,Z.jsx)(`sphereGeometry`,{args:[i]}),(0,Z.jsx)(`meshStandardMaterial`,{color:n})]}),(0,Z.jsx)(`group`,{ref:c,position:[i,o*Hz,0]}),(0,Z.jsx)(Lz,{value:l,children:r?.({entity:e,height:o})})]})}catch(e){throw B(`PlaceholderBodyView`,e)}}function Wz(){return[...ho().map(([,e])=>e),...Ha().map(([,e])=>e)]}function Gz(e,t,n){if(new URLSearchParams(window.location.search).get(`land`)===`hips`){let n=t.humanoid.getNormalizedBoneNode(X.Hips);e.tracks=e.tracks.filter(e=>e.name!==`${n?.name}.position`);return}for(let t of e.tracks)t.trim(n,e.duration).shift(-n);e.resetDuration()}function Kz({entity:e,vrm:t,armSpread:n,headTurn:r=Sr.headTurn,cullingMode:i}){try{let a=W(),o=(0,Q.useRef)(r),s=(0,Q.useRef)(i),c=HS(Wz(),yz);return(0,Q.useEffect)(()=>{let r=new _e(t.scene),i=Wz(),l=[...ho().map(([e])=>e),...Ha().map(([e])=>e)],u=Pr(),d=new Map(l.map((e,n)=>{let r=c[n]?.userData.vrmAnimations,a=Array.isArray(r)?r[0]:void 0;if(!(a instanceof fR))throw R(Error(`The character's ${e} motion, ${i[n]}, holds no VRM animation: give a .vrma file for it.`),`SP0373`,`CharacterAnimationView`);let o=dR(a,t);if(o.name=e,e===fu.Land&&u!==void 0){if(u>=o.duration)throw R(Error(`The character's land clip, ${i[n]}, is ${o.duration.toFixed(2)} s long, and its touch mark at ${u} s lies past its end: mark where her feet meet the ground, before the clip ends, or register it with no touch mark to play it whole.`),`SP0374`,`CharacterAnimationView`);Gz(o,t,u)}return[e,o]})),f=kz(t,n);r.clipAction(f).play(),Fk(a,t);let p=ES(xS(e.get(js)));return e.add(Ar({vrm:t,mixer:r,clips:d,headTurn:o.current,cullingMode:s.current??null,oneShotPlays:xS(e.get(hd)),upperBody:p,armSpread:f})),()=>{let n=e.isAlive()?e.get(Ar)?.gripClipRotations:void 0;n&&AO(n),VS(t.scene),DS(p),e.isAlive()&&e.remove(Ar),r.stopAllAction(),r.uncacheRoot(t.scene)}},[n,c,e,t,a]),(0,Q.useEffect)(()=>{o.current=r,e.isAlive()&&e.has(Ar)&&e.set(Ar,{headTurn:r})},[e,r]),(0,Q.useEffect)(()=>{s.current=i,e.isAlive()&&e.has(Ar)&&e.set(Ar,{cullingMode:i??null})},[e,i]),null}catch(e){throw B(`CharacterAnimationView`,e)}}function qz({entity:e,body:t,children:n,armSpread:r=t.armSpread,armColliderRadii:i,headTurn:a,cullingMode:o}){try{let s=G(ry(lf),lf),c=G(ry(gl),gl);return Eg(eh.Avatar)?(0,Z.jsx)(Iz,{entity:e,body:t,ground:s?.surface,obstacles:c?.bvh,armColliderRadii:i,children:({height:t,vrm:i})=>(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(Kz,{entity:e,vrm:i,armSpread:r,headTurn:a,cullingMode:o}),(0,Z.jsx)(Jz,{entity:e,vrm:i,children:n?.({entity:e,height:t})})]})}):(0,Z.jsx)(Uz,{entity:e,children:n})}catch(e){throw B(`CharacterView`,e)}}function Jz({entity:e,vrm:t,children:n}){try{let[r]=(0,Q.useState)(()=>new xe);Rz(e,r);let i=(0,Q.useMemo)(()=>({entity:e,object:r}),[e,r]);return(0,Q.useLayoutEffect)(()=>{let e=t.humanoid.getNormalizedBoneNode(X.RightHand);if(e)return r.rotation.y=t.meta.metaVersion===`0`?0:dr,e.add(r),()=>{e.remove(r)}},[r,t]),(0,Z.jsx)(Lz,{value:i,children:n})}catch(e){throw B(`HandSocket`,e)}}function Yz({entity:e,children:t}){try{return e.has(sd)?(0,Z.jsx)(Xz,{entity:e,children:t}):(0,Z.jsx)(Zz,{entity:e,children:t})}catch(e){throw B(`SpawnedView`,e)}}function Xz({entity:e,children:t}){try{let n=e.get(In)?.name,r=n?Gm(n):void 0;return(0,Z.jsx)(Q.Suspense,{fallback:(0,Z.jsx)(bS,{name:`a spawned character`}),children:r?(0,Z.jsx)(qz,{entity:e,body:r,children:()=>t?.(e)}):(0,Z.jsx)(Uz,{entity:e,children:()=>t?.(e)})})}catch(e){throw B(`SpawnedCharacterView`,e)}}function Zz({entity:e,children:t}){try{let n=G(e,Ur),r=G(e,ri);return(0,Z.jsxs)(`group`,{ref:CC(e),children:[n?(0,Z.jsx)(bC,{name:n.name,animation:n.animation,entity:e}):r&&(0,Z.jsx)(xC,{color:vs(r.item).color}),t?.(e)]})}catch(e){throw B(`SpawnedObjectView`,e)}}function Qz(){try{return Jv()?null:(0,Z.jsx)($z,{})}catch(e){throw B(`SpawnedViews`,e)}}function $z(){try{return iy(mo,$e(sd,Ur,ri),tt(hf),tt($n)).map(e=>(0,Z.jsx)(Yz,{entity:e},e))}catch(e){throw B(`SpawnedEntities`,e)}}var eB=typeof __GAME_ENGINE_DEV__==`boolean`&&__GAME_ENGINE_DEV__?(0,Q.lazy)(()=>Rp(async()=>{let{ReplayLayer:e}=await import(`../chunks/B8f3enUO.js`);return{ReplayLayer:e}},__vite__mapDeps([72,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,73,39,40,36,37,38,41,42,43,50,51,52,45,57,74,75,76,77]),import.meta.url).then(({ReplayLayer:e})=>({default:e}))):void 0;function tB(){return typeof __GAME_ENGINE_DEV__==`boolean`?__GAME_ENGINE_DEV__:typeof process<`u`&&{}.VITEST===`true`}function nB(e){try{let t=rB(e.plugins);return(0,Z.jsx)(iB,{...e},t)}catch(e){throw B(`Game`,e)}}function rB(e){let t=(0,Q.useRef)(void 0),n=el(e??[]),r=t.current;return r?(r.entries.length!==n.length||r.entries.some((e,t)=>e!==n[t]))&&(t.current={entries:n,generation:r.generation+1}):t.current={entries:n,generation:0},t.current.generation}function iB({name:e,start:t,plugins:n,physics:r,room:i,levels:a,save:o,loadingScreen:s={},respawnScreen:c=kI,menu:l=!0,warmUpMilliseconds:u,defaultVolumes:d,defaultVoiceMode:f,quality:p,gl:m,shadows:h=Sm.Percentage,onCreated:g,children:_}){try{let[v]=(0,Q.useState)(()=>({gl:Qm(m),shadows:h,onCreated:e=>{Rh&&xm.createCanvas?.(e),g?.(e)}})),[y]=(0,Q.useState)(d),[b]=(0,Q.useState)(f);(0,Q.useLayoutEffect)(()=>{if(y)return q.getState().setDefaultVolumes(y),()=>q.getState().setDefaultVolumes({})},[y]),(0,Q.useLayoutEffect)(()=>{if(b)return q.getState().setDefaultVoiceMode(b),()=>q.getState().setDefaultVoiceMode(void 0)},[b]);let[x]=(0,Q.useState)(()=>{let e=it(n,r);tB()&&e.add(Bc),i&&e.add(Kt),a&&Li(e,a);let t=aB();i||(Hu(e,t),sf(e,sa(t)));let s=n_(e,{save:o,player:()=>({id:Dw.getState().player.id??``}),onRefuse:t=>Zg(e,t),seed:()=>t});return P_(e,s),e}),[S]=(0,Q.useState)(i),C=iN(S),w=kh(e=>e.paused&&!e.editing)&&!S,[T]=(0,Q.useState)(p),E=(0,Q.useMemo)(()=>Iv(e,void 0,T),[e,T]),D=q(e=>e.reducedMotion),O=hP(q(e=>e.frameRateCap));(0,Q.useEffect)(()=>Zx(window,x,e=>{let{freeCamera:t,mapCamera:n}=kh.getState();Xh(Uh.getState())||t||n||FC(x,e,{})}),[x]),(0,Q.useEffect)(Qw,[]),(0,Q.useLayoutEffect)(()=>void yN(),[]);let k=(0,Z.jsxs)(Qe,{"data-game-name":e,gl:v.gl,shadows:v.shadows,onCreated:v.onCreated,frameloop:Rh&&xm.frameloop?xm.frameloop:w?`demand`:O?`never`:`always`,camera:{position:sl.position,fov:sl.fov},className:cy.outlinedText,style:{isolation:`isolate`},children:[(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(Pj,{room:C})}),(0,Z.jsxs)(nL,{children:[(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(NL,{})}),!S&&(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(Qz,{})})]}),(0,Z.jsx)(YE,{}),(0,Z.jsx)(AL,{}),(0,Z.jsx)(MI,{paced:O&&!w}),(0,Z.jsx)(BP,{}),(0,Z.jsx)(AI,{})]});return(0,Z.jsx)(lD,{fallbackRender:({error:e})=>cB(e,x,s),onError:(e,{componentStack:t})=>{tp(e,{boundary:ip.Render,component:rp(t),tick:Nu(x),scene:E.scenes.getState().active??void 0,componentStack:t??void 0}),yD(e)},children:(0,Z.jsx)(Ue,{children:(0,Z.jsx)(Yv,{value:E,children:(0,Z.jsx)(Qx,{reducedMotion:D===null?`user`:D?`always`:`never`,children:(0,Z.jsxs)(oy,{world:x,children:[(0,Z.jsxs)(QM,{name:e,world:x,save:o,room:S!==void 0,children:[(0,Z.jsxs)(Kv,{plugins:ic(x),children:[Rh?(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(oB,{children:k})}):k,(0,Z.jsx)(sb,{warmUpMilliseconds:u}),(0,Z.jsx)(IL,{}),(0,Z.jsx)(WP,{}),(0,Z.jsx)(MF,{}),(0,Z.jsx)(mI,{}),(0,Z.jsx)(rN,{}),_]}),(0,Z.jsx)(sB,{scene:t})]}),c&&(0,Z.jsx)(OI,{screen:c}),s&&(0,Z.jsx)(EN,{screen:s}),eB&&(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(eB,{game:e,room:C?.url})}),l?(0,Z.jsx)(EI,{}):(0,Z.jsx)(QN,{})]})})})})})}catch(e){throw B(`GameWorld`,e)}}function aB(){return Yn({search:globalThis.location?.search??``,test:typeof process<`u`&&{}.VITEST===`true`,draw:()=>crypto.getRandomValues(new Uint32Array(1))[0]??0})}function oB({children:e}){try{return Ih&&(0,Q.use)(Ih),e}catch(e){throw B(`AwaitReplay`,e)}}function sB({scene:e}){try{let{showBoundary:t}=pD(),{scenes:n}=Rv(`SceneStartup`);return(0,Q.useEffect)(()=>{try{n.getState().go(Em()??e)}catch(e){t(e)}return()=>n.setState({active:null})},[n,e,t]),null}catch(e){throw B(`SceneStartup`,e)}}function cB(e,t,n){let r=e instanceof UM;if(t.has(Bc)&&!r)throw e;let i=n&&jN(n)?n:{};return r?(0,Z.jsx)(SN,{title:i.title,art:i.art,value:null,label:`Stopped`,problem:{kind:bN.Failure,title:`We couldn't load your progress`,detail:e.message}}):(0,Z.jsx)(SN,{title:i.title,art:i.art,value:null,label:`Stopped`,problem:{kind:bN.Failure,title:`The game stopped with an error`,detail:e instanceof Error?e.message:String(e)}})}function lB(e,t,n){let r=(0,Q.use)(TC),i=n===void 0?r:n,a=(0,Q.useRef)(t);(0,Q.useLayoutEffect)(()=>{a.current=t}),(0,Q.useEffect)(()=>jh(i,e,()=>a.current()),[i,e])}function uB(e,{onPress:t,onRelease:n,repeat:r=!1}){let i=(0,Q.useRef)({onPress:t,onRelease:n});(0,Q.useEffect)(()=>{i.current={onPress:t,onRelease:n}}),(0,Q.useEffect)(()=>Km(e,{repeat:r,onPress:e=>i.current.onPress?.(e),onRelease:()=>i.current.onRelease?.()}),[e,r])}function dB(e){let[t,n]=(0,Q.useState)(()=>Nm(e));return uB(e,{onPress:()=>n(!0),onRelease:()=>n(!1)}),t}function fB(e){let t=Gv(),n=Ge(),r=!t&&n?eb(n):void 0;(0,Q.useEffect)(()=>{if(r)return()=>Vh.setState(({[r.id]:e,...t})=>t,!0)},[r]),(0,Q.useEffect)(()=>{r&&Vh.setState({[r.id]:{name:r.name,schema:e}})})}function pB({slots:e}){try{let t=NC();return GC(Bd,{slots:e}),(0,Q.useEffect)(()=>{t.isAlive()&&zc(t,e)},[t,e]),(0,Q.useEffect)(()=>()=>{t.isAlive()&&t.remove(hn)},[t]),null}catch(e){throw B(`Inventory`,e)}}function mB({model:e,placements:t,material:n=fl(e)}){try{let{scene:r}=HS(an(e)),{meshes:i,lift:a}=(0,Q.useMemo)(()=>{r.updateMatrixWorld(!0);let t=[];return r.traverse(e=>{e instanceof k&&t.push(e)}),{meshes:t,lift:Tt(e)??On(r)}},[e,r]),o=(0,Q.useRef)(null),s=(0,Q.use)(rb),c=`${e}:${(0,Q.useId)()}`;return(0,Q.useEffect)(()=>{let n=o.current;if(n)return wh({id:c,name:e,kind:yh.Scatter,count:t.length,readOnlyReason:`Placed by the game's code`,parentId:s?.id??null,object:n,placements:t})},[c,e,t,s]),(0,Z.jsx)(`group`,{ref:o,name:e,children:i.map(e=>(0,Z.jsx)(SB,{mesh:e,lift:a,placements:t,material:n},e.uuid))})}catch(e){throw B(`InstancedModelView`,e)}}var hB=new oe,gB=new j,_B=new P,vB=new j,yB=new j(0,1,0),bB=new he,xB=new he(1,1,1);function SB({mesh:e,lift:t,placements:n,material:r}){try{let i=(0,Q.useRef)(null),a=(0,Q.useMemo)(()=>Dg(r,e.material),[r,e]);return(0,Q.useLayoutEffect)(()=>{let r=i.current;if(!r)return;let a=r.instanceColor!==null||n.some(e=>e.tint!==void 0);n.forEach((n,i)=>{let[o,s,c]=n.position,l=n.scale??1;typeof l==`number`?vB.setScalar(l):vB.fromArray(l),gB.set(o,s+t*vB.y,c),_B.setFromAxisAngle(yB,n.turn??0),hB.compose(gB,_B,vB),r.setMatrixAt(i,hB.multiply(e.matrixWorld)),e.morphTargetInfluences&&r.setMorphAt(i,e),a&&r.setColorAt(i,n.tint===void 0?xB:bB.set(n.tint))}),r.instanceMatrix.needsUpdate=!0,r.instanceColor&&(r.instanceColor.needsUpdate=!0),r.morphTexture&&(r.morphTexture.needsUpdate=!0),r.computeBoundingSphere()},[e,t,n,a]),(0,Z.jsx)(`instancedMesh`,{ref:i,args:[e.geometry,a,n.length],castShadow:!0,receiveShadow:!0,children:(0,Z.jsx)(`meshDepthMaterial`,{attach:`customDepthMaterial`})})}catch(e){throw B(`MeshBatch`,e)}}function CB({model:e,placements:t,material:n}){try{return Jv()?null:(0,Z.jsx)(mB,{model:e,placements:t,material:n})}catch(e){throw B(`InstancedModel`,e)}}function wB(e){if(!(`base`in e))return e;let{base:t,...n}=e,r={...t};for(let[e,t]of Object.entries(n)){if(t===void 0)continue;let n=Reflect.get(r,e);Reflect.set(r,e,TB(t)&&TB(n)?{...n,...EB(t)}:t)}return r}var TB=e=>typeof e==`object`&&!!e,EB=e=>Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0));function DB(e,t){return Math.atan2(e.x,e.z)+2*Math.PI*t-3*Math.PI/2}var OB=Xs(()=>Rp(()=>import(`../chunks/B8GCRzu-.js`),__vite__mapDeps([78,79,3,80]),import.meta.url),`Await the EXR loader before reading it`);function kB(e){return/\.exr$/i.test(e.split(/[?#]/)[0])}function AB(e){let t=kB(e)?(0,Q.use)(OB.load()).EXRLoader:yx;return We(t,e)}var jB=4,MB=.55,NB=1.8,PB={x:5.2,y:9.1},FB=.55,IB=.72;function LB(e,t,n){let r=Math.floor(e),i=Math.floor(t),a=F.smootherstep(e-r,0,1),o=F.smootherstep(t-i,0,1),s=(e,t)=>si(F.euclideanModulo(r+e,n),F.euclideanModulo(i+t,n));return F.lerp(F.lerp(s(0,0),s(1,0),a),F.lerp(s(0,1),s(1,1),a),o)}function RB(e,t,n){let r=0,i=1,a=0;for(let o=0;o<jB;o++){let s=2**o;r+=LB(e*s,t*s,n*s)*i,a+=i,i*=MB}return r/a}function zB(e){let t=Array.from({length:e**2},(t,n)=>si(n%e,Math.floor(n/e))),n=Math.min(...t);return{low:n,span:Math.max(...t)-n}}function BB(e,t,n){let r=LB(e+PB.x,t+PB.y,n),i=LB(e-PB.y,t-PB.x,n);return RB(e+NB*(r-.5),t+NB*(i-.5),n)}function VB({textureSize:e,cells:t,coverage:n,clumping:r,clumpCells:i,softness:a}){let o=new Uint8Array(e*e*4),s=zB(i),c=Math.max(a,.001)/2;for(let a=0;a<e;a++)for(let l=0;l<e;l++){let u=l/e*t,d=a/e*t,f=BB(u,d,t),p=1-(n+r*(2*((LB(u/t*i,d/t*i,i)-s.low)/s.span)-1)*2*n*(1-n)),m=F.smoothstep(f,p-c,p+c)*F.lerp(FB,1,f),h=Math.round(F.lerp(1,IB,f)*255),g=(a*e+l)*4;o.fill(h,g,g+3),o[g+3]=Math.round(m*255)}let l=new D(o,e,e,Ie,S);return l.wrapS=Te,l.wrapT=Te,l.magFilter=x,l.minFilter=v,l.generateMipmaps=!0,l.colorSpace=te,l.needsUpdate=!0,l}var HB=1.1,UB=64;function WB({height:e,scale:t,fadeGone:n,fadeFull:r}){if(n<=0||n>=r)throw R(Error(`The clouds' fade.gone is ${n} and fade.full is ${r}: set gone above 0 and below full, both in radians, such as the defaults of 8° and 35°.`),`SP0383`,void 0);let i=HB*e/Math.tan(n),o=new O(i*2,i*2,UB,UB);o.rotateX(-Math.PI/2),o.translate(0,e,0);let s=o.attributes.position,c=new Float32Array(s.count*2),l=new Float32Array(s.count*4).fill(1);for(let i=0;i<s.count;i++){let a=s.getX(i),o=s.getZ(i);c[i*2]=a/t,c[i*2+1]=o/t,l[i*4+3]=F.smoothstep(Math.atan2(e,Math.hypot(a,o)),n,r)}return o.setAttribute(`uv`,new a(c,2)),o.setAttribute(`color`,new a(l,4)),o}var GB=new Map;function KB(e){let{textureSize:t,cells:n,coverage:r,clumping:i,clumpCells:a,softness:o}=e,s=[t,n,r,i,a,o].join(),c=GB.get(s);return c===void 0&&(c=VB(e),GB.set(s,c)),c.clone()}function qB({textureSize:e,cells:t,coverage:n,clumping:r,clumpCells:i,softness:a,height:o,scale:s,fadeGone:c,fadeFull:l,opacity:u,renderOrder:d,name:f,ref:p,color:m=Qi.cloudNight,offset:h}){try{let g=(0,Q.useMemo)(()=>KB({textureSize:e,cells:t,coverage:n,clumping:r,clumpCells:i,softness:a}),[e,t,n,r,i,a]),_=(0,Q.useMemo)(()=>WB({height:o,scale:s,fadeGone:c,fadeFull:l}),[o,s,c,l]);(0,Q.useEffect)(()=>()=>g.dispose(),[g]),(0,Q.useEffect)(()=>()=>_.dispose(),[_]);let[v,y]=h??[];return(0,Q.useLayoutEffect)(()=>{v!==void 0&&y!==void 0&&g.offset.set(v,y)},[g,v,y]),(0,Z.jsx)(`mesh`,{name:f,geometry:_,renderOrder:d,frustumCulled:!1,children:(0,Z.jsx)(`meshBasicMaterial`,{ref:p,color:m,map:g,vertexColors:!0,transparent:!0,opacity:u,depthWrite:!1,side:1,fog:!1})})}catch(e){throw B(`SkyClouds`,e)}}var JB=400;function YB({color:e,strength:t,stops:n,colors:r,renderOrder:i,name:a,ref:o}){try{return(0,Z.jsxs)(`mesh`,{name:a,renderOrder:i,frustumCulled:!1,children:[(0,Z.jsx)(`sphereGeometry`,{args:[JB,16,24,0,Math.PI*2,0,Math.PI/2]}),(0,Z.jsx)(`meshBasicMaterial`,{ref:o,color:e,transparent:!0,opacity:t,depthWrite:!1,side:1,fog:!1,children:(0,Z.jsx)(q_,{attach:`alphaMap`,colorSpace:``,stops:n,colors:r})})]})}catch(e){throw B(`SkyDome`,e)}}function XB({clouds:e,horizonBand:t,tintStrength:n,bandColor:r,bandStrength:i,cloudColor:a,cloudOffset:o,tintRef:s,bandRef:c,cloudRef:l}){try{return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(YB,{ref:s,color:Qi.skyTint,strength:n,stops:[0,1],colors:[Qi.maskFull,Qi.maskEmpty],...Rr.tint}),e.decks.map((t,n)=>(0,Z.jsx)(qB,{ref:l?.(n),textureSize:e.textureSize,cells:t.cells,coverage:t.coverage,clumping:e.clumping,clumpCells:e.clumpCells,softness:e.softness,scale:e.scale,fadeGone:e.fade.gone,fadeFull:e.fade.full,height:t.height,opacity:t.opacity,renderOrder:t.renderOrder,name:t.name,color:a,offset:o},t.name)),(0,Z.jsx)(YB,{ref:c,color:r,strength:i,stops:[1-t.span,1],colors:[Qi.maskEmpty,Qi.maskFull],...Rr.band})]})}catch(e){throw B(`SkyLayers`,e)}}var ZB=256,QB=1e3,$B=450,eV=`gl_FragColor = vec4( retColor, 1.0 );`,tV=`gl_FragColor = vec4( min( retColor, vec3( ${20 .toFixed(1)} ) ), 1.0 );`;function nV(e){if(!e.includes(eV))throw R(Error(`The sky's bake cannot find "${eV}" in three-stdlib's sky shader, which 2.36.1 ends on: match the bake's clip in SkyBake.tsx to the installed three-stdlib.`),`SP0382`,void 0);return e.replace(eV,tV)}var rV=new Set([`speed`,`drift`]);function iV({hour:e,settings:t}){try{let n=L(e=>e.gl),r=L(e=>e.scene),[i]=(0,Q.useState)(()=>new Fe),a=(0,Q.useMemo)(()=>{let e=H_.material.clone();return e.fragmentShader=nV(e.fragmentShader),e},[]);(0,Q.useEffect)(()=>()=>a.dispose(),[a]);let[o,s]=(0,Q.useState)(0);(0,Q.useEffect)(()=>{let e=n.domElement,t=()=>s(e=>e+1);return e.addEventListener(`webglcontextrestored`,t),()=>e.removeEventListener(`webglcontextrestored`,t)},[n]);let c=bn(e,t),l=c.direction.toArray(),u=c.tintStrength,d=c.bandColor.clone(),f=t.horizonBand.peak*c.bandShare,p=c.cloudColor.clone(),{hourOffset:m}=t.clouds,h=new he(Qi.groundBounce).multiplyScalar(c.sunIntensity*Math.max(c.direction.y,0)/Math.PI),{turbidity:g,rayleigh:_,mieCoefficient:v,mieDirectionalG:y,distance:b}=t.sky,x=[e*m.x,e*m.y],S=JSON.stringify([l,u,d,f,p,h,x,t.sky,t.clouds,t.horizonBand],(e,t)=>rV.has(e)?void 0:t);return(0,Q.useLayoutEffect)(()=>{let{uniforms:e}=a;e.sunPosition.value.fromArray(l),e.turbidity.value=g,e.rayleigh.value=_,e.mieCoefficient.value=v,e.mieDirectionalG.value=y}),(0,Q.useLayoutEffect)(()=>{let e=new Be(n),t=e.fromScene(i,0,.1,QB,{size:ZB});e.dispose();let a=r.environment;return r.environment=t.texture,()=>{r.environment=a,t.dispose()}},[n,r,i,S,o]),Je((0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`mesh`,{name:`skyScattering`,material:a,scale:b,frustumCulled:!1,children:(0,Z.jsx)(`boxGeometry`,{})}),(0,Z.jsx)(XB,{clouds:t.clouds,horizonBand:t.horizonBand,tintStrength:u,bandColor:d,bandStrength:f,cloudColor:p,cloudOffset:x}),(0,Z.jsxs)(`mesh`,{name:`skyGround`,frustumCulled:!1,children:[(0,Z.jsx)(`sphereGeometry`,{args:[$B,16,12,0,Math.PI*2,Math.PI/2,Math.PI/2]}),(0,Z.jsx)(`meshBasicMaterial`,{color:h,side:1,fog:!1})]})]}),i)}catch(e){throw B(`SkyBake`,e)}}function aV(e,t){let n=L(e=>e.get),[r,i]=(0,Q.useState)(t);return(0,Q.useEffect)(()=>{let a=e.current;if(t===r)return;let{gl:o,scene:s,camera:c}=n();if(!a||nh(o,eh.ProgramWarmUp)||!o.getContext().getExtension(`KHR_parallel_shader_compile`)){i(t);return}let l=!1,u=()=>{l||i(t)};return wL({renderer:o,scene:s,camera:c,target:_j(o)?.composer.inputBuffer,change:()=>a.castShadow=t,undo:()=>a.castShadow=r}).then(u,u),()=>{l=!0}},[e,t,r,n]),r}function oV({scattering:e,clouds:t,horizonBand:n,shadowMapSize:r=ar.shadow.mapSize,hour:i,clock:a,look:o,focus:s,shadowBox:l,sky:u,sun:d=!0,fog:f}){try{let p=u||void 0,m=W(),{normalBias:h,radius:g}=ar.shadow,_=l?.halfWidth??ar.shadow.halfWidth,v=l?.depth??ar.shadow.depth,y={...ar.clouds,...t},b={...ar.horizonBand,...n},x={...ar,clouds:y,horizonBand:b},[S]=(0,Q.useState)(()=>new c),C=(0,Q.useRef)(null),w=(0,Q.useRef)(null),T=aV(w,r>0),E=Eg(eh.Sky),D=Eg(eh.SkyBake),O=(0,Q.useRef)(r);r>0&&(O.current=r);let k=(0,Q.useRef)(null),ee=(0,Q.useRef)(null),A=(0,Q.useRef)(null),M=(0,Q.useRef)([]),te=(0,Q.useRef)(0),ne=(0,Q.useRef)(null),ie=(0,Q.useCallback)(e=>{if(!e){ne.current=null;return}let t=e.material,n=t instanceof re?t.uniforms.sunPosition.value:void 0;if(!(n instanceof j))throw R(Error(`The sky has no sun position to write`),`SP0381`,void 0);ne.current=n},[]),N=L(e=>e.scene),ae=o!==void 0,oe=f===void 0,se=(0,Q.useMemo)(()=>oe&&o?.fog?new ve(o.fog.color,o.fog.near,o.fog.far):void 0,[o?.fog,oe]),ce=oe?se:f||void 0,le=(0,Q.useMemo)(()=>se&&se.color.clone(),[se]),ue=(0,Q.useMemo)(()=>o&&cV(bn(o.hour),o),[o]),de=(0,Q.useMemo)(()=>o&&bn(o.hour).skyIntensity,[o]),fe=o?.environment.image||void 0,pe=ae&&!fe;(0,Q.useLayoutEffect)(()=>{if(!ae)return;let e=N.environmentIntensity,t=N.environmentRotation.clone();return()=>{N.environmentIntensity=e,N.environmentRotation.copy(t)}},[N,ae]),(0,Q.useLayoutEffect)(()=>{pe&&N.environmentRotation.set(0,0,0)},[N,pe]),(0,Q.useLayoutEffect)(()=>{w.current?.shadow.camera.updateProjectionMatrix()},[_,v]);let P=p!==void 0;return(0,Q.useLayoutEffect)(()=>{if(!P)return;let e=N.backgroundRotation.clone();return()=>{N.backgroundRotation.copy(e)}},[N,P]),I(z(`DaylightRig`,(e,t)=>{let{gl:n}=e;C.current&&(s?C.current.position.copy(s):kn(m,C.current));let r=a?.get(zt)?.hour,c=i??r??o?.hour??ar.dayCycle.startHour,l=bn(c,x);if(w.current){let e=l.moonIntensity>0;w.current.position.copy(e?l.moonDirection:l.direction),w.current.intensity=(e?l.moonIntensity:l.sunIntensity)*(o?.sun??1),w.current.color.set(e?Qi.moon:Qi.sun)}k.current&&(k.current.intensity=l.skyIntensity*(o?.fill??1)),o&&de&&(N.environmentIntensity=o.environment.intensity*l.skyIntensity/de,se&&le&&ue&&se.color.copy(le).multiplyScalar(Math.min(1,cV(l,o)/ue)),fe&&N.environmentRotation.set(0,DB(l.direction,fe.sunU),0)),p&&N.backgroundRotation.set(0,DB(l.direction,p.sunU),0),ne.current?.copy(l.direction),ee.current&&(ee.current.opacity=l.tintStrength),A.current&&(A.current.color.copy(l.bandColor),A.current.opacity=b.peak*l.bandShare),te.current+=Fg(e,t)*y.speed;for(let e of M.current)e&&(e.color.copy(l.cloudColor),e.map?.offset.set(c*y.hourOffset.x+te.current*y.drift.x,c*y.hourOffset.y+te.current*y.drift.y));n.toneMappingExposure=l.exposure*(o?.exposure??1)})),(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`hemisphereLight`,{ref:k,args:[Qi.sky,Qi.groundBounce,ar.skyIntensity]}),(0,Z.jsxs)(`group`,{ref:C,children:[d&&(0,Z.jsx)(`directionalLight`,{ref:w,color:Qi.sun,target:S,castShadow:T,"shadow-camera-left":-_,"shadow-camera-right":_,"shadow-camera-top":_,"shadow-camera-bottom":-_,"shadow-camera-near":-v,"shadow-camera-far":v,"shadow-mapSize":[O.current,O.current],"shadow-normalBias":h,"shadow-radius":g}),(0,Z.jsx)(`primitive`,{object:S}),u===void 0&&(0,Z.jsx)(XB,{clouds:y,horizonBand:b,tintStrength:ar.tintStrength,bandColor:Qi.sun,bandStrength:b.peak,tintRef:ee,bandRef:A,cloudRef:e=>t=>{M.current[e]=t}})]}),p&&(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(sV,{file:p.file})}),u===void 0&&E&&(0,Z.jsx)(U_,{ref:ie,...ar.sky,...e}),fe&&(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(lV,{file:fe.file})}),o&&!fe&&D&&(0,Z.jsx)(iV,{hour:o.hour,settings:{...x,sky:{...ar.sky,...e}}}),ce&&(0,Z.jsx)(uV,{fog:ce})]})}catch(e){throw B(`DaylightRig`,e)}}function sV({file:e}){try{let t=We(pe,e),n=L(e=>e.scene);return(0,Q.useLayoutEffect)(()=>{t.mapping=303,t.colorSpace=te;let e=n.background;return n.background=t,()=>{n.background=e}},[n,t]),null}catch(e){throw B(`LookBackgroundView`,e)}}var cV=(e,t)=>e.sunIntensity*t.sun+e.skyIntensity*t.fill;function lV({file:e}){try{let t=AB(e),n=L(e=>e.scene),r=(0,Q.useMemo)(()=>{let e=t.image,n=e.data.slice(),r=n instanceof Uint16Array?p.toHalfFloat(20):20;for(let e=0;e<n.length;e++)n[e]=Math.min(n[e],r);let i=t.clone();return i.source=new l({...e,data:n}),i.mapping=303,i.colorSpace=E,i.needsUpdate=!0,i},[t]);return(0,Q.useLayoutEffect)(()=>{let e=n.environment;return n.environment=r,()=>{n.environment=e,r.dispose()}},[n,r]),null}catch(e){throw B(`LookSky`,e)}}function uV({fog:e}){try{let t=L(e=>e.scene);return(0,Q.useLayoutEffect)(()=>{let n=t.fog;return t.fog=e,()=>{t.fog=n}},[t,e]),null}catch(e){throw B(`LookFogView`,e)}}var dV=new WeakMap;function fV(e){let t=dV.get(e);return t||(t={hue:0,saturation:0,brightness:0,contrast:0,tint:new he(1,1,1)},dV.set(e,t)),t}function pV(e,t){e.hue=t.hue,e.saturation=t.saturation,e.brightness=t.brightness,e.contrast=t.contrast,e.tint.set(t.tint??16777215)}function mV({look:e,ref:t}){try{let{ambientOcclusion:n,bloom:r,grading:i,vignette:a}=e,o=iy(qh).some(e=>!e.get(qh)?.fromLook),s=Gv();sj(o||s?[]:[ny.Grading,...r===!1?[]:[ny.Bloom],...n===!1?[]:[ny.Occlusion]]);let c=Nv(e=>({grading:e.grading,bloom:e.bloom,occlusion:e.occlusion})),l=c.grading||c.bloom&&r!==!1||c.occlusion&&n!==!1,u=(0,Q.useRef)(!1);return(0,Q.useEffect)(()=>{o&&!u.current&&(u.current=!0,console.warn(`The look mounts no post-processing: the scene holds its own <PostProcessing>. Pass postProcessing: false to the look to silence this.`))},[o]),o||!l?null:(0,Z.jsxs)(dj,{ref:t,fromLook:!0,children:[n&&(0,Z.jsx)(Sj,{...n}),r&&(0,Z.jsx)(bj,{...r}),c.grading&&(0,Z.jsx)(_V,{grading:i}),c.grading&&a&&(0,Z.jsx)(wj,{...a})]})}catch(e){throw B(`LookPostProcessing`,e)}}function hV(){return fV(W())}var gV=.5;function _V({grading:e}){try{let t=(0,Q.use)(uj.load()),n=hV();(0,Q.useLayoutEffect)(()=>pV(n,e),[n,e]);let r=(0,Q.useRef)(null),i=(0,Q.useRef)(null),a=(0,Q.useRef)(null),o=(0,Q.useRef)(e.hue);return I(z(`Grading`,()=>{r.current?.tint.copy(n.tint);let e=i.current;e&&(n.hue!==o.current&&(e.hue=n.hue,o.current=n.hue),e.saturation=n.saturation);let t=a.current;t&&(t.brightness=n.brightness,t.contrast=n.contrast)}),gV),(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(t.Tint,{ref:r}),(0,Z.jsx)(t.HueSaturation,{ref:i,hue:e.hue,saturation:e.saturation}),(0,Z.jsx)(t.BrightnessContrast,{ref:a,brightness:e.brightness,contrast:e.contrast})]})}catch(e){throw B(`Grading`,e)}}function vV({look:e,...t}){try{let n=Jv(),r=(0,Q.useMemo)(()=>e&&wB(e),[e]);return n?null:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(oV,{look:r,...t}),r?.postProcessing&&(0,Z.jsx)(mV,{look:r})]})}catch(e){throw B(`Lighting`,e)}}var yV=function(e){return e.Glass=`glass`,e.Bare=`bare`,e}({}),bV={glass:`${mw} p-4`,bare:``},xV={top:lb.top,right:lb.right,bottom:lb.bottom,left:lb.left,maxHeight:`calc(100% - 2em - 6px - ${lb.top} - ${lb.bottom})`,maxWidth:`calc(100% - 2em - 6px - ${lb.left} - ${lb.right})`};function SV({title:e,overline:t,onClose:n,actions:r,children:i,variant:a=`glass`,className:o,dialogClassName:s,classNames:c={}}){try{let l=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{let e=l.current;return e?.showModal(),()=>e?.close()},[]),(0,Z.jsxs)(`dialog`,{ref:l,"aria-label":e,style:xV,onCancel:e=>{e.preventDefault(),n?.()},onClick:e=>{e.target===e.currentTarget&&n?.()},className:K(`m-auto flex-col items-center gap-4 bg-transparent p-2 open:flex backdrop:bg-black/40`,s,c.dialog),children:[(0,Z.jsxs)(`div`,{"data-pane":!0,className:K(`flex min-h-0 min-w-64 flex-col items-center gap-3 overflow-y-auto`,bV[a],o,c.pane),children:[t&&(0,Z.jsx)(xy,{size:`xs`,className:c.overline,children:t}),(0,Z.jsx)(Iy,{level:2,className:K(a===`bare`&&`sr-only`,c.title),children:e}),i]}),r&&(0,Z.jsx)(`div`,{className:K(`flex shrink-0 gap-3`,c.actions),children:r})]})}catch(e){throw B(`Dialog`,e)}}function CV({open:e,title:t,overline:n,pause:r=!1,onClose:i,actions:a,children:o,variant:s,className:c,dialogClassName:l,classNames:u,freeCursor:d=!0}){try{let f=(0,Q.useId)();dw(e&&d);let p=vm(Uh,e=>e.stack.at(-1)?.id===f);return(0,Q.useEffect)(()=>{e&&Uh.getState().open({id:f,title:t,pause:r})},[e,f,t,r]),(0,Q.useEffect)(()=>{if(e)return()=>Uh.getState().close(f)},[e,f]),!e||!p?null:(0,Z.jsx)(Yy,{children:(0,Z.jsx)(SV,{title:t,overline:n,onClose:i,actions:a,variant:s,className:c,dialogClassName:l,classNames:u,children:o})})}catch(e){throw B(`Modal`,e)}}var wV=[0,0,-1];function TV({position:e,rotation:t,scale:n,grip:r,forward:i=wV,children:a}){try{let o=(0,Q.use)(Lz),s=o?.entity,c=Sr.grip,l=r?.thumb??c.thumb,u=r?.index??c.index,d=r?.middle??c.middle,f=r?.ring??c.ring,p=r?.little??c.little;(0,Q.useLayoutEffect)(()=>{if(s?.isAlive())return s.add(Hi({curl:{thumb:l,index:u,middle:d,ring:f,little:p}})),()=>{s.isAlive()&&s.remove(Hi)}},[s,l,u,d,f,p]);let[m,h,g]=i,[_=0,v=0,y=0]=t??[];return(0,Q.useLayoutEffect)(()=>{if(!s?.isAlive())return;let e=new j(m,h,g).applyEuler(new ke(_,v,y)).normalize();return s.add(zo({forward:e})),()=>{s.isAlive()&&s.remove(zo)}},[s,m,h,g,_,v,y]),o?Je((0,Z.jsx)(`group`,{position:e,rotation:t,scale:n,children:a}),o.object):null}catch(e){throw B(`HeldItemView`,e)}}function EV(e){try{return(0,Z.jsx)(TV,{...e})}catch(e){throw B(`HeldItem`,e)}}var DV=[12,24];function OV(e){let[t,n]=DV;return F.clamp((n-e)/(n-t),0,1)}var kV=new j;function AV(e,t){I(z(`useBubbleFade`,({camera:n})=>{if(!e.current||!t.current)return;let r=n.position.distanceTo(e.current.getWorldPosition(kV));t.current.style.opacity=String(OV(r))}))}function jV({text:e,ref:t}){try{return(0,Z.jsx)(`div`,{ref:t,children:(0,Z.jsx)(xy,{as:`p`,className:`w-max max-w-48 text-center whitespace-normal`,children:e})})}catch(e){throw B(`SpeechLine`,e)}}function MV({name:e,title:t=``,level:n=1,faction:r=qd.Friendly,routines:i,leash:a=0,avatar:o,shape:s,color:c,position:l=[0,0,0],facing:u=0,radius:d=Vu.radius,height:f=Vu.height,collisionMask:p=Vu.collisionMask,controller:m,children:h,cullingMode:g}){try{let _=W(),v=Pv(),y=(0,Q.use)(wC),b=Jv(),x=!b&&!_.has(Aa),S=typeof o==`string`?x?km(o):void 0:o,[C,w]=(0,Q.useState)(null);i&&rd(i);let T=(0,Q.useRef)({name:e,title:t,level:n,faction:r,routines:i,leash:a,avatar:typeof o==`string`?o:o?.name??o?.model.split(/[?#]/)[0].split(`/`).pop()?.replace(/\.\w+$/,``)??``,position:l,facing:u,body:{radius:d,height:f,collisionMask:p&&Sn(p)},controller:dt(m)});(0,Q.useEffect)(()=>{let{routines:e}=T.current,t=e?rd(e):null;if(v!==void 0&&_.has(Kt))return SC(_,v,e=>{e&&t&&e.add(ca({compiled:t})),w(e)});let{body:n,controller:r,position:i,...a}=T.current,o=$s(_,{...a,position:new j(...i)});return o.add(jt(n),$n),o.set(Ya,r),v!==void 0&&_.has(Aa)&&o.add(gn({path:v})),y!==null&&o.add(ln({ground:y})),w(o),()=>{o.isAlive()&&il(_,o)}},[_,v,y]);let E=Jy({id:C&&String(C.id()),name:e,kind:yh.Entity,entityId:C?Fc(_,C):void 0});return C===null?null:(0,Z.jsx)(TC,{value:C,children:(0,Z.jsxs)(rb,{value:E,children:[h,!b&&(0,Z.jsx)(Q.Suspense,{fallback:(0,Z.jsx)(bS,{name:e}),children:S===void 0?(0,Z.jsx)(Uz,{entity:C,shape:s,color:c,children:({height:e})=>(0,Z.jsx)(NV,{entity:C,height:e})}):(0,Z.jsx)(qz,{entity:C,body:S,cullingMode:g,children:({height:e})=>(0,Z.jsx)(NV,{entity:C,height:e})})})]})})}catch(e){throw B(`Npc`,e)}}function NV({entity:e,height:t}){try{let[n,r]=(0,Q.useState)({name:``,title:``,line:``}),i=(0,Q.useRef)(null),a=(0,Q.useRef)(null);return AV(i,a),I(z(`NpcLabel`,()=>{let t=e.isAlive()?jf(e):void 0,i=au(e,Rt,`title`),a=au(e,Rt,`line`);t!==void 0&&i!==void 0&&a!==void 0&&(t!==n.name||i!==n.title||a!==n.line)&&r({name:t,title:i,line:a})})),(0,Z.jsx)(`group`,{ref:i,children:(0,Z.jsx)(z_,{position:[0,t,0],children:(0,Z.jsxs)(`div`,{className:`pointer-events-none flex -translate-x-1/2 -translate-y-full flex-col pb-1 items-center whitespace-nowrap`,children:[n.line&&(0,Z.jsx)(jV,{ref:a,text:n.line}),(0,Z.jsx)(xy,{className:`font-bold`,children:n.name}),n.title&&(0,Z.jsx)(xy,{size:`xs`,children:`<${n.title}>`})]})})})}catch(e){throw B(`NpcLabel`,e)}}var PV=new WeakMap;function FV(){let e=W();return(0,Q.useMemo)(()=>({show:t=>PV.get(e)?.show(t)}),[e])}var IV=new j,LV=new j,RV=new j;function zV(e){e.style.opacity=`0`;let t=e.firstElementChild;t&&(t.textContent=``)}function BV({capacity:e=48,className:t}){try{let n=W(),r=Gv(),i=(0,Q.useRef)([]),a=(0,Q.useRef)([]),o=(0,Q.useRef)(0),s=K(`block text-sm font-bold text-white [text-shadow:1px_1px_0_#000]`,t);return(0,Q.useEffect)(()=>{if(r)return;let t=i.current;return t.length=e,PV.set(n,{show:({at:n,text:r,color:i=``,seconds:c=.75,rise:l=1,className:u=``,fade:d=!0})=>{let f=t.findIndex(e=>e===void 0);if(f<0){f=0;for(let n=1;n<e;n++)t[n].shown<t[f].shown&&(f=n)}let p=t[f]?.position??new j;t[f]={position:Vo(p,n),text:r,color:i,className:u,fade:d,seconds:c,left:c,rise:l,shown:o.current++};let m=a.current[f]?.firstElementChild;if(m instanceof HTMLElement){m.textContent=r,m.style.color=i,m.className=K(s,u);for(let e of m.getAnimations?.()??[])e.cancel(),e.play()}}}),()=>{PV.delete(n),t.fill(void 0)}},[n,r,e,s]),lB(`floating text`,()=>({shown:i.current.flatMap(e=>e?[e.text]:[])})),I(z(`FloatingText`,({camera:t,size:n},r)=>{let o=i.current;for(let i=0;i<e;i++){let e=a.current[i];if(!e)continue;let s=o[i];if(!s){e.style.opacity!==`0`&&zV(e);continue}if(s.left-=r,s.left<=0){o[i]=void 0,zV(e);continue}if(s.position.y+=s.rise*r,t.getWorldDirection(LV),RV.copy(s.position).sub(t.position).dot(LV)<0){e.style.opacity=`0`;continue}IV.copy(s.position).project(t);let c=(IV.x+1)/2*n.width,l=(1-IV.y)/2*n.height;e.style.opacity=s.fade?String(s.left/s.seconds):`1`,e.style.transform=`translate(${c}px, ${l}px) translate(-50%, -50%)`}})),(0,Z.jsx)(Yy,{children:Array.from({length:e},(e,t)=>(0,Z.jsx)(`span`,{ref:e=>{a.current[t]=e},className:`pointer-events-none fixed top-0 left-0 opacity-0 will-change-[transform,opacity]`,children:(0,Z.jsx)(`span`,{className:s})},t))})}catch(e){throw B(`FloatingText`,e)}}var VV=Xs(async()=>{let{BatchedRenderer:e,ConstantColor:t,ConstantValue:n,ParticleSystem:r,QuarksLoader:i,QuarksUtil:a,Vector4:o}=await Rp(async()=>{let{BatchedRenderer:e,ConstantColor:t,ConstantValue:n,ParticleSystem:r,QuarksLoader:i,QuarksUtil:a,Vector4:o}=await import(`../chunks/DEucxoKb.js`);return{BatchedRenderer:e,ConstantColor:t,ConstantValue:n,ParticleSystem:r,QuarksLoader:i,QuarksUtil:a,Vector4:o}},__vite__mapDeps([81,82,3,5,1]),import.meta.url);return{BatchedRenderer:e,ConstantColor:t,ConstantValue:n,ParticleSystem:r,QuarksLoader:i,QuarksUtil:a,Vector4:o}},`The particle library is read before it loads`),HV={stop:()=>void 0},UV=new WeakMap;function WV(e){let t=UV.get(e);if(t)return t;let n=e instanceof c?{object:e,ready:!0}:{object:new c,ready:!1};if(!n.ready){let{QuarksLoader:t}=VV.read();n.object=new t().parse(e,()=>{n.ready=!0})}return UV.set(e,n),n}var GV=new WeakMap;function KV(){let e=W();return(0,Q.useMemo)(()=>({spawn:(t,n)=>GV.get(e)?.spawn(t,n),follow:(t,n,r)=>GV.get(e)?.follow(t,n,r)??HV}),[e])}function qV({effects:e}){try{let t=Eg(eh.Particles);return Gv()||!t?null:(0,Z.jsx)(Q.Suspense,{fallback:(0,Z.jsx)(bS,{name:`the particles`}),children:(0,Z.jsx)(ZV,{effects:e})})}catch(e){throw B(`Particles`,e)}}function JV({effect:e,color:t}){try{let n=W(),r=Gv(),i=(0,Q.useRef)(null),a=(0,Q.useRef)(void 0),o=(0,Q.useRef)(null);return I(z(`Emitter`,()=>{let r=GV.get(n);r!==a.current&&o.current&&(i.current?.stop(),i.current=r?.follow(e,o.current,t)??null,a.current=r)})),(0,Q.useLayoutEffect)(()=>()=>{i.current?.stop(),i.current=null,a.current=void 0},[e,t,n]),r?null:(0,Z.jsx)(`group`,{ref:o})}catch(e){throw B(`Emitter`,e)}}var YV=new he,XV=new j;function ZV({effects:e}){try{let t=(0,Q.use)(VV.load()),n=W(),r=(0,Q.useMemo)(()=>{let e=new xe,n=new t.BatchedRenderer;return e.add(n),{group:e,renderer:n,waiting:[]}},[t]),i=(0,Q.useMemo)(()=>{let n=new Set(e);for(let t of e)WV(t);let{ConstantColor:i,ConstantValue:a,ParticleSystem:o,QuarksUtil:s,Vector4:c}=t,l=(e,t)=>{t!==void 0&&(YV.set(t),s.runOnAllParticleEmitters(e,({system:e})=>{e instanceof o&&(e.startColor=new i(new c(YV.r,YV.g,YV.b,1)))}))},u=(e,t)=>{let n=e.object.clone();n.position.add(r.group.worldToLocal(Vo(XV,t.at)));let{color:i,count:c,yaw:u}=t;u!==void 0&&(n.rotation.y=u),l(n,i),c!==void 0&&s.runOnAllParticleEmitters(n,({system:e})=>{if(e instanceof o)for(let t of e.emissionBursts)t.count=new a(c)}),r.group.add(n),s.addToBatchRenderer(n,r.renderer),s.setAutoDestroy(n,!0),s.play(n)},d=e=>{if(!n.has(e))throw R(Error(`Particles was asked to play an effect it does not hold. Pass the effect in the effects prop of the scene's <Particles>.`),`SP0010`,void 0);return WV(e)};return{spawn:(e,t)=>{let n=d(e);if(n.ready){u(n,t);return}let i={...t,at:Vo(new j,t.at),color:t.color instanceof he?t.color.clone():t.color};r.waiting.push({template:n,attach:()=>u(n,i)})},follow:(e,t,n)=>{let i=d(e),a=n instanceof he?n.clone():n,o=null,c=!1,u=()=>{c||(o=i.object.clone(),l(o,a),t.add(o),s.addToBatchRenderer(o,r.renderer),s.play(o))};return i.ready?u():r.waiting.push({template:i,attach:u}),{stop:()=>{c=!0,o&&(r.group.attach(o),s.setAutoDestroy(o,!0),s.endEmit(o))}}}}},[e,t,r]);(0,Q.useEffect)(()=>(GV.set(n,i),()=>{GV.delete(n)}),[n,i]),(0,Q.useEffect)(()=>()=>{for(let e of r.renderer.batches)e.dispose()},[r]),lB(`particles`,()=>{let e=0;for(let t of r.renderer.systemToBatchIndex.keys())e+=t.particleNum;return{bursts:r.renderer.systemToBatchIndex.size,particles:e,waiting:r.waiting.length}});let a=(0,Q.useCallback)(e=>(e?.add(r.group),()=>{e?.remove(r.group)}),[r]);return I(z(`LoadedParticles`,(e,t)=>{let{waiting:n,renderer:i}=r;if(n.length){let e=0;for(let t of n)t.template.ready?t.attach():n[e++]=t;n.length=e}i.update(t)})),(0,Z.jsx)(`group`,{ref:a})}catch(e){throw B(`LoadedParticles`,e)}}function QV({tree:e}){try{let t=NC();if(t.get(Rt)?.name===void 0)throw R(Error(`Dialog gives an NPC a conversation: put it inside an <Npc>.`),`SP0001`,`Dialog`);let n=_i(e);return(0,Q.useEffect)(()=>(t.add(ds({compiled:n})),()=>{t.isAlive()&&t.remove(ds)}),[t,n]),null}catch(e){throw B(`Dialog`,e)}}function $V(e,t){let n=Q.Children.toArray(e).filter(e=>typeof e==`string`||typeof e==`number`).join(``).trim()||t;return n?`Button: ${n}`:`Button`}function eH(e){try{let{ref:t}=Zy($V(e.children,e.label),e);return(0,Z.jsx)(by,{...e,ref:t})}catch(e){throw B(`Button`,e)}}var tH=40,nH=/^(?:Digit|Numpad)([1-9])$/;function rH(e,t){let n=gy()??!1,r=`${t}:${e}`,[i,a]=(0,Q.useState)({key:r,count:0}),o=n?e.length:i.key===r?Math.min(i.count,e.length):0,s=o>=e.length;return(0,Q.useEffect)(()=>{if(s)return;let e=setInterval(()=>a(e=>({key:r,count:(e.key===r?e.count:0)+1})),1e3/tH);return()=>clearInterval(e)},[r,s]),{shown:e.slice(0,o),whole:s,finish:()=>a({key:r,count:e.length})}}function iH({portrait:e}){try{let t=W(),{entity:n}=tT(),r=G(n,bc),{shown:i,whole:a,finish:o}=rH(r?.line??``,r?.entered??-1),s=a?r?.choices??[]:[],c=e=>{r&&PC(t,Ca,{npc:r.npc,choice:e,entered:r.entered})},l=r?.ends?Go.Continue:s.length===1?s[0].pick:void 0;return(0,Q.useEffect)(()=>{if(!r)return;let e=ug(()=>c(Go.End)),t=hh.subscribe((e,t)=>{e.open&&!t.open&&c(Go.End)});return()=>{e(),t()}}),(0,Q.useEffect)(()=>{if(!r)return;let e=e=>{if(e.metaKey||e.ctrlKey||e.altKey||e.repeat||Xx(e)||hh.getState().open)return;let t=nH.exec(e.code)?.[1],n=Ch(Et.interact).some(t=>t===e.code);if(t!==void 0&&s[Number(t)-1])c(s[Number(t)-1].pick);else if(n&&!a)o();else if(n&&l!==void 0)c(l);else return;e.preventDefault()};return window.addEventListener(`keydown`,e,{capture:!0}),()=>window.removeEventListener(`keydown`,e,{capture:!0})}),r?(0,Z.jsxs)(bw,{freeCursor:!0,slot:Xy.Bottom,variant:pw.Bare,className:`w-[min(36rem,calc(100vw-2rem))]`,children:[(0,Z.jsxs)(`div`,{className:K(mw,`flex w-full items-start gap-3 text-left`),children:[(0,Z.jsx)(`div`,{className:`flex size-12 shrink-0 items-center justify-center overflow-hidden rounded-full bg-black/30`,children:e?.(r.speaker)??(0,Z.jsx)(xy,{size:`lg`,children:r.speaker.slice(0,1)})}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,Z.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-2`,children:[(0,Z.jsx)(xy,{size:`base`,className:`font-bold`,children:r.speaker}),r.title&&(0,Z.jsx)(xy,{size:`xs`,children:`<${r.title}>`})]}),(0,Z.jsx)(xy,{as:`p`,size:`base`,className:`min-h-12`,children:i})]})]}),a&&(0,Z.jsxs)(`div`,{className:`flex w-full flex-col gap-2`,children:[s.map(({text:e,pick:t},n)=>(0,Z.jsx)(eH,{onPress:()=>c(t),className:`w-full justify-start`,children:`${n+1}. ${e}`},t)),r.ends&&(0,Z.jsx)(eH,{onPress:()=>c(Go.Continue),className:`w-full`,children:`Continue`})]})]}):null}catch(e){throw B(`DialogPanel`,e)}}var aH=.5;function oH(e){if(!e)return;for(let[t,n]of Object.entries(e))if(n!==void 0&&!(Number.isFinite(n)&&n>0))throw R(Error(`clipSpeeds gives the ${t} ${n}, where it takes a positive number of metres a second: the ground speed at which the clip plays at its own pace. Set clipSpeeds={{ ${t}: 1.2 }}, or leave the ${t} out for the engine to measure it off the model's feet.`),`SP0377`,void 0);let{walk:t,run:n}=e;if(t!==void 0&&n!==void 0&&t>=n)throw R(Error(`clipSpeeds gives the walk ${t} m/s and the run ${n} m/s, where the walk's speed is below the run's: the blend plays the walk at the slower speed. Swap them, or name the clips the other way round in \`clips\`.`),`SP0378`,void 0)}function sH(e,t){let n=new Map;for(let r of Object.values(zz)){let i=t[r]??r,a=e.find(e=>e.name===i);a&&n.set(r,a)}return n}var cH=new WeakMap;function lH(e){let t=1/0;for(let n of e.tracks)t=Math.min(t,n.times[0]);if(!(t>0&&t<e.duration))return e;let n=cH.get(e);if(!n){n=e.clone();for(let e of n.tracks)e.shift(-t);n.duration=e.duration-t,cH.set(e,n)}return n}var uH=.35,dH=.45,fH=1.8,pH=e=>1-(1-e)**3,mH=e=>1+2.70158*(e-1)**3+1.70158*(e-1)**2,hH=(e,t=uH)=>F.clamp(e/t,0,1),gH=e=>F.lerp(1.8,1,pH(hH(e))),_H=e=>mH(hH(e,dH)),vH=[0,1],yH=[Qi.maskEmpty,Qi.maskFull],bH=[Qi.maskFull,Qi.maskEmpty];function xH(){try{return(0,Z.jsx)(q_,{attach:`alphaMap`,colorSpace:``,type:K_.Radial,size:64,width:64,innerCircleRadius:0,outerCircleRadius:32,stops:vH,colors:bH})}catch(e){throw B(`RoundFade`,e)}}function SH({light:e,group:t,material:n}){try{let{radius:r,height:i,opacity:a,radialSegments:o,color:s}=e;return(0,Z.jsx)(`group`,{ref:t,name:`beam`,children:[[1,1],[.4,.8]].map(([e,t],c)=>(0,Z.jsxs)(`mesh`,{"position-y":i*t/2,children:[(0,Z.jsx)(`cylinderGeometry`,{args:[r*e,r*e,i*t,o,1,!0]}),(0,Z.jsx)(`meshBasicMaterial`,{ref:c===0?n:void 0,color:s,transparent:!0,opacity:a,side:2,forceSinglePass:!0,blending:2,depthWrite:!1,children:(0,Z.jsx)(q_,{attach:`alphaMap`,colorSpace:``,stops:vH,colors:yH})})]},e))})}catch(e){throw B(`BeamPiece`,e)}}function CH({light:e,material:t,spread:n=2.4}){try{let{radius:r,opacity:i,color:a}=e;return(0,Z.jsxs)(`mesh`,{"rotation-x":-Math.PI/2,renderOrder:1,children:[(0,Z.jsx)(`circleGeometry`,{args:[r*n,32]}),(0,Z.jsx)(`meshBasicMaterial`,{ref:t,color:a,transparent:!0,opacity:i*.5,blending:2,depthTest:!1,depthWrite:!1,children:(0,Z.jsx)(xH,{})})]})}catch(e){throw B(`PoolPiece`,e)}}function wH({light:{radius:e,opacity:t,color:n},mesh:r,material:i,inner:a=.82,outer:o=1.15,start:s=0,length:c=Math.PI*2,strength:l=1.5,additive:u=!1}){try{return(0,Z.jsxs)(`mesh`,{ref:r,"rotation-x":-Math.PI/2,renderOrder:2,children:[(0,Z.jsx)(`ringGeometry`,{args:[e*a,e*o,48,1,s,c]}),(0,Z.jsx)(`meshBasicMaterial`,{ref:i,color:n,transparent:!0,opacity:Math.min(1,t*l),side:2,forceSinglePass:!0,blending:u?2:1,depthTest:!1,depthWrite:!1})]})}catch(e){throw B(`RingPiece`,e)}}var TH=12,EH=3,DH=Math.PI*1.5,OH=.3;function kH({light:e,placedAt:t}){try{let{radius:n,height:r,opacity:i,color:a}=e,o=(0,Q.useRef)(null),s=(0,Q.useRef)(null),c=(0,Q.useRef)(null),l=(0,Q.useRef)(0),u=(0,Q.useMemo)(()=>({positions:new Float32Array(36),colors:new Float32Array(36)}),[]);return I(z(`MotesMark`,({clock:e},a)=>{let d=e.elapsedTime,f=Math.sin(d/fH*Math.PI*2);l.current+=a,s.current&&s.current.scale.set(1,_H(d-t.current),1),c.current&&(c.current.opacity=i*.5*(.7+.3*f));let p=o.current;if(!p)return;let{positions:m,colors:h}=u;for(let e=0;e<TH;e++){let t=(l.current/EH+e/TH)%1,i=e/TH*Math.PI*2+t*DH,a=n*(1-.4*t);m[e*3]=Math.cos(i)*a,m[e*3+1]=t*r*.8,m[e*3+2]=Math.sin(i)*a,h.fill(Math.sin(Math.PI*t),e*3,e*3+3)}let{attributes:g}=p.geometry;g.position.needsUpdate=!0,g.color.needsUpdate=!0})),(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(CH,{light:e,material:c}),(0,Z.jsx)(`group`,{ref:s,children:(0,Z.jsxs)(`points`,{ref:o,name:`motes`,frustumCulled:!1,children:[(0,Z.jsxs)(`bufferGeometry`,{children:[(0,Z.jsx)(`bufferAttribute`,{attach:`attributes-position`,args:[u.positions,3],usage:ee}),(0,Z.jsx)(`bufferAttribute`,{attach:`attributes-color`,args:[u.colors,3],usage:ee})]}),(0,Z.jsx)(`pointsMaterial`,{color:a,size:OH,vertexColors:!0,transparent:!0,blending:2,depthWrite:!1,children:(0,Z.jsx)(xH,{})})]})})]})}catch(e){throw B(`MotesMark`,e)}}var AH=1.2,jH=2,MH=AH/jH;function NH({light:e,placedAt:t}){try{let n=(0,Q.useRef)(null),r=(0,Q.useRef)(null),i=(0,Q.useRef)(null),a=(0,Q.useRef)(null),o=(0,Q.useRef)([]),s=(0,Q.useRef)([]),c=(0,Q.useRef)(null),{radius:l,opacity:u}=e;return I(z(`PulseMark`,({clock:e})=>{let l=e.elapsedTime-t.current,d=l%MH/MH;if(n.current){let e=l%MH/.25,t=e<1?.08*(1-e):0;n.current.scale.setScalar(gH(l)+t)}r.current&&(r.current.opacity=.8*(1-hH(l,.45))**2),c.current&&(c.current.opacity=u*.45*(.8+.2*Math.sin(l*Math.PI*2))),i.current&&(i.current.scale.set(1,_H(l),1),a.current&&(a.current.opacity=u*(.45+.75*(1-d)**3)));for(let e=0;e<jH;e++){let t=o.current[e],n=s.current[e];if(!t||!n)continue;let r=(l+e*MH)%AH/AH;t.scale.setScalar(1+1*pH(r)),n.opacity=u*1.3*(1-r)**2}})),(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(wH,{light:e,mesh:n}),(0,Z.jsx)(SH,{light:{...e,radius:l*.35},group:i,material:a}),(0,Z.jsx)(CH,{light:e,material:r,spread:1.8}),(0,Z.jsx)(CH,{light:e,material:c,spread:2.6}),Array.from({length:jH},(t,n)=>(0,Z.jsx)(wH,{light:e,inner:.92,outer:1.12,additive:!0,mesh:e=>{o.current[n]=e},material:e=>{s.current[n]=e}},n))]})}catch(e){throw B(`PulseMark`,e)}}var PH=5,FH=12,IH=.72,LH=.5,RH=-.8,zH=.3;function BH(e,t,n,r,i){return VH(Array.from({length:e},(a,o)=>new ue(t,n,i,1,o*Math.PI*2/e,r).rotateX(-Math.PI/2)))}function VH(e){let t=gm(e);for(let t of e)t.dispose();return t}function HH({light:e,placedAt:t}){try{let{radius:n,height:r,opacity:a,color:o}=e,s=(0,Q.useRef)(null),c=(0,Q.useRef)(null),l=(0,Q.useRef)(null),u=(0,Q.useRef)(null),d=(0,Q.useMemo)(()=>{let e=Math.PI*2/PH*IH,t=r*zH;return{arcs:BH(PH,n*.82,n*1.15,e,8),ticks:BH(FH,n*1.3,n*1.6,.2,1),curtains:VH(Array.from({length:PH},(r,a)=>new i(n,n,t,8,1,!0,a*Math.PI*2/PH+Math.PI/2,e).translate(0,t/2,0)))}},[n,r]);(0,Q.useEffect)(()=>()=>{for(let e of Object.values(d))e.dispose()},[d]),I(z(`SigilMark`,({clock:e},n)=>{let r=e.elapsedTime,i=r-t.current,o=Math.sin(r/fH*Math.PI*2),d=gH(i);s.current&&(s.current.scale.set(d,_H(i),d),s.current.rotation.y+=LH*n),c.current&&(c.current.scale.setScalar(d),c.current.rotation.y+=RH*n),l.current&&(l.current.opacity=a*(.6+.3*o)),u.current&&(u.current.opacity=a*.5*(.75+.25*o))}));let f=(0,Z.jsx)(`meshBasicMaterial`,{color:o,transparent:!0,opacity:Math.min(1,a*1.5),side:2,forceSinglePass:!0,blending:2,depthTest:!1,depthWrite:!1});return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(CH,{light:e,material:u}),(0,Z.jsxs)(`group`,{ref:s,name:`arcs`,children:[(0,Z.jsx)(`mesh`,{geometry:d.arcs,renderOrder:2,children:f}),(0,Z.jsx)(`mesh`,{geometry:d.curtains,children:(0,Z.jsx)(`meshBasicMaterial`,{ref:l,color:o,transparent:!0,opacity:a,side:2,forceSinglePass:!0,blending:2,depthWrite:!1,children:(0,Z.jsx)(q_,{attach:`alphaMap`,colorSpace:``,stops:vH,colors:yH})})})]}),(0,Z.jsx)(`group`,{ref:c,name:`ticks`,children:(0,Z.jsx)(`mesh`,{geometry:d.ticks,renderOrder:2,children:f})})]})}catch(e){throw B(`SigilMark`,e)}}var UH=.3,WH=new he(Qi.maskFull);function GH({light:e,placedAt:t}){try{let{radius:n,opacity:r,color:i,width:a=UH,throughScenery:o=!1}=e,s=(0,Q.useRef)(null);return I(z(`RingMark`,({clock:e})=>{let n=s.current;if(!n)return;let a=1-hH(e.elapsedTime-t.current);n.opacity=F.lerp(r,1,a),n.color.set(i).lerp(WH,a)})),(0,Z.jsxs)(`mesh`,{"rotation-x":-Math.PI/2,children:[(0,Z.jsx)(`ringGeometry`,{args:[n*(1-a),n,48]}),(0,Z.jsx)(`meshBasicMaterial`,{ref:s,color:i,transparent:!0,opacity:r,depthTest:!o,depthWrite:!1})]})}catch(e){throw B(`RingMark`,e)}}var KH={[Vz.Ring]:GH,[Vz.Pulse]:NH,[Vz.Sigil]:HH,[Vz.Motes]:kH};function qH({shape:e,light:t,placedAt:n,ref:r}){try{if(e===Vz.None)return null;let i=KH[e];return(0,Z.jsx)(`group`,{ref:r,visible:!1,userData:ZD,children:(0,Z.jsx)(i,{light:t,placedAt:n})},e)}catch(e){throw B(`GroundMarkView`,e)}}var JH={radius:_s.arrivalRadius,lift:.02,pulseSeconds:1,pulseMin:.5,lightHeight:1.6},YH={radius:JH.radius,height:JH.lightHeight,opacity:.6,radialSegments:12,color:Qi.destinationLight},XH={...YH,opacity:1,color:Qi.destinationMarker},ZH=new j;function QH({entity:e,shape:t=Vz.Pulse}){try{let n=G(ry(lf),lf)?.surface,r=(0,Q.useRef)(null),i=(0,Q.useRef)(null),a=(0,Q.useRef)(0),{lift:o,pulseSeconds:s,pulseMin:c}=JH,l=t===Vz.Ring;return I(z(`DestinationMarkerView`,({clock:t})=>{let u=r.current;if(!u)return;let d=e.get(ac);if(u.visible=d!==void 0&&d.corners.length>0,!u.visible||!d||!n)return;let{destination:f}=d;if(f!==i.current&&(i.current=f,a.current=t.elapsedTime),u.position.set(f.x,n.getHeightAt(f)+o,f.z),!l)return;n.getNormalAt(f,ZH),u.quaternion.setFromUnitVectors(Za,ZH);let p=Math.sin(2*Math.PI*t.elapsedTime/s);u.scale.setScalar(c+(1-c)*(.5+.5*p))})),(0,Z.jsx)(qH,{ref:r,shape:t,light:l?XH:YH,placedAt:a})}catch(e){throw B(`DestinationMarkerView`,e)}}var $H=Mn.speed/3;function eU({entity:e,sounds:t}){try{let n=(0,Q.useRef)(null),r=(0,Q.useRef)(0);return(0,Q.useEffect)(()=>{for(let e of t)sS(e)},[t]),I(z(`FootstepsView`,()=>{let i=e.get(mo)?.position;if(!i)return;let a=n.current;if(a===null){n.current=i.clone();return}r.current+=Math.hypot(i.x-a.x,i.z-a.z),a.copy(i),!(r.current<$H)&&(r.current%=$H,yS(t[Math.floor(Math.random()*t.length)]))})),null}catch(e){throw B(`FootstepsView`,e)}}var tU=/(left|(^|[^a-z])l)[^a-z]*toe(base)?$|toe(base)?[^a-z]*(left|l)$/i,nU=/(right|(^|[^a-z])r)[^a-z]*toe(base)?$|toe(base)?[^a-z]*(right|r)$/i,rU=/(left|(^|[^a-z])l)[^a-z]*foot$|foot[^a-z]*(left|l)$/i,iU=/(right|(^|[^a-z])r)[^a-z]*foot$|foot[^a-z]*(right|r)$/i,aU=60,oU=.15,sU=.01,cU=new j,lU=new j,uU=new WeakMap;function dU(e,t){let n;return e.traverse(e=>{!n&&e instanceof y&&t.test(e.name)&&(n=e)}),n}function fU(e,t){let n=new Set;for(let t=e;t;t=t.parent)n.add(t);for(let e=t;e;e=e.parent)if(n.has(e))return e}function pU(e,t){if(uU.has(t))return uU.get(t);let n=mU(e,t);return uU.set(t,n),n}function mU(e,t){let n=Ky(e),r=[dU(n,tU),dU(n,nU)],[i,a]=r[0]&&r[1]?r:[dU(n,rU),dU(n,iU)],o=i&&a&&fU(i,a);if(!i||!a||!o||t.duration<=0)return;let s=new _e(n),c=s.clipAction(t).play(),l=Math.max(2,Math.round(t.duration*aU)),u=t.duration/l,d=[i,a].map(e=>({bone:e,ahead:new Float32Array(l),height:new Float32Array(l)}));for(let e=0;e<l;e++){c.time=e*u,s.update(0),n.updateMatrixWorld(!0),lU.setFromMatrixPosition(o.matrixWorld);for(let{bone:t,ahead:n,height:r}of d)cU.setFromMatrixPosition(t.matrixWorld),n[e]=cU.z-lU.z,r[e]=cU.y}s.stopAllAction(),s.uncacheRoot(n);let f=0,p=0;for(let{ahead:e,height:t}of d){let n=Math.min(...t),r=n+oU*(Math.max(...t)-n);for(let n=0;n<l;n++){let i=(n+1)%l;t[n]<=r&&t[i]<=r&&e[i]<e[n]&&(f+=e[n]-e[i],p+=u)}}let m=p===0?0:f/p;return m<sU?void 0:m}function hU(e,{walk:t,run:n}){let r=t??n;if(!r)return{idle:1,walk:0,run:0,cyclesPerSecond:0};if(e<r.metresPerSecond){let n=Math.max(0,e)/r.metresPerSecond;return{idle:1-n,walk:r===t?n:0,run:r===t?0:n,cyclesPerSecond:1/r.seconds}}if(t&&n&&e<n.metresPerSecond){let r=(e-t.metresPerSecond)/(n.metresPerSecond-t.metresPerSecond);return{idle:0,walk:1-r,run:r,cyclesPerSecond:e/F.lerp(t.metresPerSecond*t.seconds,n.metresPerSecond*n.seconds,r)}}let i=n??r;return{idle:0,walk:+(i===t),run:+(i===n),cyclesPerSecond:i.fixedPace?1/i.seconds:e/(i.metresPerSecond*i.seconds)}}function gU(e){return e===fu.Jump||e===fu.RunJump?`jump`:e===fu.Run?`move`:`stand`}var _U=[zz.Walk,zz.Run],vU={[zz.Walk]:aH,[zz.Run]:1};function yU(e){return e.get(oo)?.speed??Mn.speed}function bU({url:e,gait:t,clipSpeeds:n}){let{walk:r,run:i}=t;if(!r||!i||r.metresPerSecond<i.metresPerSecond)return;let a=e=>Number(e.metresPerSecond.toFixed(2)),o=(e,t)=>`the ${e} at ${a(t)} m/s, ${n?.[e]===void 0?t.fixedPace?`a share of her top speed, since the engine cannot measure its stride`:`measured off its feet`:`from clipSpeeds`}`;throw R(Error(`The CharacterSpawn's model ${e} places ${o(zz.Walk,r)}, and ${o(zz.Run,i)}, where the blend needs the walk below the run: at ${a(r)} m/s she would snap from the walk to the run. Give clipSpeeds the ground speed each clip's feet keep, the walk's below the run's, such as clipSpeeds={{ walk: 1.2, run: 3.5 }}.`),`SP0375`,void 0)}var xU=.2,SU={},CU={legYaw:0,backward:!1,clip:null},wU=new ke,TU=new Set;function EU({entity:e,url:t,lift:n,material:r,clips:i,clipSpeeds:a,children:o}){try{let s=W(),{scene:c,animations:l}=HS(t),{standing:u,measurements:f}=(0,Q.useMemo)(()=>{let e=new d().setFromObject(c),t=e.max.y-e.min.y;return{standing:n??On(c),measurements:{height:t,center:e.getCenter(new j).setY(t/2)}}},[n,c]);Az(e,f);let p=(0,Q.useMemo)(()=>sH(l,i??SU),[l,i]);return(0,Q.useEffect)(()=>{let e=l.map(({name:e})=>e);for(let[n,r]of Object.entries(i??{})){let i=`${t}\n${r}`;e.includes(r)||TU.has(i)||Dc(s,`The CharacterSpawn's clips name "${r}" for ${n}, which the model ${t} has no clip named. Its clips: ${e.join(`, `)||`none`}.`)&&TU.add(i)}},[l,i,t,s]),(0,Z.jsxs)(`group`,{ref:CC(e),children:[p.size===0&&!r?(0,Z.jsx)(dC,{url:t,lift:u,entity:e}):(0,Z.jsx)(DU,{entity:e,url:t,scene:c,animations:l,found:p,clipSpeeds:a,material:r,standing:u}),o?.({entity:e,height:f.height})]})}catch(e){throw B(`ModelBodyView`,e)}}function DU({entity:e,url:t,scene:n,animations:r,found:i,clipSpeeds:a,material:s,standing:c}){try{let l=W(),d=(0,Q.useMemo)(()=>{let e=Ky(n);return e.traverse(e=>{e instanceof k&&(e.castShadow=!0,e.receiveShadow=!0,e instanceof T&&(e.frustumCulled=!1),s&&(e.material=Array.isArray(e.material)?e.material.map(e=>s(e)):s(e.material)))}),e},[s,n]);US(d);let f=(0,Q.useMemo)(()=>new _e(d),[d]),p=(0,Q.useMemo)(()=>new Map([...i].map(([e,t])=>[e,f.clipAction(e===zz.Jump?t:lH(t))])),[i,f]),m=(0,Q.useMemo)(()=>{let r={},i=yU(e);for(let e of _U){let t=p.get(e);if(!t||e===zz.Run&&t===p.get(zz.Walk))continue;let o=t.getClip(),s=a?.[e]??pU(n,o);r[e]={seconds:o.duration,metresPerSecond:s??i*vU[e],fixedPace:s===void 0}}return bU({url:t,gait:r,clipSpeeds:a}),r},[p,a,e,n,t]);(0,Q.useEffect)(()=>{for(let e of _U){let n=p.get(e);if(!n||!m[e]?.fixedPace)continue;let r=n.getClip().name,i=`${t}\n${r}\nstride`;TU.has(i)||Dc(l,`The CharacterSpawn's model ${t} has a ${e} clip, "${r}", whose stride the engine cannot measure: it finds no left and right toe or foot bones, as Meshy, Mixamo and VRoid name them, or the clip moves neither foot back under the hips. The ${e} plays at its own pace and blends in at ${e===zz.Walk?`half her top speed`:`her top speed`}. Give the ground speed its feet keep, in metres a second, such as clipSpeeds={{ ${e}: ${e===zz.Walk?1.2:3.5} }}.`)&&TU.add(i)}},[p,m,t,l]);let h=(0,Q.useMemo)(()=>({mode:null,actions:null,starts:new Map,weights:new Map,elapsedSeconds:0,phase:0}),[f]),[g]=(0,Q.useState)(()=>_C(xS(e.get(hd)))),_=(0,Q.useMemo)(()=>ES(xS(e.get(js))),[d,e]),v=(0,Q.useMemo)(()=>TS(d),[d]),[y]=(0,Q.useState)(()=>({weight:0,legYaw:0,backward:!1,clipRotations:new Map})),b=(0,Q.useMemo)(()=>new Map(r.map(e=>[e.name,e])),[r]);return(0,Q.useEffect)(()=>()=>{f.stopAllAction(),h.mode=null,h.actions=null,h.starts.clear(),h.weights.clear(),g.action=null,y.clipRotations.clear()},[y,d,h,f,g]),I(z(`PosedModel`,(n,i)=>{VS(d),AO(y.clipRotations),DS(_);let a=gU(e.get(sd)?.state??fu.Idle),s=p.get(zz.Jump);if(a!==h.mode||p!==h.actions){if(h.elapsedSeconds=h.weights.size===0?xU:0,h.starts=new Map(h.weights),p!==h.actions)for(let[e,t]of p){if(h.weights.has(t))continue;let n=e===zz.Jump;t.setLoop(n?o:u,n?1:1/0),t.clampWhenFinished=n,t.reset().play(),t.paused=e===zz.Walk||e===zz.Run,h.starts.set(t,0),h.weights.set(t,0)}a===`jump`&&s?.reset().play(),h.mode=a,h.actions=p}h.elapsedSeconds+=i;let c=Math.min(h.elapsedSeconds/xU,1),x=e.get(Gu),S=yU(e);for(let e of _U){let t=m[e];t?.fixedPace&&(t.metresPerSecond=S*vU[e])}let C=hU(a===`move`&&x?Bu(x):0,m),w=e.get(Xn)?.active===!0,T=e.get(mo);CU.backward=y.backward,w&&x&&T?OO(wU.setFromQuaternion(T.rotation,`YXZ`).y,x,CU):(CU.legYaw=0,CU.backward=!1),y.backward=CU.backward,RO(y,w,CU,i),h.phase=F.euclideanModulo(h.phase+i*C.cyclesPerSecond*(y.backward?-1:1),1);for(let e of _U){let t=p.get(e);t&&(t.time=h.phase*t.getClip().duration)}let E=a===`jump`&&s!==void 0,D=null,O=0;for(let[e,t]of h.starts){let n=0,r=!1;for(let[t,i]of p)i===e&&(r=!0,t===zz.Jump?n+=+!!E:E||(n+=C[t]));let i=t+(n-t)*c;h.weights.set(e,i),i>O&&(O=i,D=e),c===1&&!r&&(e.stop(),h.starts.delete(e),h.weights.delete(e))}e.isAlive()&&vC({world:l,entity:e,url:t,animations:r,oneShot:g,mixer:f,loop:D,deltaSeconds:i});let k=1-(g.action?g.weight:0);for(let[e,t]of h.weights)e.setEffectiveWeight(t*k);f.update(i),e.isAlive()&&(FS({world:l,entity:e,layer:_,root:d,spine:v,clips:b,deltaSeconds:i}),v&&PO(v,y.legYaw,y.clipRotations),BS({entity:e,root:d,seconds:i}))})),(0,Z.jsx)(`primitive`,{object:d,dispose:null,"position-y":c,"rotation-y":dr})}catch(e){throw B(`PosedModel`,e)}}function OU(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>typeof t!=`function`&&(e!==`avatar`||typeof t==`string`)))}var kU={weapons:`weapons`,abilities:`abilities`,resources:`resources`,stats:`stats`,bagSlots:`inventory`};function AU(e,t){Br(e,`characters`);for(let[n,r]of Object.entries(kU))t[n]!==void 0&&Br(e,r)}function jU(e){try{let t={...e,...(0,Q.use)(uT)},{avatar:n,model:r,clips:i,clipSpeeds:a,material:o,shape:s,color:c,position:l=[0,0,0],facing:u=0,health:d=vf.schema,stats:f,radius:p=Vu.radius,height:m=Vu.height,collisionMask:h=Vu.collisionMask,controller:g,footsteps:_,marker:v=Vz.Pulse,children:y,preset:b=Fa.Responsive,movement:x,respawn:S={},nameplate:C=!0}=t;fT(e);let w=W(),T=(0,Q.use)(wC),E=Jv(),D=w.has(Kt),O=r===void 0?void 0:an(r);ec(S),oH(a),AU(w,t);let k=!E&&!D&&!w.has(Aa),ee=typeof n==`string`?k?km(n):void 0:n,[A,M]=(0,Q.useState)(null),te=(0,Q.use)(Yv);(0,Q.useEffect)(()=>{ee!==void 0&&!E&&!D&&(HS.preload([ee.model],yz),HS.preload(Wz(),yz))},[ee,E,D]);let ne=(0,Q.useRef)({position:l,facing:u,health:d,stats:f,props:OU(t),respawn:S,scene:te?.scenes.getState().active,body:{radius:p,height:m,collisionMask:h&&Sn(h)},controller:dt(g)}),re=(0,Q.useRef)({position:new j(...ne.current.position),facing:ne.current.facing,health:ne.current.health,stats:ne.current.stats,movement:Dr(vo[b],x),body:ne.current.body,controller:ne.current.controller,avatar:typeof n==`string`?n:``,respawn:ne.current.respawn,props:ne.current.props});(0,Q.useEffect)(()=>{if(D)return;if(w.has(Aa))return w.add(qa(re.current)),()=>w.remove(qa);let{body:e,controller:t,stats:n,props:r,respawn:i,scene:a,...o}=ne.current,s=new j(...o.position),c=Pd(w,{...o,position:s},r);su(c,{respawn:i,spawn:s}),n&&vu(c,n),c.add(jt(e),$n),c.set(Ya,t),c.add(ei({context:eo.Client})),T!==null&&c.add(ln({ground:T})),a&&c.add(wa({name:a}));let l=Vg(w);try{l?.attachCharacter(c)}catch(e){throw il(w,c),e}M(c);let u=w.onRemove(wf,e=>{e===c&&M(null)});return()=>{if(u(),c.isAlive())try{l?.detachCharacter(c)}finally{il(w,c)}}},[w,D,T]);let ie=ry(wf,ei,hf)??null,N=D?ie:A,ae=Jy({id:N&&String(N.id()),through:jU,kind:yh.Entity,entityId:N?Fc(w,N):void 0}),oe=(0,Z.jsxs)(Z.Fragment,{children:[N&&(0,Z.jsx)(rb,{value:ae,children:(0,Z.jsx)(MU,{character:N,settings:Dr(vo[b],x),owned:!D},N.id())}),!E&&!w.has(Aa)&&(0,Z.jsx)(TF,{setting:C})]});return A===null||E?oe:(0,Z.jsxs)(Z.Fragment,{children:[oe,(0,Z.jsx)(Q.Suspense,{fallback:(0,Z.jsx)(bS,{name:`the character`}),children:ee===void 0?O===void 0?(0,Z.jsx)(Uz,{entity:A,shape:s,color:c,children:y}):(0,Z.jsx)(EU,{entity:A,url:O,lift:r===void 0?void 0:Tt(r),clips:i,clipSpeeds:a,material:o??(r===void 0?void 0:fl(r)),children:y}):(0,Z.jsx)(qz,{entity:A,body:ee,children:y})}),_?.length?(0,Z.jsx)(eU,{entity:A,sounds:_}):null,(0,Z.jsx)(QH,{entity:A,shape:v})]})}catch(e){throw B(`CharacterSpawn`,e)}}function MU({character:e,settings:t,owned:n}){try{let[r]=(0,Q.useState)(()=>({...e.get(oo)})),i=Xm(e=>e.edits),a=(0,Q.useRef)(void 0);(0,Q.useEffect)(()=>{n&&e.isAlive()&&!bg(a.current,t)&&(e.set(oo,t),a.current=t)},[e,t,n]);let{wiki:o,description:s,ranges:c}=Kn;return Jy({id:`${e.id()}:movement`,name:`Movement`,kind:yh.Behaviour,props:n?t:r,wiki:o,description:s,ranges:c,entity:e,traits:[oo],propName:`movement`,readOnlyReason:n||i?void 0:`The room keeps its settings`}),null}catch(e){throw B(`MovementLeaf`,e)}}function NU({children:e}){try{return iy(hf,mo,tt(gn)).map(t=>(0,Z.jsx)(PU,{entity:t,children:e},t))}catch(e){throw B(`Replicas`,e)}}var PU=(0,Q.memo)(Yz);Ke({ThreeAudio:M});function FU({url:e,loop:t=!1,volume:n=1,channel:r=cS.Effects}){try{let i=(0,Q.use)(sS(e)),a=(0,Q.use)(TC)!==null,o=L(e=>e.camera),[s]=(0,Q.useState)(()=>new ne),c=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>(o.add(s),()=>{o.remove(s)}),[o,s]),(0,Q.useEffect)(()=>gS(s.gain,{channel:r}),[s,r]),(0,Q.useEffect)(()=>{let e=c.current;if(e&&i)return e.setBuffer(i),e.setLoop(t),e.play(),()=>{e.stop()}},[i,t]),(0,Q.useEffect)(()=>{c.current?.setVolume(n)},[n]),a?(0,Z.jsx)(`positionalAudio`,{ref:c,args:[s]}):(0,Z.jsx)(`threeAudio`,{ref:c,args:[s]})}catch(e){throw B(`SoundView`,e)}}function IU(e){try{return Gv()||rS()===void 0?null:(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(FU,{...e})})}catch(e){throw B(`Sound`,e)}}var LU=2,RU=.35;function zU(e){return e?Array.isArray(e)?e:[e]:[]}function BU({parts:e,color:t}){try{return zU(e).map((e,n)=>(0,Q.isValidElement)(e)?(0,Z.jsx)(Q.Fragment,{children:e},n):(0,Z.jsx)(JV,{effect:e,color:t},n))}catch(e){throw B(`Parts`,e)}}function VU(e){let[t,n]=(0,Q.useState)([]),r=(0,Q.useRef)(0);return I(z(`useMountedFor`,(r,i)=>{if(t.length===0)return;let a=!1;for(let n of t)n.age+=i,n.age>=e&&(a=!0);a&&n(t=>t.filter(t=>t.age<e))})),[t,e=>n(t=>[...t,{...e,key:r.current++,age:0}])]}function HU(e){try{let{ability:t,color:n,impact:r,strike:i}=e,a=W(),o=iy(Sl),s=iy(rn),{spawn:c}=KV(),[l,u]=VU(e.areaSeconds??LU),[d,f]=VU(e.beamSeconds??RU);qC(dl,({record:i})=>{if(i.ability===t){for(let e of zU(r))c(e,{at:i.at,color:n});e.area&&i.hit===null&&zf(a,t)?.kind===_n.Area&&u({at:new j().copy(i.at)})}}),qC(ti,({entity:r,record:a})=>{if(a.ability!==t)return;for(let e of zU(i))c(e,{at:a.at,color:n});let o=a.from?.get(mo)?.position,s=r?.get(mo)?.position??a.at;e.beam&&o&&f({from:new j().copy(o),to:new j().copy(s)})});let p=o;return(0,Z.jsxs)(Z.Fragment,{children:[e.charge&&p.map(t=>(0,Z.jsx)(UU,{entity:t,look:e},t)),(e.projectile||e.model)&&s.map(t=>(0,Z.jsx)(WU,{entity:t,look:e},t)),l.map(t=>(0,Z.jsx)(`group`,{position:t.at,children:(0,Z.jsx)(BU,{parts:e.area,color:n})},t.key)),d.map(t=>(0,Z.jsx)(Q.Fragment,{children:e.beam?.({from:t.from,to:t.to})},t.key))]})}catch(e){throw B(`SpellLookView`,e)}}function UU({entity:e,look:t}){try{let n=G(e,Sl),r=G(e,En)?.object;return n?.ability!==t.ability||!r?null:Je((0,Z.jsx)(`group`,{position:t.chargePosition,rotation:t.chargeRotation,children:(0,Z.jsx)(BU,{parts:t.charge,color:t.color})}),r)}catch(e){throw B(`ChargeLook`,e)}}function WU({entity:e,look:t}){try{let[n]=(0,Q.useState)(()=>e.get(rn)?.ability);return n===t.ability?Ct(e)?(0,Z.jsx)(KU,{entity:e,look:t}):(0,Z.jsx)(GU,{entity:e,look:t}):null}catch(e){throw B(`ProjectileLook`,e)}}function GU({entity:e,look:t}){try{return(0,Z.jsx)(`group`,{ref:CC(e),children:(0,Z.jsx)(qU,{look:t})})}catch(e){throw B(`FlownProjectileLook`,e)}}function KU({entity:e,look:t}){try{let n=G(e,Xf)?.object;return n?Je((0,Z.jsx)(qU,{look:t}),n):null}catch(e){throw B(`StreamedProjectileLook`,e)}}function qU({look:e}){try{return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(BU,{parts:e.projectile,color:e.color}),e.model&&(0,Z.jsx)(bC,{name:e.model})]})}catch(e){throw B(`ProjectileRiders`,e)}}function JU(e){try{return Gv()?null:(0,Z.jsx)(HU,{...e})}catch(e){throw B(`SpellLook`,e)}}function YU(e,t,n=1){return new Oe({color:e,emissive:e,emissiveIntensity:t,toneMapped:!1,transparent:n<1,opacity:n,depthWrite:n>=1})}function XU({color:e,from:t,to:n,height:r=.9,lift:i=.9,radius:a=.05,seconds:o=.35,intensity:s=3}){try{let c=(0,Q.useRef)(0),l=(0,Q.useMemo)(()=>{let e=t.clone().setY(t.y+r),o=n.clone().setY(n.y+r),s=e.clone().lerp(o,.5);return s.y+=i*2,new Le(new Ne(e,s,o),24,a,8,!1)},[t,n,r,i,a]),u=(0,Q.useMemo)(()=>YU(e,s,.95),[e,s]);return(0,Q.useEffect)(()=>()=>l.dispose(),[l]),(0,Q.useEffect)(()=>()=>u.dispose(),[u]),I(z(`SpellBeam`,(e,t)=>{c.current+=t,u.opacity=.95*Math.max(0,1-c.current/o)})),(0,Z.jsx)(`mesh`,{geometry:l,material:u})}catch(e){throw B(`SpellBeam`,e)}}var ZU=.02,QU=new ue(.92,1,48).rotateX(-Math.PI/2);function $U({color:e,radius:t,seconds:n=.45,intensity:r=3}){try{let i=(0,Q.useRef)(null),a=(0,Q.useRef)(0),o=(0,Q.useMemo)(()=>YU(e,r,.9),[e,r]);return(0,Q.useEffect)(()=>()=>o.dispose(),[o]),I(z(`SpellRing`,(e,r)=>{let o=i.current;if(!o)return;a.current+=r;let s=Math.min(1,a.current/n),c=1-(1-s)**2;o.scale.setScalar(.3+c*t),o.visible=s<1})),(0,Z.jsx)(`mesh`,{ref:i,geometry:QU,material:o,position:[0,ZU,0],scale:.3})}catch(e){throw B(`SpellRing`,e)}}var eW=new ce(1,40).rotateX(-Math.PI/2),tW=.15;function nW({color:e,radius:t=2.2,seconds:n=1.6,intensity:r=1.4}){try{let i=(0,Q.useRef)(null),a=(0,Q.useRef)(0),o=(0,Q.useMemo)(()=>YU(e,r,.55),[e,r]);return(0,Q.useEffect)(()=>()=>o.dispose(),[o]),I(z(`SpellRunes`,(e,r)=>{let s=i.current;s&&(a.current+=r,s.scale.setScalar(t*Math.min(1,a.current/tW)),o.opacity=.55*Math.max(0,1-a.current/n))})),(0,Z.jsx)(`mesh`,{ref:i,geometry:eW,material:o,position:[0,ZU,0],scale:0})}catch(e){throw B(`SpellRunes`,e)}}var rW=new A(1).scale(.09,.32,.09);function iW({color:e,count:t=14,ring:n=1.6,height:r=.45,seconds:i=.9,intensity:a=2.4}){try{let o=(0,Q.useRef)(null),s=(0,Q.useRef)(0),c=(0,Q.useMemo)(()=>YU(e,a,.9),[e,a]);return(0,Q.useEffect)(()=>()=>c.dispose(),[c]),I(z(`SpellShards`,(e,t)=>{let n=o.current;if(!n)return;s.current+=t;let a=Math.min(1,s.current/i);n.position.y=ZU+r*Math.sin(a*Math.PI),n.visible=a<1})),(0,Z.jsx)(`group`,{ref:o,position:[0,ZU,0],children:Array.from({length:t},(e,r)=>{let i=r/t*Math.PI*2;return(0,Z.jsx)(`mesh`,{geometry:rW,material:c,position:[Math.cos(i)*n,0,Math.sin(i)*n],rotation:[.25,i,r%2?.2:-.2]},r)})})}catch(e){throw B(`SpellShards`,e)}}var aW=new A(1),oW=new A(1,1),sW=new A(1),cW=new j(0,0,1),lW=new j,uW=new j,dW=new P;function fW({color:e,length:t=1.1,width:n=.09,crystals:r=4,orbit:i=.16,rate:a=12,intensity:o=2.2}){try{let s=(0,Q.useRef)(null),c=(0,Q.useRef)(null),l=(0,Q.useRef)(null),u=(0,Q.useMemo)(()=>({spear:YU(e,o,.85),core:YU(`#ffffff`,4),crystal:YU(e,3)}),[e,o]);(0,Q.useEffect)(()=>()=>{for(let e of Object.values(u))e.dispose()},[u]),I(z(`SpellSpear`,(e,t)=>{let n=s.current,r=c.current;if(!n||!r)return;n.getWorldPosition(lW);let i=l.current;i?(uW.subVectors(lW,i),uW.lengthSq()>1e-6&&(dW.setFromUnitVectors(cW,uW.normalize()),n.quaternion.copy(dW)),i.copy(lW)):l.current=lW.clone(),r.rotation.z+=a*t}));let d=n*.55;return(0,Z.jsxs)(`group`,{ref:s,children:[(0,Z.jsx)(`mesh`,{geometry:aW,material:u.spear,scale:[n,n,t/2]}),(0,Z.jsx)(`mesh`,{geometry:oW,material:u.core,scale:n*1.1}),(0,Z.jsx)(`group`,{ref:c,children:Array.from({length:r},(e,t)=>{let n=t/r*Math.PI*2;return(0,Z.jsx)(`mesh`,{geometry:sW,material:u.crystal,scale:d,position:[Math.cos(n)*i,Math.sin(n)*i,0]},t)})})]})}catch(e){throw B(`SpellSpear`,e)}}var pW=new A(1),mW=2;function hW({color:e,seconds:t,count:n=7,startOrbit:r=.45,endOrbit:i=.06,size:a=.035,intensity:o=3}){try{let s=(0,Q.useRef)(null),c=(0,Q.useRef)(0),l=(0,Q.useMemo)(()=>YU(e,o),[e,o]);return(0,Q.useEffect)(()=>()=>l.dispose(),[l]),I(z(`SpellSwirl`,(e,n)=>{let a=s.current;if(!a)return;c.current=Math.min(t,c.current+n);let o=t>0?c.current/t:1,l=r+(i-r)*o;a.rotation.y+=(mW+12*o)*n,a.rotation.x=o*.8,a.scale.setScalar(l/r)})),(0,Z.jsx)(`group`,{ref:s,children:Array.from({length:n},(e,t)=>{let i=t/n*Math.PI*2;return(0,Z.jsx)(`mesh`,{geometry:pW,material:l,scale:a,position:[Math.cos(i)*r,Math.sin(i*2)*.05,Math.sin(i)*r],rotation:[i,i*.5,0]},t)})})}catch(e){throw B(`SpellSwirl`,e)}}function gW(e){try{let t=NC();GC(Gd,e);let n=JSON.stringify(e),r=!t.has(hf);return(0,Q.useEffect)(()=>{r&&t.isAlive()&&ot(t,JSON.parse(n))},[t,r,n]),(0,Q.useEffect)(()=>()=>{r&&t.isAlive()&&t.remove(qs)},[t,r]),null}catch(e){throw B(`Stats`,e)}}var _W={entity:null,pinned:!1};function vW(){let e=iy(wf),t=e.find(Ts)??e[0]??null;return G(t,pi)??_W}var yW={spread:1.5,lift:.02,soft:{opacity:.35,width:.12},pinned:{opacity:.9,width:.25},colors:{[qd.Hostile]:Qi.targetHostile,[qd.Neutral]:Qi.targetNeutral,[qd.Friendly]:Qi.targetFriendly}};function bW(e,t){return e?.radius?e.radius:(t===void 0?void 0:ni(t))?.radius??Vu.radius}var xW=new j,SW=new j;function CW({shape:e,colors:t}){try{let{entity:n,pinned:r}=vW(),i=G(n,Pi)?.faction??qd.Hostile,a=bW(G(n,jt),G(n,Ur)?.name),o=G(ry(lf),lf)?.surface,s=L(e=>e.clock),c=(0,Q.useRef)(null),l=(0,Q.useRef)(0),u=e===Vz.Ring;(0,Q.useEffect)(()=>{l.current=s.elapsedTime},[s,n,r]),qC(Cs,({entity:e})=>{e!==null&&e===n&&(l.current=s.elapsedTime)}),I(z(`TargetMarkView`,()=>{let e=c.current;if(!e)return;let t=n?.isAlive()&&n.get(mo)?.position;if(e.visible=!!t,!n||!t)return;let r=n.get(Xf)?.object;r?r.getWorldPosition(xW):xW.copy(t);let i=o?o.getHeightAt(xW):xW.y;e.position.set(xW.x,i+yW.lift,xW.z),u&&o&&(o.getNormalAt(xW,SW),e.quaternion.setFromUnitVectors(Za,SW))}));let d=r?yW.pinned:yW.soft,f={radius:a*yW.spread,height:JH.lightHeight,radialSegments:12,color:t[i],...d};return(0,Z.jsx)(qH,{ref:c,shape:e,light:f,placedAt:l})}catch(e){throw B(`TargetMarkView`,e)}}function wW({mode:e=Mt.mode,range:t=Mt.range,angle:n=Mt.angle,cycleKey:r=`Tab`,marker:i=Vz.Ring,colors:a}){try{let o=W(),s=Gv(),c=Jv(),l=L(e=>e.events.connected),u=L(e=>e.get),d=o.has(Aa),f={mode:e,range:t,angle:n};return(0,Q.useEffect)(()=>{if(!d)return o.add(xt),()=>o.remove(xt)},[o,d]),I(z(`Targeting`,()=>{let e=!d&&Ol(o);e&&Qa(o,e,f)})),(0,Q.useEffect)(()=>{if(d||s)return;let i=i=>{if(i.code!==r||Xx(i))return;let a=i.target;if(a instanceof HTMLElement&&a!==document.body&&!(a instanceof HTMLCanvasElement)||i.metaKey||i.ctrlKey||i.altKey)return;let s=Ol(o);s&&(i.preventDefault(),wn(o,s,{mode:e,range:t,angle:n}))};return window.addEventListener(`keydown`,i),()=>window.removeEventListener(`keydown`,i)},[o,d,s,r,e,t,n]),(0,Q.useEffect)(()=>{if(d||s||!(l instanceof EventTarget))return;let e=e=>{if(!(e instanceof MouseEvent))return;let t=Ol(o);if(!t)return;let n=u();n.events.compute?.(e,n);let r=Vr(o,n.raycaster);r&&Jf(t,r)};return l.addEventListener(`click`,e),()=>l.removeEventListener(`click`,e)},[o,d,s,l,u]),d||c?null:(0,Z.jsx)(CW,{shape:i,colors:{...yW.colors,...a}})}catch(e){throw B(`Targeting`,e)}}var{schema:TW}=Ir;function EW({track:e,distance:t=0,lateral:n=0,enabled:r=!0,sideSpeed:i=TW.sideSpeed,sideAcceleration:a=TW.sideAcceleration,sideResponse:o=TW.sideResponse,jumpHeight:s=TW.jumpHeight,gravity:c=TW.gravity,fallScale:l=TW.fallScale,drag:u=TW.drag,friction:d=TW.friction,rideHeight:f=TW.rideHeight}){try{let p={enabled:r,sideSpeed:i,sideAcceleration:a,sideResponse:o,jumpHeight:s,gravity:c,fallScale:l,drag:u,friction:d,rideHeight:f};GC(Hn,{distance:t,lateral:n,...p}),KC(Ir,p),KC(Ju,{track:e});let m=NC(),h=(0,Q.useRef)({distance:t,lateral:n});return(0,Q.useEffect)(()=>{m.isAlive()&&m.set(Ir,h.current)},[m]),null}catch(e){throw B(`TrackMover`,e)}}var DW=96,OW=512,kW=2,AW=20,jW=2,MW=30,NW=90,PW=[[.009,.45],[.019,.28],[.038,.18],[.068,.09]],FW={metres:90,x:.0016,z:.0013},IW=1.07,LW=2.5;function RW(e,t){let n=e+FW.metres*Math.sin(t*FW.x+.7),r=t+FW.metres*Math.sin(e*FW.z-2.1),i=0;for(let[e,t]of PW)i+=t*(1-Math.abs(Math.sin(n*e+1.3)))*(1-Math.abs(Math.sin(r*e*IW-.4)));return Math.min(1,i*LW)}function zW(e,t,n,{height:r=340,radius:i=1200}){let o=new Float64Array(n.length*6);n.forEach(({x:e,y:t,z:n,slope:r,outward:i},a)=>o.set([e,n,t,r,i?.x??NaN,i?.z??NaN],a*6));let s=new Float64Array(n.length),c=(e,n)=>{let i=t(e,n);if(i!==null)return i;let a=1/0;for(let t=0;t<s.length;t++){let r=t*6,i=(o[r]-e)**2+(o[r+1]-n)**2;s[t]=i,i<a&&(a=i)}let c=Math.sqrt(a),l=Math.min(jW*c,MW),u=Math.max(l*(2*c+l),1e-12),d=0,f=0;for(let t=0;t<s.length;t++){let r=(s[t]-a)/u;if(r>=1)continue;let i=(1-r)**2,c=t*6,l=o[c+3],p=l===0?0:Number.isNaN(o[c+4])?Math.sqrt(s[t]):Math.max(0,(e-o[c])*o[c+4]+(n-o[c+1])*o[c+5]);d+=i*(o[c+2]+l*AW*(1-Math.exp(-p/AW))),f+=i}let p=r>0?r*(1-Math.exp(-.42*c/r)):0;return d/f+F.smoothstep(c,0,NW)*p*RW(e,n)},l=new Float32Array(DW*OW*3),u=new Uint32Array(95*OW*6);for(let t=0;t<DW;t++){let n=i*(t/95)**kW;for(let r=0;r<OW;r++){let i=r/OW*2*Math.PI,a=e.x+Math.sin(i)*n,o=e.z+Math.cos(i)*n,s=t*OW+r;if(l.set([a,c(a,o),o],s*3),t===95)continue;let d=t*OW+(r+1)%OW;u.set([s,s+OW,d+OW,s,d+OW,d],s*6)}}let d=new ie;return d.setAttribute(`position`,new a(l,3)),d.setIndex(new a(u,1)),d.computeVertexNormals(),d}var BW=.25,VW=1,HW=.1,UW=Math.log(10),WW=.01,GW=6,KW=8,qW=4;function JW(e,t){return e.map(({across:e,from:n=`center`})=>n===`left`?e-t:n===`right`?e+t:e)}function YW(e,t,n){let r=t.length-1;if(n<=t[0])return e[0].height??0;if(n>=t[r])return e[r].height??0;let i=t.findIndex(e=>e>n),a=F.inverseLerp(t[i-1],t[i],n);return F.lerp(e[i-1].height??0,e[i].height??0,a)}function XW(e,t){let n=[];return e.forEach((r,i)=>{if(i===e.length-1){n.push({lateral:t[i],height:r.height??0,wall:!1});return}let a=r.spans??1;for(let o=0;o<a;o++)n.push({lateral:F.lerp(t[i],t[i+1],o/a),height:F.lerp(r.height??0,e[i+1].height??0,o/a),wall:r.wall??!1})}),n}function ZW(e,t,n){let r=Array.from({length:n},()=>[]);for(let n=0;n<e.length-1;n++){let i=r[e[n]];for(let e=0;e<t-1;e++){let r=n*t+e,a=r+t;i.push(r,r+1,a,r+1,a+1,a)}}let i=0,a=r.map((e,t)=>{let n={start:i,count:e.length,materialIndex:t};return i+=e.length,n});return{indices:Uint32Array.from(r.flat()),groups:a}}function QW({track:e,section:t,spacing:n=.5,zones:r=[],lift:i,paint:o,tile:s=1,terrain:c}){let l=Math.max(1,Math.round(e.length/n)),u=Array.from({length:l+1},(n,r)=>{let i=r/l*e.length,a=e.frameAt(i,ht());return{frame:a,distance:i,laterals:JW(t,a.halfWidth)}}),d=(e,n,r,a=0,o=YW(t,e.laterals,n))=>{let{position:s,right:c,up:l,tangent:u}=e.frame;return r.copy(s).addScaledVector(c,n).addScaledVector(l,o).addScaledVector(u,a),i&&(r.y+=i(n,e.distance+a,r)),r},f=XW(t,u[0].laterals).length,p=new Float32Array(u.length*f*3),m=new Float32Array(u.length*f*3),h=new Float32Array(u.length*f*2),g=o&&new Float32Array(u.length*f*3),_=new j,[v,y,b,x]=[0,1,2,3].map(()=>new j),S=u.map(({frame:e,distance:t})=>({...e,distance:t})),C=[];u.forEach((e,n)=>{let r=XW(t,e.laterals),i=r.map(({lateral:e})=>e);nG(S,e,r,t),r.forEach((t,a)=>{let{lateral:c,height:l}=t,u=n*f+a;c!==i[a]&&C.push(u),d(e,c,_,0,l).toArray(p,u*3);let S=r[a-1],w=r[a+1];t.wall&&w&&Math.hypot(w.lateral-c,w.height-l)>1e-6?(d(e,c,v,0,l),d(e,w.lateral,y,0,w.height)):w?!S||S.wall?(d(e,c,v,0,l),d(e,c+BW,y)):(d(e,c-BW,v),d(e,c+BW,y)):(d(e,c-BW,v),d(e,c,y,0,l)),d(e,c,b,-.25,l),d(e,c,x,BW,l),y.sub(v),x.sub(b),y.cross(x).normalize().toArray(m,u*3),h.set([c/s,e.distance/s],u*2),o&&g&&g.set(o(c,e.distance),u*3)})});let{indices:w,groups:T}=ZW(u.map(({distance:t})=>Math.max(0,r.findIndex(n=>e.zoneWeight(t,n)>.5))),f,Math.max(1,r.length)),E=new ie;E.setAttribute(`position`,new a(p,3)),E.setAttribute(`normal`,new a(m,3)),E.setAttribute(`uv`,new a(h,2)),g&&E.setAttribute(`color`,new a(g,3)),E.setIndex(new a(w,1));for(let e of T)E.addGroup(e.start,e.count,e.materialIndex);$W(E,u,f,C),E.userData.zones=r;let D=c?tG(E,eG(E,e,u,f,c),s):E;return D.computeBoundingSphere(),D}function $W(e,t,n,r){if(!r.length)return;let i=e.getAttribute(`position`),a=nr(e);e.computeBoundingBox();let o=e.boundingBox.max.y+1,s=new be(new j,new j(0,-1,0)),c=r.map(e=>{let r=t[Math.floor(e/n)].distance,c=i.getY(e);return s.origin.set(i.getX(e),o,i.getZ(e)),a.raycast(s,2).filter(({face:e})=>Math.abs(t[Math.floor(e.a/n)].distance-r)>20).map(({point:e})=>e.y).sort((e,t)=>Math.abs(e-c)-Math.abs(t-c))[0]??c});r.forEach((e,t)=>i.setY(e,c[t]))}function eG(e,t,n,r,i){let a=e.getAttribute(`position`),o=e=>new j().fromBufferAttribute(a,e),s=({frame:e},t)=>(t.x-e.position.x)*e.right.x+(t.z-e.position.z)*e.right.z,c=n.map((e,t)=>[[0,1],[r-1,r-2]].map(([n,i])=>{let a=o(t*r+n),c=o(t*r+i),l=Math.hypot(a.x-c.x,a.z-c.z);return{...a,slope:l>1e-6?(a.y-c.y)/l:0,outward:l>1e-6?{x:(a.x-c.x)/l,z:(a.z-c.z)/l}:void 0,across:Math.abs(s(e,a))}})),l=c.flat(),u=[0,n.length-1].flatMap(e=>Array.from({length:r},(t,n)=>({...o(e*r+n),slope:0}))),d=nr(e);e.computeBoundingBox();let f=e.boundingBox.max.y+1,p=new be(new j,new j(0,-1,0));return zW(t.pointAt(t.length/2,0),(e,i)=>{p.origin.set(e,f,i);let a=d.raycastFirst(p,2);if(!a?.face)return null;let o=Math.floor(a.face.a/r),u=n[o],m=s(u,a.point)<0?0:1,h=Math.sqrt(Math.min(...l.map(({x:t,z:n})=>(t-e)**2+(n-i)**2))),g=Math.min(u.distance,t.length-u.distance);return a.point.y-KW*F.smoothstep(h,0,c[o][m].across-u.frame.halfWidth)*F.smoothstep(g,0,qW)},[...l,...u],i)}function tG(e,t,n){let r=t.getAttribute(`position`),i=Float32Array.from({length:r.count*2},(e,t)=>r.getComponent(t>>1,t%2*2)/n);if(t.setAttribute(`uv`,new a(i,2)),e.getAttribute(`color`)){let e=new Float32Array(r.count*3).fill(1);t.setAttribute(`color`,new a(e,3))}let o=gm([e,t]);for(let{start:t,count:n,materialIndex:r}of e.groups)o.addGroup(t,n,r);let s=e.userData.zones;return o.userData.zones=[...s.length?s:[``],`terrain`],o.addGroup(e.getIndex().count,t.getIndex().count,o.userData.zones.length-1),e.dispose(),t.dispose(),o}function nG(e,t,n,r){let{frame:i}=t,a=new j,o=n=>(a.copy(i.position).addScaledVector(i.right,n).addScaledVector(i.up,YW(r,t.laterals,n)),Math.abs(rG(e,a).distance-t.distance)>20);for(let e of[-1,1]){let t=n.filter(({lateral:t})=>e*t>i.halfWidth).sort((t,n)=>e*(t.lateral-n.lateral)),r=i.halfWidth,a=1/0;for(let{lateral:n}of t){let t=e*n;if(!o(e*t)){r=t;continue}let i=t;for(let t=0;t<GW;t++){let t=(r+i)/2;o(e*t)?i=t:r=t}a=r;break}for(let n of t)n.lateral=e*Math.min(e*n.lateral,a)}}function rG(e,t){let n=e[1].distance-e[0].distance,r=({position:e,tangent:n})=>(t.x-e.x)*n.x+(t.z-e.z)*n.z,i=e[0],a=1/0,o,s=1/0;for(let c of e){let{position:e}=c,l=(e.x-t.x)**2+(e.z-t.z)**2;l<a&&(i=c,a=l),l<s&&Math.abs(r(c))<=n&&(o=c,s=l)}let c=o??i;return{ring:c,distance:c.distance+r(c)}}function iG(e,t){let n=e[1].distance-e[0].distance,r=e.map(e=>{let{position:r,tangent:i}=e,[a,o]=[t.x-r.x,t.z-r.z],s=a*i.x+o*i.z,c=Math.abs(o*i.x-a*i.z),l=n+HW*c;return{ring:e,along:s,score:-(c+Math.max(0,Math.abs(s)-l))/VW-UW*Math.min(1,Math.abs(s)/l)}}),i=Math.max(...r.map(({score:e})=>e)),a=r.flatMap(({ring:e,along:t,score:n})=>{let r=Math.exp(n-i)-WW;return r>0?[{ring:e,along:t,weight:r}]:[]}),o=a.reduce((e,{weight:t})=>e+t,0);return a.map(({ring:e,along:t,weight:n})=>({ring:e,distance:e.distance+t,weight:n/o}))}var aG=.618033988749895,oG=.5;function sG({track:e,models:t,placements:n,surface:r,clear:i=0}){let a=cG(e,r),o=Object.keys(t),s=o.reduce((e,n)=>e+t[n],0),c=o.filter(e=>t[e]>0).at(-1),l=e=>{if(!c)throw R(Error(`A track scatter's models need a weight above 0.`),`SP0256`,`placeTrackScatter`);let n=e*s;return o.find(e=>(n-=t[e])<0)??c},u=ht(),d=(t,n)=>{let{halfWidth:r}=e.frameAt(n,u),i={center:0,left:-r,right:r};return t.across+i[t.from??`center`]},f=[];n.filter(e=>`at`in e).forEach((e,t)=>{let n=a(e.at,d(e,e.at),e.height);n&&f.push({model:e.model??l(si(0,t,3)),position:n,turn:e.turn??si(0,t,2)*2*Math.PI,scale:e.scale??1})});let p=[...f],m=([e,,t])=>p.some(({position:n})=>Math.hypot(n[0]-e,n[2]-t)<i),h=0;for(let t of n){if(`at`in t)continue;let{spacing:n,start:r=0,end:o=e.length,jitter:s=0}=t,{slide:c=0,size:u=[1,1],stretch:p=[1,1]}=t;if(!(n>0))throw R(Error(`A track scatter row's spacing must be above 0.`),`SP0257`,`placeTrackScatter`);if(!(o>r))continue;let g=Math.max(1,Math.round((o-r)/n));for(let e=0;e<g;e++,h++){let n=(si(1,h,0)-.5)*c,_=r+(e+.5+n)/g*(o-r),v=d(t,_),y=v<0?-1:1,b=v+y*(si(1,h,1)-.5)*s,x=a(_,b,t.height);if(x&&m(x)&&(x=a(_,b+y*i,t.height)),!x||m(x))continue;let S=F.lerp(...u,h*aG%1);f.push({model:l(si(1,h,3)),position:x,turn:si(1,h,2)*2*Math.PI,scale:[S,S*F.lerp(...p,si(1,h,4)),S]})}}return f}function cG(e,t){let n=Math.max(1,Math.round(e.length/oG)),r=Array.from({length:n+1},(t,r)=>{let i=r/n*e.length;return{...e.frameAt(i),distance:i}}),i=t&&nr(t),a=new be(new j,new j(0,-1,0));return(t,n,o=0)=>{let s=e.pointAt(t,n);if(Math.abs(rG(r,s).distance-t)>20)return null;if(i){a.origin.set(s.x,s.y+1e3,s.z);let e=i.raycastFirst(a,2);if(!e)return null;s.y=e.point.y}return[s.x,s.y+o,s.z]}}function lG({track:e,models:t,placements:n,surface:r,clear:i,tint:a}){try{return(0,Q.useMemo)(()=>{let o=sG({track:e,models:t,placements:n,surface:r,clear:i}),s=new Map(Object.keys(t).map(e=>[e,[]]));for(let e of o){let t=s.get(e.model)??[];s.set(e.model,t),t.push(a?{...e,tint:a(t.length,e.model)}:e)}return[...s]},[e,t,n,r,i,a]).map(([e,t])=>(0,Z.jsx)(CB,{model:e,placements:t},e))}catch(e){throw B(`TrackScatter`,e)}}function uG({geometry:e,materials:t,receiveShadow:n}){try{let r=e.userData.zones??[],i=Object.values(t)[0];return(0,Z.jsx)(`mesh`,{geometry:e,receiveShadow:n,children:(r.length>0?r:[``]).map((e,n)=>(0,Q.cloneElement)(t[e]??i,{key:e,attach:`material-${n}`}))})}catch(e){throw B(`TrackSurfaceView`,e)}}function dG(e){try{let{materials:t,receiveShadow:n=!0}=e;return`geometry`in e?(0,Z.jsx)(uG,{geometry:e.geometry,materials:t,receiveShadow:n}):(0,Z.jsx)(fG,{...e,receiveShadow:n})}catch(e){throw B(`TrackSurface`,e)}}function fG({materials:e,receiveShadow:t,track:n,section:r,spacing:i,lift:a,paint:o,tile:s,terrain:c}){try{let l=Object.keys(e).filter(e=>e!==`terrain`).join(`
|
|
365
|
+
`),u=(0,Q.useMemo)(()=>QW({track:n,section:r,spacing:i,lift:a,paint:o,tile:s,terrain:c,zones:l.split(`
|
|
366
|
+
`)}),[n,r,i,a,o,s,c,l]);return(0,Q.useEffect)(()=>()=>u.dispose(),[u]),(0,Z.jsx)(uG,{geometry:u,materials:e,receiveShadow:t})}catch(e){throw B(`BuiltTrackSurface`,e)}}var{schema:pG}=To;function mG({track:e,start:t,end:n,left:r=pG.left,right:i=pG.right,bottom:a=pG.bottom,top:o=pG.top,lap:s=!1}){try{let c={start:t,end:n,left:r,right:i,bottom:a,top:o,lap:s};return GC(wr,c),KC(To,c),KC(Ju,{track:e}),null}catch(e){throw B(`TrackTrigger`,e)}}function hG(e,t,n){qC(bu,({record:e})=>{e.mark===t&&n({...e})},{entity:e})}function gG(e,t){let n=(0,Q.useRef)(t);n.current=t,(0,Q.useEffect)(()=>RS(e,(e,t)=>n.current(e,t)),[e])}function _G(e){let t=W();return G(t,gr),Bs(t,e)}function vG(e){let t=null;for(let n of _G(e).values())t=n;return t}var yG=0,bG=8,xG=new WeakMap;function SG(e,t){let n=xG.get(e);n||(n=new Map,xG.set(e,n));let r=n.get(t);return r||(r={played:[],clipRequest:null},n.set(t,r)),r}function CG(e,t,n,r){let i=SG(e,t);if(i.played.includes(r))return;i.played.push(r),i.played.length>bG&&i.played.shift();let a=zf(e,n)?.clip;a&&(i.clipRequest=r,Qc(t,a))}function wG(e,t,n){if(!t.isAlive())return;t.get(wt)?.request===n&&Ws(t);let r=SG(e,t);r.clipRequest===n&&(r.clipRequest=null,ss(t))}function TG({payload:e}){return e.request}function EG({status:e}){return e!==Oo.Ran}function DG(){let e=W(),t=tT().entity,n=_G(Dn),[,r]=(0,Q.useState)(),[i,a]=(0,Q.useState)(),[o,s]=(0,Q.useState)();sy(t??e,Sl,e=>{if(!t||!e)return;let{ability:n,request:r}=e;s(e=>e?.request===r&&e.character===t?e:{character:t,ability:n,request:r})}),(0,Q.useEffect)(()=>{t&&o?.character===t&&CG(e,t,o.ability,o.request)},[o,t,e]),(0,Q.useEffect)(()=>{if(t)for(let r of n.values()){let n=TG(r);n!==void 0&&EG(r)&&wG(e,t,n)}},[n,t,e]),qC(Ei,({entity:t,record:n})=>{t&&t===Ol(e)&&(wG(e,t,n.request),a({...n}))});let c=(0,Q.useCallback)(t=>{let n=Ol(e);if(!n)return;yG=(yG+1)%2**31,r(yG);let{payload:i}=Mi(e,n,t,yG);if(ui(e)){FC(e,Dn,i);return}gc(e,n,i),e.has(Kt)&&IC(e,Dn,i)},[e]),l;if(yG>0)for(let e of n.values())TG(e)===yG&&(l=e);if(l&&EG(l)){if(l.status===Oo.Dropped)return{cast:c,refusal:void 0,refusalText:cl};let t={reason:l.reason,resource:l.detail??``};return{cast:c,refusal:t.reason,refusalText:cr(e,t)}}return i&&i.request===yG?{cast:c,refusal:i.reason,refusalText:cr(e,i)}:{cast:c,refusal:void 0,refusalText:void 0}}var OG=[`Digit1`,`Digit2`,`Digit3`,`Digit4`],kG=4;function AG(e){return/^(Digit|Key)\w$/.test(e)?e.slice(-1):e}function jG(e,t,n){let r=Array.from({length:n},()=>void 0),i=[];for(let a of e){let e=t.indexOf(a);e===-1||e>=n?i.push(a):r[e]=a}for(let e of i){let t=r.indexOf(void 0);if(t===-1)break;r[t]=e}return r}function MG(e,t){return e?t?e.left>=t.left?e:t:e:t}function NG(e){let[t,n]=(0,Q.useState)();return(0,Q.useEffect)(()=>{e!==void 0&&n(e)},[e]),[e??t,n]}function PG(e,t){let n=W(),[r,i]=(0,Q.useState)(``);return(0,Q.useEffect)(()=>{let r=JSON.parse(t),a=requestAnimationFrame(function t(){let o=e?.isAlive()?e:null,s=o?.get(pi)?.entity??null,c=s?.isAlive()?s:void 0,l=o&&c?nf(o,c):0;i(r.map(e=>{let t=e&&zf(n,e);if(!t||!o)return``;let r=`range`in t&&l>t.range,i=Co(o,t.cost),a=i===void 0?``:String(t.cost?.[i]??0);return`${r?`out`:``}:${a}`}).join()),a=requestAnimationFrame(t)});return()=>cancelAnimationFrame(a)},[n,e,t]),r.split(`,`).map(e=>{let[t,n]=e.split(`:`);return{outOfRange:t===`out`,short:n?Number(n):void 0}})}function FG({primary:e,order:t=[],keys:n=OG,icons:r={},refusal:i=!0,shape:a,className:o}){try{let s=W(),c=tT().entity,l=G(c,ja),u=G(c,Zd),d=G(c,Sl),{cast:f,refusalText:p}=DG(),[m,h]=(0,Q.useState)([]),g=jG([...new Set(l?.map(e=>e.ability))],t,Math.min(n.length,5)),_=0,v=e!==void 0&&g.includes(e)?g:g.map(e=>e!==void 0&&++_<=kG?e:void 0),y=JSON.stringify(v.map(e=>e??null)),b=JSON.stringify(n),x=PG(c,y),S=d?.ability,[C,w]=NG(S),T=(0,Q.useCallback)(e=>{w(e),f(e)},[f,w]);(0,Q.useEffect)(()=>{let e=JSON.parse(y),t=JSON.parse(b),n=n=>{if(n.repeat||Xx(n)||n.metaKey||n.ctrlKey||n.altKey)return;let r=t.indexOf(n.code);r!==-1&&e[r]&&(h(e=>[...e,n.code]),T(e[r]))},r=e=>{h(t=>t.includes(e.code)?t.filter(t=>t!==e.code):t)},i=()=>h([]);return window.addEventListener(`keydown`,n),window.addEventListener(`keyup`,r),window.addEventListener(`blur`,i),()=>{window.removeEventListener(`keydown`,n),window.removeEventListener(`keyup`,r),window.removeEventListener(`blur`,i)}},[y,b,T]);let E=v.flatMap((e,t)=>{if(!e)return[];let i=zf(s,e),a=i?.castSeconds??0,o=u?.[jr],c=e===C?MG(u?.[Wu(e)],o):u?.[Wu(e)];return[{id:e,label:i?.label??e,hotkey:AG(n[t]),icon:r[e]??(0,Z.jsx)(Py,{name:i?.icon??`star`}),cooldown:c,locked:c===void 0&&o!==void 0,casting:e===S?{seconds:a,left:d?.secondsLeft??a}:void 0,outOfRange:x[t]?.outOfRange,noResource:x[t]?.short,pressed:m.includes(n[t])}]}),D=E.find(t=>t.id===e);return(0,Z.jsxs)(Z.Fragment,{children:[E.length>0&&(0,Z.jsx)(_y,{primary:D,slots:E.filter(e=>e!==D),shape:a,className:o,onPress:T}),i&&p&&(0,Z.jsx)(bw,{slot:Xy.Bottom,variant:pw.Bare,children:(0,Z.jsx)(xy,{size:`lg`,className:cy.dangerText,children:p})})]})}catch(e){throw B(`AbilityBar`,e)}}function IG(e,t){let n=G(e,Zd);return n&&Object.hasOwn(n,t)?n[t]:void 0}function LG({name:e}){try{return KC(fi,(0,Q.useMemo)(()=>({name:e}),[e])),null}catch(e){throw B(`DisplayName`,e)}}function RG(e){if(e!=null)return typeof e==`number`?e:e[nt].worldEntity}function zG(e,t){let n=RG(e);if(n===void 0||!n.has(t))return;let{state:r}=n.get(t);if(r!=null)return typeof r==`string`?r:Object.keys(r)[0]}function BG(e,t){let n=W(),{trait:r}=e,[i,a]=(0,Q.useState)(()=>({entity:t,name:zG(t,r)})),o=i.entity===t?i:{entity:t,name:zG(t,r)};return o!==i&&a(o),(0,Q.useEffect)(()=>{let e=RG(t);if(e===void 0)return;let i=e=>a(n=>n.entity===t&&n.name===e?n:{entity:t,name:e}),o=n=>{n===e&&i(zG(t,r))};o(e);let s=[n.onChange(r,o),n.onAdd(r,o),n.onRemove(r,t=>{t===e&&i(void 0)})];return()=>{for(let e of s)e()}},[n,t,r]),o.name}function VG(e,t){return G(e,t)}function HG(e){let t=e?.get(hf)?.id,n=J(e=>t!==void 0&&e.heard.includes(t)),r=J(e=>t===void 0?100:e.playerVolumes[t]??100),i=J(e=>t!==void 0&&e.mutedPlayers.includes(t)),{setPlayerVolume:a,mutePlayer:o}=J.getState();return{heard:n,volume:r,muted:i,setVolume:e=>{t!==void 0&&a(t,e)},setMuted:e=>{t!==void 0&&o(t,e)}}}function UG({surface:e}){try{let t=(0,Q.useRef)(null);return(0,Q.useLayoutEffect)(()=>{let n=t.current;n&&(Tb(n,e),n.computeVertexNormals(),n.computeBoundingBox(),n.computeBoundingSphere(),n.boundsTree=nr(n))},[e]),(0,Z.jsx)(`planeGeometry`,{ref:t,args:[e.size,e.size,e.segments,e.segments]})}catch(e){throw B(`HeightfieldGeometry`,e)}}function WG({entity:e,material:t}){try{let n=G(e,lf),r=CC(e);if(!n)return null;let{surface:i}=n;return(0,Z.jsxs)(`mesh`,{name:`ground`,ref:r,renderOrder:-1,"rotation-x":-Math.PI/2,receiveShadow:!0,raycast:_m,visible:t!==!1,children:[(0,Z.jsx)(UG,{surface:i}),t!==!1&&(0,Z.jsx)(jg,{surface:i,material:t})]})}catch(e){throw B(`GroundView`,e)}}function GG({multiplier:e}){return e>1?`#ffc629`:`#7fd7ff`}var KG=new j,qG=new j;function JG({zone:e}){try{let t=GG(e),n=(0,Z.jsx)(`meshBasicMaterial`,{color:t,wireframe:!0,depthTest:!1,transparent:!0,opacity:.85});if(!e.to)return(0,Z.jsxs)(`mesh`,{name:`hit zone ${e.name}`,position:[e.at.x,e.at.y,e.at.z],renderOrder:10,children:[(0,Z.jsx)(`sphereGeometry`,{args:[e.radius,16,12]}),n]});KG.copy(e.to).sub(qG.copy(e.at));let r=KG.length();qG.addScaledVector(KG,.5);let i=new P().setFromUnitVectors(Za,r>0?KG.divideScalar(r):Za);return(0,Z.jsxs)(`mesh`,{name:`hit zone ${e.name}`,position:qG.toArray(),quaternion:i,renderOrder:10,children:[(0,Z.jsx)(`capsuleGeometry`,{args:[e.radius,r,6,12]}),n]})}catch(e){throw B(`ZoneShape`,e)}}function YG({entity:e}){try{let t=G(e,Yf),n=G(e,Xf)?.object;return!t?.length||!n?null:Je((0,Z.jsx)(Pg,{children:t.map(e=>(0,Z.jsx)(JG,{zone:e},e.name))}),n)}catch(e){throw B(`EntityZones`,e)}}function XG({shown:e=!1}){try{let t=W(),[n,r]=(0,Q.useState)(!1),i=iy(Yf,Xf);return(0,Q.useEffect)(()=>{if(!t.has(Bc))return;let e=(e=!0)=>r(e);return window.__GAME_HIT_ZONES__=e,()=>{window.__GAME_HIT_ZONES__===e&&delete window.__GAME_HIT_ZONES__}},[t]),!e&&!n?null:i.map(e=>(0,Z.jsx)(YG,{entity:e},e))}catch(e){throw B(`HitZonesView`,e)}}var ZG=[mo,oi(Du),oi(zs)];function QG(e,t){let n=W(),r=G(e,gl);iy(oi(Du),mo),iy(oi(Du),co),iy(oi(Du),md);let[,i]=(0,Q.useReducer)(e=>e+1,0),a=(0,Q.useRef)(new Set);(0,Q.useEffect)(()=>{let t=t=>{(a.current.has(t)||Pl(t,e))&&i()},r=ZG.map(e=>n.onChange(e,t));return()=>{for(let e of r)e()}},[n,e]);let o=As(n,e,a.current);(0,Q.useLayoutEffect)(()=>{if(t instanceof k&&r)return fr(e,{ground:t})},[e,t,r,o])}function $G({ground:e}){try{(0,Q.use)(Nc()),(0,Q.use)(Yi());let t=G(e,lf)?.surface;return QG(e,(0,Q.useMemo)(()=>t&&Eb(t),[t])),null}catch(e){throw B(`GroundNavMesh`,e)}}function eK({entity:e,wireframe:t}){try{(0,Q.use)(Nc()),(0,Q.use)(Yi());let n=G(e,vi)?.handle;QG(e,G(e,Xf)?.object);let r=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{let e=r.current;if(!e||!n||!t)return;let{DebugDrawer:i}=xc().three,a=new i;return a.drawNavMesh(n.navMesh),e.add(a),()=>{e.remove(a),a.dispose()}},[n,t]),(0,Z.jsx)(Pg,{ref:r})}catch(e){throw B(`NavMeshView`,e)}}function tK({drawn:e}){try{return(0,Q.useLayoutEffect)(()=>(e.current=!0,()=>{e.current=!1}),[e]),null}catch(e){throw B(`Drawn`,e)}}function nK({name:e,shape:t,size:n,color:r}){try{let[i,a,o]=n,s=(0,Z.jsx)(`meshStandardMaterial`,{color:r});return t===cp.Plane?(0,Z.jsxs)(`mesh`,{name:e,"rotation-x":-Math.PI/2,scale:[i,o,1],receiveShadow:!0,children:[(0,Z.jsx)(`planeGeometry`,{}),s]}):(0,Z.jsxs)(`mesh`,{name:e,"position-y":a/2,scale:n,castShadow:!0,receiveShadow:!0,children:[t===cp.Box&&(0,Z.jsx)(`boxGeometry`,{}),t===cp.Sphere&&(0,Z.jsx)(`sphereGeometry`,{args:[.5]}),t===cp.Cylinder&&(0,Z.jsx)(`cylinderGeometry`,{args:[.5,.5,1]}),s]})}catch(e){throw B(`PropShapeMesh`,e)}}function rK({name:e,prop:t,surface:n,pops:r}){try{let i=(0,Q.useRef)(null),a=(0,Q.useRef)(!1),o=It(n,t.position);I(z(`Prop`,()=>{let t=r.current.get(e);if(t===void 0||!i.current)return;if(t===null){if(!a.current)return;t=performance.now(),r.current.set(e,t)}let n=performance.now()-t;i.current.scale.setScalar(Ng(n)),n>=400&&r.current.delete(e)}));let s=typeof t.scale==`number`?[t.scale,t.scale,t.scale]:[...t.scale];return(0,Z.jsx)(OC,{name:e,position:o.toArray(),rotation:[0,F.degToRad(t.yaw),0],scale:s,children:(0,Z.jsx)(`group`,{ref:i,children:(0,Z.jsxs)(`group`,{children:[`model`in t&&(0,Z.jsx)(bC,{name:t.model,children:(0,Z.jsx)(tK,{drawn:a})}),`size`in t&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(nK,{name:e,shape:t.kind,size:[...t.size],color:t.color}),(0,Z.jsx)(tK,{drawn:a})]})]})})})}catch(e){throw B(`Prop`,e)}}function iK(){try{let e=G(RK(),lf)?.surface,t=(0,Q.useRef)(null),n=(0,Q.useRef)(new Map);return(0,Q.useLayoutEffect)(()=>{if(!e)return;let r=t.current,i=new Set(Object.keys(e.map.props));t.current=i;for(let e of n.current.keys())i.has(e)||n.current.delete(e);let{reducedMotion:a}=q.getState();if(!(!r||(a??Ry())))for(let e of i)r.has(e)||n.current.set(e,null)},[e]),e?Object.entries(e.map.props).map(([t,r])=>(`model`in r||`size`in r)&&(0,Z.jsx)(rK,{name:t,prop:r,surface:e,pops:n},t)):null}catch(e){throw B(`PropsView`,e)}}var aK=4,oK=new oe,sK=new j,cK=new j,lK=1,uK=class extends WS{passes=new Map;passNumber=0;changes=0;fadeCentre=new j;culledCentre=new j;fadeFar=null;onFrustumEnter=e=>this.fadeFar===null||this.getPositionAt(e,sK).distanceToSquared(this.culledCentre)<=this.fadeFar**2;setFadeFar(e){e!==this.fadeFar&&(this.fadeFar=e,this.changes+=1)}followEye(e){this.fadeCentre.copy(e),this.fadeFar!==null&&this.fadeCentre.distanceTo(this.culledCentre)>lK&&(this.culledCentre.copy(this.fadeCentre),this.changes+=1)}firstIndex;bindRenderer(e){this.firstIndex||=(Object.assign(this,{_renderer:e}),this.initIndexAttribute(),this.keepIndex(`instanceIndex0`))}onBeforeShadow(e,t,n,r,i,a,o){let s=this.beginPass(e,r);super.onBeforeShadow(e,t,n,r,i,a,o),s&&(s.count=this.count)}onBeforeRender(e,t,n,r,i,a){this.followEye(n.getWorldPosition(cK));let o=this.beginPass(e,n);super.onBeforeRender(e,t,n,r,i,a),o&&(o.count=this.count)}beginPass(e,t){oK.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse).multiply(this.matrixWorld);let n=this.passes.get(t);if(!n){this.addPass(e,t),this.drawFrom(this.firstIndex),this.autoUpdate=!0;return}this.drawFrom(n.index);let r=n.bvh===this.bvh&&n.changes===this.changes&&n.view.equals(oK);return this.autoUpdate=!r,r?this.count=n.count:(n.view.copy(oK),n.bvh=this.bvh,n.changes=this.changes),n}addPass(e,t){let n=e.getContext();if(this.passes.size>=aK){let[[e,t]]=this.passes;this.passes.delete(e),this.geometry.deleteAttribute(t.key),n.deleteBuffer(t.index.buffer)}let r=new Qp(n,n.UNSIGNED_INT,1,4,new Uint32Array(this.capacity));this.passNumber+=1;let i=`instanceIndex${this.passNumber}`;this.setList(i,r),this.passes.set(t,{index:r,key:i,count:0,view:new oe,bvh:void 0,changes:-1})}setMatrixAt(e,t){super.setMatrixAt(e,t),this.changes+=1}keepIndex(e){return this.setList(e,this.instanceIndex),this.instanceIndex}drawFrom(e){e.array.length<this.capacity&&(e.array=new Uint32Array(this.capacity)),this.instanceIndex=e,this.setList(`instanceIndex`,e)}setList(e,t){this.geometry.attributes[e]=t}},dK=Object.values(sp),fK=dK.map(e=>Hm[e]),pK=({scatter:e,regions:t})=>[e,...Object.values(t).map(e=>e.scatter)].some(e=>dK.some(t=>e[t]>0));function mK({entity:e,material:t}){try{let n=G(e,rl),r=G(e,lf)?.surface.map;r&&pK(r)&&HS.preload(fK);let i=Eg(eh.Scatter);return!n||n.placements.length===0||!i?null:(0,Z.jsx)(hK,{entity:e,placements:n.placements,material:t})}catch(e){throw B(`ScatterView`,e)}}function hK({entity:e,placements:t,material:n}){try{let r=CC(e,vt),i=(0,Q.use)(rb),a=String(e.id());(0,Q.useEffect)(()=>wh({id:Sh(a),name:`Scatter`,kind:yh.Scatter,parentId:i?.id??null}),[a,i]);let o=HS(fK),s=(0,Q.useMemo)(()=>{let e=new Map;for(let n of t){let t=e.get(n.kind);t?t.push(n):e.set(n.kind,[n])}return e},[t]);return(0,Z.jsx)(`group`,{ref:r,children:dK.map((e,t)=>{let r=s.get(e);return r?(0,Z.jsx)(wK,{groundRowId:a,kind:e,model:o[t],placements:r,material:n},e):null})})}catch(e){throw B(`ScatterKit`,e)}}function gK(e){return e.replace(/[A-Z]/g,` $&`).replace(/^./,e=>e.toUpperCase())}var _K=new oe,vK=new j;function yK(e,t,n,r,i){e.setMatrixAt(r,Wa({placement:i===1?t:{...t,height:t.height*i},bounds:n,target:_K}))}var bK=new Set([op.Bush,op.Tuft]),xK=`
|
|
367
|
+
#include <begin_vertex>
|
|
368
|
+
#ifdef USE_INSTANCING_INDIRECT
|
|
369
|
+
float scatterShown = 1.0 - smoothstep(uScatterFade.x, uScatterFade.y,
|
|
370
|
+
distance((modelMatrix * instanceMatrix[3]).xyz, uScatterEye));
|
|
371
|
+
transformed = mix(vec3(0.0, uScatterFoot, 0.0), transformed, scatterShown);
|
|
372
|
+
#endif
|
|
373
|
+
`;function SK(e,t){return e.onBeforeCompile=e=>{Object.assign(e.uniforms,t),e.vertexShader=e.vertexShader.replace(`#include <common>`,`#include <common>
|
|
374
|
+
uniform vec2 uScatterFade;
|
|
375
|
+
uniform vec3 uScatterEye;
|
|
376
|
+
uniform float uScatterFoot;`).replace(`#include <begin_vertex>`,xK)},e.customProgramCacheKey=()=>`scatter-shrink`,e}var CK=({position:e})=>`${e.x} ${e.z}`;function wK({groundRowId:e,kind:t,model:n,placements:r,material:i}){try{let[{geometry:a,material:o}]=Object.values(n.meshes),s=(0,Q.useMemo)(()=>(a.computeBoundingBox(),a.boundingBox??new d),[a]),c=L(e=>e.gl),l=bK.has(ap[t].family),{batch:u,depth:f,fade:p,own:m}=(0,Q.useMemo)(()=>{if(!l){let e=i?o.clone():null;return{batch:new uK(a.clone(),Ag(i,e??o)),depth:new me,fade:null,own:e}}let e=new _,t={uScatterFade:{value:e},uScatterEye:{value:new j},uScatterFoot:{value:s.min.y}},n=SK(o.clone(),t),r=Ag(i,n),c=new uK(a.clone(),r);return r===n?(t.uScatterEye.value=c.fadeCentre,{batch:c,depth:SK(new me,t),fade:e,own:n}):{batch:c,depth:new me,fade:null,own:n}},[l,a,o,s,c,i]);(0,Q.useLayoutEffect)(()=>u.bindRenderer(c),[u,c]),(0,Q.useEffect)(()=>()=>{u.dispose(),u.geometry.dispose(),f.dispose(),m?.dispose()},[u,f,m]);let h=ty();(0,Q.useLayoutEffect)(()=>{p&&(p.set(h.near,h.far),u.setFadeFar(h.far))},[u,p,h]),(0,Q.useEffect)(()=>wh({id:lg(e,t),name:gK(t),kind:yh.Scatter,count:r.length,readOnlyReason:`Baked from the map's seed`,parentId:Sh(e)}),[e,t,r.length]);let g=(0,Q.useRef)(null),v=(0,Q.useRef)(new Map);return(0,Q.useLayoutEffect)(()=>{u.addInstances(r.length),r.forEach((e,t)=>yK(u,e,s,t,1)),u.computeBVH();let e=g.current;g.current=new Set(r.map(CK)),v.current.clear();let{reducedMotion:t}=q.getState(),n=e&&!(t??Ry())?r.flatMap((t,n)=>e.has(CK(t))?[]:[n]):[];for(let e of n)yK(u,r[e],s,e,Cg);u.computeBoundingSphere();let i=performance.now();for(let e of n){let{x:t,z:n}=r[e].position;v.current.set(e,i+si(Math.round(t*100),Math.round(n*100))*100),yK(u,r[e],s,e,Ng(-1))}return()=>{u.disposeBVH(),u.clearInstances()}},[u,r,s]),I(z(`ScatterBatch`,({camera:e})=>{if(p&&u.followEye(e.getWorldPosition(vK)),v.current.size===0)return;let t=performance.now();for(let[e,n]of v.current)yK(u,r[e],s,e,Ng(t-n)),t-n>=400&&v.current.delete(e)})),(0,Z.jsx)(`primitive`,{object:u,name:t,castShadow:!0,receiveShadow:!0,customDepthMaterial:f})}catch(e){throw B(`ScatterBatch`,e)}}var TK=new he(`#1f6f8b`),EK=3,DK=1;function OK({baseHeights:e,offsets:t,segments:n}){let r=n+1,i=new Uint16Array(r*r),a=1/0;for(let n=0;n<i.length;n++){let r=e[n]+(Number.isNaN(t[n])?0:t[n]);a=Math.min(a,r),i[n]=p.toHalfFloat(r)}let o=new D(i,r,r,Ae,b);return o.magFilter=Se,o.minFilter=Se,o.needsUpdate=!0,{texture:o,lowest:a}}var kK=()=>void 0;function AK({entity:e,map:t,material:n}){try{let r=G(e,lf)?.surface,i=kg(e=>e.seaPreview?.map===t?e.seaPreview.level:void 0),a=(0,Q.useMemo)(()=>r&&OK(r),[r]);if((0,Q.useEffect)(()=>()=>a?.texture.dispose(),[a]),!r||!a)return null;let o=i??r.sea;if(o<=a.lowest)return null;let{size:s,cell:c,segments:l}=r;return(0,Z.jsxs)(`mesh`,{name:`sea`,"position-y":o,"rotation-x":-Math.PI/2,raycast:kK,children:[(0,Z.jsx)(`planeGeometry`,{args:[s,s]}),(0,Z.jsx)(cE,{clock:`effects`,material:n,fragment:pE,uniforms:{uColor:TK,uWaveSize:EK,uWaveSpeed:DK,uLevel:o,uGround:a.texture,uGrid:new j(s/2,c,l+1)}})]})}catch(e){throw B(`SeaView`,e)}}function jK({ground:e,scatterShare:t}){try{(0,Q.use)(gt());let n=G(e,lf)?.surface;return(0,Q.useLayoutEffect)(()=>aa(e,t),[e,t,n]),null}catch(e){throw B(`GroundDressing`,e)}}var MK=e=>({materials:rh(e),props:Im(e),sea:Pm(e)}),NK=(e,{materials:t,props:n,sea:r})=>t||n||r!==void 0?{...e,...t&&{materials:t},...n&&{props:n},...r!==void 0&&{sea:r}}:e;function PK(e){try{let t=Pv(),[n,r]=(0,Q.useState)(!1),i=(0,Q.useCallback)(()=>r(!0),[]);return n?(0,Z.jsx)(LK,{...e,scenePath:t}):(0,Z.jsx)(Q.Suspense,{fallback:(0,Z.jsx)(IK,{}),children:(0,Z.jsx)(FK,{onLoad:i})})}catch(e){throw B(`World`,e)}}function FK({onLoad:e}){try{return(0,Q.use)(Yi()),(0,Q.useLayoutEffect)(e,[e]),null}catch(e){throw B(`AwaitPhysics`,e)}}function IK(){try{let e=W();return(0,Q.useLayoutEffect)(()=>vg(e),[e]),(0,Z.jsx)(bS,{name:`the world`})}catch(e){throw B(`WorldWaiting`,e)}}function LK({map:e=`grid`,scatterShare:t,ground:n,sea:r,scatter:i,navmesh:a=!1,hitZones:o=!1,shadowMapSize:s,dayLengthSeconds:c=zt.schema.realSecondsPerCycle,startHour:l,look:u,grass:d,lighting:f=!0,sky:p,sun:m,fog:h,focus:g,shadowBox:_,children:v,scenePath:y}){try{let b=W(),x=Jv(),S=Nv(e=>e.scatter),C=Nv(e=>e.shadowMapSize),[w,T]=(0,Q.useState)(null),[E,D]=(0,Q.useState)(null),O=$m(e),k=(0,Q.useSyncExternalStore)($h,()=>sh(e)),ee=(0,Q.useSyncExternalStore)($h,()=>rh(e)),A=(0,Q.useSyncExternalStore)($h,()=>Im(e)),j=(0,Q.useSyncExternalStore)($h,()=>Pm(e)),M=(0,Q.useRef)({materials:ee,props:A,sea:j}),te=(0,Q.useMemo)(()=>u&&wB(u),[u]);(0,Q.useEffect)(()=>{let{ground:t,clock:n,remove:r}=Pa(b,{map:NK(O,MK(e)),terrain:sh(e),dayLengthSeconds:c,startHour:l??te?.hour??zt.schema.hour});M.current=MK(e),T(t),n&&y!==void 0&&b.has(Aa)&&n.add(gn({path:y})),D(n??null);let i=null,a=n===void 0&&y!==void 0?SC(b,y,e=>{i=e,e?.add(ln({ground:t})),D(e)}):void 0,o=Rm(t,O);return()=>{o(),a?.(),i?.isAlive()&&i.remove(ln),T(null),D(null),r()}},[b,O,y]),(0,Q.useEffect)(()=>{if(w===null)return;let{surface:e}=w.get(lf)??{};e===void 0||e.terrain===k&&M.current.materials===ee&&M.current.props===A&&M.current.sea===j||(M.current={materials:ee,props:A,sea:j},w.set(lf,{surface:Wf(NK(O,M.current),k)}))},[w,O,k,ee,A,j]),(0,Q.useEffect)(()=>{E===null||E.has(hf)||$f(E,c)},[E,c]);let ne=Jy({id:w&&String(w.id()),through:PK,kind:yh.World,entityId:w?Fc(b,w):void 0});return w===null?(0,Z.jsx)(IK,{}):(0,Z.jsx)(wC,{value:w,children:(0,Z.jsxs)(rb,{value:ne,children:[(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(jK,{ground:w,scatterShare:t??S})}),x&&(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)($G,{ground:w})}),!x&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(Q.Suspense,{fallback:(0,Z.jsx)(bS,{name:`the world's views`}),children:[(0,Z.jsx)(WG,{entity:w,material:n}),r!==!1&&(0,Z.jsx)(AK,{entity:w,map:e,material:r}),i!==!1&&(0,Z.jsx)(mK,{entity:w,material:i}),d!==!1&&(0,Z.jsx)(Og,{entity:w,shader:d}),(0,Z.jsx)(iK,{})]}),(0,Z.jsx)(Q.Suspense,{fallback:null,children:(0,Z.jsx)(eK,{entity:w,wireframe:a})}),(0,Z.jsx)(XG,{shown:o}),f&&(0,Z.jsx)(vV,{look:u,clock:E??void 0,shadowMapSize:s??C,sky:p,sun:m,fog:h,focus:g,shadowBox:_})]}),y===void 0?v:(0,Z.jsx)(Vv,{value:y,children:v})]})})}catch(e){throw B(`LoadedWorld`,e)}}function RK(){let e=(0,Q.use)(wC);if(e===null)throw R(Error(`useWorldEntity() is called outside a <World>: call it in a component rendered inside <World>.`),`SP0014`,`useWorldEntity`);return e}function zK(){return Jt({name:`drag-and-drop`,description:`Dragging what a Draggable carries onto a DropTarget, on the HUD.`,component:cb})}function BK(e){try{let t=ob(`Draggable`);return t?(0,Z.jsx)(t.DraggableDom,{...e}):(0,Z.jsx)(`div`,{className:e.className,style:e.style,children:e.children})}catch(e){throw B(`Draggable`,e)}}function VK(e){try{let t=ob(`DropTarget`);return t?(0,Z.jsx)(t.DropTargetDom,{...e}):(0,Z.jsx)(`div`,{className:e.className,style:e.style,children:e.children})}catch(e){throw B(`DropTarget`,e)}}var HK=Xe()((e,t)=>({order:[],raise:n=>{let{order:r}=t();r.at(-1)?.id!==n.id&&e({order:[...r.filter(e=>e.id!==n.id),n]})},forget:n=>e({order:t().order.filter(e=>e.id!==n)})})),UK=40,WK=12,GK={[Xy.TopLeft]:[0,0],[Xy.Top]:[0,1],[Xy.TopRight]:[0,2],[Xy.Left]:[1,0],[Xy.Center]:[1,1],[Xy.Right]:[1,2],[Xy.BottomLeft]:[2,0],[Xy.Bottom]:[2,1],[Xy.BottomRight]:[2,2]},KK;function qK(){KK||(KK=document.createElement(`div`),Object.assign(KK.style,{position:`fixed`,visibility:`hidden`,pointerEvents:`none`,paddingTop:lb.top,paddingRight:lb.right,paddingBottom:lb.bottom,paddingLeft:lb.left}),document.body.append(KK));let e=getComputedStyle(KK);return{left:parseFloat(e.paddingLeft)||0,top:parseFloat(e.paddingTop)||0,right:window.innerWidth-(parseFloat(e.paddingRight)||0),bottom:window.innerHeight-(parseFloat(e.paddingBottom)||0)}}function JK(){let[e,t]=(0,Q.useState)(qK);return(0,Q.useEffect)(()=>{let e=()=>t(qK());return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),e}function YK(e,t,n){let[r,i]=GK[e],a=(e,t,n,r)=>e===0?n+WK:e===2?r-t-WK:n+(r-n-t)/2;return{x:a(i,t.width,n.left,n.right),y:a(r,t.height,n.top,n.bottom)}}function XK(e,t,n){return{x:Math.max(n.left,Math.min(e.x,n.right-t.width)),y:Math.max(n.top,Math.min(e.y,n.bottom-t.height))}}function ZK(e){try{return Gv()?null:(0,Z.jsx)(QK,{...e})}catch(e){throw B(`Window`,e)}}function QK({id:e,title:t,open:n,onClose:r,slot:i=Xy.Center,movable:a=!0,className:o,children:s}){try{let c=GN(),l=tb();dw(n);let u=ey(),d=vm(u,t=>Object.hasOwn(t.places,e)?t.places[e]:void 0),[f,p]=(0,Q.useState)(null),[m,h]=(0,Q.useState)(null),g=JK(),_=a&&!c,v=(0,Q.useRef)(null),y=(0,Q.useId)(),{ref:b}=Zy(`Window: ${t}`,{}),x=(0,Q.useRef)(r);(0,Q.useEffect)(()=>{x.current=r});let S=vm(HK,t=>t.order.findIndex(t=>t.id===e));(0,Q.useEffect)(()=>{if(!n)return;let{raise:t,order:r}=HK.getState();if(c)for(let e of r)e.close();t({id:e,close:()=>x.current()});let i=ug(()=>HK.getState().order.at(-1)?.close());return()=>{i(),HK.getState().forget(e)}},[c,e,n]);let[C,w]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{if(!C)return;let e=new ResizeObserver(()=>h({width:C.offsetWidth,height:C.offsetHeight}));return e.observe(C),()=>e.disconnect()},[C]);let[T,E]=(0,Q.useState)(null),D=(0,Q.useRef)({size:m,bounds:g});(0,Q.useEffect)(()=>{D.current={size:m,bounds:g}}),(0,Q.useEffect)(()=>{if(!T||!_)return;let t={x:0,y:0},n=null;return Dy({host:T,onGrab:e=>{let r=v.current?.getBoundingClientRect();r&&(t={x:e.clientX-r.left,y:e.clientY-r.top},n=null)},onMove:e=>{n={x:e.clientX-t.x,y:e.clientY-t.y},p(n)},onRelease:()=>{let{size:t,bounds:r}=D.current;n&&t&&u.getState().keepPlace(e,XK(n,t,r)),n=null,p(null)}})},[_,T,e,u]);let O=(0,Q.useCallback)(e=>{v.current=e,w(e),b(e)},[b]);if(!n)return null;let k=()=>HK.getState().raise({id:e,close:()=>x.current()}),ee=(0,Z.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,Z.jsx)(`div`,{ref:E,className:K(`min-w-0 flex-1 self-stretch`,_&&`cursor-grab touch-none active:cursor-grabbing`),children:(0,Z.jsx)(Iy,{level:2,className:`text-base`,children:(0,Z.jsx)(`span`,{id:y,children:t})})}),(0,Z.jsx)(eH,{label:`Close ${t}`,onPress:r,className:`size-8 min-w-8 rounded-xl px-0`,children:(0,Z.jsx)(Py,{name:`x`,className:`size-4`})})]}),A=(0,Z.jsxs)(`section`,{ref:O,role:`dialog`,"aria-labelledby":y,onPointerDownCapture:k,className:K(gw,`pointer-events-auto p-3 flex max-h-[calc(100dvh-1.5rem)] max-w-[calc(100vw-1.5rem)] flex-col gap-2 overflow-y-auto`,o),children:[ee,s]});if(c)return(0,Z.jsx)(Yy,{children:(0,Z.jsx)(`div`,{className:K(`pointer-events-auto fixed inset-0 z-40 flex items-center justify-center bg-black/35 transition-opacity`,l&&`pointer-events-none bg-transparent opacity-25`),style:{paddingTop:`calc(0.75rem + ${lb.top})`,paddingRight:`calc(0.75rem + ${lb.right})`,paddingBottom:`calc(0.75rem + ${lb.bottom})`,paddingLeft:`calc(0.75rem + ${lb.left})`},onPointerDown:e=>{e.target===e.currentTarget&&r()},children:A})});let j=f??(a?d:void 0)??(m?YK(i,m,g):void 0),M=j&&m&&XK(j,m,g);return(0,Z.jsx)(Yy,{children:(0,Z.jsx)(`div`,{className:`fixed`,style:{left:M?.x??0,top:M?.y??0,visibility:M?void 0:`hidden`,zIndex:UK+Math.max(S,0)},children:A})})}catch(e){throw B(`WindowOnPage`,e)}}var $K=`hidden pointer-coarse:flex m-16`;function eq({slot:e=Xy.BottomLeft,...t}){try{return(0,Z.jsx)(bw,{slot:e,variant:pw.Bare,className:$K,children:(0,Z.jsx)(Ay,{...t})})}catch(e){throw B(`Joystick`,e)}}function tq({slot:e=Xy.BottomRight,...t}){try{return(0,Z.jsx)(bw,{slot:e,variant:pw.Bare,className:$K,children:(0,Z.jsx)(Cy,{...t})})}catch(e){throw B(`Tap`,e)}}var nq=[...Object.values(Sr.motions),...Object.values(Hm)],rq={pickup:`https://assets.spawnite.com/assets/5b135281dc7afddd03f1b2069d3451715fcfe68dfc7ff3b58b78e19e65b7e64b.mp3`},iq=96,aq=2,oq=F.degToRad(30),sq=F.degToRad(25),cq=.18,lq=.84,uq=function(e){return e.Whole=`whole`,e.Face=`face`,e}({}),dq=new Map,fq=[],pq=!1;function mq(){return new Promise(e=>{if(fq.push(e),pq)return;pq=!0;let t=()=>{fq.splice(0,aq).forEach(e=>e()),fq.length>0?requestAnimationFrame(t):pq=!1};requestAnimationFrame(t)})}var hq;function gq(){if(hq)return hq;let e=new ze({alpha:!0,antialias:!0});e.setSize(iq,iq,!1),e.setClearColor(0,0),e.outputColorSpace=te;let t=new Fe;t.add(new w(16777215,8952234,1.6));let n=new N(16777215,2.2);n.position.set(2,4,3),t.add(n);let r=new qy;return yz(r),hq={renderer:e,scene:t,camera:new ae(35,1,.01,1e3),loader:r},hq}function _q(e){e.parser.json.extensions?.VRM&&(e.scene.rotation.y=Math.PI)}function vq(e,t){let n=e.userData.vrm,r=n instanceof hx&&t?dR(t,n):e.animations.find(({name:e})=>/idle/i.test(e))??e.animations[0];if(!r)return;let i=new _e(e.scene);i.clipAction(r).play(),i.update(0),n instanceof hx&&n.humanoid.update()}function yq(e,t,n=cq){if(t===`whole`)return e.getBoundingSphere(new f);let r=e.max.y-e.min.y,i=e.getCenter(new j);return i.y=e.min.y+r*lq,new f(i,r*n)}function bq(e){let t=e.userData.vrmAnimations?.[0];return t instanceof fR?t:void 0}async function xq(e,{size:t,framing:n,yaw:r,clip:i,faceReach:a}){let{loader:o}=gq(),[s,c]=await Promise.all([o.loadAsync(e),i?o.loadAsync(i):void 0]);_q(s);let{scene:l}=s;l.rotation.y+=r,vq(s,c&&bq(c)),l.updateWorldMatrix(!0,!0),await mq();let{renderer:u,scene:f,camera:p}=gq();u.setSize(t,t,!1);let m=yq(new d().setFromObject(l),n,a),h=n===`face`,g=h?Vp(p,1)*m.radius:Vp(p,m.radius);p.position.set(h?0:Math.sin(oq)*Math.cos(sq),h?0:Math.sin(sq),h?1:Math.cos(oq)*Math.cos(sq)).multiplyScalar(g).add(m.center),p.lookAt(m.center),f.add(l);try{return u.render(f,p),u.domElement.toDataURL(`image/png`)}finally{f.remove(l),Sq(l)}}function Sq(e){e.traverse(e=>{if(!(e instanceof k))return;e.geometry.dispose();let t=Array.isArray(e.material)?e.material:[e.material];for(let e of t){for(let t of Object.values(e))t instanceof je&&t.dispose();e.dispose()}})}function Cq(e,{size:t=iq,framing:n=`whole`,yaw:r=0,clip:i=``,faceReach:a=cq}={}){let o=`${n}:${t}:${r}:${i}:${a}:${e}`,s=dq.get(o);return s||(s=xq(e,{size:t,framing:n,yaw:r,clip:i,faceReach:a}).catch(e=>{throw dq.delete(o),e}),dq.set(o,s)),s}function wq(e){let t=Cl(e);if(!t||t.length<9)return;let n=[];for(let e=0;e<t.length;e+=3)n.push([t[e],t[e+1]]);let r=Tq(n),i=new d().setFromPoints(r.map(([e,t])=>new j(e,t,0))),a=i.getSize(new j),o=Math.max(a.x,a.y)||1,s=i.min.x-(o-a.x)/2;return r.map(([e,t])=>[(e-s)/o,1-(t-i.min.y)/o])}function Tq(e){let t=[...e].sort(([e,t],[n,r])=>e-n||t-r),n=([e,t],[n,r],[i,a])=>(n-e)*(a-t)-(r-t)*(i-e),r=e=>{let t=[];for(let r of e){for(;t.length>=2&&n(t[t.length-2],t[t.length-1],r)<=0;)t.pop();t.push(r)}return t.pop(),t};return[...r(t),...r(t.reverse())]}var Eq=ym()(()=>({steer:Hx,jump:Ux})),Dq=new oe;function Oq({url:e,animation:t,clips:n,loop:r=!0,onPlay:i,onLoad:a}){try{let s=HS(e,yz),{scene:c}=s,l=s.userData.vrm,f=(0,Q.useMemo)(()=>new d().setFromObject(c),[c]),p=-f.min.y,m=l instanceof hx&&l.meta.metaVersion===`0`?Math.PI:0,h=(0,Q.useMemo)(()=>new _e(c),[c]),g=(0,Q.useMemo)(()=>t===void 0?void 0:we.findByName([...n??s.animations],t),[t,n,s]);(0,Q.useLayoutEffect)(()=>{c.traverse(e=>{e instanceof k&&(e.castShadow=!0,e.receiveShadow=!0)})},[c]);let _=(0,Q.useEffectEvent)(e=>a?.(e)),v=(0,Q.useEffectEvent)(e=>i?.(e));return(0,Q.useLayoutEffect)(()=>{Dq.makeRotationY(m).setPosition(0,p,0),_(f.clone().applyMatrix4(Dq))},[f,p,m]),(0,Q.useEffect)(()=>()=>h.uncacheRoot(c),[h,c]),(0,Q.useEffect)(()=>{if(!g)return;let e=h.clipAction(g);return e.reset().play(),v(e),()=>{e.stop(),v(null)}},[h,g]),(0,Q.useEffect)(()=>{if(!g)return;let e=h.clipAction(g);e.setLoop(r?u:o,1/0),e.clampWhenFinished=!r},[h,g,r]),I(z(`ModelFile`,(e,t)=>{h.update(t),l instanceof hx&&l.update(t)})),(0,Z.jsx)(`group`,{"position-y":p,"rotation-y":m,children:(0,Z.jsx)(`primitive`,{object:c,dispose:null})})}catch(e){throw B(`ModelFile`,e)}}var kq=class extends g{load(e,t){t(new je)}};function Aq(e){let t=Gv(),n=L(e=>e.gl);return We(t?kq:bx,e,e=>{e instanceof bx&&e.detectSupport(n)})}ig(e({AbilitiesTrait:()=>ja,AbilityBar:()=>FG,AbilityCastState:()=>mn,AbilityKind:()=>_n,AbilityProjectileTrait:()=>rn,ActionBar:()=>_y,ActionBarShape:()=>ky,AddedVelocityTrait:()=>Kf,AiTrait:()=>im,AimPointTrait:()=>Xn,AmbientOcclusion:()=>Sj,Anchor:()=>yw,AnimationCulling:()=>uo,AttachRefusal:()=>Cd,AttachmentTrait:()=>nu,AuthorityTrait:()=>ei,AvatarTrait:()=>In,Bag:()=>nT,Bar:()=>Fy,Billboard:()=>yF,BillboardUnits:()=>cF,BindingKind:()=>wl,Bloom:()=>bj,Bob:()=>YC,BobTrait:()=>Lu,BodyIgnoreTrait:()=>Fd,BodyNearEye:()=>pm,BodyRefusal:()=>Gr,BodyTrait:()=>zs,BodyVelocityTrait:()=>lc,Button:()=>eH,ButtonVariant:()=>ly,Camera:()=>tE,CameraPreset:()=>UT,CameraShakeTrait:()=>am,CameraTarget:()=>Yp,CameraTrait:()=>V,CastRefusedEvent:()=>Ei,CastingTrait:()=>Sl,CharacterAnimationView:()=>Kz,CharacterCapsuleTrait:()=>jt,CharacterControllerTrait:()=>Ya,CharacterSpawn:()=>jU,CharacterTrait:()=>Jn,CharacterView:()=>qz,Chase:()=>tw,ChaseCamera:()=>iE,ChaseExitedEvent:()=>Wc,ChaseReachedEvent:()=>jc,ChaseTargetsTrait:()=>ts,ChaseTrait:()=>of,ClipLayer:()=>id,ClipMarkEvent:()=>bu,ColliderTrait:()=>Du,CollisionEnteredEvent:()=>Un,CollisionExitedEvent:()=>Lr,CombineRule:()=>Wl,ConnectionNotice:()=>F_,ConnectionState:()=>Jd,ConnectionTrait:()=>Nf,ControlRefusal:()=>Ro,ControlVisibility:()=>gs,ControlledTrait:()=>wf,ConversationTrait:()=>bc,CooldownsTrait:()=>Zd,CoreLayers:()=>Ai,CostLevel:()=>Kb,Counter:()=>wy,CrtMaterial:()=>uE,DamageSourceTrait:()=>Hf,DamagedEvent:()=>Cs,DayClockTrait:()=>zt,DevWorldTrait:()=>Bc,DeviceClass:()=>yp,DevtoolsAction:()=>Kh,DevtoolsNodeKind:()=>yh,Dialog:()=>QV,DialogBuilder:()=>cn,DialogNodeBuilder:()=>Xt,DialogPanel:()=>iH,DiedEvent:()=>Af,DisarmedTrait:()=>yr,DisconnectedTrait:()=>Ao,DisplayName:()=>LG,DisplayNameTrait:()=>fi,DownedTrait:()=>xo,Draggable:()=>BK,DrawnFeetTrait:()=>Ni,DropTarget:()=>VK,Emitter:()=>JV,EnergyOrbMaterial:()=>gE,Entity:()=>OC,Equipment:()=>aD,EquipmentSlot:()=>mf,EquipmentTrait:()=>ka,EventDelivery:()=>ko,EventScope:()=>bo,Faction:()=>qd,FellOutOfWorldEvent:()=>La,FiredShotsTrait:()=>So,FloatingText:()=>BV,FreeCamera:()=>QE,FromWelcomeTrait:()=>_a,Game:()=>nB,GaveUpEvent:()=>Mf,GroundMark:()=>Vz,GroundTrait:()=>lf,Heading:()=>Iy,HealedEvent:()=>xa,Health:()=>ZC,HealthTrait:()=>vf,HeightfieldGeometry:()=>UG,HeldItem:()=>EV,HeldWeaponsTrait:()=>Bo,HideSetting:()=>WF,HistoryDepth:()=>nl,HitZonesTrait:()=>Yf,Hud:()=>Yy,HullPointsTrait:()=>co,Icon:()=>Py,Image:()=>Sy,InWorldTrait:()=>ln,InputKind:()=>Qd,InputTrait:()=>lt,InstancedModel:()=>CB,Interact:()=>cw,InteractedEvent:()=>sn,Inventory:()=>pB,InventoryTrait:()=>hn,InvulnerableTrait:()=>Di,ItemAcceptedEvent:()=>nn,ItemEffectType:()=>wi,Joint:()=>iD,JointBrokenEvent:()=>vd,JointRefusal:()=>Ps,JointTrait:()=>Rl,JointType:()=>Ud,Joystick:()=>eq,LatencyTrait:()=>Ui,LeaveReason:()=>fs,Lighting:()=>vV,LoadingProblemKind:()=>bN,LoadingScreen:()=>SN,LoadingStage:()=>aN,Lock:()=>aw,LockTrait:()=>Dt,LogLevel:()=>Jh,Loot:()=>nw,LootLeftTrait:()=>pl,LootTrait:()=>ri,MachinePausedTrait:()=>Jr,MapCamera:()=>FE,MeasureKind:()=>C_,MessageFieldKind:()=>Sf,MessageRefusal:()=>mg,MessagesTrait:()=>da,MicrophoneAccess:()=>ub,Modal:()=>CV,ModalVariant:()=>yV,ModelClip:()=>zz,ModelFile:()=>Oq,ModelTrait:()=>Ur,MovementPreset:()=>Fa,MovementTrait:()=>oo,MoverRefusal:()=>od,Nameplate:()=>sF,NavMeshTrait:()=>vi,NetworkEntitiesTrait:()=>Kt,NetworkIdTrait:()=>hf,Not:()=>ks,Npc:()=>MV,NpcEvent:()=>yf,NumberField:()=>Ny,ObstaclesTrait:()=>gl,OneShotClipTrait:()=>hd,Or:()=>Nl,Panel:()=>bw,PanelVariant:()=>pw,Particles:()=>qV,PathTrait:()=>ac,PendingCastTrait:()=>wt,Phase:()=>kf,Pickup:()=>XC,PickupTrait:()=>Ii,PlaceableKind:()=>tg,PlaceholderShape:()=>Bz,PlatformOnLeave:()=>Or,PlayerNameTrait:()=>jd,PlayerSaveStatus:()=>Hl,PlayerSaveTrait:()=>Mc,PlayerTrait:()=>bf,PointerButton:()=>yT,PortalMaterial:()=>vE,PoseState:()=>fu,PoseTrait:()=>sd,PostProcessing:()=>dj,PrefabTrait:()=>Ql,PressDropReason:()=>Nn,PressStatus:()=>Oo,PreviousTransformTrait:()=>ra,QualityGroup:()=>_p,QualityLevel:()=>vp,RefTrait:()=>Xf,Refusal:()=>yo,ReleaseReason:()=>Vi,Replicas:()=>NU,ReservationsTrait:()=>dc,Resource:()=>$E,ResourceBar:()=>tD,ResourceStart:()=>Vs,Respawn:()=>QC,RespawnPlace:()=>at,RespawnScreen:()=>kI,RespawnTrait:()=>tl,RespawningTrait:()=>ls,RewindTrait:()=>ut,RigidBodyType:()=>Pc,Role:()=>la,RoomControllerTrait:()=>ma,RoomDrop:()=>Ym,RoomStatus:()=>H,Routine:()=>Dd,RoutinesBuilder:()=>ou,RunContext:()=>eo,SaveDestination:()=>_M,SaveLimit:()=>g_,SaveScope:()=>vn,SaveStatus:()=>S_,ScatterRefTrait:()=>vt,ScatterTrait:()=>rl,Scene:()=>ML,ScenePathTrait:()=>gn,Select:()=>My,SendOutcome:()=>_h,SettingKind:()=>$b,SettingRow:()=>UF,SettingsTab:()=>Y,Shader:()=>lE,ShadowType:()=>Sm,ShapeType:()=>xf,ShotJudge:()=>b_,ShotJudgedEvent:()=>nc,SideCamera:()=>rD,Simulation:()=>Ut,SkinnedBatch:()=>eC,Slider:()=>jy,Slot:()=>Xy,Sound:()=>IU,SpawnPointsTrait:()=>ai,SpellBeam:()=>XU,SpellLandedEvent:()=>dl,SpellLook:()=>JU,SpellRing:()=>$U,SpellRunes:()=>nW,SpellShards:()=>iW,SpellSpear:()=>fW,SpellStruckEvent:()=>ti,SpellSwirl:()=>hW,Spin:()=>JC,SpinTrait:()=>pr,StateType:()=>ii,Stats:()=>gW,StatsTrait:()=>qs,SteerTrait:()=>wu,StepProfileTrait:()=>Xu,StrafeClip:()=>bd,StuckTrait:()=>Is,SystemReadsTrait:()=>Gc,TakenEvent:()=>qr,TalkingTrait:()=>cf,Tap:()=>tq,TargetMode:()=>bl,TargetTrait:()=>pi,TargetableTrait:()=>Pi,Targeting:()=>wW,TeamTrait:()=>Bl,Text:()=>xy,TextField:()=>Ty,ThumbnailFraming:()=>uq,Toggle:()=>Oy,ToneMappingMode:()=>lj,Track:()=>Ji,TrackMover:()=>EW,TrackMoverTrait:()=>Ir,TrackRefTrait:()=>Ju,TrackScatter:()=>lG,TrackSurface:()=>dG,TrackTrigger:()=>mG,TrackTriggerMoversTrait:()=>Po,TrackTriggerTrait:()=>To,TransformTrait:()=>mo,Trigger:()=>lw,TriggerEnteredEvent:()=>Yu,TriggerExitedEvent:()=>Tr,TriggerTrait:()=>ep,TurnSide:()=>zn,TurnTrait:()=>Nr,UpperBodyClipTrait:()=>js,VelocityTrait:()=>Gu,ViewTargetTrait:()=>ff,Vignette:()=>wj,VoiceMode:()=>bp,VolumeChannel:()=>cS,VrmView:()=>Iz,WalkRefusal:()=>Eu,WalletTrait:()=>Lt,WarmHud:()=>nb,WaterMaterial:()=>mE,Weapon:()=>ET,WeaponKind:()=>kd,WeaponNumber:()=>lu,WeaponsTrait:()=>ad,WelcomesTrait:()=>Ti,Window:()=>ZK,WireFormat:()=>dv,World:()=>PK,WorldRandomTrait:()=>Xa,abilities:()=>Cu,activateItem:()=>zd,addBotPlayer:()=>x_,addCoins:()=>Wr,addController:()=>ct,addItem:()=>hc,addLinearVelocity:()=>M_,addModifierTotals:()=>Os,addSpeedModifier:()=>ha,addStatModifier:()=>zi,aimAlongTrack:()=>Kg,aimAt:()=>za,aimShot:()=>Ug,anchorIfPresent:()=>ba,angleInput:()=>Ff,angleSteps:()=>hs,applyForce:()=>Qf,applyImpulse:()=>Ft,applyModifierTotals:()=>Ml,applyPaintStroke:()=>wb,applyTerrainStroke:()=>Sb,applyTorque:()=>no,applyTorqueImpulse:()=>tr,approachShare:()=>Ll,attach:()=>$u,attachDevtools:()=>zh,axisInput:()=>Cf,axisSteps:()=>254,bakeGroundObstacles:()=>Kr,beginDefinitionReload:()=>Si,beginPaintStroke:()=>xb,beginTerrainStroke:()=>Cb,behaviours:()=>yd,bindSaveSession:()=>P_,boolean:()=>xn,box:()=>ua,buildAiTree:()=>Xp,buildTrackSurface:()=>QW,button:()=>Fh,buttonInput:()=>Ht,calculateDaylight:()=>bn,cameraSettings:()=>sl,cameraShakeSettings:()=>$p,capsule:()=>Bt,captureEntity:()=>tO,captureInstance:()=>nO,captureScreen:()=>iO,captureView:()=>aO,castCoverRay:()=>di,castDroppedText:()=>cl,castPress:()=>Dn,castPressDeclaration:()=>ur,castRay:()=>$a,castRayAll:()=>Qn,castRefusalText:()=>Qr,castReservation:()=>Ln,castShape:()=>Va,castTurnSeconds:()=>Hd,castsAsPress:()=>ui,changeResource:()=>Mo,characterMotion:()=>Sr,characterMovementSettings:()=>Mn,characters:()=>Fs,chaserCollisionMask:()=>ro,checkCost:()=>Co,checkRespawn:()=>ec,checkTarget:()=>Pu,claimShotHits:()=>qg,clearModifierTotals:()=>Ld,clearSentShots:()=>dm,commitCost:()=>Ho,commitPose:()=>p_,composePlugins:()=>Ad,composeScatterMatrix:()=>Wa,cone:()=>uf,connectionNoticeText:()=>t_,control:()=>Js,controls:()=>zl,convertVolumeToGain:()=>dS,convexHull:()=>Ta,cooldowns:()=>Wd,core:()=>Ks,correctionTolerance:()=>fa,countItem:()=>Xl,createAdded:()=>Rd,createCastPress:()=>Mi,createChanged:()=>Hs,createGameWorld:()=>it,createGlowMaterial:()=>YU,createGroundSurface:()=>Wf,createHeadlessGame:()=>Sa,createJoint:()=>Gs,createQuery:()=>pc,createRemoved:()=>Au,createSaveSession:()=>n_,createStore:()=>ym,createSweepRecord:()=>rc,createTrackFrame:()=>ht,createTransform:()=>xr,crtFragment:()=>oE,custom:()=>zm,cycleTarget:()=>wn,cylinder:()=>un,daylightSettings:()=>ar,dealDamage:()=>ia,dealHealing:()=>Zf,declareInventory:()=>zc,declareMoveSpeed:()=>Zl,declareResource:()=>Ki,declareRespawn:()=>su,declareStats:()=>ot,defaultCharacterCapsule:()=>Vu,defaultCharacterController:()=>_r,defaultMessagesPerSecond:()=>4,defaultPressesPerSecond:()=>20,defaultProjectileSpeed:()=>20,defaultRandomSeed:()=>0,defaultRoomPlayers:()=>20,defaultRoomSendRate:()=>60,defineBehaviour:()=>sr,defineCooldown:()=>Kl,defineEvent:()=>Bi,defineLevels:()=>io,defineMessage:()=>$i,definePhysics:()=>$d,definePlugin:()=>Jt,definePluginFactory:()=>_f,definePrefab:()=>Hc,definePress:()=>Gf,defineReservation:()=>Ou,defineResource:()=>pt,defineRoom:()=>f_,defineSave:()=>on,defineSaveCodec:()=>u_,defineSpeedModifier:()=>Wt,defineTrait:()=>Da,deliverMessage:()=>Vt,describeCastRefusal:()=>cr,describeRoutines:()=>Zc,describeSystem:()=>du,destroy:()=>kc,detach:()=>Jc,dialog:()=>hl,dragAndDrop:()=>zK,dropItem:()=>Ec,dumpKey:()=>Fc,dumpState:()=>ml,emitEvent:()=>tc,energyOrbFragment:()=>hE,engineActions:()=>Et,engineStartLevels:()=>yv,entities:()=>At,entity:()=>Ja,equipItem:()=>Rc,extendGltfLoader:()=>Sg,extendVrmLoader:()=>yz,fanPellet:()=>D_,filterChaseTargets:()=>rr,findAuthority:()=>tf,findClickedTarget:()=>Vr,findController:()=>xd,findDrawnTarget:()=>Tn,findEntity:()=>Qs,findNearestControlled:()=>Pt,findPath:()=>Ul,findPendingController:()=>eu,findRapierWorld:()=>mt,findRayHit:()=>om,findResourceTrait:()=>wd,findRewindSends:()=>Gg,findSaveSession:()=>Vg,findTargetsInFront:()=>ta,findTimeOfDay:()=>hi,finishLevel:()=>jn,fixedStepSeconds:()=>El,focusCamera:()=>Bp,followGround:()=>dz,followVolume:()=>gS,frameCamera:()=>mm,frameShot:()=>fm,frameView:()=>um,freeCharacter:()=>Mr,gameInsetLengths:()=>lb,gizmoUserData:()=>ZD,globalCooldown:()=>jr,grantAbilities:()=>Vc,grantPredicted:()=>k_,groundTextures:()=>Bm,hasItem:()=>Zo,hasLineOfSight:()=>Oc,hash32:()=>Xr,hashKeys:()=>si,healthResource:()=>ru,heightfield:()=>Qt,heldRule:()=>Lg,holdInput:()=>ir,holdsAbility:()=>Qo,holdsWeapon:()=>cs,inputContext:()=>pn,integer:()=>qn,inventory:()=>Iu,isAuthoritative:()=>Md,isBoostHeld:()=>Yx,isCoolingDown:()=>Ic,isCursorCaptured:()=>Yh,isLocallyControlled:()=>Ts,isOlderReader:()=>lp,isRemote:()=>Ct,isRoomWorld:()=>ul,isSleeping:()=>Ua,isTouching:()=>po,itemStack:()=>T_,keptLags:()=>8,kick:()=>Nd,kickedCloseCode:()=>mv,lateEdgeTicks:()=>17,launchProjectile:()=>jo,launchTrackMover:()=>Uo,leftCloseCode:()=>rv,listLevels:()=>Er,listMotionUrls:()=>Wz,listMountedMaps:()=>Cm,listenToAction:()=>Km,loadRapier:()=>Yi,loadRecast:()=>Nc,machines:()=>Uc,mapPreviewScene:()=>gg,maxHealthStat:()=>_o,maximumFrameBytes:()=>Ea,maximumHeldEventBytes:()=>gd,maximumHeldEvents:()=>Ms,maximumInputButtons:()=>32,maximumInputBytes:()=>96,maximumInputChanges:()=>8,maximumPressReasonLength:()=>64,maximumTextBytes:()=>dn,maximumUnreadSteps:()=>60,measureLatency:()=>Jg,measureMessageFrameBytes:()=>$t,measureMiss:()=>lm,measureShotDistance:()=>na,menuPane:()=>hw,messageRefusalText:()=>fg,messageTooLargeCloseCode:()=>uv,mostRoomPlayers:()=>50,mountHeadlessScene:()=>Xv,moveAndSlide:()=>uu,moveCharacter:()=>Tf,moveSpeedStat:()=>Do,moveStack:()=>Lf,nameAbilityCooldown:()=>Wu,nameMap:()=>th,nextLevel:()=>Ru,npcs:()=>Ac,number:()=>Ia,omit:()=>Ma,openingModels:()=>nq,originRule:()=>y_,overlapShape:()=>Rn,pageAction:()=>ol,pendingStandSeconds:()=>br,persist:()=>dM,pickEntity:()=>w_,pinTarget:()=>Jf,placeCharacter:()=>Xi,placeSpawnPoints:()=>Oi,placeTrackScatter:()=>sG,playClip:()=>Qc,playLevel:()=>mr,playerVolumeRange:()=>mb,portalFragment:()=>_E,positiveY:()=>Za,prepareVrm:()=>Dz,pressBurst:()=>2,pushCharacter:()=>pf,quaternionToYaw:()=>ud,queuePress:()=>Al,raiseHeightfield:()=>Tb,random:()=>lo,randomInt:()=>Fn,randomRange:()=>kr,rateRule:()=>Yg,readAbilityInspection:()=>tn,readAimAt:()=>tm,readAngularVelocity:()=>go,readAuthorityWorld:()=>Rf,readAxisSides:()=>ci,readCameraShakeScale:()=>By,readControlled:()=>Zu,readCooldown:()=>Cc,readCreditedCoins:()=>to,readDisplayName:()=>jf,readEach:()=>Ed,readEvents:()=>Vd,readField:()=>au,readInput:()=>ku,readInputChanges:()=>ql,readJointReaction:()=>_c,readLinearVelocity:()=>Vn,readLocalCharacter:()=>Ol,readMap:()=>$m,readMapRevision:()=>Qh,readMessages:()=>bi,readModel:()=>an,readModelSilhouette:()=>wq,readModelSize:()=>ni,readModelThumbnail:()=>Cq,readMoveSpeed:()=>Lo,readNextPose:()=>Fr,readPastPlace:()=>e_,readPastTraits:()=>L_,readPendingControlled:()=>Kc,readPlayers:()=>sc,readPresses:()=>uc,readResource:()=>Yc,readResourcesSave:()=>is,readRoomFailedReason:()=>iv,readRoomNotice:()=>zg,readRoomSeconds:()=>Xd,readSaveRefusalReason:()=>vv,readSentPlace:()=>Rg,readSentZones:()=>i_,readStat:()=>Td,readStatsSave:()=>iu,readStepProfile:()=>Vl,readStrafe:()=>$g,readTimeline:()=>O_,readTrait:()=>Jl,readTriggerOccupants:()=>Fo,readWeaponNumber:()=>_d,recordPreviousTransforms:()=>St,recordRefusedShot:()=>Jp,recordSentShot:()=>sm,refundCost:()=>_u,registerAbility:()=>bs,registerAvatar:()=>Mm,registerClip:()=>Ku,registerHealth:()=>dd,registerItem:()=>Ef,registerItemTarget:()=>mc,registerMap:()=>ah,registerMapProps:()=>qm,registerMaps:()=>ag,registerModel:()=>mi,registerShotSettings:()=>Xg,registerStatField:()=>td,registerWeapon:()=>Ns,releaseControl:()=>ns,reloadScene:()=>A_,removeItem:()=>ga,removeSpeedModifier:()=>Oa,removeStatModifiers:()=>Xc,requestSave:()=>v_,requireAuthority:()=>ys,requirePlugin:()=>Br,reserveCost:()=>Ds,resolveStat:()=>as,resources:()=>es,restoreEquipment:()=>ju,restoreInventory:()=>Yl,restoreLevels:()=>Io,restoreResources:()=>jl,restoreStats:()=>vu,revokeAbilities:()=>Df,rewindCeilingSeconds:()=>1,rewindRule:()=>Hg,rewindStep:()=>r_,rollAbilityDamage:()=>va,roomFailedCloseCode:()=>_v,roomSendRates:()=>pp,roundTo:()=>al,route:()=>os,routines:()=>yu,save:()=>MM,saveNewerCloseCode:()=>Z_,saveNotLoadedCloseCode:()=>gv,scaleZoneDamage:()=>Nt,scatterModels:()=>Hm,screenOverlayUserData:()=>QD,seedRandom:()=>Hu,selectCustomQuality:()=>$v,selectNextQualityLevel:()=>xv,sendMessage:()=>PC,sendPlayerInput:()=>Ot,sendPress:()=>FC,setAngularVelocity:()=>qu,setBody:()=>Yd,setCollider:()=>Pf,setGravity:()=>Sd,setInput:()=>Ph,setJoint:()=>Fu,setLinearVelocity:()=>Cr,setNextPose:()=>No,setRewindStep:()=>a_,setStatBase:()=>fd,setTimeOfDay:()=>Fi,setVoxel:()=>ps,shakeCamera:()=>qp,shuffle:()=>vr,sizeArmColliders:()=>vz,sleep:()=>wo,slowCharacter:()=>qt,sounds:()=>rq,spawn:()=>xs,spawnCharacter:()=>Pd,spawnLocal:()=>Of,spawnNpc:()=>$s,spawnNpcBody:()=>Rs,spendCoins:()=>er,sphere:()=>yi,splitStack:()=>Gt,startCooldown:()=>Jo,states:()=>Zi,stats:()=>af,steerFromStick:()=>Hx,stepSeconds:()=>Wn,stepWorld:()=>yc,stopClip:()=>ss,strikeTarget:()=>gf,takeEscape:()=>ug,takeStepWindow:()=>Kd,teleport:()=>h_,teleportActor:()=>Wi,text:()=>so,toMachineId:()=>_t,trackCameraSettings:()=>o_,trackMovementKeys:()=>Zx,trackResource:()=>E_,tracks:()=>Vf,triangleMesh:()=>_l,tryControl:()=>mu,unequipItem:()=>Xo,updateEach:()=>nd,updateTarget:()=>Qa,useAction:()=>uB,useActionHeld:()=>dB,useActiveQualityLevel:()=>Zv,useAfterPose:()=>gG,useBehaviour:()=>WC,useCamera:()=>HT,useCast:()=>DG,useCharacter:()=>$w,useClipMark:()=>hG,useCooldown:()=>IG,useCursor:()=>_g,useDevtools:()=>kh,useDevtoolsPanel:()=>fB,useDisplayName:()=>bF,useDragging:()=>tb,useEntity:()=>NC,useEntityRef:()=>CC,useEvent:()=>qC,useFloatingText:()=>FV,useFreeCursor:()=>dw,useHeadless:()=>Gv,useHealth:()=>eT,useInput:()=>Eq,useInspect:()=>lB,useInventory:()=>uw,useKtx2:()=>Aq,useLatestPressResult:()=>vG,useLevelPlace:()=>eN,useLevels:()=>$M,useLoading:()=>U,useLookGrading:()=>hV,useMachineState:()=>BG,useMenu:()=>hh,useModel:()=>HS,useParticles:()=>KV,usePlayer:()=>tT,usePlayerVoice:()=>HG,usePressResults:()=>_G,useQualityLevel:()=>zv,useQualitySettings:()=>Nv,useQualityStore:()=>Qv,useResource:()=>eD,useRoom:()=>Xm,useSaveStatus:()=>FM,useScenes:()=>Fv,useSettings:()=>q,useSkinnedBatch:()=>uC,useSpeaking:()=>xF,useTarget:()=>vW,useTime:()=>rg,useTrait:()=>VG,useUnscaledFrame:()=>gb,useVoice:()=>db,useVoiceSession:()=>J,useWallet:()=>VA,useWorldEntity:()=>RK,vector2Input:()=>ea,vectorSteps:()=>127,versionsOf:()=>up,voxels:()=>yt,wadeDepth:()=>Ko,wakeUp:()=>qi,walkTo:()=>cc,watchCastRefusals:()=>Ci,waterFragment:()=>fE,weapons:()=>Ss,weighPlanRings:()=>iG,writeInput:()=>cd,writeStateTags:()=>Uf,yawToQuaternion:()=>kl}));export{ja as AbilitiesTrait,FG as AbilityBar,mn as AbilityCastState,_n as AbilityKind,rn as AbilityProjectileTrait,_y as ActionBar,ky as ActionBarShape,Kf as AddedVelocityTrait,im as AiTrait,Xn as AimPointTrait,Sj as AmbientOcclusion,yw as Anchor,uo as AnimationCulling,Cd as AttachRefusal,nu as AttachmentTrait,ei as AuthorityTrait,In as AvatarTrait,nT as Bag,Fy as Bar,yF as Billboard,cF as BillboardUnits,wl as BindingKind,bj as Bloom,YC as Bob,Lu as BobTrait,Fd as BodyIgnoreTrait,pm as BodyNearEye,Gr as BodyRefusal,zs as BodyTrait,lc as BodyVelocityTrait,eH as Button,ly as ButtonVariant,tE as Camera,UT as CameraPreset,am as CameraShakeTrait,Yp as CameraTarget,V as CameraTrait,Ei as CastRefusedEvent,Sl as CastingTrait,Kz as CharacterAnimationView,jt as CharacterCapsuleTrait,Ya as CharacterControllerTrait,jU as CharacterSpawn,Jn as CharacterTrait,qz as CharacterView,tw as Chase,iE as ChaseCamera,Wc as ChaseExitedEvent,jc as ChaseReachedEvent,ts as ChaseTargetsTrait,of as ChaseTrait,id as ClipLayer,bu as ClipMarkEvent,Du as ColliderTrait,Un as CollisionEnteredEvent,Lr as CollisionExitedEvent,Wl as CombineRule,F_ as ConnectionNotice,Jd as ConnectionState,Nf as ConnectionTrait,Ro as ControlRefusal,gs as ControlVisibility,wf as ControlledTrait,bc as ConversationTrait,Zd as CooldownsTrait,Ai as CoreLayers,Kb as CostLevel,wy as Counter,uE as CrtMaterial,Hf as DamageSourceTrait,Cs as DamagedEvent,zt as DayClockTrait,Bc as DevWorldTrait,yp as DeviceClass,Kh as DevtoolsAction,yh as DevtoolsNodeKind,QV as Dialog,cn as DialogBuilder,Xt as DialogNodeBuilder,iH as DialogPanel,Af as DiedEvent,yr as DisarmedTrait,Ao as DisconnectedTrait,LG as DisplayName,fi as DisplayNameTrait,xo as DownedTrait,BK as Draggable,Ni as DrawnFeetTrait,VK as DropTarget,JV as Emitter,gE as EnergyOrbMaterial,OC as Entity,aD as Equipment,mf as EquipmentSlot,ka as EquipmentTrait,ko as EventDelivery,bo as EventScope,qd as Faction,La as FellOutOfWorldEvent,So as FiredShotsTrait,BV as FloatingText,QE as FreeCamera,_a as FromWelcomeTrait,nB as Game,Mf as GaveUpEvent,Vz as GroundMark,lf as GroundTrait,Iy as Heading,xa as HealedEvent,ZC as Health,vf as HealthTrait,UG as HeightfieldGeometry,EV as HeldItem,Bo as HeldWeaponsTrait,WF as HideSetting,nl as HistoryDepth,Yf as HitZonesTrait,Yy as Hud,co as HullPointsTrait,Py as Icon,Sy as Image,ln as InWorldTrait,Qd as InputKind,lt as InputTrait,CB as InstancedModel,cw as Interact,sn as InteractedEvent,pB as Inventory,hn as InventoryTrait,Di as InvulnerableTrait,nn as ItemAcceptedEvent,wi as ItemEffectType,iD as Joint,vd as JointBrokenEvent,Ps as JointRefusal,Rl as JointTrait,Ud as JointType,eq as Joystick,Ui as LatencyTrait,fs as LeaveReason,vV as Lighting,bN as LoadingProblemKind,SN as LoadingScreen,aN as LoadingStage,aw as Lock,Dt as LockTrait,Jh as LogLevel,nw as Loot,pl as LootLeftTrait,ri as LootTrait,Jr as MachinePausedTrait,FE as MapCamera,C_ as MeasureKind,Sf as MessageFieldKind,mg as MessageRefusal,da as MessagesTrait,ub as MicrophoneAccess,CV as Modal,yV as ModalVariant,zz as ModelClip,Oq as ModelFile,Ur as ModelTrait,Fa as MovementPreset,oo as MovementTrait,od as MoverRefusal,sF as Nameplate,vi as NavMeshTrait,Kt as NetworkEntitiesTrait,hf as NetworkIdTrait,ks as Not,MV as Npc,yf as NpcEvent,Ny as NumberField,gl as ObstaclesTrait,hd as OneShotClipTrait,Nl as Or,bw as Panel,pw as PanelVariant,qV as Particles,ac as PathTrait,wt as PendingCastTrait,kf as Phase,XC as Pickup,Ii as PickupTrait,tg as PlaceableKind,Bz as PlaceholderShape,Or as PlatformOnLeave,jd as PlayerNameTrait,Hl as PlayerSaveStatus,Mc as PlayerSaveTrait,bf as PlayerTrait,yT as PointerButton,vE as PortalMaterial,fu as PoseState,sd as PoseTrait,dj as PostProcessing,Ql as PrefabTrait,Nn as PressDropReason,Oo as PressStatus,ra as PreviousTransformTrait,_p as QualityGroup,vp as QualityLevel,Xf as RefTrait,yo as Refusal,Vi as ReleaseReason,NU as Replicas,dc as ReservationsTrait,$E as Resource,tD as ResourceBar,Vs as ResourceStart,QC as Respawn,at as RespawnPlace,kI as RespawnScreen,tl as RespawnTrait,ls as RespawningTrait,ut as RewindTrait,Pc as RigidBodyType,la as Role,ma as RoomControllerTrait,Ym as RoomDrop,H as RoomStatus,Dd as Routine,ou as RoutinesBuilder,eo as RunContext,_M as SaveDestination,g_ as SaveLimit,vn as SaveScope,S_ as SaveStatus,vt as ScatterRefTrait,rl as ScatterTrait,ML as Scene,gn as ScenePathTrait,My as Select,_h as SendOutcome,$b as SettingKind,UF as SettingRow,Y as SettingsTab,lE as Shader,Sm as ShadowType,xf as ShapeType,b_ as ShotJudge,nc as ShotJudgedEvent,rD as SideCamera,Ut as Simulation,eC as SkinnedBatch,jy as Slider,Xy as Slot,IU as Sound,ai as SpawnPointsTrait,XU as SpellBeam,dl as SpellLandedEvent,JU as SpellLook,$U as SpellRing,nW as SpellRunes,iW as SpellShards,fW as SpellSpear,ti as SpellStruckEvent,hW as SpellSwirl,JC as Spin,pr as SpinTrait,ii as StateType,gW as Stats,qs as StatsTrait,wu as SteerTrait,Xu as StepProfileTrait,bd as StrafeClip,Is as StuckTrait,Gc as SystemReadsTrait,qr as TakenEvent,cf as TalkingTrait,tq as Tap,bl as TargetMode,pi as TargetTrait,Pi as TargetableTrait,wW as Targeting,Bl as TeamTrait,xy as Text,Ty as TextField,uq as ThumbnailFraming,Oy as Toggle,lj as ToneMappingMode,Ji as Track,EW as TrackMover,Ir as TrackMoverTrait,Ju as TrackRefTrait,lG as TrackScatter,dG as TrackSurface,mG as TrackTrigger,Po as TrackTriggerMoversTrait,To as TrackTriggerTrait,mo as TransformTrait,lw as Trigger,Yu as TriggerEnteredEvent,Tr as TriggerExitedEvent,ep as TriggerTrait,zn as TurnSide,Nr as TurnTrait,js as UpperBodyClipTrait,Gu as VelocityTrait,ff as ViewTargetTrait,wj as Vignette,bp as VoiceMode,cS as VolumeChannel,Iz as VrmView,Eu as WalkRefusal,Lt as WalletTrait,nb as WarmHud,mE as WaterMaterial,ET as Weapon,kd as WeaponKind,lu as WeaponNumber,ad as WeaponsTrait,Ti as WelcomesTrait,ZK as Window,dv as WireFormat,PK as World,Xa as WorldRandomTrait,Cu as abilities,zd as activateItem,x_ as addBotPlayer,Wr as addCoins,ct as addController,hc as addItem,M_ as addLinearVelocity,Os as addModifierTotals,ha as addSpeedModifier,zi as addStatModifier,Kg as aimAlongTrack,za as aimAt,Ug as aimShot,ba as anchorIfPresent,Ff as angleInput,hs as angleSteps,Qf as applyForce,Ft as applyImpulse,Ml as applyModifierTotals,wb as applyPaintStroke,Sb as applyTerrainStroke,no as applyTorque,tr as applyTorqueImpulse,Ll as approachShare,$u as attach,zh as attachDevtools,Cf as axisInput,pa as axisSteps,Kr as bakeGroundObstacles,Si as beginDefinitionReload,xb as beginPaintStroke,Cb as beginTerrainStroke,yd as behaviours,P_ as bindSaveSession,xn as boolean,ua as box,Xp as buildAiTree,QW as buildTrackSurface,Fh as button,Ht as buttonInput,bn as calculateDaylight,sl as cameraSettings,$p as cameraShakeSettings,Bt as capsule,tO as captureEntity,nO as captureInstance,iO as captureScreen,aO as captureView,di as castCoverRay,cl as castDroppedText,Dn as castPress,ur as castPressDeclaration,$a as castRay,Qn as castRayAll,Qr as castRefusalText,Ln as castReservation,Va as castShape,Hd as castTurnSeconds,ui as castsAsPress,Mo as changeResource,Sr as characterMotion,Mn as characterMovementSettings,Fs as characters,ro as chaserCollisionMask,Co as checkCost,ec as checkRespawn,Pu as checkTarget,qg as claimShotHits,Ld as clearModifierTotals,dm as clearSentShots,Ho as commitCost,p_ as commitPose,Ad as composePlugins,Wa as composeScatterMatrix,uf as cone,t_ as connectionNoticeText,Js as control,zl as controls,dS as convertVolumeToGain,Ta as convexHull,Wd as cooldowns,Ks as core,fa as correctionTolerance,Xl as countItem,Rd as createAdded,Mi as createCastPress,Hs as createChanged,it as createGameWorld,YU as createGlowMaterial,Wf as createGroundSurface,Sa as createHeadlessGame,Gs as createJoint,pc as createQuery,Au as createRemoved,n_ as createSaveSession,ym as createStore,rc as createSweepRecord,ht as createTrackFrame,xr as createTransform,oE as crtFragment,zm as custom,wn as cycleTarget,un as cylinder,ar as daylightSettings,ia as dealDamage,Zf as dealHealing,zc as declareInventory,Zl as declareMoveSpeed,Ki as declareResource,su as declareRespawn,ot as declareStats,Vu as defaultCharacterCapsule,_r as defaultCharacterController,or as defaultMessagesPerSecond,zr as defaultPressesPerSecond,$c as defaultProjectileSpeed,Ra as defaultRandomSeed,gp as defaultRoomPlayers,mp as defaultRoomSendRate,sr as defineBehaviour,Kl as defineCooldown,Bi as defineEvent,io as defineLevels,$i as defineMessage,$d as definePhysics,Jt as definePlugin,_f as definePluginFactory,Hc as definePrefab,Gf as definePress,Ou as defineReservation,pt as defineResource,f_ as defineRoom,on as defineSave,u_ as defineSaveCodec,Wt as defineSpeedModifier,Da as defineTrait,Vt as deliverMessage,cr as describeCastRefusal,Zc as describeRoutines,du as describeSystem,kc as destroy,Jc as detach,hl as dialog,zK as dragAndDrop,Ec as dropItem,Fc as dumpKey,ml as dumpState,tc as emitEvent,hE as energyOrbFragment,Et as engineActions,yv as engineStartLevels,At as entities,Ja as entity,Rc as equipItem,Sg as extendGltfLoader,yz as extendVrmLoader,D_ as fanPellet,rr as filterChaseTargets,tf as findAuthority,Vr as findClickedTarget,xd as findController,Tn as findDrawnTarget,Qs as findEntity,Pt as findNearestControlled,Ul as findPath,eu as findPendingController,mt as findRapierWorld,om as findRayHit,wd as findResourceTrait,Gg as findRewindSends,Vg as findSaveSession,ta as findTargetsInFront,hi as findTimeOfDay,jn as finishLevel,El as fixedStepSeconds,Bp as focusCamera,dz as followGround,gS as followVolume,mm as frameCamera,fm as frameShot,um as frameView,Mr as freeCharacter,lb as gameInsetLengths,ZD as gizmoUserData,jr as globalCooldown,Vc as grantAbilities,k_ as grantPredicted,Bm as groundTextures,Zo as hasItem,Oc as hasLineOfSight,Xr as hash32,si as hashKeys,ru as healthResource,Qt as heightfield,Lg as heldRule,ir as holdInput,Qo as holdsAbility,cs as holdsWeapon,pn as inputContext,qn as integer,Iu as inventory,Md as isAuthoritative,Yx as isBoostHeld,Ic as isCoolingDown,Yh as isCursorCaptured,Ts as isLocallyControlled,lp as isOlderReader,Ct as isRemote,ul as isRoomWorld,Ua as isSleeping,po as isTouching,T_ as itemStack,Su as keptLags,Nd as kick,mv as kickedCloseCode,nv as lateEdgeTicks,jo as launchProjectile,Uo as launchTrackMover,rv as leftCloseCode,Er as listLevels,Wz as listMotionUrls,Cm as listMountedMaps,Km as listenToAction,Yi as loadRapier,Nc as loadRecast,Uc as machines,gg as mapPreviewScene,_o as maxHealthStat,Ea as maximumFrameBytes,gd as maximumHeldEventBytes,Ms as maximumHeldEvents,en as maximumInputButtons,xi as maximumInputBytes,vl as maximumInputChanges,gu as maximumPressReasonLength,dn as maximumTextBytes,Il as maximumUnreadSteps,Jg as measureLatency,$t as measureMessageFrameBytes,lm as measureMiss,na as measureShotDistance,hw as menuPane,fg as messageRefusalText,uv as messageTooLargeCloseCode,hp as mostRoomPlayers,Xv as mountHeadlessScene,uu as moveAndSlide,Tf as moveCharacter,Do as moveSpeedStat,Lf as moveStack,Wu as nameAbilityCooldown,th as nameMap,Ru as nextLevel,Ac as npcs,Ia as number,Ma as omit,nq as openingModels,y_ as originRule,Rn as overlapShape,ol as pageAction,br as pendingStandSeconds,dM as persist,w_ as pickEntity,Jf as pinTarget,Xi as placeCharacter,Oi as placeSpawnPoints,sG as placeTrackScatter,Qc as playClip,mr as playLevel,mb as playerVolumeRange,_E as portalFragment,Za as positiveY,Dz as prepareVrm,Es as pressBurst,pf as pushCharacter,ud as quaternionToYaw,Al as queuePress,Tb as raiseHeightfield,lo as random,Fn as randomInt,kr as randomRange,Yg as rateRule,tn as readAbilityInspection,tm as readAimAt,go as readAngularVelocity,Rf as readAuthorityWorld,ci as readAxisSides,By as readCameraShakeScale,Zu as readControlled,Cc as readCooldown,to as readCreditedCoins,jf as readDisplayName,Ed as readEach,Vd as readEvents,au as readField,ku as readInput,ql as readInputChanges,_c as readJointReaction,Vn as readLinearVelocity,Ol as readLocalCharacter,$m as readMap,Qh as readMapRevision,bi as readMessages,an as readModel,wq as readModelSilhouette,ni as readModelSize,Cq as readModelThumbnail,Lo as readMoveSpeed,Fr as readNextPose,e_ as readPastPlace,L_ as readPastTraits,Kc as readPendingControlled,sc as readPlayers,uc as readPresses,Yc as readResource,is as readResourcesSave,iv as readRoomFailedReason,zg as readRoomNotice,Xd as readRoomSeconds,vv as readSaveRefusalReason,Rg as readSentPlace,i_ as readSentZones,Td as readStat,iu as readStatsSave,Vl as readStepProfile,$g as readStrafe,O_ as readTimeline,Jl as readTrait,Fo as readTriggerOccupants,_d as readWeaponNumber,St as recordPreviousTransforms,Jp as recordRefusedShot,sm as recordSentShot,_u as refundCost,bs as registerAbility,Mm as registerAvatar,Ku as registerClip,dd as registerHealth,Ef as registerItem,mc as registerItemTarget,ah as registerMap,qm as registerMapProps,ag as registerMaps,mi as registerModel,Xg as registerShotSettings,td as registerStatField,Ns as registerWeapon,ns as releaseControl,A_ as reloadScene,ga as removeItem,Oa as removeSpeedModifier,Xc as removeStatModifiers,v_ as requestSave,ys as requireAuthority,Br as requirePlugin,Ds as reserveCost,as as resolveStat,es as resources,ju as restoreEquipment,Yl as restoreInventory,Io as restoreLevels,jl as restoreResources,vu as restoreStats,Df as revokeAbilities,Wg as rewindCeilingSeconds,Hg as rewindRule,r_ as rewindStep,va as rollAbilityDamage,_v as roomFailedCloseCode,pp as roomSendRates,al as roundTo,os as route,yu as routines,MM as save,Z_ as saveNewerCloseCode,gv as saveNotLoadedCloseCode,Nt as scaleZoneDamage,Hm as scatterModels,QD as screenOverlayUserData,Hu as seedRandom,$v as selectCustomQuality,xv as selectNextQualityLevel,PC as sendMessage,Ot as sendPlayerInput,FC as sendPress,qu as setAngularVelocity,Yd as setBody,Pf as setCollider,Sd as setGravity,Ph as setInput,Fu as setJoint,Cr as setLinearVelocity,No as setNextPose,a_ as setRewindStep,fd as setStatBase,Fi as setTimeOfDay,ps as setVoxel,qp as shakeCamera,vr as shuffle,vz as sizeArmColliders,wo as sleep,qt as slowCharacter,rq as sounds,xs as spawn,Pd as spawnCharacter,Of as spawnLocal,$s as spawnNpc,Rs as spawnNpcBody,er as spendCoins,yi as sphere,Gt as splitStack,Jo as startCooldown,Zi as states,af as stats,Hx as steerFromStick,Wn as stepSeconds,yc as stepWorld,ss as stopClip,gf as strikeTarget,ug as takeEscape,Kd as takeStepWindow,h_ as teleport,Wi as teleportActor,so as text,_t as toMachineId,o_ as trackCameraSettings,Zx as trackMovementKeys,E_ as trackResource,Vf as tracks,_l as triangleMesh,mu as tryControl,Xo as unequipItem,nd as updateEach,Qa as updateTarget,uB as useAction,dB as useActionHeld,Zv as useActiveQualityLevel,gG as useAfterPose,WC as useBehaviour,HT as useCamera,DG as useCast,$w as useCharacter,hG as useClipMark,IG as useCooldown,_g as useCursor,kh as useDevtools,fB as useDevtoolsPanel,bF as useDisplayName,tb as useDragging,NC as useEntity,CC as useEntityRef,qC as useEvent,FV as useFloatingText,dw as useFreeCursor,Gv as useHeadless,eT as useHealth,Eq as useInput,lB as useInspect,uw as useInventory,Aq as useKtx2,vG as useLatestPressResult,eN as useLevelPlace,$M as useLevels,U as useLoading,hV as useLookGrading,BG as useMachineState,hh as useMenu,HS as useModel,KV as useParticles,tT as usePlayer,HG as usePlayerVoice,_G as usePressResults,zv as useQualityLevel,Nv as useQualitySettings,Qv as useQualityStore,eD as useResource,Xm as useRoom,FM as useSaveStatus,Fv as useScenes,q as useSettings,uC as useSkinnedBatch,xF as useSpeaking,vW as useTarget,rg as useTime,VG as useTrait,gb as useUnscaledFrame,db as useVoice,J as useVoiceSession,VA as useWallet,RK as useWorldEntity,ea as vector2Input,qf as vectorSteps,up as versionsOf,yt as voxels,Ko as wadeDepth,qi as wakeUp,cc as walkTo,Ci as watchCastRefusals,fE as waterFragment,Ss as weapons,iG as weighPlanRings,cd as writeInput,Uf as writeStateTags,kl as yawToQuaternion};
|