@fps-games/editor-deployment 0.2.3-beta.13 → 0.2.3-beta.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/bin/fps-editor-prepare.mjs +3 -4
  2. package/bin/fps-editor-server.mjs +1 -1
  3. package/licenses/THIRD_PARTY_NOTICES.txt +2 -2
  4. package/manifest.json +62 -73
  5. package/npm-shrinkwrap.json +3 -4
  6. package/package.json +7 -7
  7. package/public/assets/{editor-core-plugin-host-c2002442.js → editor-core-plugin-host-94e73c63.js} +1 -1
  8. package/public/assets/editor-core-plugin-host-94e73c63.js.br +0 -0
  9. package/public/assets/editor-core-plugin-host-94e73c63.js.gz +0 -0
  10. package/public/assets/index-NHywLCMM.js +1 -0
  11. package/public/assets/index-NHywLCMM.js.br +0 -0
  12. package/public/assets/index-NHywLCMM.js.gz +0 -0
  13. package/public/assets/playable-sdk-D9T6SBmM.js +4 -0
  14. package/public/assets/playable-sdk-D9T6SBmM.js.br +0 -0
  15. package/public/assets/playable-sdk-D9T6SBmM.js.gz +0 -0
  16. package/public/assets/playable-standard-project-OE-Ljuvh.js +5250 -0
  17. package/public/assets/playable-standard-project-OE-Ljuvh.js.br +0 -0
  18. package/public/assets/playable-standard-project-OE-Ljuvh.js.gz +0 -0
  19. package/public/index.html +3 -3
  20. package/public/index.html.br +0 -0
  21. package/public/index.html.gz +0 -0
  22. package/runtime/editor-control-plane.mjs +96 -5
  23. package/worker/editor-service-worker.mjs +17 -24
  24. package/bin/fps-editor-agent.mjs +0 -5
  25. package/public/assets/editor-core-plugin-host-c2002442.js.br +0 -0
  26. package/public/assets/editor-core-plugin-host-c2002442.js.gz +0 -0
  27. package/public/assets/index-c2oXc5B5.js +0 -5
  28. package/public/assets/index-c2oXc5B5.js.br +0 -0
  29. package/public/assets/index-c2oXc5B5.js.gz +0 -0
  30. package/public/assets/playable-sdk-Dfz54Mv_.js +0 -5
  31. package/public/assets/playable-sdk-Dfz54Mv_.js.br +0 -0
  32. package/public/assets/playable-sdk-Dfz54Mv_.js.gz +0 -0
  33. package/public/assets/playable-standard-project-C61X2B53.js +0 -5247
  34. package/public/assets/playable-standard-project-C61X2B53.js.br +0 -0
  35. package/public/assets/playable-standard-project-C61X2B53.js.gz +0 -0
  36. package/runtime/runtime-debug-authoring-bridge.mjs +0 -1
@@ -0,0 +1,4 @@
1
+ import{gj as Yt,Y as yt,X as br,A as yr,B as Pr,kr as at,kF as Ir,ks as Pt,bZ as Ar,iE as Tr,jM as Rr,fS as wr,j3 as Mr,hg as _r,jU as Dr,ln as qt,lh as Kt,lo as Cr,lJ as vr,gG as Lr,a2 as Wt,l as xr,m as Or,o as Nr,E as It,p as Xt,jK as kr,ls as $e,jL as jr,n as Gr,q as Fr,r as Br,lA as At,gV as zr,mE as Ur,mu as $r,jF as Hr,aP as Tt,jr as Rt,n8 as wt,mO as Vr,g9 as se,bp as Yr,bo as qr,mF as Kr}from"./playable-standard-project-OE-Ljuvh.js";import{C as ji,D as Gi,a as Fi,b as Bi,c as zi,d as Ui,e as $i,f as Hi,g as Vi,h as Yi,i as qi,j as Ki,k as Wi,s as Xi,t as Zi,u as Ji,v as Qi,w as eo,x as to,y as ro,z as ao,F as no,G as io,H as oo,I as so,J as co,K as lo,L as uo,M as fo,N as mo,O as go,P as Eo,Q as po,R as So,S as ho,T as bo,U as yo,V as Po,W as Io,Z as Ao,_ as To,$ as Ro,a0 as wo,a1 as Mo,a3 as _o,a5 as Do,a6 as Co,a7 as vo,a8 as Lo,a9 as xo,aa as Oo,ab as No,ac as ko,ad as jo,ae as Go,af as Fo,ag as Bo,ah as zo,ai as Uo,aj as $o,ak as Ho,al as Vo,am as Yo,an as qo,ao as Ko,ap as Wo,aq as Xo,ar as Zo,as as Jo,at as Qo,au as es,av as ts,aw as rs,ax as as,ay as ns,az as is,aA as os,aB as ss,aC as cs,aD as ds,aE as ls,aF as us,aG as fs,aH as ms,aI as gs,aJ as Es,aK as ps,aL as Ss,aM as hs,aN as bs,aO as ys,aQ as Ps,aR as Is,aS as As,aT as Ts,aU as Rs,aV as ws,aW as Ms,aX as _s,aY as Ds,aZ as Cs,a_ as vs,a$ as Ls,b0 as xs,b1 as Os,b2 as Ns,b3 as ks,b4 as js,b5 as Gs,b6 as Fs,b7 as Bs,b8 as zs,b9 as Us,ba as $s,bb as Hs,bc as Vs,bd as Ys,be as qs,bf as Ks,bg as Ws,bh as Xs,bi as Zs,bj as Js,bk as Qs,bl as ec,bm as tc,bn as rc,bq as ac,br as nc,bs as ic,bt as oc,bu as sc,bv as cc,bw as dc,bx as lc,by as uc,bz as fc,bA as mc,bB as gc,bC as Ec,bD as pc,bE as Sc,bF as hc,bG as bc,bH as yc,bI as Pc,bJ as Ic,bK as Ac,bL as Tc,bM as Rc,bN as wc,bO as Mc,bP as _c,bQ as Dc,bR as Cc,bS as vc,bT as Lc,bU as xc,bV as Oc,bW as Nc,bX as kc,bY as jc,b_ as Gc,b$ as Fc,c0 as Bc,c1 as zc,c2 as Uc,c3 as $c,c4 as Hc,c5 as Vc,c6 as Yc,c7 as qc,c8 as Kc,c9 as Wc,ca as Xc,cb as Zc,cc as Jc,cd as Qc,ce as ed,cf as td,cg as rd,ch as ad,ci as nd,cj as id,ck as od,cl as sd,cm as cd,cn as dd,co as ld,cp as ud,cq as fd,cr as md,cs as gd,ct as Ed,cu as pd,cv as Sd,cw as hd,cx as bd,cy as yd,cz as Pd,cA as Id,cB as Ad,cC as Td,cD as Rd,cE as wd,cF as Md,cG as _d,cH as Dd,cI as Cd,cJ as vd,cK as Ld,cL as xd,cM as Od,cN as Nd,cO as kd,cP as jd,cQ as Gd,cR as Fd,cS as Bd,cT as zd,cU as Ud,cV as $d,cW as Hd,cX as Vd,cY as Yd,cZ as qd,c_ as Kd,c$ as Wd,d0 as Xd,d1 as Zd,d2 as Jd,d3 as Qd,d4 as el,d5 as tl,d6 as rl,d7 as al,d8 as nl,d9 as il,da as ol,db as sl,dc as cl,dd as dl,de as ll,df as ul,dg as fl,dh as ml,di as gl,dj as El,dk as pl,dl as Sl,dm as hl,dn as bl,dp as yl,dq as Pl,dr as Il,ds as Al,dt as Tl,du as Rl,dv as wl,dw as Ml,dx as _l,dy as Dl,dz as Cl,dA as vl,dB as Ll,dC as xl,dD as Ol,dE as Nl,dF as kl,dG as jl,dH as Gl,dI as Fl,dJ as Bl,dK as zl,dL as Ul,dM as $l,dN as Hl,dO as Vl,dP as Yl,dQ as ql,dR as Kl,dS as Wl,dT as Xl,dU as Zl,dV as Jl,dW as Ql,dX as eu,dY as tu,dZ as ru,d_ as au,d$ as nu,e0 as iu,e1 as ou,e2 as su,e3 as cu,e4 as du,e5 as lu,e6 as uu,e7 as fu,e8 as mu,e9 as gu,ea as Eu,eb as pu,ec as Su,ed as hu,ee as bu,ef as yu,eg as Pu,eh as Iu,ei as Au,ej as Tu,ek as Ru,el as wu,em as Mu,en as _u,eo as Du,ep as Cu,eq as vu,er as Lu,es as xu,et as Ou,ev as Nu,ew as ku,ex as ju,ey as Gu,ez as Fu,eA as Bu,eB as zu,eC as Uu,eD as $u,eE as Hu,eF as Vu,eG as Yu,eH as qu,eI as Ku,eJ as Wu,eK as Xu,eL as Zu,eM as Ju,eN as Qu,eO as ef,eP as tf,eQ as rf,eR as af,eS as nf,eT as of,eU as sf,eV as cf,eW as df,eX as lf,eY as uf,eZ as ff,e_ as mf,e$ as gf,f0 as Ef,f1 as pf,f2 as Sf,f3 as hf,f4 as bf,f5 as yf,f6 as Pf,f7 as If,f8 as Af,f9 as Tf,fa as Rf,fb as wf,fc as Mf,fd as _f,fe as Df,ff as Cf,fg as vf,fh as Lf,fi as xf,fj as Of,fk as Nf,fl as kf,fm as jf,fn as Gf,fo as Ff,fp as Bf,fq as zf,fr as Uf,fs as $f,ft as Hf,fu as Vf,fv as Yf,fw as qf,fx as Kf,fy as Wf,fz as Xf,fA as Zf,fB as Jf,fE as Qf,fF as em,fG as tm,fH as rm,fI as am,fJ as nm,fK as im,fL as om,fM as sm,fN as cm,fO as dm,fP as lm,fQ as um,fR as fm,fT as mm,fU as gm,fV as Em,fW as pm,fX as Sm,fY as hm,fZ as bm,f_ as ym,f$ as Pm,g0 as Im,g1 as Am,g2 as Tm,g3 as Rm,g4 as wm,g5 as Mm,g6 as _m,g7 as Dm,g8 as Cm,ga as vm,gb as Lm,gc as xm,gd as Om,ge as Nm,gf as km,gg as jm,gh as Gm,gi as Fm,gk as Bm,gl as zm,gm as Um,gn as $m,go as Hm,gp as Vm,gq as Ym,gr as qm,gs as Km,gt as Wm,gu as Xm,gv as Zm,gw as Jm,gx as Qm,gy as eg,gz as tg,gA as rg,gB as ag,gC as ng,gD as ig,gE as og,gF as sg,gH as cg,gI as dg,gJ as lg,gK as ug,gL as fg,gM as mg,gN as gg,gO as Eg,gP as pg,gQ as Sg,gR as hg,gS as bg,gT as yg,gU as Pg,gW as Ig,gX as Ag,gY as Tg,gZ as Rg,g_ as wg,g$ as Mg,h0 as _g,h1 as Dg,h2 as Cg,h3 as vg,h4 as Lg,h5 as xg,h6 as Og,h7 as Ng,h8 as kg,h9 as jg,ha as Gg,hb as Fg,hc as Bg,hd as zg,he as Ug,hf as $g,hh as Hg,hi as Vg,hj as Yg,hk as qg,hl as Kg,hm as Wg,hn as Xg,ho as Zg,hp as Jg,hq as Qg,hr as eE,hs as tE,ht as rE,hu as aE,hv as nE,hw as iE,hx as oE,hy as sE,hz as cE,hA as dE,hB as lE,hC as uE,hD as fE,hE as mE,hF as gE,hG as EE,hH as pE,hI as SE,hJ as hE,hK as bE,hL as yE,hM as PE,hN as IE,hO as AE,hP as TE,hQ as RE,hR as wE,hS as ME,hT as _E,hU as DE,hV as CE,hX as vE,hY as LE,hZ as xE,h_ as OE,h$ as NE,i0 as kE,i1 as jE,i2 as GE,i3 as FE,i4 as BE,i5 as zE,i6 as UE,i7 as $E,i8 as HE,i9 as VE,ia as YE,ib as qE,ic as KE,id as WE,ie as XE,ig as ZE,ih as JE,ii as QE,ij as ep,ik as tp,il as rp,im as ap,io as np,ip,iq as op,ir as sp,is as cp,it as dp,iu as lp,iv as up,iw as fp,ix as mp,iy as gp,iz as Ep,iA as pp,iB as Sp,iC as hp,iD as bp,iF as yp,iG as Pp,iH as Ip,iI as Ap,iJ as Tp,iK as Rp,iL as wp,iM as Mp,iN as _p,iO as Dp,iP as Cp,iQ as vp,iR as Lp,iS as xp,iT as Op,iU as Np,iV as kp,iW as jp,iX as Gp,iY as Fp,iZ as Bp,i_ as zp,i$ as Up,j0 as $p,j1 as Hp,j2 as Vp,j4 as Yp,j5 as qp,j6 as Kp,j7 as Wp,j8 as Xp,j9 as Zp,ja as Jp,jb as Qp,jc as eS,jd as tS,je as rS,jf as aS,jg as nS,jh as iS,ji as oS,jj as sS,jk as cS,jl as dS,jm as lS,jn as uS,jo as fS,jp as mS,jq as gS,js as ES,jt as pS,ju as SS,jv as hS,jw as bS,jx as yS,jy as PS,jz as IS,jA as AS,jB as TS,jC as RS,jD as wS,jE as MS,jG as _S,jH as DS,jI as CS,jJ as vS,jN as LS,jO as xS,jP as OS,jQ as NS,jR as kS,jS,jT as GS,jV as FS,jW as BS,jX as zS,jY as US,jZ as $S,j_ as HS,j$ as VS,k0 as YS,k1 as qS,k2 as KS,k3 as WS,k4 as XS,k5 as ZS,k6 as JS,k7 as QS,k8 as eh,k9 as th,ka as rh,kb as ah,kc as nh,kd as ih,ke as oh,kf as sh,kg as ch,kh as dh,ki as lh,kj as uh,kk as fh,kl as mh,km as gh,kn as Eh,ko as ph,kp as Sh,kq as hh,kt as bh,ku as yh,kv as Ph,kw as Ih,kx as Ah,ky as Th,kz as Rh,kA as wh,kB as Mh,kC as _h,kD as Dh,kE as Ch,kG as vh,kH as Lh,kI as xh,kJ as Oh,kK as Nh,kL as kh,kM as jh,kN as Gh,kO as Fh,kP as Bh,kQ as zh,kR as Uh,kS as $h,kT as Hh,kU as Vh,kV as Yh,kW as qh,kX as Kh,kY as Wh,kZ as Xh,k_ as Zh,k$ as Jh,l0 as Qh,l1 as eb,l2 as tb,l3 as rb,l4 as ab,l5 as nb,l6 as ib,l7 as ob,l8 as sb,l9 as cb,la as db,lb,lc as ub,ld as fb,le as mb,lf as gb,lg as Eb,li as pb,lj as Sb,lk as hb,ll as bb,lm as yb,lp as Pb,lq as Ib,lr as Ab,lt as Tb,lu as Rb,lv as wb,lw as Mb,lx as _b,ly as Db,lz as Cb,lB as vb,lC as Lb,lD as xb,lE as Ob,lF as Nb,lG as kb,lH as jb,lI as Gb,lK as Fb,lL as Bb,lM as zb,lN as Ub,lO as $b,lP as Hb,lQ as Vb,lR as Yb,lS as qb,lT as Kb,lU as Wb,lV as Xb,lW as Zb,lX as Jb,lY as Qb,lZ as ey,l_ as ty,l$ as ry,m0 as ay,m1 as ny,m2 as iy,m3 as oy,m4 as sy,m5 as cy,m6 as dy,m7 as ly,m8 as uy,m9 as fy,ma as my,mb as gy,mc as Ey,md as py,me as Sy,mf as hy,mg as by,mh as yy,mi as Py,mj as Iy,mk as Ay,ml as Ty,mm as Ry,mn as wy,mo as My,mp as _y,mq as Dy,mr as Cy,ms as vy,mt as Ly,mv as xy,mw as Oy,mx as Ny,my as ky,mz as jy,mA as Gy,mB as Fy,mC as By,mD as zy,mG as Uy,mH as $y,mI as Hy,mJ as Vy,mK as Yy,mL as qy,mM as Ky,mN as Wy,mP as Xy,mQ as Zy,mR as Jy,mS as Qy,mT as eP,mU as tP,mV as rP,mW as aP,mX as nP,mY as iP,mZ as oP,m_ as sP,m$ as cP,n0 as dP,n1 as lP,n2 as uP,n3 as fP,n4 as mP,n5 as gP,n6 as EP,n7 as pP,n9 as SP,na as hP,nb as bP,nc as yP,nd as PP,ne as IP,nf as AP,ng as TP,nh as RP,ni as wP,nj as MP,nk as _P,nl as DP,nm as CP,nn as vP,no as LP,np as xP,nq as OP,nr as NP,ns as kP,nt as jP,nu as GP,nv as FP,nw as BP,nx as zP,ny as UP,nz as $P,nA as HP,nB as VP,nC as YP,nD as qP,nE as KP,nF as WP,nG as XP,nH as ZP}from"./playable-standard-project-OE-Ljuvh.js";import"./hemisphericLight-C4swwL68.js";import"@fps-games/editor-core/plugin-host";function ri(e,t){const r=Yt(e),n=Wr(t),a=r.revision??null;if(!n)return{detected:!0,sourceId:r.sourceId,sourceType:r.sourceType,sourceRevision:a,generatedRevision:null,reason:"missing-generated-from"};const i=typeof n.revision=="number"?n.revision:null;return n.sourceId!==r.sourceId||n.sourceType!==r.sourceType?{detected:!0,sourceId:r.sourceId,sourceType:r.sourceType,sourceRevision:a,generatedRevision:i,reason:"source-mismatch"}:a!==i?{detected:!0,sourceId:r.sourceId,sourceType:r.sourceType,sourceRevision:a,generatedRevision:i,reason:"revision-mismatch"}:{detected:!1,sourceId:r.sourceId,sourceType:r.sourceType,sourceRevision:a,generatedRevision:i}}function Wr(e){if(!e||typeof e!="object")return null;const t=e.meta;if(!t||typeof t!="object")return null;const r=t.generatedFrom;if(!r||typeof r!="object")return null;const n=r.sourceId,a=r.sourceType;return typeof n!="string"||typeof a!="string"?null:{sourceId:n,sourceType:a,revision:typeof r.revision=="number"?r.revision:void 0}}function Xr(e){const{document:t,runtimePatch:r}=e,n=e.getSourceRef?.(t)??Yt(t),a=r.sourceBinding;if(!r.applyable||!a||r.applyTarget!==yt||a.sourceId!==br||a.sourceType!==yt||a.sourceId!==n.sourceId||a.sourceType!==n.sourceType)return null;const i=a.objectId;if(!i||!e.findGameObject(t,i)||e.isRootGameObjectId?.(i))return null;const s=r.after;return Zr(s)?{label:r.label??`Apply runtime transform ${i}`,patch:e.createPatch(i,s)}:null}function ai(e,t){return Xr({document:e,runtimePatch:t,findGameObject:(r,n)=>r.scene.gameObjects.find(a=>a.id===n)??null,isRootGameObjectId:r=>r==="root",createPatch:(r,n)=>({kind:"game-object.transform",targetId:r,transform:n})})}function Zr(e){if(!e||typeof e!="object")return!1;const t=e;return Ke(t.position)&&Ke(t.rotation)&&Ke(t.scale)}function Ke(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.x=="number"&&Number.isFinite(t.x)&&typeof t.y=="number"&&Number.isFinite(t.y)&&typeof t.z=="number"&&Number.isFinite(t.z)}const Zt="fps-editor.lighting-debug.open",Jt="fps-editor.lighting-debug.language",Jr=[{field:"environmentIntensity",textKey:"intensity",tooltipKey:"environmentIntensity",step:.01,min:0},{field:"iblIntensity",textKey:"iblIntensity",tooltipKey:"iblIntensity",step:.01,min:0,max:4},{field:"iblRotationY",textKey:"iblRotationY",tooltipKey:"iblRotationY",step:.01},{field:"directionalIntensity",textKey:"intensity",tooltipKey:"directionalIntensity",step:.01,min:0},{field:"directionalHorizontalAngle",textKey:"horizontalAngle",tooltipKey:"horizontalAngle",step:.01,min:-180,max:180},{field:"directionalElevationAngle",textKey:"elevationAngle",tooltipKey:"elevationAngle",step:.01,min:Pr,max:yr},{field:"shadowStrength",textKey:"shadowStrength",tooltipKey:"shadowStrength",step:.01,min:0,max:1},{field:"shadowSoftness",textKey:"shadowSoftness",tooltipKey:"shadowSoftness",step:.005,min:0,max:1}];function ce(e){const t=Jr.find(r=>r.field===e);if(!t)throw new Error(`Missing lighting number field config: ${e}`);return t}function We(e){const t=e.trim();if(!t||/^[+-]$/.test(t)||t.endsWith(".")||/[eE][+-]?$/.test(t))return null;const r=Number(t);return Number.isFinite(r)?r:null}const Mt={zh:{title:"光照调试",runtime:"运行时",languageButton:"EN",toggleTitle:"打开光照调试面板",environmentSection:"环境光",environmentTextureSection:"环境贴图 IBL",directionalSection:"直射光",shadowSection:"阴影外观",enabled:"启用",intensity:"强度",iblIntensity:"IBL 强度",iblRotationY:"IBL 旋转",skyLightColor:"天空光颜色",groundColor:"地面颜色",horizontalAngle:"水平角",elevationAngle:"高度角",lightColor:"光照颜色",rawDirection:"原始方向",shadowReadout:"阴影",shadowStrength:"阴影强度",shadowSoftness:"轮廓柔和度",shadowMap:"Shadow Map",shadowPlanarFollow:"Planar / 跟随直射光",shadowDynamic:"动态阴影",shadowBlob:"Blob 阴影",shadowStatic:"静态烘焙阴影",shadowNone:"Off",shadowUnknown:"Unknown",reset:"重置参数",save:"保存参数",resetStatus:"已重置为初始运行时光照。",savingStatus:"正在保存光照、IBL 和阴影参数...",savedStatus:"已保存光照、IBL 和阴影参数。",saveFailed:"保存失败",missingBindingStatus:"缺少光源绑定,只能临时预览,不能保存。"},en:{title:"Lighting Debug",runtime:"Runtime",languageButton:"中文",toggleTitle:"Toggle lighting debug panel",environmentSection:"Environment Light",environmentTextureSection:"Environment Texture IBL",directionalSection:"Directional Light",shadowSection:"Shadow Appearance",enabled:"Enabled",intensity:"Intensity",iblIntensity:"IBL Intensity",iblRotationY:"IBL Rotation",skyLightColor:"Sky Light Color",groundColor:"Ground Color",horizontalAngle:"Horizontal Angle",elevationAngle:"Elevation Angle",lightColor:"Light Color",rawDirection:"Raw Direction",shadowReadout:"Shadow",shadowStrength:"Shadow Strength",shadowSoftness:"Edge Softness",shadowMap:"Shadow Map",shadowPlanarFollow:"Planar / Follow Directional Light",shadowDynamic:"Dynamic Shadow",shadowBlob:"Blob Shadow",shadowStatic:"Static Baked Shadow",shadowNone:"Off",shadowUnknown:"Unknown",reset:"Reset",save:"Save Parameters",resetStatus:"Reset to initial runtime lighting.",savingStatus:"Saving lighting, IBL and shadows...",savedStatus:"Saved lighting, IBL and shadows.",saveFailed:"Save failed",missingBindingStatus:"Light binding missing; preview only, saving disabled."}},_t={zh:{languageButton:"切换光照调试面板的显示语言。",toggleTitle:"打开或关闭运行时光照调试面板。",enabled:"启用或禁用对应的运行时光源,保存后写回编辑器场景。",environmentIntensity:"环境光强度,对应运行时环境光 intensity。",iblIntensity:"环境贴图对 PBR 材质的光照贡献强度;实时预览不会重新加载贴图。",iblRotationY:"环境贴图绕 Y 轴的旋转弧度,用于调整环境反射和高光方向。",directionalIntensity:"直射光强度,对应运行时直射光 intensity。",skyLightColor:"环境光来自天空方向的漫反射颜色。",groundColor:"环境光来自地面反射方向的颜色。",horizontalAngle:"直射光在 XZ 平面内的朝向角度,会转换为运行时方向向量。",elevationAngle:"直射光相对地平线的高度角;90 度表示从正上方照下。",lightColor:"直射光漫反射颜色。",rawDirection:"只读方向向量,用于排查运行时转换结果。",shadowReadout:"只读阴影状态;支持宿主提供的运行时阴影模式摘要。",shadowStrength:"控制阴影的可见深浅;1 最深,0 不显示阴影。",shadowSoftness:"控制阴影接收边缘的柔和程度;0 表示硬边。",reset:"恢复为打开运行时时读取到的初始光照、IBL 和阴影参数。",save:"通过编辑器保存链路写回环境光、直射光、IBL 和 Shadow Map 外观参数。"},en:{languageButton:"Switch the lighting debug panel language.",toggleTitle:"Open or close the runtime lighting debug panel.",enabled:"Enable or disable the runtime light and save it back to the editor scene.",environmentIntensity:"Environment intensity. Maps to the runtime environment light intensity.",iblIntensity:"Environment texture contribution to PBR lighting. Live preview does not reload the texture.",iblRotationY:"Environment texture rotation around the Y axis in radians, affecting reflections and highlights.",directionalIntensity:"Directional intensity. Maps to the runtime directional light intensity.",skyLightColor:"Diffuse sky color for the environment light.",groundColor:"Ground bounce color for the environment light.",horizontalAngle:"Directional heading in the XZ plane, converted to a runtime direction vector.",elevationAngle:"Directional elevation above the horizon; 90 degrees points straight down.",lightColor:"Directional diffuse color.",rawDirection:"Read-only direction vector for checking runtime conversion.",shadowReadout:"Read-only shadow status supplied by the host runtime.",shadowStrength:"Visible shadow strength. One is darkest; zero hides the shadow.",shadowSoftness:"Receiver-edge softness. Zero produces a hard edge.",reset:"Restore the lighting, IBL and shadows captured when runtime opened.",save:"Save lighting, IBL and Shadow Map appearance through the editor authoring pipeline."}};function Qr(e){return Mt[e]??Mt.zh}function ea(e){return _t[e]??_t.zh}function ta(e,t){return e==="shadow-map"?t.shadowMap:e==="planar"?t.shadowPlanarFollow:e==="dynamic"?t.shadowDynamic:e==="blob"?t.shadowBlob:e==="static"?t.shadowStatic:e==="none"?t.shadowNone:t.shadowUnknown}function ra(e){try{return e?.localStorage?.getItem(Zt)==="true"}catch{return!1}}function aa(e,t){try{e?.localStorage?.setItem(Zt,String(t))}catch{}}function na(e){try{return e?.localStorage?.getItem(Jt)==="en"?"en":"zh"}catch{return"zh"}}function ia(e,t){try{e?.localStorage?.setItem(Jt,t)}catch{}}function ni(e,t){const r=Dt(Dt(e)?.__fpsEditor),n=J(r?.sourceId),a=J(r?.objectGuid),i=J(r?.objectId),s=J(r?.propertyPath),d=J(r?.lightType);return!n||s!=="light"||!a&&!i||t&&d&&d!==t?null:{sourceId:n,propertyPath:"light",...t?{lightType:t}:d?{lightType:d}:{},...a?{objectGuid:a}:{},...i?{objectId:i}:{}}}function oa(e){const t=J(e.sourceId),r=J(e.propertyPath),n=J(e.objectGuid),a=J(e.objectId),i=J(e.lightType);if(!t)throw new Error("Runtime light binding is missing sourceId.");if(r!=="light")throw new Error(`Runtime light binding is not for light: ${r??"missing"}`);if(!n&&!a)throw new Error("Runtime light binding is missing objectGuid/objectId.");return{sourceId:t,propertyPath:r,...n?{objectGuid:n}:{},...a?{objectId:a}:{},...i?{lightType:i}:{}}}function Dt(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function J(e){return typeof e=="string"&&e.trim()?e.trim():null}function de(e){return{environment:{enabled:e.environment.enabled,binding:e.environment.binding?{...e.environment.binding}:null,light:{type:"hemispheric",intensity:e.environment.light.intensity,...e.environment.light.diffuseColor?{diffuseColor:{...e.environment.light.diffuseColor}}:{},...e.environment.light.groundColor?{groundColor:{...e.environment.light.groundColor}}:{}}},...e.environmentTexture?{environmentTexture:{...e.environmentTexture}}:{},directional:{enabled:e.directional.enabled,binding:e.directional.binding?{...e.directional.binding}:null,light:{type:"directional",intensity:e.directional.light.intensity,direction:{...e.directional.light.direction},...e.directional.light.diffuseColor?{diffuseColor:{...e.directional.light.diffuseColor}}:{}}},shadow:{...e.shadow,...e.shadow.shadowMap?{shadowMap:{...e.shadow.shadowMap,lastRefreshReasons:[...e.shadow.shadowMap.lastRefreshReasons],...e.shadow.shadowMap.appearance?{appearance:{...e.shadow.shadowMap.appearance}}:{}}}:{}}}}function Be(e){return!!e.environment.binding&&!!e.directional.binding}function ii(e){return Be(e)?[{binding:e.environment.binding,enabled:e.environment.enabled,light:e.environment.light},{binding:e.directional.binding,enabled:e.directional.enabled,light:e.directional.light}]:[]}function Pe(e,t){switch(t){case"environmentIntensity":return e.environment.light.intensity;case"iblIntensity":return e.environmentTexture?.iblIntensity??0;case"iblRotationY":return e.environmentTexture?.iblRotationY??0;case"directionalIntensity":return e.directional.light.intensity;case"directionalHorizontalAngle":return at(e.directional.light.direction).horizontalAngleDeg;case"directionalElevationAngle":return at(e.directional.light.direction).elevationAngleDeg;case"shadowStrength":return e.shadow.shadowMap?.appearance?.strength??0;case"shadowSoftness":return e.shadow.shadowMap?.appearance?.softness??0}}function Ct(e,t){switch(t){case"environmentDiffuseColor":return e.environment.light.diffuseColor??{r:1,g:1,b:1};case"environmentGroundColor":return e.environment.light.groundColor??{r:.48,g:.52,b:.62};case"directionalDiffuseColor":return e.directional.light.diffuseColor??{r:1,g:1,b:1}}}function sa(e,t,r){if(!Number.isFinite(r))return de(e);const n=de(e);switch(t){case"environmentIntensity":return n.environment.light.intensity=r,n;case"iblIntensity":return n.environmentTexture&&(n.environmentTexture.iblIntensity=r),n;case"iblRotationY":return n.environmentTexture&&(n.environmentTexture.iblRotationY=r),n;case"directionalIntensity":return n.directional.light.intensity=r,n;case"directionalHorizontalAngle":{const a=Pt(e.directional.light.direction);return vt(n,r,a.elevationAngleDeg)}case"directionalElevationAngle":{const a=Pt(e.directional.light.direction);return vt(n,a.horizontalAngleDeg,r)}case"shadowStrength":{const a=n.shadow.shadowMap?.appearance;return a&&(a.strength=r,a.darkness=1-r),n}case"shadowSoftness":return n.shadow.shadowMap?.appearance&&(n.shadow.shadowMap.appearance.softness=r),n}}function ca(e,t,r){const n=de(e);switch(t){case"environmentDiffuseColor":return n.environment.light.diffuseColor={...r},n;case"environmentGroundColor":return n.environment.light.groundColor={...r},n;case"directionalDiffuseColor":return n.directional.light.diffuseColor={...r},n}}function da(e,t,r){const n=de(e);return n[t].enabled=r,n}function vt(e,t,r){const n=Ar(t,r);return la(e,n)}function la(e,t){const r=de(e);return r.directional.light.direction={...t},r.shadow.projectedLengthMultiplier=Ir(t),r}function Qt(e,t){const r=typeof t?.materialAssetId=="string"?t.materialAssetId.trim():"",n=r?e.scene.materialAssets?.find(i=>i.id===r)??null:null,a=Tr(n?.properties,t?.override);return{materialAsset:n,...n?{materialAssetShaderId:n.shaderId}:{},profile:a,...r&&!n?{missingMaterialAssetId:r}:{}}}function oi(e,t){const r=Qt(e,t.overrides?.materialBinding),n={},a=Rr(r.materialAssetShaderId);return a&&(Object.keys(r.profile).length>0?(n.artistMaterialShaderId=a,n.artistMaterialProfile=r.profile):n.artistMaterialShaderId=a),n}function si(e,t){const r={},n=t.overrides?.materialSlotBindings??{};for(const[a,i]of Object.entries(n)){if(!a||!i)continue;const s=Qt(e,i);Object.keys(s.profile).length!==0&&(r[a]=s.profile)}return r}function ci(e,t){const r=ua(t),n=[];for(const a of e.inspector.fields){if(a.control!=="color"||a.updateClass!=="uniform")continue;const i=fa(e,a.schemaPath??a.path);if(i?.kind!=="color")continue;const s=i.channels===4?"vec4":"vec3",d=r.get(a.binding);if(!d){n.push({code:"material.shaderColorBindingMissing",path:a.path,binding:a.binding,expectedType:s,message:`GLSL uniform ${a.binding} is missing; expected ${s}.`});continue}d!==s&&n.push({code:"material.shaderColorBindingTypeMismatch",path:a.path,binding:a.binding,expectedType:s,actualType:d,message:`GLSL uniform ${a.binding} uses ${d}; Shader Definition expects ${s}.`})}return n}function ua(e){const t=e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,""),r=new Map,n=/\buniform\s+(?:(?:lowp|mediump|highp)\s+)?([A-Za-z_]\w*)\s+([A-Za-z_]\w*)\s*(?:\[[^\]]+\])?\s*;/g;for(const a of t.matchAll(n))r.set(a[2],a[1]);return r}function fa(e,t){const r=t.replace(/^properties\./,"").split(".").filter(Boolean);let n=e.propertiesSchema;for(const a of r){if(n.kind!=="object")return null;const i=n.properties[a];if(!i)return null;n=i}return n}function di(e,t,r={}){const n=er(e);let a=wr(e);const i=[];for(const s of t){const d=ga(s),u=oa(d.binding);if(r.expectedSourceId&&u.sourceId!==r.expectedSourceId)throw new Error(`Runtime light binding source mismatch: ${u.sourceId} !== ${r.expectedSourceId}`);const c=ma(a,u,n);if(!c)throw new Error("Runtime light binding did not match an editor light object.");Sa(c,d.light.type,u),a=Ie(a,c.id,"enabled",d.enabled,r),a=Ie(a,c.id,"light.intensity",d.light.intensity,r),d.light.diffuseColor&&(a=Ie(a,c.id,"light.diffuseColor",d.light.diffuseColor,r)),d.light.type==="hemispheric"?d.light.groundColor&&(a=Ie(a,c.id,"light.groundColor",d.light.groundColor,r)):a=Ie(a,c.id,"light.direction",d.light.direction,r),i.push({id:c.id,...c.guid?{objectGuid:c.guid}:{},lightType:d.light.type})}return{document:a,targets:i}}function ma(e,t,r=er(e)){if(t.objectGuid){const i=e.scene.gameObjects.find(s=>s.guid===t.objectGuid)??null;if(i){if(t.objectId&&i.id!==t.objectId)throw new Error(`Runtime light binding guid/id conflict: ${t.objectGuid} belongs to ${i.id}, not ${t.objectId}.`);return i}}if(!t.objectId)return null;const n=e.scene.gameObjects.find(i=>i.id===t.objectId)??null;if(!n)return null;const a=r.get(n.id);if(t.objectGuid&&a&&a!==t.objectGuid)throw new Error(`Runtime light binding guid conflict for ${n.id}.`);return n}function ga(e){const t=ha(e.enabled,"enabled");return e.light.type==="hemispheric"?{binding:e.binding,enabled:t,light:Ea(e.light)}:{binding:e.binding,enabled:t,light:pa(e.light)}}function Ea(e){if(e.type!=="hemispheric")throw new Error("Runtime light patch must be hemispheric.");return{type:"hemispheric",intensity:tr(e.intensity,"hemispheric.intensity"),...e.diffuseColor?{diffuseColor:nt(e.diffuseColor,"hemispheric.diffuseColor")}:{},...e.groundColor?{groundColor:nt(e.groundColor,"hemispheric.groundColor")}:{}}}function pa(e){if(e.type!=="directional")throw new Error("Runtime light patch must be directional.");return{type:"directional",intensity:tr(e.intensity,"directional.intensity"),direction:Mr(ba(e.direction,"directional.direction")),...e.diffuseColor?{diffuseColor:nt(e.diffuseColor,"directional.diffuseColor")}:{}}}function Ie(e,t,r,n,a){return a.patchLightField?a.patchLightField(e,t,r,n):Dr(e,t,r,n,a.fieldMutation)}function Sa(e,t,r){if(!_r(e))throw new Error(`Runtime light binding target is not a light object: ${e.id}`);if(!e.light)throw new Error(`Runtime light binding target is missing light config: ${e.id}`);if(e.light.type!==t)throw new Error(`Runtime light binding type mismatch for ${e.id}: ${e.light.type} !== ${t}`);if(r.lightType&&r.lightType!==t)throw new Error(`Runtime light binding metadata type mismatch: ${r.lightType} !== ${t}`)}function er(e){const t=new Map;for(const r of e.scene.gameObjects){const n=ya(r.guid);n&&t.set(r.id,n)}return t}function ha(e,t){if(typeof e!="boolean")throw new Error(`Runtime light ${t} must be a boolean.`);return e}function tr(e,t){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`Runtime light ${t} must be a non-negative finite number.`);return e}function nt(e,t){return{r:he(e.r,`${t}.r`),g:he(e.g,`${t}.g`),b:he(e.b,`${t}.b`)}}function ba(e,t){return{x:he(e.x,`${t}.x`),y:he(e.y,`${t}.y`),z:he(e.z,`${t}.z`)}}function he(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`Runtime light ${t} must be a finite number.`);return e}function ya(e){return typeof e=="string"&&e.trim()?e.trim():null}function li(e={}){const t=e.ttlMs??3e4,r=e.now??(()=>Date.now()),n=new Map;return{remember(a){const i=Kt(a);for(const s of Cr(a)){const d=Lt(s);if(d.length===0)continue;const u={point:i??void 0,asset:s,timestamp:r()};for(const c of d)n.set(c,u)}Xe(n,t,r())},normalize(a){Xe(n,t,r());const i=qt(a);if(!i)return a;const s=Lt(i),d=s.map(u=>n.get(u)).find(u=>!!u)??null;for(const u of s)n.delete(u);return Pa(a,d)},clearExpired(){Xe(n,t,r())}}}function Pa(e,t){const r=qt(e);if(!r)return e;const n=t?.asset??{},a={...n,...r,...e},i=G(e.assetName)??G(r.assetName)??G(r.name)??G(n.assetName)??G(n.name),s=G(e.assetPath)??G(r.assetPath)??G(r.path)??G(n.assetPath)??G(n.path),d=G(e.assetUrl)??G(r.assetUrl)??G(r.url)??G(n.assetUrl)??G(n.url);return{...a,...i?{assetName:i}:{},...s?{assetPath:s}:{},...d?{assetUrl:d}:{},...t?.point&&!Kt(a)?{point:t.point}:{}}}function Xe(e,t,r){for(const[n,a]of e)r-a.timestamp>t&&e.delete(n)}function Lt(e){return[G(e.id),G(e.platformAssetId),G(e.assetId)].filter((t,r,n)=>!!t&&n.indexOf(t)===r)}function G(e){return typeof e=="string"&&e.trim()?e.trim():void 0}class Ia extends Error{constructor(t){super(t),this.name="PlayableEditorEntryReloadRequiredError"}}function Aa(e){const t=e.now??(()=>Date.now()),r=new AbortController,n=new Set;let a=xt({phase:"idle",attempt:0,phaseStartedAtMs:t(),phaseDurationsMs:{},failure:null}),i=null,s=null,d=null,u=!1;const c=m=>{try{e.reportListenerError?.(m)}catch{}},h=(m,A={})=>{const b=t(),y={...a.phaseDurationsMs,[a.phase]:Math.max(0,b-a.phaseStartedAtMs)};a=xt({phase:m,attempt:A.attempt??a.attempt,phaseStartedAtMs:b,phaseDurationsMs:y,failure:A.failure===void 0?null:A.failure});for(const N of[...n])try{N(a)}catch(L){c(L)}return a},g=(m,A,b)=>{try{e.reportFailure?.(Object.freeze({failure:m,cause:A,rollbackCause:b}))}catch(y){c(y)}},M=()=>{if(u||r.signal.aborted)throw it()},I=m=>{if(u||a.phase==="disposed")return Promise.reject(it());if(a.phase==="ready"||a.phase==="preparing"||a.phase==="committing"||a.phase==="editing"||a.phase==="failed"&&a.failure?.phase!=="warmup")return Promise.resolve();if(i)return i;const A=Promise.resolve().then(async()=>{try{h("warming",m===void 0?{}:{attempt:m}),M(),await e.backend.warmup?.(r.signal),M(),h("ready")}catch(b){if(u||r.signal.aborted)throw b;const y=Re("warmup-failed","warmup",b,!0);throw h("failed",{failure:y}),g(y,b),b}});return i=A,A.finally(()=>{i===A&&(i=null)}).catch(()=>{}),A},O=async()=>{if(u||a.phase==="disposed")return ge(a.attempt);if(a.phase==="editing")return Object.freeze({ok:!0,attempt:a.attempt});if(a.phase==="failed"&&a.failure&&!a.failure.recoverable)return Object.freeze({ok:!1,attempt:a.attempt,failure:a.failure});const m=a.attempt+1;try{await I(m)}catch(b){if(u||r.signal.aborted)return ge(m);const y=a.failure??Re("warmup-failed","warmup",b,!0);return Object.freeze({ok:!1,attempt:m,failure:y})}if(u)return ge(m);h("preparing",{attempt:m});let A;try{A=await e.backend.prepare({signal:r.signal}),M()}catch(b){if(u||r.signal.aborted)return ge(m);const y=Re("prepare-failed","prepare",b,!0);return h("failed",{attempt:m,failure:y}),g(y,b),Object.freeze({ok:!1,attempt:m,failure:y})}h("committing",{attempt:m});try{return await e.backend.commit(A,{signal:r.signal}),M(),h("editing",{attempt:m}),Object.freeze({ok:!0,attempt:m})}catch(b){h("rolling-back",{attempt:m});try{await e.backend.rollback(A,b)}catch(N){if(u&&Ot(b)&&Ot(N))return ge(m);const L=ze("commit-failed","commit",b),x=ze("rollback-failed","rollback",N),F=Ue({...x,recoverable:!1,primary:L,rollback:x});return u||h("failed",{attempt:m,failure:F}),g(F,b,N),Object.freeze({ok:!1,attempt:m,failure:F})}if(u||r.signal.aborted)return ge(m);const y=Re("commit-failed","commit",b,!0);return h("failed",{attempt:m,failure:y}),g(y,b),Object.freeze({ok:!1,attempt:m,failure:y})}},v=()=>{if(s)return s;const m=O();return s=m,m.finally(()=>{s===m&&(s=null)}).catch(()=>{}),m};return Object.freeze({start:()=>I(),enter:v,retry(){const m=a.failure;return a.phase!=="failed"||!m||m.recoverable?v():Promise.resolve(Object.freeze({ok:!1,attempt:a.attempt,failure:m}))},reset(){if(u||a.phase==="disposed")throw new Error("Disposed editor entry controller cannot be reset.");if(i||s)throw new Error("Editor entry controller cannot be reset during an active operation.");if(a.phase==="failed"&&a.failure&&!a.failure.recoverable)throw new Error("Non-recoverable editor entry failure cannot be reset. Refresh the page.");(a.phase!=="idle"||a.attempt!==0||a.failure)&&h("idle",{attempt:0})},getState:()=>a,subscribe(m){if(u)return()=>{};n.add(m);try{m(a)}catch(A){c(A)}return()=>{n.delete(m)}},dispose(){if(d)return d;u=!0,r.abort();const m=(async()=>{const A=[s,i].filter((b,y,N)=>b!==null&&N.indexOf(b)===y);await Promise.allSettled(A);try{await e.backend.dispose()}finally{a.phase!=="disposed"&&h("disposed"),n.clear()}})();return d=m,m.catch(()=>{d===m&&(d=null)}),m}})}function Re(e,t,r,n){return Ta(r)?Ue({...ze("reload-required","runtime",r),recoverable:!1}):Ue({...ze(e,t,r),recoverable:n})}function Ta(e){return e instanceof Error&&e.name==="PlayableEditorEntryReloadRequiredError"}function ze(e,t,r){return Object.freeze({code:e,phase:t,message:Ra(r)})}function Ue(e){return Object.freeze({...e,primary:e.primary?Object.freeze({...e.primary}):void 0,rollback:e.rollback?Object.freeze({...e.rollback}):void 0})}function xt(e){return Object.freeze({...e,phaseDurationsMs:Object.freeze({...e.phaseDurationsMs}),failure:e.failure?Ue(e.failure):null})}function Ra(e){return e instanceof Error&&e.message.trim()?e.message:typeof e=="string"&&e.trim()?e:"Unknown editor entry failure."}function Ot(e){return e instanceof Error&&e.name==="AbortError"}function it(){const e=new Error("Editor entry was disposed.");return e.name="AbortError",e}function ge(e){return Object.freeze({ok:!1,attempt:e,failure:Re("disposed","dispose",it(),!1)})}function ui(e){return vr({...e,includeCompatibilityAliases:!0,registry:{defineCapability(t){const r=Lr(t.descriptor);if(r==="scene.objects.create")return()=>{};const n=r===Wt?_a():Ma(r,wa(r));return e.host.registerCommand({manifest:n,...t.available?{available:t.available}:{},...t.expectedRevisionPolicy?{expectedRevisionPolicy:t.expectedRevisionPolicy}:{},handler:(a,i)=>t.execute(a,{signal:i.signal,...i.traceId?{traceId:i.traceId}:{},principal:i.principal,sessionId:i.sessionId,expectedRevision:i.expectedRevision,session:i.session,dispatch:i.dispatch,captureAuthoringPatch:i.captureAuthoringPatch})})}}})}function wa(e){switch(e){case"object.resolve":case"transform.move":case"transform.set":return{activeId:"objectId"};case"object.delete":return{selectedIds:"objectIds"};default:return}}function Ma(e,t){const r=xr[e],n=Nr[e],a=Or[e];if(!r)throw new Error(`Built-in Editor command metadata is missing: ${e}`);return{schemaVersion:Xt,id:e,version:1,title:r.title,...It[e]?{description:It[e]}:{},target:r.target,access:r.access,stability:r.stability,inputSchema:n.inputSchema,outputSchema:n.outputSchema,effects:{persistence:r.access==="write"?"authoring":"none",undoable:r.access==="write",idempotent:r.access==="read"},...r.target==="authoring"&&r.access==="write"?{transaction:{compatible:!0,sideEffects:"authoring",phase:"mutation"}}:{},presentation:{category:r.category,inputMode:Da(n.inputSchema)?"schema-form":"none",...a?.aliases?{aliases:a.aliases}:{},...a?.keywords?{keywords:a.keywords}:{},...a?.examples?{examples:a.examples}:{},...a?.shortcut?{shortcut:a.shortcut}:{},...a?.menu?{menu:a.menu}:{},...t?{selectionBinding:t}:{}}}}function _a(){return{schemaVersion:Xt,id:Wt,version:1,title:"Create object from feature",description:"Creates one Scene object from an authoritative registered feature preset.",target:"authoring",access:"write",stability:"experimental",inputSchema:{type:"object",required:["featureId"],properties:{featureId:{type:"string",minLength:1}},additionalProperties:!1},outputSchema:{type:"object",required:["createdId","selection"],properties:{createdId:{type:"string",minLength:1},object:{type:"object"},selection:{type:"object"}},additionalProperties:!1},effects:{persistence:"authoring",undoable:!0,idempotent:!1},transaction:{compatible:!0,sideEffects:"authoring",phase:"mutation"},presentation:{category:"scene",inputMode:"schema-form"}}}function Da(e){const t=e.properties;return!!t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length>0}function fi(e){return{...e,paths:{...e.paths},supportedExtensions:e.supportedExtensions?[...e.supportedExtensions]:void 0,commands:e.commands?{...e.commands}:void 0}}const mi=["model","texture","image","sound"],ct=[".glb",".gltf"],rr=[".png",".jpg",".jpeg",".webp"],Ca=[".env",".hdr",".dds",".ktx",".ktx2"],dt=[...rr,...Ca],lt=[".mp3",".wav",".ogg",".flac",".aac",".m4a"],va=[...ct,...dt,...lt];function La(e){return e.randomUUID?e.randomUUID():ka(e)}function ar(e){return String(e??"").trim().toLowerCase().replace(/-/g,"")}function xa(e,t){const r=ar(t);return`${e==="model"?"asset":e==="texture"?"texture":e==="sound"?"sound":"image"}_${r}`}function gi(e){const a=String(e??"").trim().split(/[^a-zA-Z0-9_$]+/).filter(Boolean).map((i,s)=>s===0?i:`${i.charAt(0).toUpperCase()}${i.slice(1)}`).join("").replace(/[^a-zA-Z0-9_$]/g,"")||"assetUrl";return/^[a-zA-Z_$]/.test(a)?a:`asset${a}`}function Oa(e,t=""){const r=String(e??"").trim().toLowerCase();if(r==="glb"||r==="gltf"||r==="model")return"model";if(r==="groundtexture"||r==="ground-texture"||r==="texture")return"texture";if(r==="ui"||r==="image"||r==="img")return"image";if(r==="audio"||r==="sound")return"sound";const n=Na(t);return ct.includes(n)?"model":lt.includes(n)?"sound":dt.includes(n)?"texture":null}function Na(e){const t=e.split(/[?#]/,1)[0]??"",r=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\")),n=t.slice(r+1),a=n.lastIndexOf(".");return a>=0?n.slice(a).toLowerCase():""}function ka(e){const t=new Uint8Array(16);if(!e.fillRandomBytes)throw new Error("Asset GUID random source must provide randomUUID or fillRandomBytes.");if(e.fillRandomBytes(t),t.every(n=>n===0))throw new Error("Asset GUID random source returned no entropy.");t[6]=t[6]&15|64,t[8]=t[8]&63|128;const r=[...t].map(n=>n.toString(16).padStart(2,"0")).join("");return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}function ut(e){let t=String(e??"").trim();const r=t.toLowerCase();for(const n of[...va].sort((a,i)=>i.length-a.length))if(r.endsWith(n)){t=t.slice(0,-n.length);break}return t}function Ei(e,t){return String(e??"").trim()||ut(t)||"Asset"}function pi(e,t){return ut(e||t).trim().toLowerCase().normalize("NFKD").replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"").replace(/_{2,}/g,"_")||null}function Si(e){return e==="model"?ct:e==="sound"?lt:e==="texture"?dt:e==="image"?rr:[]}class fe extends Error{constructor(t,r){super(r),this.code=t,this.name="PlayableEditorManagedAssetError"}}function ja(){const e=globalThis.crypto;return La({...typeof e?.randomUUID=="function"?{randomUUID:()=>e.randomUUID()}:{},fillRandomBytes(t){if(typeof e?.getRandomValues=="function")e.getRandomValues(t);else for(let r=0;r<t.length;r+=1)t[r]=Math.floor(Math.random()*256)}})}function hi(e){return ar(e)}function Ga(e,t){return xa(e,t)}function Nt(e){return ut(e).trim()}function nr(e,t,r){const n=Ua(t.kind,t.assetPath??t.assetName),a=Q(t.guid),i=Q(t.assetId),s=ir(t),d=$a(e,t);if(d&&a&&d.guid&&d.guid!==a)throw new fe(r.errorCodes.assetIdConflict,`Requested guid "${a}" does not match existing asset guid "${d.guid}"`);const u=d?.guid??a??ja(),c=Ga(n,u);if(d?.id&&d.id!==c)throw new fe(r.errorCodes.assetIdConflict,`Asset id "${d.id}" does not match guid "${u}" (expected "${c}")`);if(i&&i!==c)throw new fe(r.errorCodes.assetIdConflict,`Project asset id "${i}" does not match guid "${u}" (expected "${c}")`);const h=e.assets.find(g=>g.id===c&&g.guid&&g.guid!==u);if(h)throw new fe(r.errorCodes.assetIdConflict,`Asset id "${c}" already points to guid "${h.guid}"`);return{guid:u,assetId:c,kind:n,...s?{external:s}:d?.external?{external:d.external}:{}}}function Fa(e){if(typeof e=="number"&&Number.isFinite(e)&&e>0)return e;if(!e||typeof e!="object")return;const t=e,r=Ze(t.x),n=Ze(t.y),a=Ze(t.z);if(!(r==null||n==null||a==null||r<=0||n<=0||a<=0))return{x:r,y:n,z:a}}function ot(e,t,r){const n=nr(e,t,r),a=t.displayName?.trim()||Nt(t.assetName)||Nt(t.assetPath?.split("/").pop())||"Imported Asset",i=t.category?.trim(),s=Ha(t.materialMode),d=Va(t.warmupCount),u=Fa(t.defaultScale??t.scale),c=Ya(t.metadata);return{...n,displayName:a,...i?{category:i}:{},...s?{materialMode:s}:{},...d!=null?{warmupCount:d}:{},...typeof t.singleton=="boolean"?{singleton:t.singleton}:{},...u?{scale:u}:{},...c?{metadata:c}:{}}}function st(e,t){if(e.kind==="model")return{id:e.assetId,guid:e.guid,type:"glb",displayName:e.displayName,...e.category?{category:e.category}:{},...e.materialMode?{materialMode:e.materialMode}:{},...e.warmupCount!=null?{warmupCount:e.warmupCount}:{},...typeof e.singleton=="boolean"?{singleton:e.singleton}:{},...e.scale?{defaults:{transform:{scale:e.scale}}}:{},...e.external?{external:e.external}:{},metadata:{...e.metadata??{},[t.metadata.key]:t.metadata.value}}}function Ba(e,t,r){const n=t.assetName||t.assetPath?.split("/").pop()||"imported_asset.glb",a=ot(e,{...t,assetName:n},r),i=t.requestId,s=t.payloadPath??t.createPayloadPath?.({...i?{requestId:i}:{},guid:a.guid,assetId:a.assetId,kind:a.kind})??`/tmp/playable-editor-asset-${i??a.assetId}.json`,d=st(a,r),u=t.registerCommand??"npm run asset:register",c={...t.assetPath?{sourcePath:t.assetPath,assetPath:t.assetPath}:{},...t.assetUrl?{assetUrl:t.assetUrl}:{},guid:a.guid,projectAssetId:a.assetId,assetType:a.kind,assetName:n,displayName:a.displayName,...a.category?{category:a.category}:{},...a.materialMode?{materialMode:a.materialMode}:{},...a.warmupCount!=null?{warmupCount:a.warmupCount}:{},...typeof a.singleton=="boolean"?{singleton:a.singleton}:{},...a.scale?{scale:a.scale}:{},...a.metadata?{metadata:a.metadata}:{},...a.external?{external:a.external}:{},...a.external?.platformAssetId?{platformAssetId:a.external.platformAssetId}:{}},h=`${u} -- --payload ${s}`;return{...i?{requestId:i}:{},guid:a.guid,assetId:a.assetId,kind:a.kind,displayName:a.displayName,...a.external?{external:a.external}:{},transportPlan:{writes:[{path:s,contentType:"application/json",content:c}],commands:[{cmd:h,cwd:".",timeoutMs:6e4}]},...d?{sceneAsset:d}:{}}}function za(e,t){const r=Q(e.assetId),n=Q(e.guid);if(!r&&!n)throw new fe(t.errorCodes.missingAssetId??"missing_asset_id","Missing assetId or guid for asset unregistration");const a=e.requestId,i=e.payloadPath??e.createPayloadPath?.({...a?{requestId:a}:{},...r?{assetId:r}:{},...n?{guid:n}:{}})??`/tmp/playable-editor-asset-unregister-${a??r??n}.json`,s=e.deleteFile!==!1,d=e.unregisterCommand??"npm run asset:unregister",u={...r?{assetId:r}:{},...n?{guid:n}:{},deleteFile:s},c=`${d} -- --payload ${i}`;return{...a?{requestId:a}:{},...n?{guid:n}:{},assetId:r??"",transportPlan:{writes:[{path:i,contentType:"application/json",content:u}],commands:[{cmd:c,cwd:".",timeoutMs:6e4}]}}}function Q(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function Ua(e,t){return Oa(e,t)??"model"}function ir(e){const t=e.external&&typeof e.external=="object"?e.external:{},r=Q(t.platformAssetId)??Q(e.platformAssetId);let n;if(Object.prototype.hasOwnProperty.call(t,"assetPath")){try{n=kr(t.assetPath)}catch{throw new fe("external_asset_path_must_be_portable","Explicit external.assetPath must be a non-empty portable relative path")}if(!n)throw new fe("external_asset_path_must_be_portable","Explicit external.assetPath must be a non-empty portable relative path")}const a=Q(t.assetUrl)??Q(e.assetUrl);if(!(!r&&!n&&!a))return{...r?{platformAssetId:r}:{},...n?{assetPath:n}:{},...a?{assetUrl:a}:{}}}function $a(e,t){const r=Q(t.guid),n=Q(t.assetId),a=ir(t);return e.assets.find(i=>!!(r&&i.guid===r||n&&i.id===n||a?.platformAssetId&&i.external?.platformAssetId===a.platformAssetId||a?.assetPath&&i.external?.assetPath===a.assetPath))}function Ze(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Ha(e){return e==="shared"||e==="instance"?e:void 0}function Va(e){return Number.isInteger(e)&&e>=0?e:void 0}function Ya(e){if(!(!e||typeof e!="object"||Array.isArray(e)))return JSON.parse(JSON.stringify(e))}function qa(e){return{resolveAssetIdentity:(t,r,n=e.rules)=>Ae(e,()=>nr(t,r,n)),buildAssetArgs:(t,r,n=e.rules)=>Ae(e,()=>ot(t,r,n)),createSceneAsset:(t,r=e.rules)=>st(t,r),planAssetRegistrationCore:(t,r,n=e.rules)=>Ae(e,()=>Ba(t,Ka(r,e),n)),planAssetUnregistrationCore:(t,r=e.rules)=>Ae(e,()=>za(Wa(t,e),r)),resolveAssetReference:(t,r,n=e.rules)=>{const a=Ae(e,()=>ot(t,r,n)),i=st(a,n);if(!i)throw new Error(`Asset "${a.assetId}" is not a placeable model asset`);return{guid:a.guid,assetId:a.assetId,displayName:a.displayName,asset:i}}}}function Ka(e,t){return{...e,kind:e.kind??e.assetType,createPayloadPath:e.createPayloadPath??(e.payloadPath?void 0:t.createRegistrationPayloadPath)}}function Wa(e,t){return{...e,createPayloadPath:e.createPayloadPath??(e.payloadPath?void 0:t.createUnregistrationPayloadPath)}}function Ae(e,t){try{return t()}catch(r){throw e.wrapError&&e.wrapError(r),r}}function bi(e){const t=qa(e);return{facade:t,planAssetRegistration(r,n){return t.planAssetRegistrationCore(kt(n),r)},planAssetRegistrationWithAssets(r,n){return t.planAssetRegistrationCore({assets:r},n)},planAssetUnregistration(r){return t.planAssetUnregistrationCore(r)},resolveAssetReference(r,n){return t.resolveAssetReference(kt(n),r)}}}function kt(e){return{assets:e.getAssets()}}const Xa=["/__fps_editor_authoring"],Za=[["manifest","/manifest"],["commit","/commit"],["editor-scene","/editor-scene"],["editor-asset-library","/editor-asset-library"],["project-files","/project-files"],["project-media","/project-media"],["project-file","/project-file"],["asset-import","/asset-import"],["save-editor-scene","/save-editor-scene"]];function Ja(e,t={}){const r=new URL(e??"","http://localhost").pathname,n=t.prefixes??Xa,a=Qa(r,n);if(!a)return null;const i=r.slice(a.length)||"/",s=en(i);return s?{route:i,routeName:s,prefix:a}:null}function Qa(e,t){return t.find(r=>e===r||e.startsWith(`${r}/`))??null}function en(e){return Za.find(([,t])=>e===t)?.[0]??null}function U(e,t){return{statusCode:e,body:t}}function or(e){return{statusCode:e,body:null}}async function yi(e,t){const r=Ja(e.url);if(!r)return null;const n=(e.method??"GET").toUpperCase();if(n==="OPTIONS")return or(204);try{if(tn(r.routeName)){if(n!=="GET")return U(405,{ok:!1,error:"method_not_allowed"});if(r.routeName==="project-file"){const i=new URL(e.url??"","http://localhost").searchParams.get("path")?.trim()??"";if(!i)return U(400,{ok:!1,error:"missing_file_path"});const s=await t.loadProjectFile?.({path:i,route:r});return U(200,s??{ok:!1,error:"not_found"})}return U(200,await rn(r,t))}if(n!=="POST")return U(405,{ok:!1,error:"method_not_allowed"});const a=e.body??await t.readBody?.(e,r)??{};return await an(r,a,t)}catch(a){const i=typeof a?.code=="string"?a.code:"authoring_request_failed",s=i==="asset_import_payload_too_large"?413:r.routeName==="save-editor-scene"&&i==="authoring_source_revision_mismatch"?200:r.routeName==="asset-import"?400:500;return U(s,{ok:!1,error:a instanceof Error?a.message:String(a),code:i,details:$e(a?.details)})}}function tn(e){return e==="manifest"||e==="editor-scene"||e==="editor-asset-library"||e==="project-files"||e==="project-file"||e==="project-media"}async function rn(e,t){return e.routeName==="manifest"&&t.loadManifest?t.loadManifest(e):e.routeName==="editor-scene"&&t.loadEditorScene?t.loadEditorScene(e):e.routeName==="editor-asset-library"&&t.loadEditorAssetLibrary?t.loadEditorAssetLibrary(e):e.routeName==="project-files"&&t.loadProjectFiles?t.loadProjectFiles(e):{ok:!1,error:"not_found"}}async function an(e,t,r){if(e.routeName==="asset-import"){const n=jr(t),a=await r.importAsset?.({payload:n,route:e});return U(200,a??{ok:!1,error:"not_found"})}return e.routeName==="save-editor-scene"?nn(e,t,r):e.routeName==="commit"?U(410,await on(e,t,r)):U(404,{ok:!1,error:"not_found"})}async function nn(e,t,r){const n=t.mode==="prepare-platform-save"?"prepare-platform-save":"local-commit-save",a=await r.saveEditorScene?.({body:t,mode:n,rawEditorScene:t.editorScene,route:e});return U(200,a??{ok:!1,error:"not_found"})}async function on(e,t,r){return r.commit?.({body:t,route:e})??{ok:!1,error:"platform_commit_route_disabled",message:"Save through /__fps_editor_authoring/save-editor-scene so scene.main remains the authoring source of truth."}}const le=Gr,X=Fr,Pi=Br;function Me(e){return D(e.requestId)}function sr(e){return{requestId:Me(e),assetName:D(e.assetName),assetPath:D(e.assetPath),assetUrl:D(e.assetUrl),guid:D(e.guid),assetId:D(e.projectAssetId),kind:D(e.assetType)??D(e.kind),platformAssetId:D(e.platformAssetId)??D(e.assetId),displayName:D(e.displayName),category:D(e.category),materialMode:e.materialMode,scale:e.scale,defaultScale:e.defaultScale,metadata:$e(e.metadata),payloadPath:D(e.payloadPath)}}function sn(e){return{requestId:Me(e),guid:D(e.guid),assetId:D(e.projectAssetId)??D(e.assetId),payloadPath:D(e.payloadPath),deleteFile:typeof e.deleteFile=="boolean"?e.deleteFile:void 0}}function cn(e){const t=D(e.assetName)??"",r=D(e.assetPath);return{...sr(e),kind:D(e.assetType)??D(e.kind)??"model",rawAssetName:t,inferredAssetPath:r,inferredAssetUrl:D(e.assetUrl)??(r?`/@fs${r}`:""),instanceScale:e.instanceScale,dropSurfaceName:D(e.dropSurfaceName),clientX:typeof e.clientX=="number"&&Number.isFinite(e.clientX)?e.clientX:void 0,clientY:typeof e.clientY=="number"&&Number.isFinite(e.clientY)?e.clientY:void 0,position:e.position}}function dn(e){const t=un(e);return{requestId:Me(e),id:D(e.id),name:D(e.name),kind:e.kind,parentId:D(e.parentId),enabled:typeof e.enabled=="boolean"?e.enabled:void 0,transform:e.transform,instance:e.instance,primitive:e.primitive,transformType:e.transformType,...t?{customTransformData:t}:{},camera:e.camera,light:e.light}}function ln(e){return{requestId:Me(e),nodeId:D(e.nodeId)??"",patches:Array.isArray(e.patches)?e.patches:D(e.path)?[{path:e.path,value:e.value}]:[]}}function jt(e){return{requestId:Me(e),nodeId:D(e.nodeId)}}function D(e){if(typeof e!="string")return;const t=e.trim();return t||void 0}function un(e){const t=new Set(["requestId","id","name","kind","parentId","enabled","transform","instance","primitive","transformType","customTransformData","camera","light"]),r=$e(e.customTransformData),n=r?{...r}:{};for(const[a,i]of Object.entries(e))t.has(a)||(n[a]=i);return Object.keys(n).length>0?n:void 0}function fn(e,t,r={}){const n=r.readProjectError?.(e);if(n)return n;const a=e,i=At(a?.code)??t,s=e instanceof Error?e.message:At(a?.message)??String(e),d=$e(a?.details);return{code:i,error:s,...d?{details:d}:{}}}function mn(e,t={}){const r=new Set(t.omitKeys??["rootNode"]),n={...e};for(const a of r)delete n[a];return n}function gn(e){return{async handleCommand(t,r,n){const a=n;if(t===le.ASSET_REGISTRATION_PLAN){const i=sr(r);return await xe({eventName:X.ASSET_REGISTRATION_PLANNED,failedEventName:X.ASSET_REGISTRATION_FAILED,requestId:i.requestId,fallbackCode:e.errorCodes.assetRegistrationPlanFailed,emitEvent:e.emitEvent,createCommandError:e.handlers.createCommandError,run:()=>e.handlers.assetRegistrationPlan(i,a)}),!0}if(t===le.ASSET_UNREGISTRATION_PLAN){const i=sn(r);return await xe({eventName:X.ASSET_UNREGISTRATION_PLANNED,failedEventName:X.ASSET_UNREGISTRATION_FAILED,requestId:i.requestId,fallbackCode:e.errorCodes.assetUnregistrationPlanFailed,emitEvent:e.emitEvent,createCommandError:e.handlers.createCommandError,run:()=>e.handlers.assetUnregistrationPlan(i,a)}),!0}if(t===le.ASSET_IMPORT){const i=cn(r),s=await e.handlers.assetImport(i,a);return s&&e.emitEvent(X.ASSET_IMPORT_RESULT,s),!0}if(t===le.ASSET_REMOVE){const i=jt(r),s=await e.handlers.assetRemove(i,a);return s&&e.emitEvent(X.ASSET_REMOVE_RESULT,s),!0}if(t===le.SCENE_NODE_CREATE){const i=dn(r);return await xe({eventName:X.SCENE_NODE_CREATE_RESULT,failedEventName:X.SCENE_NODE_CREATE_RESULT,requestId:i.requestId,fallbackCode:e.errorCodes.sceneNodeCreateFailed,emitEvent:e.emitEvent,createCommandError:e.handlers.createCommandError,run:()=>e.handlers.sceneNodeCreate(i,a)}),!0}if(t===le.SCENE_NODE_PATCH){const i=ln(r);return await xe({eventName:X.SCENE_NODE_PATCH_RESULT,failedEventName:X.SCENE_NODE_PATCH_RESULT,requestId:i.requestId,fallbackCode:e.errorCodes.sceneNodePatchFailed,failureExtra:{nodeId:i.nodeId},emitEvent:e.emitEvent,createCommandError:e.handlers.createCommandError,run:()=>e.handlers.sceneNodePatch(i,a)}),!0}if(t===le.SCENE_NODE_REMOVE){const i=jt(r),s=await e.handlers.sceneNodeRemove(i,a);return s&&e.emitEvent(X.SCENE_NODE_REMOVE_RESULT,s),!0}return!1}}}async function xe(e){try{const t=await e.run();t&&e.emitEvent(e.eventName,t)}catch(t){e.emitEvent(e.failedEventName,{requestId:e.requestId,ok:!1,...e.failureExtra,...e.createCommandError(t,e.fallbackCode)})}}function Ii(e){const t=e.notifyDocumentStatus??(()=>{}),r=e.createCommandError??((n,a)=>fn(n,a));return gn({emitEvent:e.emitEvent,errorCodes:e.errorCodes,handlers:{createCommandError:r,assetRegistrationPlan:(n,a)=>e.planAssetRegistration(n,a),assetUnregistrationPlan:(n,a)=>e.planAssetUnregistration(n,a),assetImport:(n,a)=>En(n,a,e,t),assetRemove:(n,a)=>pn(n,a,e,t),sceneNodeCreate:async(n,a)=>{e.ensureDocumentLoaded();const i=await e.sceneNodeCreate(n,a);return i.rootNode&&e.selectRuntimeNode?.(i.rootNode),t(),{requestId:n.requestId,ok:!0,nodeId:i.node.id,node:i.node}},sceneNodePatch:async(n,a)=>{e.ensureDocumentLoaded();const i=await e.sceneNodePatch(n,a);return i.rootNode&&e.selectRuntimeNode?.(i.rootNode),t(),{requestId:n.requestId,ok:!0,nodeId:i.node.id,node:i.node}},sceneNodeRemove:async(n,a)=>{e.ensureDocumentLoaded();const i=await e.sceneNodeRemove(n,a);return i&&(e.selectRuntimeNode?.(null),t()),{requestId:n.requestId,ok:!!i,nodeId:n.nodeId,...i?{removedNodeId:i.node.id}:{code:e.errorCodes.nodeNotFound,error:e.errorCodes.nodeNotFound}}}}})}async function En(e,t,r,n){if(r.isBridgeActive?.())return null;r.ensureDocumentLoaded();const a=Sn(e.inferredAssetUrl)||(e.inferredAssetPath?`/@fs${e.inferredAssetPath}`:""),i=await r.planAssetRegistration({...e,assetName:e.rawAssetName||void 0,assetPath:e.inferredAssetPath,assetUrl:a},t);let s=null;e.inferredAssetPath&&(s=await(r.importAsset??(h=>zr(h)))({assetPath:e.inferredAssetPath,...i.assetId?{projectAssetId:i.assetId}:{},...i.guid?{guid:i.guid}:{},...e.rawAssetName?{assetName:e.rawAssetName}:{},...e.displayName?{displayName:e.displayName}:{},...e.category?{category:e.category}:{},...e.metadata?{metadata:e.metadata}:{},...i.external?{external:i.external}:{}},t));const d=Ur({result:s,fallback:{guid:i.guid,assetId:i.assetId,assetUrl:a,external:i.external}}),u=await r.createAssetInstance({requestId:e.requestId,guid:d.guid,assetId:d.assetId,external:d.external,assetUrl:d.assetUrl,assetName:e.rawAssetName||void 0,displayName:e.displayName,category:e.category,materialMode:e.materialMode,scale:e.scale,defaultScale:e.defaultScale,instanceScale:e.instanceScale,metadata:e.metadata,dropSurfaceName:e.dropSurfaceName,clientX:e.clientX,clientY:e.clientY,position:e.position},t);return u.ok&&(u.rootNode&&r.selectRuntimeNode?.(u.rootNode),n()),mn(u)}async function pn(e,t,r,n){r.ensureDocumentLoaded();const a=e.nodeId?await r.removeAssetInstance(e,t):{ok:!1,assetId:"",code:r.errorCodes.missingNodeId,error:r.errorCodes.missingNodeId};return a.ok&&(r.selectRuntimeNode?.(null),n()),{requestId:e.requestId,...a}}function Sn(e){return typeof e=="string"&&e.trim()?e.trim():void 0}const Te="public-export",w="bundled-alias",ue="external-peer",Z="default",C="exclude",Se="prebundle",hn=[["@fps-games/editor","packages/editor/src/index.ts",null,Te,Z],["@fps-games/editor/vite","packages/editor/src/vite.ts",null,Te,Z],["@fps-games/engine",null,null,ue,Z],["@fps-games/engine/config",null,null,ue,Z],["@fps-games/engine/rendering",null,null,ue,Z],["@fps-games/engine/babylon",null,null,ue,Se],["@fps-games/editor-tooling","packages/editor-tooling/src/index.ts","@fps-games/editor-tooling/dist/index.js",w,C],["@fps-games/editor-tooling/node","packages/editor-tooling/src/package-metadata-node.ts","@fps-games/editor-tooling/dist/package-metadata-node.js",w,C],["@fps-games/editor-tooling/vite","packages/editor-tooling/src/vite.ts","@fps-games/editor-tooling/dist/vite.js",w,C],["@fps-games/plugin-sdk",null,null,ue,Z],["@fps-games/plugin-sdk/host",null,null,ue,Z],["@fps-games/plugin-sdk/runtime",null,null,ue,Z],["@fps-games/plugin-hierarchy","packages/plugin-hierarchy/src/reference.ts","@fps-games/plugin-hierarchy/dist/reference.js",w,Se],["@fps-games/plugin-hierarchy/kernel","packages/plugin-hierarchy/src/kernel.ts","@fps-games/plugin-hierarchy/dist/kernel.js",w,C],["@fps-games/plugin-hierarchy/integration","packages/plugin-hierarchy/src/integration.ts","@fps-games/plugin-hierarchy/dist/integration.js",w,C],["@fps-games/plugin-hierarchy/editor","packages/plugin-hierarchy/src/editor.ts","@fps-games/plugin-hierarchy/dist/editor.js",w,Se],["@fps-games/editor/playable-sdk","packages/editor/src/playable-sdk.ts",null,Te,Z],["@fps-games/editor/playable-sdk/upgrade-doctor","packages/editor/src/playable-sdk-upgrade-doctor.ts",null,Te,Z],["@fps-games/editor/playable-sdk/vite","packages/editor/src/playable-sdk-vite.ts",null,Te,Z],["@fps-games/editor-playable-sdk","packages/editor-playable-sdk/src/index.ts","@fps-games/editor-playable-sdk/dist/index.js",w,C],["@fps-games/editor-playable-sdk/internal/authoring-queries","packages/editor-playable-sdk/src/internal/authoring-queries.ts","@fps-games/editor-playable-sdk/dist/internal/authoring-queries.js",w,C],["@fps-games/editor-playable-sdk/internal/local-harness","packages/editor-playable-sdk/src/internal/local-harness.ts","@fps-games/editor-playable-sdk/dist/internal/local-harness.js",w,C],["@fps-games/editor-playable-sdk/upgrade-doctor","packages/editor-playable-sdk/src/upgrade-doctor/index.ts","@fps-games/editor-playable-sdk/dist/upgrade-doctor/index.js",w,C],["@fps-games/editor-playable-sdk/vite","packages/editor-playable-sdk/src/vite/index.ts","@fps-games/editor-playable-sdk/dist/vite/index.js",w,C],["@fps-games/editor-babylon","packages/editor-babylon/src/index.ts","@fps-games/editor-babylon/dist/index.js",w,C],["@fps-games/editor-browser","packages/editor-browser/src/index.ts","@fps-games/editor-browser/dist/index.js",w,C],["@fps-games/editor-browser/plugin-contributions","packages/editor-browser/src/plugin-contributions.ts","@fps-games/editor-browser/dist/plugin-contributions.js",w,C],["@fps-games/editor-browser/runtime-debug","packages/editor-browser/src/runtime-debug.ts","@fps-games/editor-browser/dist/runtime-debug.js",w,C],["@fps-games/editor-core","packages/editor-core/src/index.ts","@fps-games/editor-core/dist/index.js",w,C],["@fps-games/editor-core/plugin-host","packages/editor-core/src/editor-plugin-host.ts","@fps-games/editor-core/dist/editor-plugin-host.js",w,C],["@fps-games/editor-core/lifecycle","packages/editor-core/src/lifecycle.ts","@fps-games/editor-core/dist/lifecycle.js",w,C],["@fps-games/editor-core/events","packages/editor-core/src/events.ts","@fps-games/editor-core/dist/events.js",w,C],["@fps-games/editor-core/document-adapter","packages/editor-core/src/document-adapter.ts","@fps-games/editor-core/dist/document-adapter.js",w,C],["@fps-games/editor-core/diagnostics","packages/editor-core/src/editor-diagnostic-store.ts","@fps-games/editor-core/dist/editor-diagnostic-store.js",w,C],["@fps-games/editor-core/tools","packages/editor-core/src/editor-tools.ts","@fps-games/editor-core/dist/editor-tools.js",w,C],["@fps-games/editor-forge-play","packages/editor-forge-play/src/index.ts","@fps-games/editor-forge-play/dist/index.js",w,C],["@fps-games/editor-protocol","packages/editor-protocol/src/index.ts","@fps-games/editor-protocol/dist/index.js",w,C],["@fps-games/editor-ui","packages/editor-ui/src/index.ts","@fps-games/editor-ui/dist/index.js",w,C],["@babel/parser",null,"@babel/parser/lib/index.js",w,Se],["@playcanvas/observer",null,"@playcanvas/observer/dist/index.mjs",w,C],["@playcanvas/pcui",null,"@playcanvas/pcui/dist/module/src/index.mjs",w,C],["@playcanvas/pcui/styles",null,"@playcanvas/pcui/styles/dist/index.mjs",w,C],["semver",null,"semver/index.js",w,Se]],_e=Object.freeze(hn.map(([e,t,r,n,a])=>Object.freeze({packageId:e,...t?{sourceFile:t}:{},...r?{bundledFile:r,bundledRoot:"editor-node-modules"}:{},resolution:n,optimizer:a,projectAllowlist:!0}))),Ai=Object.freeze(_e.filter(e=>e.projectAllowlist).map(e=>e.packageId)),Ti=Object.freeze(_e.filter(e=>e.resolution===w).map(e=>e.packageId)),Ri=Object.freeze(_e.filter(e=>e.optimizer===Se).map(e=>e.packageId));function bn(e,t={}){const r=t.resolvePath??ft;return{entries:_e.filter(n=>typeof n.sourceFile=="string").map(n=>({packageId:n.packageId,file:r(e,...n.sourceFile.split("/"))}))}}function wi(e,t={}){const r=bn(e,{resolvePath:t.resolvePath}),n=t.relativePath??Pn,a={};for(const i of r.entries){if(i.packageId==="semver")continue;const s=t.pathOverrides?.[i.packageId];a[i.packageId]=s?yn(s):[t.projectRoot?ye(n(t.projectRoot,i.file)):ye(i.file)]}return{paths:a}}function Mi(e,t={}){const r=t.resolvePath??ft,n=r(e,"node_modules","@fps-games","editor");return{editorPackageRoot:n,bundledEditorPackagesRoot:r(n,"node_modules","@fps-games"),bundledEditorNodeModulesRoot:r(n,"node_modules"),editorPackageJsonPath:r(n,"package.json")}}function _i(e){const t=e.resolvePath??ft,r=e.bundledEditorNodeModulesRoot??Gt(e.bundledEditorPackagesRoot),n=e.editorPackageRoot??Gt(r);return{entries:_e.filter(i=>i.resolution===w&&typeof i.bundledFile=="string").map(i=>({packageId:i.packageId,file:t(i.bundledRoot==="editor-package"?n:r,...i.bundledFile.split("/"))}))}}function Di(e,t){return e.entries.filter(r=>!t(r.file)).map(r=>({packageId:r.packageId,file:r.file}))}function Ci(e,t="The @fps-games editor package aliases point to missing files."){return[t,...e.map(r=>`- ${r.packageId}: ${r.file}`)].join(`
2
+ `)}function ft(...e){return e.filter(t=>t.length>0).join("/").replace(/\/+/g,"/")}function ye(e){return e.replace(/\\/g,"/").replace(/\/+/g,"/")}function Gt(e){const t=ye(e).replace(/\/$/,""),r=t.lastIndexOf("/");return r>0?t.slice(0,r):"."}function yn(e){return(Array.isArray(e)?e:[e]).map(ye)}function Pn(e,t){const r=ye(e).replace(/\/$/,""),n=ye(t).replace(/\/$/,""),a=r.split("/").filter(Boolean),i=n.split("/").filter(Boolean);let s=0;for(;s<a.length&&s<i.length&&a[s]===i[s];)s+=1;const d=a.slice(s).map(()=>".."),u=i.slice(s);return[...d,...u].join("/")||"."}const In=new Set(["leftToRight","rightToLeft","bottomToTop","topToBottom"]);function vi(e){const t=$r(e),r={uiKind:e.uiKind,size:{width:e.size.width,depth:e.size.depth},layers:e.layers.map((n,a)=>An(n,a)),rendering:{textureWidth:t.width,textureHeight:t.height}};return e.aspectSourceLayerId&&(r.aspectSourceLayerId=e.aspectSourceLayerId),typeof e.lockAspectToBorder=="boolean"&&(r.lockAspectToBorder=e.lockAspectToBorder),e.mask&&(r.mask={...typeof e.mask.enabled=="boolean"?{enabled:e.mask.enabled}:{},...e.mask.source==="roundedRect"||e.mask.source==="borderAlpha"||e.mask.source==="texture"?{source:e.mask.source}:{},...e.mask.textureId?{textureId:e.mask.textureId}:{},...typeof e.mask.cornerRadius=="number"&&Number.isFinite(e.mask.cornerRadius)?{cornerRadius:e.mask.cornerRadius}:{},...typeof e.mask.padding=="number"&&Number.isFinite(e.mask.padding)?{padding:e.mask.padding}:{}}),e.rendering&&(r.rendering={...r.rendering,...typeof e.rendering.alphaIndex=="number"&&Number.isFinite(e.rendering.alphaIndex)?{alphaIndex:e.rendering.alphaIndex}:{},...typeof e.rendering.diffuseTextureLevel=="number"&&Number.isFinite(e.rendering.diffuseTextureLevel)?{diffuseTextureLevel:e.rendering.diffuseTextureLevel}:{},...typeof e.rendering.emissiveTextureLevel=="number"&&Number.isFinite(e.rendering.emissiveTextureLevel)?{emissiveTextureLevel:e.rendering.emissiveTextureLevel}:{}}),r}function An(e,t){const r=Hr(e.rotationDeg??0)??0,n={id:e.id,role:e.role,zOrder:typeof e.zOrder=="number"&&Number.isFinite(e.zOrder)?e.zOrder:t,rect:Tn(e.rect),...r!==0?{rotationDeg:r}:{},...typeof e.enabled=="boolean"?{enabled:e.enabled}:{},...typeof e.opacity=="number"&&Number.isFinite(e.opacity)?{opacity:e.opacity}:{}};return e.kind==="texture"?{...n,kind:"texture",...e.textureId?{textureId:e.textureId}:{},...e.tint?{tint:Ee(e.tint)}:{},...e.imageFit?{imageFit:e.imageFit}:{}}:e.kind==="textureProgress"?{...n,kind:"textureProgress",...e.textureId?{textureId:e.textureId}:{},value:Bt(e.value),...e.tint?{tint:Ee(e.tint)}:{},...e.imageFit?{imageFit:e.imageFit}:{},...Ft(e.direction)?{direction:e.direction}:{}}:e.kind==="color"?{...n,kind:"color",color:Ee(e.color)}:e.kind==="progress"?{...n,kind:"progress",value:Bt(e.value??0),color:Ee(e.color),...Ft(e.direction)?{direction:e.direction}:{}}:{...n,kind:"text",text:{value:e.text.value,color:Ee(e.text.color),...e.text.fontFamily?{fontFamily:e.text.fontFamily}:{},...typeof e.text.fontSize=="number"&&Number.isFinite(e.text.fontSize)?{fontSize:e.text.fontSize}:{},...e.text.fontWeight!=null?{fontWeight:String(e.text.fontWeight)}:{},...e.text.strokeColor?{strokeColor:Ee(e.text.strokeColor)}:{},...typeof e.text.strokeWidth=="number"&&Number.isFinite(e.text.strokeWidth)?{strokeWidth:e.text.strokeWidth}:{},...e.text.align==="left"||e.text.align==="center"||e.text.align==="right"?{align:e.text.align}:{},...e.text.baseline==="top"||e.text.baseline==="middle"||e.text.baseline==="bottom"?{baseline:e.text.baseline}:{}}}}function Tn(e){return{x:e.x,z:e.z,width:e.width,depth:e.depth}}function Ee(e){return{r:e.r,g:e.g,b:e.b,...typeof e.a=="number"?{a:e.a}:{}}}function Ft(e){return typeof e=="string"&&In.has(e)}function Bt(e){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):0}const cr=1,Rn="/__fps_editor/entry-manifest.json",wn="no-cache",Mn="public, max-age=31536000, immutable";function _n(e){return vn({schemaVersion:cr,build:{packageName:ee(e.packageName,"packageName"),version:ee(e.version,"version"),buildId:ee(e.buildId,"buildId"),distHash:ee(e.distHash,"distHash")},entry:{kind:"module",url:dr(e.entryUrl),cache:e.entryCache??"revalidate"},cacheControl:{manifest:wn,immutableResource:Mn}})}function Dn(e){if(!Je(e))throw new Error("Editor entry manifest must be an object.");if(e.schemaVersion!==cr)throw new Error(`Unsupported Editor entry manifest schemaVersion: ${String(e.schemaVersion)}.`);if(!Je(e.build))throw new Error("Editor entry manifest build must be an object.");if(!Je(e.entry))throw new Error("Editor entry manifest entry must be an object.");if(e.entry.kind!=="module")throw new Error("Editor entry manifest entry.kind must be module.");if(e.entry.cache!=="revalidate"&&e.entry.cache!=="immutable")throw new Error("Editor entry manifest entry.cache must be revalidate or immutable.");return _n({packageName:ee(e.build.packageName,"build.packageName"),version:ee(e.build.version,"build.version"),buildId:ee(e.build.buildId,"build.buildId"),distHash:ee(e.build.distHash,"build.distHash"),entryUrl:dr(e.entry.url),entryCache:e.entry.cache})}function Cn(e,t){const r=new URL(e.entry.url,ee(t.baseUrl,"baseUrl"));r.searchParams.set("fps-editor-build",e.build.buildId);const n=t.retryAttempt??1;if(!Number.isInteger(n)||n<1)throw new Error("Editor entry retryAttempt must be a positive integer.");return n>1?r.searchParams.set("fps-editor-entry-retry",String(n)):r.searchParams.delete("fps-editor-entry-retry"),r.href}function vn(e){return Object.freeze({...e,build:Object.freeze({...e.build}),entry:Object.freeze({...e.entry}),cacheControl:Object.freeze({...e.cacheControl})})}function dr(e){const t=ee(e,"entry.url");let r;try{r=new URL(t,"https://fps-editor.invalid/")}catch{throw new Error(`Editor entry manifest entry.url is invalid: ${t}.`)}if(r.protocol!=="http:"&&r.protocol!=="https:")throw new Error(`Editor entry manifest entry.url must use HTTP(S): ${t}.`);return t}function ee(e,t){if(typeof e!="string"||!e.trim())throw new Error(`Editor entry manifest ${t} must be a non-empty string.`);return e.trim()}function Je(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Ln(e){const t=new URL(e.manifestUrl??Rn,e.baseUrl).href,r=e.fetchManifest??On();let n=null,a,i=!1,s=0,d=null;return Object.freeze({load:c=>{if(i)return Promise.resolve(a);if(d)return d;const h=(async()=>{Qe(c);const g=n??await xn({fetchManifest:r,manifestUrl:t,signal:c});Qe(c),n=g;const M=s+1,I=Cn(g,{baseUrl:e.baseUrl,retryAttempt:M});s=M;const O=await e.importModule(I);return Qe(c),a=O,i=!0,O})();return d=h,h.finally(()=>{d===h&&(d=null)}).catch(()=>{}),h},getManifest:()=>n,getImportAttempt:()=>s})}async function xn(e){const t=await e.fetchManifest(e.manifestUrl,{cache:"no-cache",headers:Object.freeze({accept:"application/json"}),...e.signal?{signal:e.signal}:{}});if(!t.ok)throw new Error(`Editor entry manifest request failed with HTTP ${t.status}.`);return Dn(await t.json())}function On(){const e=globalThis.fetch;if(typeof e!="function")throw new Error("Editor entry module loader requires fetchManifest outside a browser.");return e.bind(globalThis)}function Qe(e){if(!e?.aborted)return;const t=new Error("Editor entry module load was aborted.");throw t.name="AbortError",t}function Nn(e={}){const t=e.performance??Fn(),r=e.maxResourceDetails??100,n=e.resourceTimingBufferSize??2e3;if(!Number.isInteger(r)||r<0)throw new Error("Editor entry maxResourceDetails must be a non-negative integer.");if(!Number.isInteger(n)||n<1)throw new Error("Editor entry resourceTimingBufferSize must be a positive integer.");return t.setResourceTimingBufferSize?.(n),Object.freeze({mark(){return Object.freeze({startedAtMs:t.now(),resourceIndex:t.getEntriesByType("resource").length})},measure(a){const i=t.getEntriesByType("resource").slice(a.resourceIndex).flatMap(Gn).filter(u=>e.includeResource?.(u)??!0).map(kn),s={network:0,revalidated:0,cache:0,unknown:0};for(const u of i)s[u.cacheStatus]+=1;const d=i.slice(0,r);return Object.freeze({durationMs:Math.max(0,t.now()-a.startedAtMs),resourceCount:i.length,transferSize:et(i,u=>u.transferSize),encodedBodySize:et(i,u=>u.encodedBodySize),decodedBodySize:et(i,u=>u.decodedBodySize),cacheCounts:Object.freeze(s),resources:Object.freeze(d),truncatedResourceCount:i.length-d.length})}})}function kn(e){const t=be(e.transferSize),r=be(e.encodedBodySize),n=be(e.decodedBodySize);return Object.freeze({name:e.name,initiatorType:e.initiatorType??"",startTimeMs:e.startTime,durationMs:e.duration,transferSize:t,encodedBodySize:r,decodedBodySize:n,cacheStatus:jn({transferSize:t,encodedBodySize:r,decodedBodySize:n})})}function jn(e){return e.transferSize===0?e.encodedBodySize>0||e.decodedBodySize>0?"cache":"unknown":e.encodedBodySize>0&&e.transferSize<e.encodedBodySize?"revalidated":"network"}function Gn(e){if(!e||typeof e!="object"||Array.isArray(e))return[];const t=e;return typeof t.name!="string"||!t.name?[]:!Number.isFinite(t.startTime)||!Number.isFinite(t.duration)?[]:[{name:t.name,initiatorType:typeof t.initiatorType=="string"?t.initiatorType:"",startTime:t.startTime,duration:t.duration,transferSize:be(t.transferSize),encodedBodySize:be(t.encodedBodySize),decodedBodySize:be(t.decodedBodySize)}]}function Fn(){const e=globalThis.performance;if(!e||typeof e!="object")throw new Error("Editor entry performance tracker requires a performance adapter.");const t=e;if(typeof t.now!="function"||typeof t.getEntriesByType!="function")throw new Error("Editor entry performance tracker requires now() and getEntriesByType().");return t}function be(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0?e:0}function et(e,t){return e.reduce((r,n)=>r+t(n),0)}async function Li(e,t){const r=String(e.method??"GET").toUpperCase();if(r==="OPTIONS")return or(204);try{if(r==="GET"){const u=$n(await t.loadConfig?.()),c=u.renderingConfig;Tt(c);const h=Rt(c);return U(200,{ok:!0,...u.response,renderingConfig:Un(c),normalized:h,summary:wt(h)})}if(r!=="POST")return U(405,{ok:!1,error:"method_not_allowed"});const n=e.body??await t.readBody?.(e)??{},a=we(n.renderingConfig);if(!a)return U(400,{ok:!1,error:"missing_rendering_config"});Tt(a);const i=Rt(a),s=wt(i),d=await t.saveConfig?.({body:n,renderingConfig:a,normalized:i,summary:s});return U(200,{ok:!0,...d??{},renderingConfig:a,normalized:i,summary:s})}catch(n){const a=Bn(n),i=zn(n);return U(a?.startsWith("schema.")?400:500,{ok:!1,error:a??(n instanceof Error?n.message:String(n)),...i?{path:i}:{},details:we(n?.details)})}}function Bn(e){const t=e?.code;return typeof t=="string"&&t?t:null}function zn(e){const t=e?.path;return typeof t=="string"&&t?t:null}function we(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}function Un(e){return we(e)??{}}function $n(e){const t=we(e);return t&&Object.prototype.hasOwnProperty.call(t,"renderingConfig")?{renderingConfig:t.renderingConfig,response:we(t.response)??{}}:{renderingConfig:e??{},response:{}}}function zt(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}function Hn(e){const t=e.root??document.body,r=t.ownerDocument,n=e.tooltipDataAttribute??"editorRuntimeDebugTooltip",a=e.tooltipDelayMs??160;let i=e.initialOpen===!0,s=e.language,d=0,u=null,c=0;const h=e.panelMode==="managed",g=r.createElement("div");g.style.cssText=h?["position:relative","display:none","width:100%","max-width:100%","flex-direction:column","align-items:stretch",'font-family:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',"color:#edf2ff","pointer-events:none"].join(";"):["position:fixed",`right:${rt(e.placement?.right??16)}`,`bottom:${rt(e.placement?.bottom??16)}`,`z-index:${e.placement?.zIndex??2147482600}`,"display:none","flex-direction:column","align-items:flex-end",'font-family:system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',"color:#edf2ff","pointer-events:none"].join(";");const M=r.createElement("button");M.type="button",M.textContent=e.toggleLabel,M.style.cssText=["pointer-events:auto",h?"align-self:flex-end":"","height:34px","padding:0 12px","border:1px solid rgba(148, 163, 184, 0.36)","border-radius:7px","background:rgba(15, 23, 42, 0.88)","color:#f8fafc",'font:600 12px system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',"box-shadow:0 10px 26px rgba(0,0,0,0.28)","cursor:pointer"].join(";");const I=r.createElement("section");I.style.cssText=["pointer-events:auto",`width:${h?"100%":rt(e.placement?.width??320)}`,"max-height:min(70vh, 720px)","overflow:auto","box-sizing:border-box","margin-bottom:8px","padding:12px","border:1px solid rgba(148, 163, 184, 0.28)","border-radius:8px","background:rgba(13, 18, 28, 0.94)","box-shadow:0 18px 44px rgba(0,0,0,0.34)","backdrop-filter:blur(8px)","display:none"].join(";");const O=r.createElement("div");O.style.cssText="display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px;";const v=r.createElement("div");v.style.cssText="font-size:13px;font-weight:700;line-height:1.2;";const m=r.createElement("div");m.style.cssText="display:flex;align-items:center;gap:8px;";const A=r.createElement("div");A.style.cssText="font-size:11px;color:#93c5fd;line-height:1.2;";const b=r.createElement("button");b.type="button",b.style.cssText=["height:24px","padding:0 8px","border:1px solid rgba(148, 163, 184, 0.3)","border-radius:6px","background:rgba(30, 41, 59, 0.8)","color:#dbeafe",'font:700 11px system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',"cursor:pointer"].join(";"),m.append(A,b),O.append(v,m);const y=r.createElement("div"),N=r.createElement("div");N.style.cssText="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;";const L=r.createElement("div");L.style.cssText="min-height:16px;margin-top:8px;font-size:11px;color:#94a3b8;",I.append(O,y,N,L),g.append(I,M),t.append(g);const x=r.createElement("div");x.style.cssText=["position:fixed","z-index:2147483601","display:none","max-width:min(280px, calc(100vw - 16px))","box-sizing:border-box","padding:5px 7px","border:1px solid rgba(148, 163, 184, 0.32)","border-radius:5px","background:rgba(15, 23, 42, 0.94)","box-shadow:0 10px 26px rgba(0, 0, 0, 0.3)","color:#dbeafe",'font:700 11px system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',"line-height:1.35","white-space:normal","pointer-events:none"].join(";"),t.append(x);const F={root:t,ownerDocument:r,container:g,panel:I,title:v,modeLabel:A,languageButton:b,toggleButton:M,content:y,actions:N,status:L,get open(){return i},get language(){return s},setOpen(S){i=S,ie(),e.onOpenChange?.(i)},setLanguageChrome(S){s=S.language,v.textContent=S.title,A.textContent=S.modeLabel,b.textContent=S.languageButtonLabel,F.setTooltip(b,S.languageTooltip??""),F.setTooltip(M,S.toggleTooltip??""),S.toggleTooltip&&M.setAttribute("aria-label",S.toggleTooltip)},setToggleActive(S){M.style.background=S?"rgba(29, 78, 216, 0.9)":"rgba(15, 23, 42, 0.88)"},setStatus(S,_={}){L.textContent=S,L.style.color=_.tone==="error"?"#fca5a5":"#94a3b8",d&&r.defaultView?.clearTimeout(d),d=0,!_.sticky&&(d=r.defaultView?.setTimeout(()=>{L.textContent===S&&(L.textContent=""),d=0},1800)??0)},setTooltip(S,_){const Y=_.trim();if(!Y){delete S.dataset[n],S.removeAttribute("title");return}S.dataset[n]=Y,S.removeAttribute("title")},hideTooltip:H,dispose(){d&&r.defaultView?.clearTimeout(d),V(),g.removeEventListener("pointerover",$),g.removeEventListener("pointerout",q),g.removeEventListener("focusin",te),g.removeEventListener("focusout",H),g.removeEventListener("click",H),g.remove(),x.remove()}};return M.addEventListener("click",()=>F.setOpen(!i)),g.addEventListener("pointerover",$),g.addEventListener("pointerout",q),g.addEventListener("focusin",te),g.addEventListener("focusout",H),g.addEventListener("click",H),F.setLanguageChrome({title:e.title,modeLabel:e.modeLabel,languageButtonLabel:e.languageButtonLabel,toggleTooltip:e.toggleTooltip,languageTooltip:e.languageTooltip,language:s}),ie(),F;function ie(){g.style.display="flex",I.style.display=i?"block":"none",F.setToggleActive(i),i||H()}function $(S){const _=oe(S.target);!_||_===u||re(_)}function q(S){if(!u)return;const _=S.relatedTarget instanceof Node?S.relatedTarget:null;_&&u.contains(_)||H()}function te(S){const _=oe(S.target);_&&re(_)}function oe(S){return S instanceof HTMLElement?S.closest(`[data-${Yn(n)}]`):null}function re(S){const _=S.dataset[n]?.trim();if(!_){H();return}V(),u=S,c=r.defaultView?.setTimeout(()=>{c=0,u===S&&me(S,_)},a)??0}function me(S,_){x.textContent=_,x.style.display="",x.style.left="0px",x.style.top="0px";const Y=S.getBoundingClientRect(),f=x.getBoundingClientRect(),E=r.defaultView?.innerWidth??r.documentElement.clientWidth,R=r.defaultView?.innerHeight??r.documentElement.clientHeight,B=Math.max(8,Math.min(Y.left+(Y.width-f.width)/2,E-f.width-8)),k=Y.bottom+7,T=Y.top-f.height-7,j=k+f.height<=R-8?k:Math.max(8,T);x.style.left=`${B}px`,x.style.top=`${j}px`}function H(){V(),u=null,x.style.display="none",x.textContent=""}function V(){c&&(r.defaultView?.clearTimeout(c),c=0)}}function Ut(e){const t=e.createElement("button");return t.type="button",t.style.cssText=["height:28px","border:1px solid rgba(148, 163, 184, 0.32)","border-radius:6px","background:rgba(30, 41, 59, 0.86)","color:#f8fafc",'font:600 11px system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',"cursor:pointer"].join(";"),t}function z(e){const t=e.createElement("label");return t.style.cssText="font-size:11px;color:#cbd5e1;",t}function Oe(e){const t=e.createElement("div");return t.style.cssText="display:grid;grid-template-columns:1fr 108px;gap:7px 8px;align-items:center;",t}function Ne(e){const t=e.createElement("div");return t.style.cssText="display:flex;flex-direction:column;gap:7px;",t}function ke(e){const t=e.createElement("div");return t.style.cssText="font-size:11px;font-weight:800;color:#e2e8f0;letter-spacing:0;text-transform:none;",t}function pe(e,t={}){const r=e.createElement("input");return r.type="number",t.step!=null&&(r.step=String(t.step)),t.min!=null&&(r.min=String(t.min)),t.max!=null&&(r.max=String(t.max)),r.inputMode="decimal",r.style.cssText=lr(),r}function Vn(e,t={}){const r=e.createElement("input");return r.type="range",t.step!=null&&(r.step=String(t.step)),t.min!=null&&(r.min=String(t.min)),t.max!=null&&(r.max=String(t.max)),r.style.cssText="width:100%;min-width:0;height:18px;margin:0;accent-color:#3b82f6;cursor:pointer;",r}function tt(e){const t=e.createElement("input");return t.type="color",t.style.cssText=[lr(),"padding:2px 4px"].join(";"),t}function $t(e){const t=e.createElement("input");return t.type="checkbox",t.style.cssText="justify-self:start;width:16px;height:16px;accent-color:#3b82f6;",t}function Ht(e){const t=e.createElement("div");return t.style.cssText=["min-height:26px","box-sizing:border-box","padding:5px 6px","border:1px solid rgba(148, 163, 184, 0.2)","border-radius:6px","background:rgba(15, 23, 42, 0.58)","color:#dbeafe","font:11px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace","line-height:1.35","white-space:normal"].join(";"),t}function lr(e="12px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace"){return["width:108px","height:26px","min-width:0","box-sizing:border-box","border:1px solid rgba(148, 163, 184, 0.34)","border-radius:6px","background:rgba(15, 23, 42, 0.84)","color:#f8fafc","padding:0 6px",`font:${e}`].join(";")}function rt(e){return typeof e=="number"?`${e}px`:e}function Yn(e){return e.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}function xi(e){const t=e.root??document.body,r=t.ownerDocument;let n=na(r.defaultView),a=!1,i=!1,s=0,d=null,u=null;const c=Hn({root:t,toggleLabel:"Light",title:W().title,modeLabel:W().runtime,languageButtonLabel:W().languageButton,toggleTooltip:qe().toggleTitle,languageTooltip:qe().languageButton,tooltipDataAttribute:"lightingDebugTooltip",initialOpen:ra(r.defaultView),language:n,panelMode:e.panelMode,placement:{right:100,width:330,...e.placement},onOpenChange:o=>{aa(r.defaultView,o),o&&gt(0)}}),h=Ne(r),g=ke(r),M=Oe(r),I=$t(r),O=pe(r,ce("environmentIntensity")),v=tt(r),m=tt(r);M.append(z(r),I,z(r),O,z(r),v,z(r),m),h.append(g,M);const A=Ne(r),b=ke(r),y=Oe(r),N=pe(r,ce("iblIntensity")),L=pe(r,ce("iblRotationY"));y.append(z(r),N,z(r),L),A.append(b,y);const x=Ne(r),F=ke(r),ie=Oe(r),$=$t(r),q=pe(r,ce("directionalIntensity")),te=pe(r,ce("directionalHorizontalAngle")),oe=pe(r,ce("directionalElevationAngle")),re=tt(r),me=Ht(r),H=Ht(r);ie.append(z(r),$,z(r),q,z(r),te,z(r),oe,z(r),re,z(r),me,z(r),H),x.append(F,ie);const V=Ne(r),S=ke(r),_=Oe(r),Y=o=>{const l=r.createElement("div");l.style.cssText="display:grid;grid-template-columns:minmax(54px,1fr) 36px;align-items:center;gap:6px;min-width:0;";const p=Vn(r,ce(o)),P=r.createElement("output");return P.style.cssText="font:11px ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;color:#dbeafe;text-align:right;font-variant-numeric:tabular-nums;",p.dataset.lightingDebugOutputId=o,P.dataset.lightingDebugOutput=o,p.addEventListener("input",()=>{P.value=se(Number(p.value))}),l.append(p,P),{input:p,wrapper:l}},f=Y("shadowStrength"),E=Y("shadowSoftness");_.append(z(r),f.wrapper,z(r),E.wrapper),V.append(S,_),c.content.style.cssText="display:flex;flex-direction:column;gap:10px;",c.content.append(h,A,x,V);const R=Ut(r),B=Ut(r);c.actions.append(R,B);const k=ie.children,T={environmentEnabled:M.children[0],environmentIntensity:M.children[2],environmentDiffuseColor:M.children[4],environmentGroundColor:M.children[6],iblIntensity:y.children[0],iblRotationY:y.children[2],directionalEnabled:k[0],directionalIntensity:k[2],directionalHorizontalAngle:k[4],directionalElevationAngle:k[6],directionalDiffuseColor:k[8],rawDirection:k[10],shadowReadout:k[12],shadowStrength:_.children[0],shadowSoftness:_.children[2]},j=new Map([["environmentIntensity",O],["iblIntensity",N],["iblRotationY",L],["directionalIntensity",q],["directionalHorizontalAngle",te],["directionalElevationAngle",oe],["shadowStrength",f.input],["shadowSoftness",E.input]]),ae=new Map([["environmentDiffuseColor",v],["environmentGroundColor",m],["directionalDiffuseColor",re]]),mr=[I,$];I.addEventListener("change",()=>{De({kind:"enabled",target:"environment"})}),$.addEventListener("change",()=>{De({kind:"enabled",target:"directional"})});for(const[o,l]of j)l.addEventListener("input",()=>{l.type==="number"&&We(l.value)===null||De({kind:"number",field:o})}),l.type==="number"&&(l.addEventListener("blur",()=>St(o)),l.addEventListener("keydown",p=>{p.key==="Enter"?(p.preventDefault(),St(o),l.blur()):p.key==="Escape"&&(p.preventDefault(),ht(o),l.blur())}));for(const[o,l]of ae)l.addEventListener("input",()=>De({kind:"color",field:o}));return c.languageButton.addEventListener("click",()=>{n=n==="zh"?"en":"zh",ia(r.defaultView,n),bt()}),R.addEventListener("click",()=>{!d||a||(Et(d),Ve(d),c.setStatus(W().resetStatus))}),B.addEventListener("click",()=>{const o=u??e.readSnapshot();if(!o||a||!Be(o)){c.setStatus(W().missingBindingStatus,{tone:"error"});return}a=!0,He(o),c.setStatus(W().savingStatus,{sticky:!0}),Promise.resolve(e.saveSnapshot(o)).then(()=>{c.setStatus(W().savedStatus,{sticky:!0})}).catch(l=>{console.error("[EditorRuntimeLightingDebugPanel] Save lighting failed",l),a=!1,c.setStatus(qn(l,W().saveFailed),{sticky:!0,tone:"error"}),He(u)})}),bt(),mt(),{dispose(){i=!0,s&&r.defaultView?.clearTimeout(s),c.dispose()}};function mt(){if(i)return;s=0;const o=e.readSnapshot();o?(d||(d=de(o)),u=de(o)):(d=null,u=null),He(o),gt(c.open?250:1e3)}function gt(o){i||(s&&r.defaultView?.clearTimeout(s),s=r.defaultView?.setTimeout(mt,o)??0)}function He(o){if(c.container.style.display=o?"flex":"none",!o){c.hideTooltip();return}for(const p of[...j.values(),...ae.values(),...mr])p.disabled=a;const l=!!o.shadow.shadowMap?.appearance;A.style.display=o.environmentTexture?"flex":"none",V.style.display=l?"flex":"none",f.input.disabled=a||!l,E.input.disabled=a||!l,R.disabled=!d||a,B.disabled=a||!Be(o),B.style.opacity=B.disabled?"0.68":"1",B.style.cursor=B.disabled?"not-allowed":"pointer",Sr()||Et(o),Ye(o),!Be(o)&&!a&&c.setStatus(W().missingBindingStatus,{tone:"error"})}function De(o){if(a)return;const l=u??e.readSnapshot();if(!l)return;const p=pt(l,o);Ve(p),gr(p)}function Ve(o){e.applySnapshot(o),u=de(o),Ye(o)}function Et(o){I.checked=o.environment.enabled,$.checked=o.directional.enabled,K("environmentIntensity",o.environment.light.intensity),Ce("environmentDiffuseColor",o.environment.light.diffuseColor??{r:1,g:1,b:1}),Ce("environmentGroundColor",o.environment.light.groundColor??{r:.48,g:.52,b:.62}),o.environmentTexture&&(K("iblIntensity",o.environmentTexture.iblIntensity),K("iblRotationY",o.environmentTexture.iblRotationY));const l=at(o.directional.light.direction);K("directionalIntensity",o.directional.light.intensity),K("directionalHorizontalAngle",l.horizontalAngleDeg),K("directionalElevationAngle",l.elevationAngleDeg),Ce("directionalDiffuseColor",o.directional.light.diffuseColor??{r:1,g:1,b:1}),o.shadow.shadowMap?.appearance&&(K("shadowStrength",o.shadow.shadowMap.appearance.strength),K("shadowSoftness",o.shadow.shadowMap.appearance.softness))}function gr(o){const l=zt(r);l!==I&&(I.checked=o.environment.enabled),l!==$&&($.checked=o.directional.enabled);for(const p of j.keys()){const P=j.get(p);!P||l===P||K(p,Pe(o,p))}for(const p of ae.keys()){const P=ae.get(p);!P||l===P||Ce(p,Ct(o,p))}}function pt(o,l){if(l.kind==="enabled"){const P=l.target==="environment"?I.checked:$.checked;return da(o,l.target,P)}if(l.kind==="color"){const P=Ct(o,l.field);return ca(o,l.field,pr(l.field,P))}const p=Pe(o,l.field);return sa(o,l.field,Er(l.field,p))}function K(o,l){const p=j.get(o);if(!p)return;p.value=String(Vr(l));const P=c.container.querySelector(`output[data-lighting-debug-output="${o}"]`);P&&(P.value=se(l))}function Er(o,l){const p=j.get(o);if(!p)return l;const P=We(p.value);if(P===null)return l;const ve=ce(o),Le=ve.min??Number.NEGATIVE_INFINITY,hr=ve.max??Number.POSITIVE_INFINITY;return Math.min(hr,Math.max(Le,P))}function St(o){if(a)return;const l=u??e.readSnapshot();if(!l)return;const p=j.get(o);if(!p||We(p.value)===null){ht(o);return}const P=pt(l,{kind:"number",field:o}),ve=Pe(l,o),Le=Pe(P,o);Math.abs(Le-ve)>1e-6&&Ve(P),K(o,Le)}function ht(o){const l=u??e.readSnapshot();l&&K(o,Pe(l,o))}function Ce(o,l){const p=ae.get(o);p&&(p.value=Yr(l))}function pr(o,l){const p=ae.get(o);return p?qr(p.value,l):l}function Ye(o){const l=o.directional.light.direction;me.textContent=`x ${se(l.x)} y ${se(l.y)} z ${se(l.z)}`;const p=ta(o.shadow.mode,W()),P=o.shadow.shadowMap;H.textContent=o.shadow.mode==="shadow-map"&&P?[`${p} / ${P.backend??"pending"}`,...P.appearance?[`strength ${se(P.appearance.strength)} softness ${se(P.appearance.softness)}`]:[],`depth S ${P.staticRefreshCount??"-"} D ${P.dynamicRefreshCount??"-"} C ${P.compositeRefreshCount??"-"}`,P.lastRefreshReasons[P.lastRefreshReasons.length-1]??"ready"].join(`
3
+ `):`${p}
4
+ shadow length x${se(o.shadow.projectedLengthMultiplier)}`}function bt(){const o=W(),l=qe();c.setLanguageChrome({title:o.title,modeLabel:o.runtime,languageButtonLabel:o.languageButton,toggleTooltip:l.toggleTitle,languageTooltip:l.languageButton,language:n}),g.textContent=o.environmentSection,b.textContent=o.environmentTextureSection,F.textContent=o.directionalSection,S.textContent=o.shadowSection,T.environmentEnabled.textContent=o.enabled,T.environmentIntensity.textContent=o.intensity,T.environmentDiffuseColor.textContent=o.skyLightColor,T.environmentGroundColor.textContent=o.groundColor,T.iblIntensity.textContent=o.iblIntensity,T.iblRotationY.textContent=o.iblRotationY,T.directionalEnabled.textContent=o.enabled,T.directionalIntensity.textContent=o.intensity,T.directionalHorizontalAngle.textContent=o.horizontalAngle,T.directionalElevationAngle.textContent=o.elevationAngle,T.directionalDiffuseColor.textContent=o.lightColor,T.rawDirection.textContent=o.rawDirection,T.shadowReadout.textContent=o.shadowReadout,T.shadowStrength.textContent=o.shadowStrength,T.shadowSoftness.textContent=o.shadowSoftness;for(const[p,P]of j)P.setAttribute("aria-label",T[p].textContent??p);c.setTooltip(I,l.enabled),c.setTooltip(T.environmentEnabled,l.enabled),c.setTooltip(T.environmentIntensity,l.environmentIntensity),c.setTooltip(O,l.environmentIntensity),c.setTooltip(T.environmentDiffuseColor,l.skyLightColor),c.setTooltip(v,l.skyLightColor),c.setTooltip(T.environmentGroundColor,l.groundColor),c.setTooltip(m,l.groundColor),c.setTooltip(T.iblIntensity,l.iblIntensity),c.setTooltip(N,l.iblIntensity),c.setTooltip(T.iblRotationY,l.iblRotationY),c.setTooltip(L,l.iblRotationY),c.setTooltip($,l.enabled),c.setTooltip(T.directionalEnabled,l.enabled),c.setTooltip(T.directionalIntensity,l.directionalIntensity),c.setTooltip(q,l.directionalIntensity),c.setTooltip(T.directionalHorizontalAngle,l.horizontalAngle),c.setTooltip(te,l.horizontalAngle),c.setTooltip(T.directionalElevationAngle,l.elevationAngle),c.setTooltip(oe,l.elevationAngle),c.setTooltip(T.directionalDiffuseColor,l.lightColor),c.setTooltip(re,l.lightColor),c.setTooltip(T.rawDirection,l.rawDirection),c.setTooltip(me,l.rawDirection),c.setTooltip(T.shadowReadout,l.shadowReadout),c.setTooltip(H,l.shadowReadout),c.setTooltip(T.shadowStrength,l.shadowStrength),c.setTooltip(f.input,l.shadowStrength),c.setTooltip(T.shadowSoftness,l.shadowSoftness),c.setTooltip(E.input,l.shadowSoftness),R.textContent=o.reset,c.setTooltip(R,l.reset),B.textContent=o.save,c.setTooltip(B,l.save),u&&Ye(u)}function Sr(){const o=zt(r);return o===c.languageButton||o===I||o===$||[...j.values()].includes(o)||[...ae.values()].includes(o)}function W(){return Qr(n)}function qe(){return ea(n)}}function qn(e,t){const r=e instanceof Error?e.message:String(e??"");return r?`${t}: ${r}`:t}const Kn=Object.freeze({preparingEditor:"正在准备编辑器…",enterEditor:"进入编辑场景",checkingEditor:"正在检查编辑环境…",enteringEditor:"正在进入编辑界面…",restoringPlayMode:"正在恢复游戏…",retryEditor:"重试进入编辑器",reloadPage:"刷新页面恢复"});function Oi(e){const t=e.browser?.window??window,r=e.browser?.document??t.document,n=e.browser?.canvasId??"renderCanvas",a=e.initialMode??"play",i=e.initialModeIntent??"fresh",s=Object.freeze({...Kn,...e.browser?.entryContent}),d=(f,E)=>{e.reportError?e.reportError(f,E):console.error(`[FpsGameEditor] ${f}`,E)},u=Ln({baseUrl:e.editorModule.baseUrl,...e.editorModule.manifestUrl?{manifestUrl:e.editorModule.manifestUrl}:{},importModule:e.editorModule.importModule}),c=Nn({performance:t.performance}),h=new Set,g=new Set,M=new WeakMap;let I=null,O=null,v=je(),m=null,A=null,b=!1,y=!1,N=null,L;const x=()=>{if(y)return;const f=t;f.__FPS_EDITOR_ENTRY_DIAGNOSTICS__=v},F=()=>Object.freeze({entry:L.getState()}),ie=()=>{if(y)return;const f=F();for(const E of[...h])try{E(f)}catch(R){d("editor entry listener failed",R)}},$=f=>{if(f.phase==="preparing"){m=c.mark(),v=je({...v,enter:null}),x();return}if(!(f.phase==="editing"||f.phase==="failed"&&f.failure?.phase!=="warmup")||!m)return;const R=m;m=null,v=je({...v,enter:c.measure(R)}),x()},q=f=>{const E=M.get(f);if(E)return E;const R=Promise.resolve().then(()=>f.switcher.dispose());return M.set(f,R),R.finally(()=>{M.get(f)===R&&M.delete(f)}).catch(()=>{}),R},te=async()=>{const f=[];for(const E of[...g])try{await q(E),g.delete(E)}catch(R){f.push(R)}Ge(f,"Retired Local Editor entry cleanup failed.")},oe=f=>{I===f&&(I=null),g.add(f),A!==null&&t.clearTimeout(A),A=t.setTimeout(()=>{if(A=null,!y){try{L.reset()}catch(E){d("editor entry reset after play-mode return failed",E);return}L.start().catch(E=>d("editor warmup after play-mode return failed",E))}},0)},re=f=>{if(y||f.aborted)return Promise.reject(Fe());if(I)return Promise.resolve(I);if(O)return O;const E=te().then(async()=>{const R=c.mark();let B;try{B=await u.load(f)}catch(j){throw Wn(j)?new Ia("开发服务已更新,当前预览已失效,请刷新页面。"):j}finally{v=je({build:u.getManifest()?.build??null,editorModuleImportAttempt:u.getImportAttempt(),editorModuleWarmup:c.measure(R),enter:v.enter}),x()}if(y||f.aborted)throw Fe();const k={switcher:void 0,editorModeEntryAttempted:!1,playModeEntryCompleted:!1},T=await e.editorModule.mount(B,{projectMode:{async enterEditorMode(j){k.editorModeEntryAttempted=!0;const ae=Zn(r,n);try{await e.projectMode.enterEditorMode(j)}finally{Jn(r,ae)}},async enterPlayMode(j){await e.projectMode.enterPlayMode(j),k.playModeEntryCompleted=!0,oe(k)}},getCanvas:()=>ur(r,n)},f);if(k.switcher=T,y||f.aborted)throw await q(k),Fe();return I=k,k});return O=E,E.finally(()=>{O===E&&(O=null)}).catch(()=>{}),E};L=Aa({backend:{warmup:f=>re(f).then(()=>{}),prepare:f=>re(f.signal),async commit(f,E){if(f!==I)throw new Error("Prepared Local Editor switcher is no longer current.");if(await f.switcher.enterEditor(),E.signal.aborted)throw Fe()},async rollback(f){const E=[];try{await q(f),g.delete(f),I===f&&(I=null)}catch(R){E.push(R)}if(f.editorModeEntryAttempted&&!f.playModeEntryCompleted)try{await e.projectMode.enterPlayMode({reason:"editor-entry-rollback"}),f.playModeEntryCompleted=!0}catch(R){E.push(R)}Ge(E,"Local Editor entry rollback failed.")},async dispose(){const f=O;await Promise.allSettled(f?[f]:[]);const E=[];if(I){const R=I;try{await q(R),I===R&&(I=null)}catch(B){E.push(B)}}try{await te()}catch(R){E.push(R)}Ge(E,"Local Editor entry cleanup failed.")}},reportFailure:({failure:f,cause:E,rollbackCause:R})=>{d(`editor entry ${f.code}`,R===void 0?E:fr(f.message,[E,R]))},reportListenerError:f=>d("editor entry listener failed",f)});const H=L.subscribe(f=>{$(f),ie()});x();const V={start:()=>L.start(),enterEditor:()=>L.enter(),retryEditorEntry:()=>L.retry(),getEntryState:F,getDiagnostics:()=>v,subscribe(f){return y?()=>{}:(h.add(f),f(F()),()=>h.delete(f))},dispose(){if(N)return N;y=!0;const f=(async()=>{t.removeEventListener("pagehide",Y),r.removeEventListener("DOMContentLoaded",_),A!==null&&(t.clearTimeout(A),A=null),S(),H(),h.clear(),delete t.__FPS_EDITOR_ENTRY_DIAGNOSTICS__;const E=[];try{await L.dispose()}catch(R){E.push(R)}E.push(...await Kr()),Ge(E,"Local Editor Entry cleanup failed.")})();return N=f,f.catch(()=>{N===f&&(N=null)}),f}},S=e.browser?.showEntryButton===!1?()=>{}:Xn(V,t,r,e.browser?.root,s,d),_=()=>{if(y||b)return;b=!0,r.removeEventListener("DOMContentLoaded",_),(a==="edit"&&i==="fresh"?V.enterEditor():V.start()).catch(E=>d("local editor entry start failed",E))},Y=()=>{V.dispose().catch(f=>d("local editor entry dispose failed",f))};return t.addEventListener("pagehide",Y),e.browser?.autoStart!==!1&&(r.readyState==="loading"?(r.addEventListener("DOMContentLoaded",_,{once:!0}),t.queueMicrotask(_)):_()),V}function Wn(e){const t=e instanceof Error?e.message:String(e);return/failed to fetch dynamically imported module|error loading dynamically imported module|importing a module script failed/i.test(t)}function Xn(e,t,r,n,a,i){r.getElementById("fps-game-editor-entry-surface")?.remove(),r.getElementById("fps-game-editor-entry")?.remove();const s=r.createElement("div");s.id="fps-game-editor-entry-surface";const d=r.createElement("p");d.style.cssText=["margin:0 0 14px","color:var(--fps-editor-panel-fg,#edf0f2)",'font:500 14px/1.6 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif'].join(";");const u=r.createElement("button");u.id="fps-game-editor-entry",u.type="button";const c=["position:fixed","top:14px","right:16px","z-index:2147482604","height:32px","min-width:104px","padding:0 12px","border:1px solid #aee7c2","border-radius:999px","background:#e1f8e8","color:#2f6f52",'font:800 12px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif',"box-shadow:0 8px 20px rgba(15,23,42,.18)","white-space:nowrap","user-select:none"].join(";"),h=["position:static","height:36px","min-width:132px","padding:0 14px","border:1px solid var(--fps-editor-border-strong,#59656d)","border-radius:4px","background:var(--fps-editor-field-bg,#252b2f)","color:var(--fps-editor-panel-fg,#f4f6f7)",'font:700 13px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif',"box-shadow:none","white-space:nowrap","user-select:none"].join(";");u.style.cssText=c,s.append(d,u);let g=Vt(e.getEntryState(),a);const M=v=>{g=Vt(v,a);const m=g.action==="reload";u.disabled=g.disabled,u.textContent=g.label,u.title=g.title,u.style.cssText=m?h:c,u.style.opacity=g.disabled?".72":"1",u.style.cursor=g.disabled?"default":"pointer",d.hidden=!m||n!==void 0,d.textContent=v.entry.failure?.message??a.reloadPage,s.setAttribute("role",m?"alert":"presentation"),s.style.cssText=m&&n===void 0?["position:fixed","left:50%","top:50%","transform:translate(-50%,-50%)","z-index:2147482604","width:min(420px,calc(100vw - 32px))","padding:20px","border:1px solid var(--fps-editor-danger-border,#714040)","border-radius:6px","background:var(--fps-editor-panel-bg,#171b1e)","box-shadow:0 18px 50px rgba(0,0,0,.42)"].join(";"):"",g.hidden?s.remove():s.isConnected||(n??r.body)?.append(s)},I=e.subscribe(M),O=()=>{(g.action==="enter"?e.enterEditor():g.action==="retry"?e.retryEditorEntry():g.action==="reload"?Promise.resolve(t.location.reload()):Promise.resolve()).catch(m=>i("editor entry action failed",m))};return u.addEventListener("click",O),()=>{I(),u.removeEventListener("click",O),s.remove()}}function Vt(e,t){switch(e.entry.phase){case"idle":case"warming":return ne("none",!0,!1,t.preparingEditor);case"ready":return ne("enter",!1,!1,t.enterEditor);case"preparing":return ne("none",!0,!1,t.checkingEditor);case"committing":return ne("none",!0,!1,t.enteringEditor);case"rolling-back":return ne("none",!0,!1,t.restoringPlayMode);case"failed":return e.entry.failure?.recoverable?ne("retry",!1,!1,t.retryEditor,e.entry.failure.message):ne("reload",!1,!1,t.reloadPage,e.entry.failure?.message);case"editing":case"disposed":return ne("none",!0,!0,t.enterEditor)}return ne("none",!0,!0,t.enterEditor)}function ne(e,t,r,n,a=n){return Object.freeze({action:e,disabled:t,hidden:r,label:n,title:a})}function je(e={}){return Object.freeze({build:e.build??null,editorModuleImportAttempt:e.editorModuleImportAttempt??0,editorModuleWarmup:e.editorModuleWarmup??null,enter:e.enter??null})}function Zn(e,t){const r=ur(e,t);return r?.parentNode?{canvas:r,parent:r.parentNode,nextSibling:r.nextSibling}:null}function Jn(e,t){if(!t||t.canvas.isConnected)return;const r=t.parent.isConnected?t.parent:e.body,n=t.nextSibling?.parentNode===r?t.nextSibling:null;r.insertBefore(t.canvas,n)}function ur(e,t){const r=e.getElementById(t),n=e.defaultView?.HTMLCanvasElement;return n?r instanceof n?r:null:r?.tagName==="CANVAS"?r:null}function fr(e,t){return Object.assign(new Error(e),{errors:[...t]})}function Ge(e,t){if(e.length===1)throw e[0];if(e.length>1)throw fr(t,e)}function Fe(){return Object.assign(new Error("Local Editor Entry was disposed."),{name:"AbortError"})}export{ji as CAMERA_LANGUAGE_OPTIONS,Gi as DEFAULT_EDITOR_SCENE_ARTIST_MATERIAL_ASSET_ID,Fi as DEFAULT_EDITOR_SCENE_CAMERA,Bi as DEFAULT_EDITOR_SCENE_ENVIRONMENT_LIGHT,zi as DEFAULT_EDITOR_SCENE_SUN_LIGHT,Ui as DEFAULT_EDITOR_SCENE_TRANSFORM_TYPE_OPTIONS,$i as DEFAULT_PBR_EDITOR_SCENE_MATERIAL_ASSET,Hi as DEFAULT_PBR_EDITOR_SCENE_MATERIAL_ASSET_GUID,Vi as DEFAULT_PBR_EDITOR_SCENE_MATERIAL_ASSET_ID,Yi as DEFAULT_READONLY_EDITOR_SCENE_MATERIAL_ASSET_IDS,qi as DEFAULT_STANDARD_EDITOR_SCENE_MATERIAL_ASSET,Ki as DEFAULT_STANDARD_EDITOR_SCENE_MATERIAL_ASSET_GUID,Wi as DEFAULT_STANDARD_EDITOR_SCENE_MATERIAL_ASSET_ID,Xi as EDITOR_SCENE_BUILTIN_MATERIAL_SHADER_DEFINITIONS,Zi as EDITOR_SCENE_BUILTIN_MATERIAL_SHADER_DEFINITION_REGISTRY,Ji as EDITOR_SCENE_DEFAULT_DIRECTIONAL_LIGHT_DIRECTION,Qi as EDITOR_SCENE_DUPLICATE_MATERIAL_ASSET_VALUE_PREFIX,eo as EDITOR_SCENE_ENVIRONMENT_LIGHT_ID,to as EDITOR_SCENE_FIELD_SCHEMA,ro as EDITOR_SCENE_LARGE_SELECTION_LIGHTWEIGHT_INSPECTOR_THRESHOLD,Jt as EDITOR_SCENE_LIGHTING_DEBUG_LANGUAGE_STORAGE_KEY,Jr as EDITOR_SCENE_LIGHTING_DEBUG_NUMBER_FIELDS,Zt as EDITOR_SCENE_LIGHTING_DEBUG_STORAGE_KEY,Mt as EDITOR_SCENE_LIGHTING_DEBUG_TEXT,_t as EDITOR_SCENE_LIGHTING_DEBUG_TOOLTIPS,ao as EDITOR_SCENE_LIGHT_DIRECTION_ELEVATION_ANGLE_PATH,yr as EDITOR_SCENE_LIGHT_DIRECTION_ELEVATION_MAX_DEG,Pr as EDITOR_SCENE_LIGHT_DIRECTION_ELEVATION_MIN_DEG,no as EDITOR_SCENE_LIGHT_DIRECTION_HORIZONTAL_ANGLE_PATH,io as EDITOR_SCENE_LIGHT_DIRECTION_HORIZONTAL_MAX_DEG,oo as EDITOR_SCENE_LIGHT_DIRECTION_HORIZONTAL_MIN_DEG,so as EDITOR_SCENE_LIGHT_INSPECTOR_LANGUAGE_OPTIONS,co as EDITOR_SCENE_MAIN_CAMERA_ID,lo as EDITOR_SCENE_MATERIAL_ASSET_FIELD_PATH_PREFIX,uo as EDITOR_SCENE_MATERIAL_ASSET_ID_PREFIX,fo as EDITOR_SCENE_PREFAB_COMPOSITION_VERSION,mo as EDITOR_SCENE_PREFAB_DEFAULT_MODEL_NODE_ID,go as EDITOR_SCENE_PREFAB_DEFAULT_ROOT_NODE_ID,Eo as EDITOR_SCENE_RENDERING_PROFILE_ALLOWED_PATCH_PATHS,po as EDITOR_SCENE_ROOT_ID,So as EDITOR_SCENE_ROOT_TRANSFORM,ho as EDITOR_SCENE_RUNTIME_COLOR_SLOTS,bo as EDITOR_SCENE_RUNTIME_INTENSITY_SLOTS,yo as EDITOR_SCENE_RUNTIME_METALLIC_ROUGHNESS_SLOTS,Po as EDITOR_SCENE_RUNTIME_TEXTURE_SLOTS,Io as EDITOR_SCENE_SCHEMA_VERSION,br as EDITOR_SCENE_SOURCE_ID,yt as EDITOR_SCENE_SOURCE_TYPE,Ao as EDITOR_SCENE_STATIC_SHADOW_BAKE_ACTION_PATH,To as EDITOR_SCENE_SUN_LIGHT_ID,Ro as FPS_GAME_EDITOR_GROUND_DECAL_FEATURE_ID,wo as FPS_GAME_EDITOR_GROUND_DECAL_PLUGIN_ID,Mo as FPS_GAME_EDITOR_GROUND_DECAL_PLUGIN_PACKAGE,Wt as FPS_GAME_EDITOR_OBJECT_CREATE_FROM_FEATURE_COMMAND_ID,_o as FPS_GAME_EDITOR_SCENE_OBJECTS_CREATE_MAX_ITEMS,Do as MATERIAL_LANGUAGE_OPTIONS,Co as PLAYABLE_AUTHORING_API_BASE,vo as PLAYABLE_BABYLON_DEFAULT_OUTLINE_OVERRIDE,mi as PLAYABLE_EDITOR_ASSET_CATALOG_KINDS,Ti as PLAYABLE_EDITOR_BUNDLED_ALIAS_PACKAGE_IDS,le as PLAYABLE_EDITOR_COMMAND_NAME,va as PLAYABLE_EDITOR_DEFAULT_EXTENSIONS,Mn as PLAYABLE_EDITOR_ENTRY_IMMUTABLE_CACHE_CONTROL,wn as PLAYABLE_EDITOR_ENTRY_MANIFEST_CACHE_CONTROL,Rn as PLAYABLE_EDITOR_ENTRY_MANIFEST_PATH,cr as PLAYABLE_EDITOR_ENTRY_MANIFEST_SCHEMA_VERSION,Ca as PLAYABLE_EDITOR_ENVIRONMENT_TEXTURE_EXTENSIONS,X as PLAYABLE_EDITOR_EVENT_NAME,rr as PLAYABLE_EDITOR_IMAGE_EXTENSIONS,ct as PLAYABLE_EDITOR_MODEL_EXTENSIONS,Ai as PLAYABLE_EDITOR_PACKAGE_IDS,_e as PLAYABLE_EDITOR_PACKAGE_RESOLUTION_CONTRACT,Pi as PLAYABLE_EDITOR_POST_MESSAGE,Ri as PLAYABLE_EDITOR_PREBUNDLE_PACKAGE_IDS,Lo as PLAYABLE_EDITOR_SCENE_COMPILER_ID,xo as PLAYABLE_EDITOR_SCENE_COMPILER_VERSION,Oo as PLAYABLE_EDITOR_SCENE_OUTLINE_DEFAULT_DISABLED_REASON,lt as PLAYABLE_EDITOR_SOUND_EXTENSIONS,dt as PLAYABLE_EDITOR_TEXTURE_EXTENSIONS,No as PLAYABLE_FORGE_PLAY_BRIDGE_SOURCE,ko as PLAYABLE_FORGE_PLAY_COMMAND,jo as PLAYABLE_FORGE_PLAY_COMMAND_ALIASES,Go as PLAYABLE_FORGE_PLAY_EVENT,Fo as PLAYABLE_FORGE_PLAY_EVENT_ALIASES,Bo as PLAYABLE_FORGE_PLAY_HISTORY_COMMANDS,zo as PLAYABLE_FORGE_PLAY_POST_MESSAGE,Uo as PLAYABLE_FORGE_PLAY_PROJECT_ASSET_COMMANDS,$o as PLAYABLE_GROUND_DECAL_TEXTURE_TINT,Ho as PLAYABLE_LOCAL_EDITOR_HOST_MANIFEST_VERSION,Vo as PLAYABLE_LOCAL_EDITOR_HOST_REQUIRED_CONTRACT,Yo as PLAYABLE_LOCAL_EDITOR_SAVE_CANCELLATION_CODE,qo as PLAYABLE_PROJECT_ASSET_IMPORT_MAX_REQUEST_BYTES,Ia as PlayableEditorEntryReloadRequiredError,fe as PlayableEditorManagedAssetError,Ko as SCENE_MAIN_SOURCE_RENDERING_COMPANION_CONFIG_KEY,Wo as SCENE_MAIN_SOURCE_STATIC_SHADOWS_COMPANION_CONFIG_KEY,Xo as addAssetLibraryItemToEditorSceneDocument,Zo as addEditorSceneLightingPreviewColors,Jo as addEditorSceneMaterialAsset,Qo as addEditorSceneMaterialAssetAndBind,es as addEditorSceneMaterialAssetAndBindPrefabOverride,ts as addEditorScenePrefabAsset,rs as addVec3,as as appendEditorSceneReadonlyInspectorProperty,ns as appendEditorSceneRuntimeColorProperties,is as appendEditorSceneRuntimeInspectorProperty,os as appendEditorSceneRuntimeTextureProperties,ss as appendEditorSceneRuntimeVector3Properties,cs as applyEditorSceneAuthoringHierarchyPatch,ds as applyEditorSceneAuthoringMarkerPatch,ls as applyEditorSceneDocumentMutationPatch,us as applyEditorSceneJsonFieldPatch,fs as applyEditorSceneRenderingProfileAction,ms as applyEditorSceneRenderingProfilePatch,gs as applyEditorSceneSerializedPropertyPatch,Es as areMarkerGraphsEqual,ps as assertEditorSceneDocumentAssetCatalogCompleteness,Ss as assertEditorSceneMarkerConfigContract,hs as assertEditorSceneMaterialAssetIntegrity,bs as assertEditorScenePrefabMarkerNodeContract,ys as assertEditorSceneTransformComponentContract,Ps as assertPlayableEditorSceneDocumentContract,Is as assertPlayableEditorScenePersistedSourceContract,ot as buildPlayableEditorManagedAssetArgs,As as bumpEditorSceneAuthoringSourceRevision,Ts as callEditorSceneRuntimeMethod,Rs as canEditEditorSceneShadowSettings,ws as canEditorSceneGameObjectHaveChildren,Ms as canPatchPlayableEditorSceneGroundDecalMultiField,_s as canPatchPlayableGroundDecalLayerField,Be as canSaveEditorSceneLightingDebugSnapshot,Ds as canonicalizePlayableJsonNumbers,Cs as clampEditorSceneLightingPreview01,vs as clampEditorSceneLightingPreviewNumber,Ls as clampEditorSceneMaterialPreview01,xs as cleanupEditorSceneGameObjectOverrides,Os as cleanupLegacyImportedEditorSceneMaterialBindings,Ns as cloneBuiltInMarkerTypeDefinition,ks as cloneEditorSceneDocument,de as cloneEditorSceneLightingDebugSnapshot,js as cloneEditorTransformMatrix,Gs as cloneEditorTransformSnapshot,Fs as cloneMarker,Bs as cloneMarkerGraphCommand,zs as cloneMarkerTypeDefinition,Us as cloneRelation,$s as cloneVec3,Hs as collectEditorSceneAssetReferences,Vs as collectEditorSceneChildMaterialSlots,Ys as collectEditorSceneGameObjectSubtreeIds,qs as collectEditorSceneMaterialAssetBindingIds,Ks as collectEditorSceneMaterialAssetReferences,Ws as collectEditorSceneMaterialAssetUsages,Xs as collectEditorSceneRenderingAlphaIndexMigrationTargetIds,Zs as collectEditorSceneRuntimeChildNodes,Js as collectEditorSceneRuntimeMeshes,Qs as collectEditorSceneSlotSourceMaterialIndices,ec as collectEditorSceneSubtreeIdList,tc as collectEditorSceneSubtreeIds,rc as collectEditorShadowReceiverCandidates,Di as collectMissingPlayableEditorPackageAliasFiles,qr as colorFromEditorSceneLightingHex,Yr as colorToEditorSceneLightingHex,ac as combineEditorTransforms,nc as compareEditorSceneAssetLibraryItems,ic as compileEditorSceneDocumentToSceneConfig,vi as compilePlayableGroundDecalRuntimeConfig,oc as composeEditorTransformMatrix,sc as createArtistMaterialAssetInspectorProperties,cc as createArtistMaterialBindingSummary,dc as createArtistMaterialInspectorSections,lc as createAuthoredMarkerTypeDefinition,uc as createBabylonAssetContainerProjectionImporter,fc as createBabylonPrimitiveProjectionInstancingController,mc as createBoundsCenter,gc as createCameraInspectorProperties,Ec as createChildMaterialBindingInspectorProperties,pc as createChildMaterialBindingSummary,Sc as createDefaultEditorSceneCameraGameObject,hc as createDefaultEditorSceneEnvironmentLightGameObject,bc as createDefaultEditorSceneSunLightGameObject,ai as createDefaultEditorSceneTransformPatchFromRuntimePatch,yc as createDefaultMarkerScaleForKind,Pc as createDefaultPbrEditorSceneMaterialAsset,Ic as createDefaultStandardEditorSceneMaterialAsset,Ac as createEditorSceneAssetFromLibraryItem,Tc as createEditorSceneAssetHydrationCatalog,Rc as createEditorSceneAssetLibrary,wc as createEditorSceneAssetLibraryItem,Mc as createEditorSceneAssetPlacementPatch,_c as createEditorSceneAuthoringSourceDescriptor,Dc as createEditorSceneCameraInspectorSection,Cc as createEditorSceneCommonInspectorProperties,vc as createEditorSceneCommonInspectorSection,Lc as createEditorSceneComponentsInspectorProperties,xc as createEditorSceneComponentsInspectorSection,Oc as createEditorSceneComponentsInspectorSummary,Nc as createEditorSceneCreateGroupPatch,kc as createEditorSceneCreatePrimitivePatch,jc as createEditorSceneDeleteSubtreePatch,Ar as createEditorSceneDirectionalLightDirectionFromAngles,Gc as createEditorSceneDirectionalLightDirectionFromTransformRotation,Fc as createEditorSceneDirectionalLightShadowSummaryInspectorSection,Bc as createEditorSceneDocumentInspectorProperty,zc as createEditorSceneDocumentInspectorSections,Uc as createEditorSceneDuplicateMaterialAssetForBindingPatch,$c as createEditorSceneDuplicateMaterialAssetValue,Hc as createEditorSceneDuplicateSelectionPatch,Vc as createEditorSceneDuplicatedMaterialAsset,Yc as createEditorSceneDuplicatedMaterialAssetCopy,qc as createEditorSceneDuplicatedPrefabDefinition,Kc as createEditorSceneFieldInspectorValidator,Wc as createEditorSceneGameObjectFieldPatch,Xc as createEditorSceneGameObjectGuid,Zc as createEditorSceneGameObjectsFieldPatch,Jc as createEditorSceneGroupSelectionPatch,Qc as createEditorSceneHierarchyMovePatch,ed as createEditorSceneHierarchySourceInspectorProperties,td as createEditorSceneHierarchySourceInspectorSection,rd as createEditorSceneHierarchySourceInspectorSummary,ad as createEditorSceneIdentityTransformComponent,nd as createEditorSceneInspectorActionProperty,id as createEditorSceneLightInspectorProperties,od as createEditorSceneLightInspectorSections,sd as createEditorSceneMarkerConfig,cd as createEditorSceneMarkerGameObjectDocument,dd as createEditorSceneMarkerGeometry,ld as createEditorSceneMarkerGraphPatchLabel,ud as createEditorSceneMaterialActionPatch,fd as createEditorSceneMaterialAssetFieldInspectorPropertyInput,md as createEditorSceneMaterialAssetFromShaderDefinition,gd as createEditorSceneMaterialAssetFromSourceProfile,Ed as createEditorSceneMaterialAssetGuid,pd as createEditorSceneMaterialAssetId,Sd as createEditorSceneMaterialAssetInspectorObject,hd as createEditorSceneMaterialAssetMeta,bd as createEditorSceneMaterialAssetOwnershipView,yd as createEditorSceneMaterialAssetPreview,Pd as createEditorSceneMaterialAssetSelectionId,Id as createEditorSceneMaterialBindingSummary,Ad as createEditorSceneMaterialBrowserAssetItems,Td as createEditorSceneMaterialPickerControlOptions,Rd as createEditorSceneMaterialShaderDefinitionRegistry,wd as createEditorSceneMetadataInspectorProperties,Md as createEditorSceneMetadataInspectorSection,_d as createEditorSceneMetadataInspectorSummary,Dd as createEditorSceneModelAssetInspectorObject,Cd as createEditorSceneModelAssetSelectionId,vd as createEditorSceneModelGameObjectForAsset,Ld as createEditorScenePlacementWorldTransform,xd as createEditorScenePlayableFieldInspectorExtraValidator,Od as createEditorScenePrefabActionPatch,Nd as createEditorScenePrefabAgentSummary,kd as createEditorScenePrefabBrowserAssetItems,jd as createEditorScenePrefabDefinitionFromAsset,Gd as createEditorScenePrefabDefinitionFromGameObject,Fd as createEditorScenePrefabDraftCommitInput,Bd as createEditorScenePrefabGameObjectForAsset,zd as createEditorScenePrefabGroupNode,Ud as createEditorScenePrefabGuid,$d as createEditorScenePrefabInstanceGameObject,Hd as createEditorScenePrefabInstanceScopedNodeId,Vd as createEditorScenePrefabMarkerNode,Yd as createEditorScenePrefabMaterialOverrideInspectorSection,qd as createEditorScenePrefabNodeFromAsset,Kd as createEditorScenePrefabPrimitiveNode,Wd as createEditorScenePrefabSourceStructureInspectorSection,Xd as createEditorScenePrefabStageCompositionProjectionNodes,Zd as createEditorScenePrefabStageContextLightProjectionNodes,Jd as createEditorScenePrefabStageInspectorObject,Qd as createEditorScenePrefabStageMaterialSlotGroup,el as createEditorScenePrefabStageMaterialSlotItems,tl as createEditorScenePrefabStageModelProjectionNode,rl as createEditorScenePrefabStageNodeFallbackLabel,al as createEditorScenePrefabStageNodeTransform,nl as createEditorScenePrefabStageNodeTreeItem,il as createEditorScenePrefabStageProjectionKind,ol as createEditorScenePrefabStageProjectionNodeFromCompositionNode,sl as createEditorScenePrefabStageProjectionNodeId,cl as createEditorScenePrefabStageRuntimeGroups,dl as createEditorScenePrefabStageRuntimeLeaf,ll as createEditorScenePrefabStageRuntimeNodeTree,ul as createEditorScenePrefabStageSourceItem,fl as createEditorScenePrefabStageStableId,ml as createEditorScenePrimitiveInspectorProperties,gl as createEditorScenePrimitiveInspectorSection,El as createEditorSceneReadonlyDocumentInspectorProperty,pl as createEditorSceneReadonlyInspectorProperty,Sl as createEditorSceneReadonlyInspectorSection,hl as createEditorSceneReadonlyVector3Properties,bl as createEditorSceneRenamePatch,yl as createEditorSceneRendererInspectorProperties,Pl as createEditorSceneRendererInspectorSection,Il as createEditorSceneRendererInspectorSummary,Al as createEditorSceneRenderingInspectorSection,Tl as createEditorSceneRenderingPanelState,Rl as createEditorSceneRenderingProfileDraftState,wl as createEditorSceneReparentPatch,Ml as createEditorSceneRootTransformComponent,_l as createEditorSceneRuntimeAnimationSkeletonSection,Dl as createEditorSceneRuntimeBindingSection,Cl as createEditorSceneRuntimeCollisionsSection,vl as createEditorSceneRuntimeGeometryBoxSection,Ll as createEditorSceneRuntimeInspectorSection,xl as createEditorSceneRuntimeInspectorSections,Ol as createEditorSceneRuntimeInspectorSectionsForDocument,Nl as createEditorSceneRuntimeInspectorSnapshot,kl as createEditorSceneRuntimeIntensityPropertiesSection,jl as createEditorSceneRuntimeMaterialColorsSection,Gl as createEditorSceneRuntimeMaterialSection,Fl as createEditorSceneRuntimeMaterialTexturesSection,Bl as createEditorSceneRuntimeMetallicRoughnessSection,zl as createEditorSceneRuntimePhysicsSection,Ul as createEditorSceneRuntimePreviewImageImportPlan,$l as createEditorSceneRuntimePreviewImportPlan,Hl as createEditorSceneRuntimePreviewMainCameraRig,Vl as createEditorSceneRuntimePreviewMissingAssetUrlDiagnostic,Yl as createEditorSceneRuntimePreviewModelImportPlan,ql as createEditorSceneRuntimePreviewNode,Kl as createEditorSceneRuntimePreviewNodes,Wl as createEditorSceneRuntimeRawMiscSection,Xl as createEditorSceneRuntimeRenderingSection,Zl as createEditorSceneRuntimeShadowsSection,Jl as createEditorSceneSerializedMultiInspectorObject,Ql as createEditorSceneSerializedMultiInspectorSections,eu as createEditorSceneSerializedMultiObject,tu as createEditorSceneSerializedMultiTransformPatch,ru as createEditorSceneSerializedObject,au as createEditorSceneSerializedPropertyDescriptors,nu as createEditorSceneSourceAssetFromActionInput,iu as createEditorSceneSourceMaterialAssetForBindingPatch,ou as createEditorSceneStandardPrefabAssetFieldServices,su as createEditorSceneStaticShadowArtifactDiagnostic,cu as createEditorSceneStaticShadowArtifactDraftStore,du as createEditorSceneTextureAssetPreview,lu as createEditorSceneTexturePickerControlOptions,uu as createEditorSceneTransformBatchPatch,fu as createEditorSceneTransformFromSerializedPath,mu as createEditorSceneTransformInspectorProperties,gu as createEditorSceneTransformInspectorSection,Eu as createEditorSceneTransformInspectorSummary,pu as createEditorSceneTransformPatch,Xr as createEditorSceneTransformPatchFromRuntimePatch,Su as createEditorSceneTransformRotationFromDirectionalLightDirection,hu as createEditorTransformMatrixSnapshot,bu as createFpsGameEditorAdapter,yu as createFpsGameEditorConfiguredGroundDecalSceneFeature,Pu as createFpsGameEditorDeclarativeGroundDecalSceneFeature,Iu as createFpsGameEditorGroundDecalSceneFeature,Au as createFpsGameEditorLocalEditorHost,Tu as createFpsGameEditorLocalEditorHostManifest,bi as createFpsGameEditorManagedAssetServices,Ru as createFpsGameEditorPlayableProjectHostAssembly,wu as createFpsGameEditorProductHostAssembly,Mu as createFpsGameEditorProductProjectHostServices,_u as createFpsGameEditorProductProjectionPreview,Du as createFpsGameEditorProductRenderingRuntime,Cu as createFpsGameEditorProductSceneHostOptions,vu as createFpsGameEditorSceneSourceServices,Lu as createFpsGameEditorStandardAssetActionPatch,xu as createFpsGameEditorStandardProjectRuntime,Ou as createFpsGameEditorStandardSceneAssembly,Nu as createIdentityEditorTransform,ku as createMarkerGameObjectFromSpatialMarker,ju as createMarkerSemanticFrameFromTransform,Gu as createMarkerType,Fu as createMaterialAlphaModeOptions,Bu as createMaterialAssetPickerControlOptions,zu as createMaterialAssetSelectorInspectorProperty,Uu as createMaterialLightingModelOptions,$u as createObjectBoundSemanticFrame,Hu as createPlayableAuthoringClient,or as createPlayableAuthoringEmptyResponse,U as createPlayableAuthoringJsonResponse,Vu as createPlayableBabylonEnvironmentTextureProfile,Yu as createPlayableBabylonOutlineInspectorSection,qu as createPlayableBabylonOutlineInspectorSeedPatchValue,Ku as createPlayableBabylonPlanarShadowPolicyInput,Wu as createPlayableBabylonPlanarShadowPreviewOptions,Xu as createPlayableBabylonRenderingAlphaIndexMigrationPatch,Zu as createPlayableBabylonRenderingCapability,Ju as createPlayableBabylonRenderingCapabilityFacade,Qu as createPlayableBabylonRenderingDiagnostics,ef as createPlayableBabylonRenderingPanelState,tf as createPlayableBabylonWorldRendering,gn as createPlayableBridgeCommandAssetAdapter,mn as createPlayableBridgeEventPayload,La as createPlayableEditorAssetGuid,xa as createPlayableEditorAssetId,_i as createPlayableEditorBundledPackageAliasPlan,Mi as createPlayableEditorBundledPackageRoots,rf as createPlayableEditorDoctorReport,Aa as createPlayableEditorEntryController,_n as createPlayableEditorEntryManifest,Ln as createPlayableEditorEntryModuleLoader,Cn as createPlayableEditorEntryModuleUrl,Nn as createPlayableEditorEntryPerformanceTracker,qa as createPlayableEditorManagedAssetFacade,ja as createPlayableEditorManagedAssetGuid,Ga as createPlayableEditorManagedAssetId,st as createPlayableEditorManagedSceneAsset,af as createPlayableEditorSceneFieldMutationOptions,nf as createPlayableEditorSceneHierarchyFacade,of as createPlayableEditorSceneInspectorMultiObject,sf as createPlayableEditorSceneInspectorObject,cf as createPlayableEditorSceneInspectorPropertyPatch,df as createPlayableEditorSceneInspectorSections,lf as createPlayableEditorSceneMarkerGraphFacade,uf as createPlayableEditorSceneMarkerInspectorSection,ff as createPlayableEditorSceneObjectCommandFacade,mf as createPlayableEditorSceneOutlineInspectorSection,gf as createPlayableEditorSceneSessionFacade,bn as createPlayableEditorSourcePackageAliasPlan,wi as createPlayableEditorSourceTsconfigPathsPlan,Ef as createPlayableForgePlaySaveState,pf as createPlayableGroundDecalDocumentBridge,Sf as createPlayableGroundDecalDocumentServices,hf as createPlayableGroundDecalInspectorProperties,bf as createPlayableGroundDecalInspectorSection,yf as createPlayableGroundDecalInspectorServices,Pf as createPlayableGroundDecalLayerLabel,If as createPlayableGroundDecalMultiInspectorSection,Af as createPlayableLocalEditorHost,Tf as createPlayableLocalEditorLoadingOverlay,li as createPlayablePlatformAssetDropCache,Rf as createPlayablePlatformAssetRegistrationPayload,Ii as createPlayableProjectAssetBridgeAdapter,wf as createPlayableProjectAssetCommandHandler,Mf as createPrefabInstanceInspectorSection,_f as createPrefabMaterialBindingPresentationImpact,Df as createPrefabStageEditableProperty,Cf as createPrefabStageShadowDefaultProperties,vf as createReadonlyMaterialSlotListInspectorProperties,Lf as createRuntimeSceneCompiledArtifact,xf as createSceneMainSourceDriver,Of as createSceneMainSourceSaveCompanionConfigPayload,Nf as createSceneMaterialBindingPresentationImpact,kf as createSceneObjectMarkerTargetRef,jf as createSpatialMarkerFromGameObject,Gf as createSpatialMarkerGeometryForPresentation,Ff as createSpatialMarkerGeometryForTargetPatch,Bf as createSpatialMarkerGeometryFromGameObject,zf as createSpatialMarkersFromGameObjects,Uf as createStableEditorSceneMaterialAssetGuid,$f as createTexturePickerControlOptions,Hf as createUniqueEditorSceneGameObjectDisplayName,Vf as createUniqueEditorSceneGameObjectId,Yf as createUniqueEditorSceneId,qf as createUniqueEditorSceneMaterialAssetId,Kf as createUniqueEditorScenePrefabAssetId,Wf as createUniqueMarkerGameObjectId,Xf as createVec3,Zf as defineFpsGameEditorFeature,Jf as defineFpsGameEditorProject,fi as definePlayableEditorAssetDatabaseConfig,Qf as degreesToEditorSceneRadians,em as dehydrateEditorSceneDocumentAssets,tm as deleteDefaultEditorSceneMaterialAsset,rm as deleteEditorSceneMarkerGameObject,am as deleteEditorSceneMaterialAsset,nm as deleteEditorScenePrefabNode,im as deleteMarkerType,om as describeEditorSceneRuntimeObject,sm as detectEditorSceneDirectionalLightOrientationDrift,ri as detectEditorSceneRuntimeInputDrift,cm as editorSceneGuidToStableToken,dm as encodeEditorScenePrefabInstanceIdentitySegment,lm as enrichEditorSceneDocumentAssets,um as ensureDefaultEditorSceneMaterialAssets,fm as ensureEditorSceneAuthoringSource,wr as ensureEditorSceneGameObjectGuids,mm as ensureEditorScenePrefabComposition,gm as ensurePlayableEditorSceneEnvironmentDefaultsCore,Em as findEditorSceneGameObject,pm as findEditorSceneImageRenderer,Sm as findEditorSceneInspectorTextureAsset,hm as findEditorSceneInspectorTextureAssetFromContext,ce as findEditorSceneLightingDebugNumberFieldConfig,bm as findEditorSceneLightingPreviewLightObject,ym as findEditorSceneMaterialAsset,Pm as findEditorSceneModelRenderer,Im as findEditorScenePrefabAsset,Am as findEditorScenePrefabNode,Tm as findEditorScenePrefabStageInspectorItem,Rm as findEditorScenePrefabStageStructureItem,ma as findEditorSceneRuntimeLightTarget,wm as findEditorSceneTransform,Mm as fingerprintEditorScenePrefabStageAssetProjection,_m as fingerprintEditorScenePrefabStageDocumentScope,Dm as flattenEditorScenePrefabStageStructureItems,Cm as formatEditorSceneBoundsSummary,se as formatEditorSceneLightingNumber,ta as formatEditorSceneLightingShadowMode,vm as formatEditorSceneMaterialPreviewNumber,Lm as formatEditorSceneMaterialSlotLabel,xm as formatEditorScenePrefabStageMaterialSlotSummary,Om as formatPlayableEditorDoctorReport,Ci as formatPlayableEditorPackageAliasPlanError,Nm as formatPlayableLocalEditorHostCompatibilityReport,km as getArtistMaterialInspectorText,jm as getBuiltInMarkerType,Gm as getCameraInspectorText,Fm as getDefaultEditorSceneMaterialPreset,Yt as getEditorSceneAuthoringSourceRef,Bm as getEditorSceneGameObjectWorldTransform,zm as getEditorSceneGameObjectWorldTrsTransform,Um as getEditorSceneHierarchyItems,$m as getEditorSceneLightInspectorLanguage,Hm as getEditorSceneLightInspectorText,Vm as getEditorSceneMarkerGraphPatchSelection,Ym as getEditorSceneMarkerTypeCatalogFromGraph,qm as getEditorSceneMaterialAssetDefaultPreset,Km as getEditorSceneMaterialAssetDisplayMeta,Wm as getEditorSceneMaterialAssetDisplayName,Xm as getEditorSceneMaterialShaderDefinition,Zm as getEditorSceneMaterialSlotPrimaryOwnerPath,Jm as getEditorScenePrefabStageDescriptor,Qm as getEditorScenePrefabStageProjectionNodeIdForNode,eg as getEditorScenePrefabStageProjectionNodes,tg as getEditorScenePrefabStageStructure,rg as getEditorSceneRelationTypeCatalog,ag as getEditorSceneSlotMaterialBinding,ng as getEditorSceneSlotMaterialBindingPath,ig as getEditorSceneSlotSelectionKey,og as getEditorSceneSlotSourceMaterialName,sg as getEditorSceneSlotSourceMaterialProfile,Lr as getFpsGameEditorStandardCompatibilityCommandId,cg as getNextEditorSceneAssetPlacementPosition,Si as getPlayableEditorAssetKindExtensions,Na as getPlayableEditorAssetPathExtension,dg as getPlayableForgePlayHistoryResultEventName,lg as getTopLevelSceneGraphNodeIds,ug as groundDecalFeature,ar as guidToPlayableEditorAssetStableToken,hi as guidToPlayableEditorManagedAssetStableToken,Li as handleEditorSceneRenderingProfileAuthoringRequest,yi as handlePlayableAuthoringServerRequest,fg as hasDetectedModelMaterialSlots,mg as hasEditorSceneAncestorDescendantPair,gg as hasEditorSceneCamera,Eg as hasEditorSceneDescendants,pg as hasEditorSceneMaterialAsset,Sg as hasEditorScenePrefabForSourceAsset,hg as hasEditorScenePrefabStageRuntimeStructure,bg as hasInvalidEditorSceneCameraRelationships,yg as hasReadonlyEditorSceneMaterialSlotReimportIssues,Pg as hslToEditorSceneMaterialPreviewRgb,zr as importPlayableProjectAsset,Ig as inspectPlayableEditorHostCompatibilityReport,Ag as inspectPlayableLocalEditorHostManifest,Tg as installPlayableForgePlayModeBridge,Rg as isBlockedPlayableEditorSceneSystemFieldPatch,wg as isBuiltInMarkerType,Mg as isCompiledArtifactForSource,_g as isDefaultEditorSceneMaterialAsset,Dg as isDefaultReadonlyEditorSceneMaterialAsset,Cg as isDeletedRelationEndpoint,vg as isEditorProjectFilePreviewable,Lg as isEditorProjectMediaPreviewable,xg as isEditorSceneArtistMaterialPatchPath,Og as isEditorSceneAssetPlaceable,Ng as isEditorSceneBuiltinMaterialTextureRefFieldPath,kg as isEditorSceneCameraGameObject,jg as isEditorSceneCameraProjection,Gg as isEditorSceneColor,Fg as isEditorSceneDuplicateMaterialAssetPickerValue,Bg as isEditorSceneFiniteNumber,zg as isEditorSceneGameObjectShadowParticipationOwner,Ug as isEditorSceneGroupLikeGameObject,$g as isEditorSceneLightDirectionAnglePath,_r as isEditorSceneLightGameObject,Hg as isEditorSceneLightType,Vg as isEditorSceneMarkerGameObject,Yg as isEditorSceneMarkerGraphCommandSupported,qg as isEditorSceneMaterialAssetReadonlyForInspector,Kg as isEditorSceneMaterialBindingNullableStringPath,Wg as isEditorSceneMaterialBindingPath,Xg as isEditorSceneMaterialColorRgb,Zg as isEditorSceneMaterialColorRgba,Jg as isEditorSceneMaterialTextureRefFieldPath,Qg as isEditorSceneMatrixTransformComponent,eE as isEditorSceneNonNegativeFiniteNumber,tE as isEditorSceneOptionalBoolean,rE as isEditorSceneOptionalNonEmptyString,aE as isEditorSceneOptionalString,nE as isEditorScenePositiveFiniteNumber,iE as isEditorScenePositiveSize,oE as isEditorScenePrefabAsset,sE as isEditorScenePrefabCoreMaterialOverridePath,cE as isEditorScenePrefabDefaultShadowPath,dE as isEditorScenePrefabInstance,lE as isEditorScenePrefabMaterialAssetIdOverridePath,uE as isEditorScenePrefabOverridePath,fE as isEditorSceneProtectedSystemGameObject,mE as isEditorSceneProtectedSystemGameObjectId,gE as isEditorSceneRenderingProfileDraftDirty,EE as isEditorSceneRenderingProfilePatchPath,pE as isEditorSceneRootGameObject,SE as isEditorSceneRootGameObjectId,hE as isEditorSceneRootTransformPath,bE as isEditorSceneRuntimeMeshLike,yE as isEditorSceneScale,PE as isEditorSceneSelectableHierarchyId,IE as isEditorSceneStringArray,AE as isEditorSceneTextureAsset,TE as isEditorSceneTransformLike,RE as isEditorSceneTrsTransformComponent,wE as isEditorSceneUnitRangeNumber,ME as isEditorSceneVec2,_E as isEditorSceneVec3,DE as isEditorTransformMatrixSnapshot,CE as isEditorTransformTrsSnapshot,vE as isMarkerEndpoint,LE as isMarkerTypeDefinitionValid,xE as isObjectMarkerKind,OE as isPlayableBabylonOutlineInspectorPatchPath,NE as isPlayableBabylonRenderingEnvironmentTextureAsset,kE as isPlayableBabylonRenderingEnvironmentTextureResource,jE as isPlayableEditorSceneGroundDecalProjectionPath,GE as isPlayableGroundDecalEditableColorLayer,FE as isPlayableGroundDecalEditableTextLayer,BE as isPlayableGroundDecalEditableTextureLayer,zE as isPlayableGroundDecalInspectorPatchPath,UE as isPlayableGroundDecalLayerColorAlphaPath,$E as isPlayableGroundDecalLayerColorPath,HE as isPlayableGroundDecalLayerProgressPreviewPercentPath,VE as isPlayableGroundDecalLayerRectPath,YE as isPlayableGroundDecalLayerRotationPath,qE as isPlayableGroundDecalLayerTextColorAlphaPath,KE as isPlayableGroundDecalLayerTextColorPath,WE as isPlayableGroundDecalLayerTextFontSizePath,XE as isPlayableGroundDecalLayerTextValuePath,ZE as isPlayableGroundDecalLayerTexturePath,JE as isPlayableGroundDecalLayerTextureTintAlphaPath,QE as isPlayableGroundDecalLayerTextureTintPath,ep as isPlayableGroundDecalLayoutEditableLayer,tp as isPlayableGroundDecalLayoutPatchCompatibleWithDecal,rp as isPlayableGroundDecalProjectEditableLayer,ap as isPlayableGroundDecalRenderingTextureDimensionPath,np as isPlayableGroundDecalRotationEditableLayer,ip as isPlayableGroundDecalSerializedMultiFieldPath,op as isPlayableLocalEditorSaveCancellation,sp as isReadonlyEditorSceneMaterialAsset,cp as isRegionMarkerKind,dp as isRelationEndpointValid,lp as isTargetRefValid,up as isValidEditorAffineTransformMatrix,fp as isVec3ApproximatelyEqual,mp as isVec3Like,gp as loadEditorAssetLibrary,Ep as loadEditorProjectFile,pp as loadEditorProjectFiles,xn as loadPlayableEditorEntryManifest,Sp as loadSceneMainSource,hp as markEditorSceneInspectorPropertiesEffect,bp as markEditorSceneRenderingProfileDraftSaved,Ja as matchPlayableAuthoringRoute,yp as mergeEditorSceneAssetWithLibraryItem,Pp as mergeEditorSceneCameraDefaults,Ip as mergeEditorSceneLightDefaults,Ap as mergeEditorSceneMaterialBindingOverrides,Tp as mergeEditorScenePrefabOverrides,Rp as mergeEditorSceneSourceMaterialProfile,wp as mergeMarkerTypeDefinition,Mp as mergePlayableEditorDoctorReports,_p as mergePlayableGroundDecalDefaults,Dp as migrateEditorSceneDocumentRenderingAlphaIndex,Cp as migrateEditorSceneGameObjectsRenderingAlphaIndex,vp as migrateEditorSceneMarkerGraphMarkersToGameObjects,Lp as migrateEditorSceneMaterialAssetShader,xp as mixEditorSceneLightingPreviewColor,Hn as mountEditorRuntimeDebugPanelShell,xi as mountEditorRuntimeLightingDebugPanel,Oi as mountFpsGameEditorLocalEditorEntry,Op as mountFpsGameEditorProductLocalEditor,Np as mountFpsGameEditorProductLocalEditorFromEnvironmentModule,kp as mountFpsGameEditorStandardLocalEditorFromEnvironmentModule,jp as mountFpsGameEditorStandardProject,Gp as normalizeCompiledArtifacts,Fp as normalizeEditorSceneAssetBytesUrl,Bp as normalizeEditorSceneCameraAfterFieldPatch,zp as normalizeEditorSceneCameraGameObject,Up as normalizeEditorSceneFieldInspectorValue,$p as normalizeEditorSceneGameObjectDisplayName,Hp as normalizeEditorSceneHierarchyDocument,Vp as normalizeEditorSceneLightDirectionAngleValue,Mr as normalizeEditorSceneLightDirectionVector,Yp as normalizeEditorSceneLightingAngleDegrees,qp as normalizeEditorSceneLightingPreviewVec3,Kp as normalizeEditorSceneMarkerGameObject,Wp as normalizeEditorSceneMarkerGameObjects,Xp as normalizeEditorSceneMarkerGraph,Zp as normalizeEditorSceneMarkerGraphCommand,Jp as normalizeEditorSceneMarkerPresentation,Qp as normalizeEditorSceneMaterialAssetValue,eS as normalizeEditorSceneMaterialBindings,tS as normalizeEditorSceneMaterialPreviewHue,rS as normalizeEditorSceneMaterialSlotOwnerPath,aS as normalizeEditorScenePlainTransformGameObject,nS as normalizeEditorScenePlayableInspectorValue,iS as normalizeEditorScenePrefabAssetComposition,oS as normalizeEditorScenePrefabAssetFieldValue,sS as normalizeEditorScenePrefabIdentifierPart,cS as normalizeEditorScenePrefabStageOwnerNodePath,dS as normalizeEditorScenePrimitiveShape,lS as normalizeEditorSceneRootGameObject,uS as normalizeEditorSceneRootTransformDocument,oa as normalizeEditorSceneRuntimeLightBinding,fS as normalizeEditorSceneRuntimePreviewProjectUrlPath,mS as normalizeEditorSceneShadowAuthoringSource,gS as normalizeEditorSceneSystemLightGameObject,ES as normalizeMarkerBoxSize,pS as normalizeMarkerNodeKind,pi as normalizePlayableEditorAssetCodeKey,Ei as normalizePlayableEditorAssetDisplayName,Oa as normalizePlayableEditorAssetKind,SS as normalizePlayableEditorSceneGroundDecalGameObject,hS as normalizePlayableForgePlayCommandName,bS as normalizePlayableFsPath,yS as normalizePlayableGroundDecalAlphaValue,PS as normalizePlayableGroundDecalColorValue,IS as normalizePlayableGroundDecalFontSizeValue,AS as normalizePlayableGroundDecalInspectorFieldValue,TS as normalizePlayableGroundDecalLayoutLayerPatch,RS as normalizePlayableGroundDecalLayoutPatchValue,wS as normalizePlayableGroundDecalLayoutRect,MS as normalizePlayableGroundDecalProgressPreviewPercentValue,Hr as normalizePlayableGroundDecalRotationDegrees,_S as normalizePlayableGroundDecalTextureDimension,DS as normalizePlayableGroundDecalUiScaleAfterFieldPatch,CS as normalizePlayableGroundDecalUiScales,vS as normalizePlayableGroundDecalUiScalesForCommand,Pa as normalizePlayablePlatformAssetPayload,kr as normalizePlayablePortableAssetPath,jr as normalizePlayableProjectAssetImportRequest,LS as parseEditorSceneDuplicateMaterialAssetValue,We as parseEditorSceneLightingDebugNumberDraft,xS as parseEditorSceneMaterialAssetFieldPath,OS as parseEditorSceneMaterialAssetSelectionId,NS as parseEditorSceneModelAssetSelectionId,Dn as parsePlayableEditorEntryManifest,kS as parsePlayableGroundDecalLayerPatchPath,jS as patchEditorSceneDirectionalLightOrientationAngles,GS as patchEditorSceneGameObjectByField,Dr as patchEditorSceneGameObjectField,FS as patchEditorSceneGameObjectFieldsMany,BS as patchEditorSceneGameObjectMaterialBinding,zS as patchEditorSceneGameObjectTransform,US as patchEditorSceneGameObjectTransformsMany,$S as patchEditorSceneGameObjectsField,HS as patchEditorSceneMaterialAsset,VS as patchEditorSceneMaterialAssetField,YS as patchEditorScenePrefabAsset,qS as patchEditorScenePrefabAssetField,KS as patchEditorScenePrefabOverride,di as patchEditorSceneRuntimeLights,WS as patchMarkerGameObjectFromSpatialMarker,XS as patchMarkerGameObjectTransformComponents,ZS as patchPlayableEditorSceneDirectionalLightAngleField,JS as patchPlayableEditorSceneGameObjectFieldWithServices,QS as patchPlayableEditorSceneGameObjectsFieldWithServices,eh as patchPlayableEditorSceneGroundDecalInspectorField,th as patchPlayableEditorSceneGroundDecalKind,rh as patchPlayableEditorSceneGroundDecalLayout,ah as patchPlayableEditorSceneGroundDecalRenderingDimension,nh as patchPlayableGroundDecalLayer,Ba as planPlayableEditorAssetRegistrationCore,za as planPlayableEditorAssetUnregistrationCore,ih as playableGroundDecalColorsEqual,oh as playableGroundDecalRectsEqual,sh as postPlayableAuthoringJson,ch as postPlayableForgePlayEvent,dh as prepareFpsGameEditorObjectRenameCommand,lh as preparePlayableEditorSceneDocument,uh as pruneEditorSceneArtistMaterialProfile,fh as radiansToEditorSceneDegrees,mh as readArtistMaterialInspectorLanguage,gh as readArtistMaterialTexturePickerValue,Eh as readCompiledRuntimeSceneArtifact,ph as readEditorProjectFileContent,Sh as readEditorProjectFileSnapshot,hh as readEditorSceneAssetMaterialSlots,at as readEditorSceneDirectionalLightAngles,Pt as readEditorSceneDirectionalLightAnglesExact,bh as readEditorSceneDirectionalLightOrientation,yh as readEditorSceneGameObjectAlphaIndex,Ph as readEditorSceneGameObjectLocalTransform,Ih as readEditorSceneGameObjectRenderingGroupId,Ah as readEditorSceneInspectorColor,Th as readEditorSceneInspectorShadowSettings,Rh as readEditorSceneInspectorVec3,wh as readEditorSceneLightType,Ct as readEditorSceneLightingDebugColorSnapshotField,Pe as readEditorSceneLightingDebugNumberSnapshotField,Qr as readEditorSceneLightingDebugText,ea as readEditorSceneLightingDebugTooltipText,Mh as readEditorSceneLightingPreviewColor,_h as readEditorSceneLightingPreviewDirectionalLight,Dh as readEditorSceneLightingPreviewFiniteNumber,Ch as readEditorSceneLightingPreviewHemisphericLight,Ir as readEditorSceneLightingProjectedLengthMultiplier,vh as readEditorSceneMaterialBindingConfig,Lh as readEditorSceneMaterialSlotBindingSlotId,xh as readEditorSceneMaterialSlotDescriptor,Oh as readEditorSceneNodeKind,Nh as readEditorScenePhysicsParam,kh as readEditorScenePrefabMaterialOverrideBinding,jh as readEditorScenePrefabNodeChildren,Gh as readEditorScenePrefabNodes,Fh as readEditorScenePrefabOverrideMaterialPath,Bh as readEditorScenePrefabRootNodeId,zh as readEditorScenePrefabStageAssetProjection,Uh as readEditorScenePrefabStageMaterialSlot,$h as readEditorSceneRuntimeArrayLength,Hh as readEditorSceneRuntimeArrayLengthFromMethod,Vh as readEditorSceneRuntimeBoolean,Yh as readEditorSceneRuntimeBounds,qh as readEditorSceneRuntimeClassName,Kh as readEditorSceneRuntimeIsEnabled,ni as readEditorSceneRuntimeLightBinding,Wh as readEditorSceneRuntimeNumber,Xh as readEditorSceneRuntimePreviewAssetId,Zh as readEditorSceneRuntimePreviewAssetKind,Jh as readEditorSceneRuntimePreviewAssetMetadata,Qh as readEditorSceneRuntimeProjectionAssetId,eb as readEditorSceneRuntimeProjectionAssetMetadata,tb as readEditorSceneRuntimeString,rb as readEditorSceneRuntimeValue,ab as readEditorSceneTextureUrl,nb as readEditorSceneTransformVector,ib as readEditorTransformPosition,ob as readFpsGameEditorPlatformAssetLookup,sb as readMarkerConfigTarget,cb as readMarkerGameObjectScale,db as readMarkerTypeDefinition,lb as readMarkerTypeOverrides,cn as readPlayableAssetImportInput,sr as readPlayableAssetRegistrationPlanInput,ub as readPlayableAssetRegistrationResultRecord,sn as readPlayableAssetUnregistrationPlanInput,Me as readPlayableBridgeRequestId,Fa as readPlayableEditorManagedAssetScale,fb as readPlayableForgePlayHistoryOperationOptions,mb as readPlayableForgePlayRequestId,gb as readPlayableGroundDecalFiniteNumber,Eb as readPlayableGroundDecalPositiveFiniteNumber,Kt as readPlayablePlatformAssetDropPoint,pb as readPlayablePlatformAssetExternal,Sb as readPlayablePlatformAssetKind,hb as readPlayablePlatformAssetName,bb as readPlayablePlatformAssetPath,yb as readPlayablePlatformAssetPlacement,qt as readPlayablePlatformAssetRecord,Cr as readPlayablePlatformAssetRecords,Pb as readPlayablePlatformAssetUrl,Ib as readPlayablePlatformRawAssetId,dn as readPlayableSceneNodeCreateInput,ln as readPlayableSceneNodePatchInput,jt as readPlayableSceneNodeRemoveInput,Ab as readRawEditorSceneGameObjectLocalTransform,Tb as readSceneMainSourceRenderingConfig,Rb as readSceneMainSourceRevisionConflict,wb as readSceneMainSourceSaveCompanionConfigs,Mb as readSceneMainSourceStaticShadowsArtifact,_b as readSpatialMarkerTransformPosition,Db as readSpatialMarkerTransformRotation,Cb as readSpatialMarkerTransformScale,na as readStoredEditorSceneLightingDebugLanguage,ra as readStoredEditorSceneLightingDebugOpen,vb as rebaseEditorScenePrefabMarkerConfig,Lb as rebaseEditorScenePrefabMarkerTarget,xb as reconcileEditorSceneMaterialSlotReimportBindings,Ob as reconcileEditorScenePrefabMaterialSlotReimportBindings,Nb as reduceEditorSceneDocumentMutation,kb as reduceEditorSceneMarkerGameObjectCommand,jb as reduceEditorSceneMarkerGraph,Gb as reducePlayableEditorSceneDocumentCore,ui as registerFpsGameEditorStandardAuthoringCommands,vr as registerFpsGameEditorStandardCapabilityDefinitions,Fb as registerPlayablePlatformAsset,Bb as registerPlayablePlatformAssetIfNeeded,zb as renameEditorScenePrefabAsset,Ub as renameEditorScenePrefabNode,$b as reparentEditorScenePrefabNode,Hb as replaceEditorSceneMaterialAsset,Vb as replaceEditorScenePrefabAsset,Yb as replaceEditorScenePrefabStageAssetProjection,qb as replacePlayableEditorSceneGroundDecalUi,Kb as resetEditorSceneRenderingProfileDraft,Wb as resolveDefaultEditorSceneMaterialAssetDeleteState,Xb as resolveEditorProjectFileExtension,Zb as resolveEditorProjectFileLanguage,Jb as resolveEditorProjectMediaSource,Qb as resolveEditorProjectMediaSupport,ey as resolveEditorRuntimeAssetFetchUrl,Qt as resolveEditorSceneArtistMaterialBinding,oi as resolveEditorSceneArtistMaterialRuntimePreview,si as resolveEditorSceneArtistMaterialSlotProfiles,ty as resolveEditorSceneAssetAvailabilityKey,ry as resolveEditorSceneAssetLibraryItemRelativePath,ay as resolveEditorSceneEffectiveShadowMode,ny as resolveEditorSceneFieldSchema,iy as resolveEditorSceneGameObjectRendering,oy as resolveEditorSceneGameObjectRuntimeEntityIds,sy as resolveEditorSceneGameObjectShadowSettings,cy as resolveEditorSceneLightingPreviewProfile,dy as resolveEditorSceneMaterialAssetDeleteState,ly as resolveEditorSceneMaterialAssetIntegrity,uy as resolveEditorSceneMaterialRuntimeKind,fy as resolveEditorSceneMaterialSlotReimportDiff,my as resolveEditorScenePrefabInstanceEffectiveOverrides,gy as resolveEditorScenePrefabInstanceMarkers,Ey as resolveEditorScenePrefabInstanceRelation,py as resolveEditorScenePrefabMaterialSlotReimportDiffs,Sy as resolveEditorScenePrefabSourceAssetId,hy as resolveEditorScenePrefabSourceSessionState,by as resolveEditorScenePrefabStageMarkers,yy as resolveEditorScenePrefabStageMaterialDropTarget,Py as resolveEditorScenePrefabStageMaterialOverrideTarget,Iy as resolveEditorScenePrefabStagePreviewTarget,Ay as resolveEditorSceneProjectedMaterialRuntimeKind,Ty as resolveEditorSceneRenderingAlphaIndexPresetValueMigration,Ry as resolveEditorSceneRootContainerId,wy as resolveEditorSceneRuntimePreviewAssetUrl,My as resolveEditorSceneRuntimePreviewAssetUrlCandidate,_y as resolveEditorShadowPlan,Dy as resolveEditorTransformPreserveWorldPolicy,Cy as resolveFpsGameEditorFeatureSceneContribution,vy as resolveFpsGameEditorGroundDecalFeatureConfig,Ly as resolveFpsGameEditorStaticProject,xy as resolveMarkerGeometryKindForPresentation,Oy as resolveMarkerNodeKindForType,Ny as resolvePlayableBabylonPlanarShadowPolicy,ky as resolvePlayableBabylonRenderingEnvironmentTextureDiagnostic,jy as resolvePlayableBabylonRenderingEnvironmentTextureResource,nr as resolvePlayableEditorAssetIdentity,Gy as resolvePlayableGroundDecalImageRect,Fy as resolvePlayableGroundDecalMultiInspectorTargetIds,By as resolvePlayableGroundDecalUiInspectorScale,zy as resolvePlayableGroundDecalUniformScaleFromVec3,Ur as resolvePlayablePlatformAssetRegistrationResult,Uy as rewriteMarkerRelationEndpoint,$y as rewriteMarkerRelationIds,Hy as rewriteMarkerTargetRef,Vy as rewriteSpatialMarkerGeometryTargetRefs,Yy as rewriteSpatialMarkerTargetRefs,qy as rgbToEditorSceneMaterialPreviewHsl,Ky as rotateVec3ByEuler,Wy as roundEditorSceneInspectorNumber,Vr as roundEditorSceneLightingNumber,Xy as roundPlayableGroundDecalFieldValue,Zy as sanitizeEditorSceneGameObjectId,Jy as sanitizeEditorSceneId,Qy as sanitizeEditorSceneMaterialAssetIdPart,pa as sanitizeEditorSceneRuntimeDirectionalLight,Ea as sanitizeEditorSceneRuntimeHemisphericLight,ga as sanitizeEditorSceneRuntimeLightingPatch,eP as sanitizeMarkerGameObjectId,Nt as sanitizePlayableEditorManagedAssetName,tP as saveSceneMainSource,rP as scaleEditorSceneLightingPreviewColor,aP as selectEditorScenePrefabNode,nP as serializeEditorSceneStaticShadowArtifact,iP as setEditorScenePrefabNodeMarker,oP as setEditorScenePrefabNodeTransform,sP as setEditorSceneRenderingProfileDraftConfig,cP as setEditorSceneRenderingProfileDraftError,dP as shallowEditorSceneGameObjectsEqual,lP as shouldApplyMarkerDefaultScaleForKind,uP as shouldApplyMarkerDefaultScaleOnPresentationChange,fP as shouldPreserveTransformForMarkerGeometry,mP as splitEditorSceneFieldPath,gP as splitMaterialSlotBindingFieldPath,EP as stripKnownPlayableAssetExtension,ut as stripKnownPlayableEditorAssetExtension,pP as sumEditorSceneRuntimeMeshNumbers,SP as summarizeSaveResult,hP as syncEditorSceneDirectionalLightOrientationAfterTransformPatch,bP as syncEditorSceneDirectionalLightTransformRotationAfterDirectionPatch,yP as syncEditorSceneMarkerGraph,PP as syncEditorSceneMarkerGraphDocument,IP as syncEditorScenePrefabRootNodeFields,AP as toEditorLocalTransformFromWorld,TP as toEditorSceneInspectorLabel,RP as toEditorSceneInspectorSafeValue,wP as toEditorSceneLocalTransformForParent,MP as toEditorSceneLocalTransformFromWorld,_P as toEditorSceneLocalTrsTransformForParent,DP as toEditorScenePreserveWorldLocalTransformForParent,ii as toEditorSceneRuntimeLightingPatches,CP as toEditorSceneTransformComponent,vP as toEditorSceneTransformSnapshot,fn as toPlayableBridgeCommandError,gi as toPlayableEditorAssetImportName,LP as toneMapEditorSceneLightingPreviewColor,xP as toneMapEditorSceneLightingPreviewNumber,OP as transformEditorSceneMaterialPreviewBaseColor,NP as tryCreateEditorSceneTransformComponent,kP as tryCreateEditorSceneTransformSnapshot,ca as updateEditorSceneLightingDebugSnapshotColorField,la as updateEditorSceneLightingDebugSnapshotDirection,da as updateEditorSceneLightingDebugSnapshotEnabled,vt as updateEditorSceneLightingDebugSnapshotFromAngles,sa as updateEditorSceneLightingDebugSnapshotNumberField,jP as updateEditorSceneMarkerGameObject,GP as updateMarkerType,FP as validateAndNormalizeEditorSceneMaterialAssetField,BP as validateEditorSceneFieldInspectorValue,zP as validateEditorSceneGroupSelection,UP as validateEditorSceneHierarchyMove,$P as validateEditorSceneMaterialAssetFieldValue,ci as validateEditorSceneMaterialGlslColorBindings,HP as validateEditorScenePrefabAssetFieldValue,VP as validateEditorSceneReparent,YP as validatePlayableGroundDecalInspectorField,qP as validateSceneMainDocument,KP as waitForPlayableLocalEditorPaint,WP as waitForPlayableMilliseconds,XP as withEditorSceneMarkerGraph,ZP as writeMarkerTypeOverrides,ia as writeStoredEditorSceneLightingDebugLanguage,aa as writeStoredEditorSceneLightingDebugOpen};