@spawnite/engine 0.1.0-beta.15 → 0.1.0-beta.17

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/dist/public.d.ts CHANGED
@@ -110,7 +110,7 @@ import { Quaternion } from 'three';
110
110
  import { QuaternionLike } from 'three';
111
111
  import { Query } from 'koota';
112
112
  import { QueryParameter } from 'koota';
113
- import type RAPIER from '../../../rapier/types/rapier';
113
+ import type RAPIER from '../rapier/types/rapier';
114
114
  import { Ray } from 'three';
115
115
  import { Raycaster } from 'three';
116
116
  import type { RayHit } from '@spawnite/schema';
@@ -179,7 +179,7 @@ import { TraitValue } from 'koota';
179
179
  import type { UntilOptions } from '@spawnite/schema';
180
180
  import { UntilResult } from '@spawnite/schema';
181
181
  import { UseBoundStore } from 'zustand';
182
- import type { Vector } from '../../../rapier/types/rapier';
182
+ import type { Vector } from '../rapier/types/rapier';
183
183
  import { Vector2 } from 'three';
184
184
  import { Vector3 } from 'three';
185
185
  import { Vector3Like } from 'three';
package/dist/testing.d.ts CHANGED
@@ -18,7 +18,7 @@ import type { PropsWithChildren } from 'react';
18
18
  import { Quaternion } from 'three';
19
19
  import { Query } from 'koota';
20
20
  import { QueryParameter } from 'koota';
21
- import type RAPIER from '../../../rapier/types/rapier';
21
+ import type RAPIER from '../rapier/types/rapier';
22
22
  import type { ReactNode } from 'react';
23
23
  import { RelationPair } from 'koota';
24
24
  import type { SavedHealth } from '@spawnite/schema';
@@ -32,7 +32,7 @@ import { TestAPI } from 'vitest';
32
32
  import { Trait } from 'koota';
33
33
  import { TraitRecord } from 'koota';
34
34
  import { TraitValue } from 'koota';
35
- import type { Vector } from '../../../rapier/types/rapier';
35
+ import type { Vector } from '../rapier/types/rapier';
36
36
  import type { Vector2 } from 'three';
37
37
  import { Vector3 } from 'three';
38
38
  import { Vector3Tuple } from 'three';
@@ -1,5 +1,5 @@
1
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)&&LT(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);
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.17`};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)&&LT(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
3
  const float scanlineCount = 240.0;
4
4
  const float scanlineDepth = 0.30;
5
5
  const float triadCount = 200.0;
@@ -268,7 +268,7 @@
268
268
  "@react-three/drei/exports/use-video-texture.js": "sha384-mcdFPMxipmNBLqXAUAVP3x4eUk6K0RIGtD3o+ALRWaeoSalj0P2p8RzILY4qhsoV",
269
269
  "@react-three/fiber.js": "sha384-e2AIvo0UsTKf/BEz9oAvL+DqD9qfWkvwIJtRy//pEEKIDm8ARcHj3Q96WYpXSHMt",
270
270
  "@react-three/postprocessing.js": "sha384-Hxvs///wDo9L82Gd7CqOzYcL7hWijHGYu4JBYflC98JBmNmqCVp1c7CLhCwibPub",
271
- "@spawnite/engine.js": "sha384-7EMqYYl2VcOC42Mpjjh+HKVUosi6+ash2ZBb8HAqG4yk0dBLL86Ieq2B4aSph2p8",
271
+ "@spawnite/engine.js": "sha384-4wTq00oWPYoz+VDPjg10LV1wRWtd5Oud6Hml3t6mle1uc+rPTlXRyILgbTg97k+6",
272
272
  "@spawnite/engine/abilities.js": "sha384-l/HmxPoh7NvuQ+IjTcb0MApwPauyQEo34sdtSLxsqqhuPzOZ9te+t7L7PphpuZfg",
273
273
  "@spawnite/engine/core.js": "sha384-xGkAtmzVC0ZDIVmISZq7JExZEcIq+iTZxlAyRJJ/tbdFlhilQ+FVuLnNV19lkjGr",
274
274
  "@spawnite/engine/dragAndDrop.js": "sha384-9V7Z01v8F7KG49jyOnDon6DJd0PHmQ1twNLluzvgju9HbV965aRPX9ZPiuMqafWT",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.0-beta.15",
2
+ "version": "0.1.0-beta.17",
3
3
  "exports": {
4
4
  "@pixiv/three-vrm.js": [
5
5
  "MToonMaterial",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@spawnite/engine",
3
3
  "description": "The game engine: React components over three.js, Rapier and Koota, with rooms built in.",
4
- "version": "0.1.0-beta.15",
4
+ "version": "0.1.0-beta.17",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "homepage": "https://wiki.spawnite.com",
7
7
  "publishConfig": {
@@ -180,8 +180,8 @@
180
180
  "vite": "^8.1.0",
181
181
  "vitest": "~4.1.0",
182
182
  "zustand": "5.0.15",
183
- "@spawnite/schema": "^0.1.0-beta.15",
184
- "@spawnite/ui": "^0.1.0-beta.15"
183
+ "@spawnite/schema": "^0.1.0-beta.17",
184
+ "@spawnite/ui": "^0.1.0-beta.17"
185
185
  },
186
186
  "peerDependenciesMeta": {
187
187
  "vite": {
@@ -1 +1 @@
1
- export * from "../pkg/dist/rapier_wasm3d";
1
+ export * from "./rapier_wasm3d";