gaesup-world 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/editor.cjs +1 -1
- package/dist/editor.js +2 -2
- package/dist/flow-BnFTzumT.cjs +1 -0
- package/dist/flow-DJRTbNvJ.js +144 -0
- package/dist/index.cjs +2 -2
- package/dist/index.css +1 -1
- package/dist/index.js +40 -40
- package/dist/shell-BRQStYy9.cjs +1 -0
- package/dist/{shell-CdnYaUXk.js → shell-aiiC8SLL.js} +1280 -1413
- package/package.json +3 -3
- package/dist/shell-Bkt0gci9.cjs +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-Chgba0Kb.cjs"),t=require("./useEngineFrame-ujTlLQfa.cjs"),n=require("./AnimationSystem-CHlx6FwX.cjs"),r=require("./logger-B9OaKOPw.cjs"),i=require("./GLTFAssetCache-BymcVceI.cjs"),a=require("./storeDomainPlugin-d8Tmd5eW.cjs"),o=require("./revision-Dq_fdc2e.cjs"),s=require("./runtimeContext-zx_GnKx4.cjs"),c=require("./scopedStore-Px5jL718.cjs"),l=require("./assetStore-DbqlOBWB.cjs"),u=require("./Rideable-CWddzOkn.cjs"),d=require("./WorldPhysics-CueqwH91.cjs"),f=require("./useClicker-0Ln5ZSz0.cjs"),p=require("./CoreBridge-CnLqWZNv.cjs"),m=require("./id-DWiNl1ym.cjs"),h=require("./shell-Bkt0gci9.cjs"),g=require("./defaults-BLDQhn77.cjs"),_=require("./serviceKey-DwHFFFAA.cjs"),v=require("./weatherStore-DwLl0Jjo.cjs"),y=require("./WorldProps-L3Izutxz.cjs"),b=require("./SaveSystem-DwfckGGo.cjs"),x=require("./clientServices-Bs-PZVqS.cjs"),S=require("./guards-FnxbNibY.cjs"),C=require("./areas-CnRl22N4.cjs"),w=require("./engine-DLNEnn0R.cjs"),T=require("./useGenericRefs-CZ_HIQG_.cjs"),E=require("./useNavigation-D-c4u9T4.cjs"),D=require("./runtimeFilter-5rYxTYwr.cjs"),O=require("./EventBus-Ch3emYsZ.cjs"),k=require("./validation-B--im0iK.cjs"),A=require("./WorldContainer-BjZj0uvZ.cjs"),j=require("./timeStore-Be94nnui.cjs"),M=require("./WorldBridge-DmvFhm9b.cjs"),N=require("./sceneCompile-D9xft0op.cjs"),P=require("./normals-BtV0LhhY.cjs"),F=require("./release-IDuX7D6M.cjs"),ee=require("./AssetPreviewCanvas-C0cInsac.cjs"),I=require("./plugin-BUKo4q0N.cjs"),L=require("./ControllerWrapper-C6mzwejv.cjs"),R=require("./BlueprintFactory-D6FM31oL.cjs"),z=require("./sfe-DnOKmvUM.cjs"),B=require("./quality-0VukPLnv.cjs"),V=require("./templates-D2DtrEv3.cjs"),H=require("./types-CpzpTnuW.cjs"),U=require("./snapshot-BwAZISiG.cjs"),te=require("./serverHost-_RHfsfYt.cjs"),W=require("./loader-shJVRMj9.cjs"),G=require("./useVisitRoom-GXR8KyFN.cjs"),ne=require("./Gamepad-BVhh5IfO.cjs"),re=require("./outline-DX9TqHot.cjs"),K=require("./LutOverlay-TKW0BDN1.cjs");let q=require("three");q=e.n(q,1);let J=require("react"),ie=require("zustand"),Y=require("@react-three/fiber"),X=require("react/jsx-runtime"),ae=require("zustand/react/shallow"),oe=require("@react-three/rapier"),se=require("@react-three/drei");var ce=class{constructor(e={}){this.id=e.id??`free`,this.precision=e.precision??1e3}toWorld(e){return{...e.position}}fromWorld(e){return{position:{...e}}}getNeighbors(e){return[e]}equals(e,t){return this.key(e)===this.key(t)}key(e){let t=e.position;return[this.quantize(t.x),this.quantize(t.y),this.quantize(t.z)].join(`:`)}quantize(e){return Math.round(e*this.precision)/this.precision}},le=class{},ue=class extends le{constructor(e={},t=0){super(),this.config=e,this.waterLevel=t}setWaterLevel(e){this.waterLevel=e}update(e,t){let n=this.config.buoyancy??0;if(n===0||t<=0)return;let r=e.translation(),i=Math.max(0,this.waterLevel-r.y);i!==0&&e.addForce({x:0,y:i*n*t,z:0},!0)}},de=class extends le{constructor(e={},t=[1,0,0],n=0){super(),this.config=e,this.direction=Array.isArray(t)?new q.Vector3(...t):t.clone(),this.strength=n}setWind(e,t){this.direction=Array.isArray(e)?new q.Vector3(...e):e.clone(),this.strength=t}update(e,t){if(this.strength===0||t<=0)return;let n=this.direction.clone().normalize().multiplyScalar(this.strength*t);e.addForce({x:n.x,y:n.y,z:n.z},!0)}};function fe([e,t,n]){let r=Math.cos(e/2),i=Math.cos(t/2),a=Math.cos(n/2),o=Math.sin(e/2),s=Math.sin(t/2),c=Math.sin(n/2);return[o*i*a+r*s*c,r*s*a-o*i*c,r*i*c+o*s*a,r*i*a-o*s*c]}function pe(e){let t=Math.hypot(...e);if(!Number.isFinite(t)||t<2**-52)throw TypeError(`Rotation must be a finite nonzero quaternion.`);let[n,r,i,a]=e.map(e=>e/t),o=2*(n*i+a*r),s=Math.asin(Math.max(-1,Math.min(1,o)));return Math.abs(o)<.9999999?[Math.atan2(2*(a*n-r*i),1-2*(n*n+r*r)),s,Math.atan2(2*(a*i-n*r),1-2*(r*r+i*i))]:[Math.atan2(2*(r*i+a*n),1-2*(n*n+i*i)),s,0]}function me(e){let[t,n,r,i]=fe(e.rotation),[a,o,s]=e.scale;return[(1-2*(n*n+r*r))*a,2*(t*n+i*r)*a,2*(t*r-i*n)*a,0,2*(t*n-i*r)*o,(1-2*(t*t+r*r))*o,2*(n*r+i*t)*o,0,2*(t*r+i*n)*s,2*(n*r-i*t)*s,(1-2*(t*t+n*n))*s,0,...e.position,1]}function he(e,t){let n=Array(16).fill(0);for(let r=0;r<4;r++)for(let i=0;i<4;i++){let a=0;for(let n=0;n<4;n++)a+=e[n*4+i]*t[r*4+n];n[r*4+i]=a}return n}function ge(e){let t=Math.hypot(e[0],e[1],e[2]),n=Math.hypot(e[4],e[5],e[6]),r=Math.hypot(e[8],e[9],e[10]),i=e[0]*(e[5]*e[10]-e[6]*e[9])-e[4]*(e[1]*e[10]-e[2]*e[9])+e[8]*(e[1]*e[6]-e[2]*e[5]);if(Math.min(t,n,r)<2**-52)throw RangeError(`Singular transform: use getWorldMatrix().`);i<0&&(t=-t);let a=e[0]/t,o=e[4]/n,s=e[8]/r,c=e[1]/t,l=e[5]/n,u=e[9]/r,d=e[2]/t,f=e[6]/n,p=e[10]/r;if(Math.max(Math.abs(a*o+c*l+d*f),Math.abs(a*s+c*u+d*p),Math.abs(o*s+l*u+f*p))>1e-7)throw RangeError(`Sheared transform: use getWorldMatrix().`);let m=Math.abs(s)<.9999999?[Math.atan2(-u,p),Math.asin(Math.max(-1,Math.min(1,s))),Math.atan2(-o,a)]:[Math.atan2(f,l),Math.asin(Math.max(-1,Math.min(1,s))),0];return{position:[e[12],e[13],e[14]],rotation:m.map(h.yt),scale:[t,n,r]}}var _e=Symbol(`scene-root-parent`);function ve(e){let t=h.xt(e);if(!t.ok||!t.document)return{ok:!1,issues:t.issues};let n=t.document,r=new Map,i=new Map;for(let e of n.objects){r.set(e.id,e);let t=e.parentId??_e,n=i.get(t)??[];n.push(e),i.set(t,n)}let a=new Map,o=e=>{let t=[],n;for(let i=e;i&&(n=a.get(i.id),!n);i=i.parentId?r.get(i.parentId):void 0)t.push(i);for(let e=t.length-1;e>=0;e--){let r=me(t[e].transform);n=Object.freeze(n?he(n,r):r),a.set(t[e].id,n)}return n};return{ok:!0,runtime:{document:n,objects:r,children:ye(i),roots:i.get(_e)??[],getObject:e=>r.get(e),getChildren:e=>i.get(e??_e)??[],getWorldTransform:e=>{let t=r.get(e);if(t)return t.parentId?ge(o(t)):t.transform},getWorldMatrix:e=>{let t=r.get(e);return t?o(t):void 0}},issues:[]}}function ye(e){let t=new Map;for(let[n,r]of e)n!==_e&&t.set(n,r);return t}function be(e,t){return ge(he(me(e),me(t)))}var xe=([e,t,n])=>[e,t,h.yt(-n)],Se=([e,t,n,r])=>[h.yt(-e),h.yt(-t),n,r];function Ce(e){let t=h.xt(e);if(!t.ok||!t.document)throw TypeError(`Invalid scene document.`);return{format:`gaesup-unity-scene`,version:1,id:e.id,name:e.name??``,objects:t.document.objects.map(e=>({id:e.id,name:e.name,parentId:e.parentId??``,position:xe(e.transform.position),rotation:Se(fe(e.transform.rotation)),scale:[...e.transform.scale],componentsJson:JSON.stringify(e.components),tags:[...e.tags],layer:e.layer??``}))}}function we(e,t){return Array.isArray(e)&&e.length===t&&e.every(e=>typeof e==`number`&&Number.isFinite(e))}function Te(e){let t=typeof e==`string`?JSON.parse(e):e;if(!S.r(t)||t.format!==`gaesup-unity-scene`||t.version!==1||typeof t.id!=`string`||typeof t.name!=`string`||!Array.isArray(t.objects))throw TypeError(`Invalid Unity scene interchange document.`);let n=t.objects.map(e=>{if(!S.r(e)||![`id`,`name`,`parentId`,`componentsJson`,`layer`].every(t=>typeof e[t]==`string`)||!we(e.position,3)||!we(e.rotation,4)||!we(e.scale,3)||!Array.isArray(e.tags)||!e.tags.every(e=>typeof e==`string`))throw TypeError(`Invalid Unity scene object.`);let t=JSON.parse(e.componentsJson);if(!Array.isArray(t))throw TypeError(`Invalid Unity component metadata.`);return{id:e.id,name:e.name,...e.parentId?{parentId:e.parentId}:{},transform:{position:xe(e.position),rotation:pe(Se(e.rotation)).map(h.yt),scale:e.scale.map(h.yt)},components:t,tags:e.tags,...e.layer?{layer:e.layer}:{}}}),r=h.xt({version:1,id:t.id,...t.name?{name:t.name}:{},objects:n});if(!r.ok||!r.document)throw TypeError(r.issues.map(e=>e.message).join(` `));return h.It(r.document)}function Ee(e,t={}){return Array.from(e.objects.values()).filter(e=>Pe(e,t))}function De(e,t){return Ee(e,t)[0]}function Oe(e,t){return Ee(e,{tag:t})}function ke(e,t){return Ee(e,{layer:t})}function Ae(e,t){return Ee(e,{componentType:t})}function je(e,t){return e.components.find(e=>e.type===t)}function Me(e,t){return e.components.filter(e=>e.type===t)}function Ne(e,t){return e.components.some(e=>e.type===t)}function Pe(e,t){return!(t.id!==void 0&&e.id!==t.id||t.name!==void 0&&e.name!==t.name||t.parentId!==void 0&&e.parentId!==t.parentId||t.layer!==void 0&&e.layer!==t.layer||t.tag!==void 0&&!e.tags.includes(t.tag)||t.tags!==void 0&&!t.tags.every(t=>e.tags.includes(t))||t.componentType!==void 0&&!Ne(e,t.componentType)||t.componentTypes!==void 0&&!t.componentTypes.every(t=>Ne(e,t)))}function Fe(e=[]){let t=[...e];return{register(e){t.push(e)},getMigrations(){return[...t].sort(Le)},migrate(e,n=1){return Ie(e,t,n)}}}function Ie(e,t=[],n=1){let r=typeof e==`string`?Re(e):e;if(!S.r(r))return Be(`Scene document must be an object.`);let i=ze(r);if(!Number.isInteger(i))return Be(`Scene document version must be an integer.`);let a=r,o=i,s=[],c=[...t].sort(Le),l=new Set;for(;o!==n;){if(l.has(o))return Be(`Scene migration loop detected at version ${o}.`,s,o);l.add(o);let e=c.find(e=>e.fromVersion===o&&e.toVersion<=n);if(!e)return Be(`No scene migration found from version ${o} to ${n}.`,s,o,`unsupported-scene-version`);try{a={...e.migrate(a),version:e.toVersion},o=e.toVersion,s.push({fromVersion:e.fromVersion,toVersion:e.toVersion,...e.description?{description:e.description}:{}})}catch(e){return Be(e instanceof Error?e.message:`Scene migration failed.`,s,o,`scene-migration-failed`)}}let u=h.xt(a);return{ok:u.ok,...u.document?{document:u.document}:{},version:o,steps:s,issues:u.issues}}function Le(e,t){return e.fromVersion-t.fromVersion||e.toVersion-t.toVersion}function Re(e){try{return JSON.parse(e)}catch{return null}}function ze(e){return typeof e.version==`number`?e.version:NaN}function Be(e,t=[],n,r=`scene-migration-failed`){return{ok:!1,...n===void 0?{}:{version:n},steps:t,issues:[{code:r,message:e}]}}var Ve=[We({id:`default`,index:0,purposes:[`collision`,`rendering`,`editor`,`selection`]}),We({id:`environment`,index:1,purposes:[`collision`,`rendering`,`editor`]}),We({id:`player`,index:2,purposes:[`collision`,`rendering`,`selection`]}),We({id:`npc`,index:3,purposes:[`collision`,`rendering`,`selection`]}),We({id:`interactable`,index:4,purposes:[`collision`,`rendering`,`editor`,`selection`]}),We({id:`editor`,index:5,purposes:[`editor`],selectable:!1})],He=[Ge({id:`player`}),Ge({id:`npc`}),Ge({id:`resource`}),Ge({id:`interactable`}),Ge({id:`spawn`})],Ue={layers:Ve,tags:He};function We(e){return{id:e.id,...e.name?{name:e.name}:{},...e.index===void 0?{}:{index:e.index},purposes:e.purposes??[`collision`,`rendering`,`editor`,`selection`],visible:e.visible??!0,selectable:e.selectable??!0}}function Ge(e){return{id:e.id,...e.name?{name:e.name}:{},...e.color?{color:e.color}:{}}}function Ke(e={}){return{layers:e.layers?.map(We)??[...Ve],tags:e.tags?.map(Ge)??[...He]}}function qe(e){let t=[],n=new Set,r=new Set,i=new Set;return e.layers.forEach((e,i)=>{tt(e.id)||t.push(nt(`invalid-layer`,`layers.${i}.id`,`Layer id must be a non-empty string.`)),n.has(e.id)&&t.push(nt(`duplicate-layer`,`layers.${i}.id`,`Duplicate layer "${e.id}".`)),n.add(e.id),e.index!==void 0&&(!Number.isInteger(e.index)||e.index<0?t.push(nt(`invalid-layer`,`layers.${i}.index`,`Layer index must be a non-negative integer.`)):r.has(e.index)&&t.push(nt(`duplicate-layer-index`,`layers.${i}.index`,`Duplicate layer index ${e.index}.`)),r.add(e.index))}),e.tags.forEach((e,n)=>{tt(e.id)||t.push(nt(`invalid-tag`,`tags.${n}.id`,`Tag id must be a non-empty string.`)),i.has(e.id)&&t.push(nt(`duplicate-tag`,`tags.${n}.id`,`Duplicate tag "${e.id}".`)),i.add(e.id)}),{valid:t.length===0,issues:t}}function Je(e,t){let n=[...qe(t).issues],r=new Set(t.layers.map(e=>e.id)),i=new Set(t.tags.map(e=>e.id));return e.objects.forEach(e=>{e.layer&&!r.has(e.layer)&&n.push(nt(`unknown-object-layer`,et(e,`layer`),`Unknown layer "${e.layer}".`)),e.tags.forEach((t,r)=>{i.has(t)||n.push(nt(`unknown-object-tag`,et(e,`tags.${r}`),`Unknown tag "${t}".`))})}),{valid:n.length===0,issues:n}}function Ye(e,t){let n=[],r=new Set(t.layers.map(e=>e.id));return Object.entries(e.collisionMatrix).forEach(([e,t])=>{r.has(e)||n.push(nt(`unknown-collision-layer`,`collisionMatrix.${e}`,`Unknown collision layer "${e}".`)),t.forEach((t,i)=>{r.has(t)||n.push(nt(`unknown-collision-layer`,`collisionMatrix.${e}.${i}`,`Unknown collision target "${t}".`))})}),{valid:n.length===0,issues:n}}function Xe(e,t,n){return!!(e.collisionMatrix[t]?.includes(n)||e.collisionMatrix[n]?.includes(t))}function Ze(e,t){return e.layers.find(e=>e.id===t)?.visible??!0}function Qe(e,t){return e.layers.find(e=>e.id===t)?.selectable??!0}function $e(e,t){return e.layers.filter(e=>e.purposes.includes(t))}function et(e,t){return`objects.${e.id}.${t}`}function tt(e){return typeof e==`string`&&e.trim().length>0}function nt(e,t,n){return{code:e,path:t,message:n}}var rt=16,it=16;function at(e){return e.purposes.includes(`collision`)&&e.index!==void 0&&e.index<rt}function ot(e,t){let n=e.layers.filter(at),r=new Map;return n.forEach(e=>{let i=0;n.forEach(n=>{Xe(t,e.id,n.id)&&(i|=1<<n.index)}),r.set(e.id,(1<<e.index<<it|i)>>>0)}),r}function st(e){let t=h.xt(e);if(!t.ok||!t.document)throw TypeError(lt(t.issues));let n=h.ht(h.gt(t.document)),r=0,i=new Map,a=[],o=!1,s=e=>{if(a.push(e),!o){o=!0;try{for(let e=0;e<a.length;e++){let t=a[e];if(!t)continue;let n=[...i.values()];for(let e of n)try{e.listener(t.snapshot,t.event,{revision:t.revision})}catch(e){ct(e)}}}finally{a.length=0,o=!1}}};return{getSnapshot:()=>n,getRevision:()=>r,subscribe:e=>{let t={listener:e};return i.set(e,t),()=>{i.get(e)===t&&i.delete(e)}},dispatch:(e,t)=>{if(t?.expectedRevision!==void 0&&t.expectedRevision!==r)return{accepted:!1,document:n,issues:[{code:`revision-conflict`,message:`Expected revision ${t.expectedRevision}, current revision is ${r}.`}]};let i=h.dt(n,e);return i.accepted?(n=i.document,r++,s({snapshot:i.document,event:i.event,revision:r}),i):i}}}function ct(e){try{r.t.error(`Scene document controller listener failed.`,e instanceof Error?e:String(e))}catch{}}function lt(e){return e.map(e=>e.message).join(` `)||`Scene document is invalid.`}function ut(e,t){e.removed.delete(t)?e.updated.add(t):e.added.add(t)}function dt(e,t){e.added.has(t)||e.updated.add(t)}function ft(e,t){e.added.delete(t)||(e.updated.delete(t),e.removed.add(t))}function pt(e,t){switch(t.type){case`scene-document.replaced`:e.reset=!0;return;case`scene-object.created`:ut(e,t.objectId);return;case`scene-object.deleted`:for(let n of t.objectIds)ft(e,n);return;case`scene-object.updated`:case`scene-object.moved`:case`scene-object.component.added`:case`scene-object.component.removed`:case`scene-object.component.updated`:dt(e,t.objectId);return;case`scene-document.batch-applied`:for(let n of t.events)pt(e,n);return}}function mt(e){let t={reset:!1,added:new Set,removed:new Set,updated:new Set};return pt(t,e),t}function ht(e,t){return e.subscribe((e,n,r)=>t(e,mt(n),r.revision))}var gt=`scene-document`;function _t(e,t=[]){let n=t.map(e=>({...e})),r=t=>{if(t==null)return()=>{};let r=Ie(t,n);if(!r.ok||!r.document)throw TypeError(vt(r.issues));let i=h.ht(h.gt(r.document));return()=>{let t=e.dispatch({type:`scene-document.replace`,document:i});if(!t.accepted)throw TypeError(vt(t.issues))}};return{key:gt,serialize:()=>{let t=e.getSnapshot();return h.mt(t)?f.qt(t):h.bt(t)},owned:!0,revision:o.t(()=>{let t=e.getSnapshot();return[h.mt(t)?t:{}]}),prepareHydrate:r,hydrate:e=>r(e)()}}function vt(e){return e.map(e=>e.message).join(` `)||`Scene document is invalid.`}function yt(e,t){return t?e.map(e=>({...e,id:`${t}${e.id}`,...e.parentId===void 0?{}:{parentId:`${t}${e.parentId}`},components:e.components.map(e=>({...e,id:`${t}${e.id}`}))})):[...e]}var bt=class{constructor(e){this.controller=e,this.loaders=new Map,this.loaded=new Map,this.listeners=new Set,this.generation=0}register(e,t){return this.loaders.set(e,t),()=>{this.loaders.get(e)===t&&this.loaders.delete(e)}}has(e){return this.loaders.has(e)}getLoadedScenes(){return Array.from(this.loaded.keys())}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async load(e,t={}){let n=this.loaders.get(e),r=t.additive??!1;if(!n)return this.emit({type:`failed`,sceneId:e,message:`등록되지 않은 씬입니다: ${e}`}),!1;let i=++this.generation;this.emit({type:`loading`,sceneId:e,additive:r});let a;try{a=await n()}catch(t){return this.emit({type:`failed`,sceneId:e,message:t instanceof Error?t.message:String(t)}),!1}if(!r&&i!==this.generation)return!1;let o=h.xt(a);return!o.ok||!o.document?(this.emit({type:`failed`,sceneId:e,message:o.issues[0]?.message??`씬 문서가 올바르지 않습니다`}),!1):r?this.mergeAdditive(e,o.document,t.idPrefix??`${e}:`):this.replace(e,o.document)}unload(e){let t=this.loaded.get(e);if(!t||!t.additive)return!1;let n=this.controller.getSnapshot();return this.controller.dispatch({type:`scene-document.replace`,document:{...n,objects:n.objects.filter(e=>!t.objectIds.has(e.id))}}).accepted?(this.loaded.delete(e),this.emit({type:`unloaded`,sceneId:e}),!0):!1}replace(e,t){let n=this.controller.dispatch({type:`scene-document.replace`,document:t});return n.accepted?(this.loaded.clear(),this.loaded.set(e,{sceneId:e,additive:!1,objectIds:new Set(t.objects.map(e=>e.id))}),this.emit({type:`loaded`,sceneId:e,additive:!1,objectCount:t.objects.length}),!0):(this.emit({type:`failed`,sceneId:e,message:n.issues[0]?.message??`씬 교체가 거부되었습니다`}),!1)}mergeAdditive(e,t,n){this.loaded.has(e)&&this.unload(e);let r=this.controller.getSnapshot(),i=yt(t.objects,n),a=this.controller.dispatch({type:`scene-document.replace`,document:{...r,objects:[...r.objects,...i]}});return a.accepted?(this.loaded.set(e,{sceneId:e,additive:!0,objectIds:new Set(i.map(e=>e.id))}),this.emit({type:`loaded`,sceneId:e,additive:!0,objectCount:i.length}),!0):(this.emit({type:`failed`,sceneId:e,message:a.issues[0]?.message??`씬 병합이 거부되었습니다`}),!1)}emit(e){this.listeners.forEach(t=>t(e))}},xt=`sceneObjectId`,St=[1,1,1],Ct=.5,wt=1,Tt=.5,Et={fixed:`fixed`,dynamic:`dynamic`,kinematic:`kinematicPosition`};function Dt(e,t){let n=je(e,t);return n?.enabled?n.data:void 0}function Ot({other:e}){let t=e.rigidBodyObject,n=t?.userData[xt];return typeof n==`string`?n:t?.name??``}function kt({object:e,collisionGroups:t,onPhysicsEvent:n,children:r}){let i=Dt(e,h.wt.collider);if(!i)return(0,X.jsx)(X.Fragment,{children:r});let a=Dt(e,h.wt.rigidBody),o=e.layer?t?.get(e.layer):void 0,s={sensor:i.trigger===!0,...o===void 0?{}:{collisionGroups:o},...a?.mass===void 0?{}:{mass:a.mass}},c=t=>r=>{n?.(t,e.id,Ot(r))},l=i.size??St,u=i.radius??Ct,d=i.height??wt;return(0,X.jsxs)(oe.RigidBody,{type:Et[a?.type??`fixed`],colliders:i.shape===`mesh`&&`trimesh`,position:[...e.transform.position],rotation:[...e.transform.rotation],userData:{[xt]:e.id},...a?.gravityScale===void 0?{}:{gravityScale:a.gravityScale},...a?.lockRotations?{lockRotations:!0}:{},...i.shape===`mesh`?s:{},onIntersectionEnter:c(`triggerEnter`),onIntersectionExit:c(`triggerExit`),onCollisionEnter:c(`collisionEnter`),onCollisionExit:c(`collisionExit`),children:[i.shape===`box`&&(0,X.jsx)(oe.CuboidCollider,{args:[l[0]*Tt,l[1]*Tt,l[2]*Tt],...s}),i.shape===`sphere`&&(0,X.jsx)(oe.BallCollider,{args:[u],...s}),i.shape===`capsule`&&(0,X.jsx)(oe.CapsuleCollider,{args:[Math.max(0,d*Tt-u),u],...s}),r]})}function At(e){return JSON.stringify(e)}function jt(e){return Mt(At(e)).prefab??h.st({id:e.id,name:e.name})}function Mt(e){let t=typeof e==`string`?Pt(e):e;if(!t||typeof t!=`object`)return Ft(`Prefab document must be an object.`);let n=t;if(n.version!==1)return Ft(`Prefab document version must be 1.`);if(typeof n.id!=`string`||!n.id.trim())return Ft(`Prefab document id must be a non-empty string.`);if(!Array.isArray(n.objects))return Ft(`Prefab document objects must be an array.`);let r=h.st({id:n.id,...typeof n.name==`string`?{name:n.name}:{},objects:n.objects,...Array.isArray(n.rootObjectIds)?{rootObjectIds:n.rootObjectIds.filter(e=>typeof e==`string`)}:{},...n.metadata&&typeof n.metadata==`object`?{metadata:It(n.metadata)}:{}}),i=h.ut(r);return{ok:i.valid,prefab:r,issues:i.issues}}function Nt(e){let t=Mt(e);return{valid:t.ok,issues:t.issues}}function Pt(e){try{return JSON.parse(e)}catch{return null}}function Ft(e){return{ok:!1,issues:[{code:`invalid-prefab-scene`,message:e}]}}function It(e){let t=e;return{...typeof t.description==`string`?{description:t.description}:{},...typeof t.thumbnailUrl==`string`?{thumbnailUrl:t.thumbnailUrl}:{},...Array.isArray(t.tags)?{tags:t.tags.filter(e=>typeof e==`string`)}:{},...typeof t.sourceSceneId==`string`?{sourceSceneId:t.sourceSceneId}:{},...typeof t.createdAt==`string`?{createdAt:t.createdAt}:{},...typeof t.updatedAt==`string`?{updatedAt:t.updatedAt}:{}}}var Lt=class{constructor(e,t,n){this.rigidBody=null,this.targetPosition=null,this.isAutomated=!1,this.isSteering=!1,this.unsubscribe=null,this.latestSnapshot=null,this.tempDirection=new q.Vector3,this.id=e,this.bridge=n??p.n.getOrCreateFor(f.ur),this.motionType=t}initialize(){this.unsubscribe||=this.bridge.subscribe((e,t)=>{if(t===this.id&&(e&&(this.latestSnapshot=e),this.isAutomated&&this.targetPosition&&!this.isSteering)){this.isSteering=!0;try{this.handleAutomatedMovement(e)}finally{this.isSteering=!1}}})}setRigidBody(e){this.rigidBody=e,this.bridge.register(this.id,this.motionType,e)}execute(e){this.bridge.execute(this.id,e)}move(e){this.execute({type:`move`,data:{movement:e}})}jump(){this.execute({type:`jump`})}stop(){this.execute({type:`stop`})}turn(e){this.execute({type:`turn`,data:{direction:e}})}reset(){this.execute({type:`reset`})}setConfig(e){this.execute({type:`setConfig`,data:{config:e}})}enableAutomation(e){this.isAutomated=!0,this.targetPosition=e}disableAutomation(){this.isAutomated=!1,this.targetPosition=null}handleAutomatedMovement(e){if(!this.targetPosition||!this.rigidBody)return;let t=e.position,n=this.targetPosition.x-t.x,r=this.targetPosition.y-t.y,i=this.targetPosition.z-t.z,a=n*n+r*r+i*i;if(a<.25)this.stop(),this.disableAutomation();else{let t=Math.sqrt(a),o=Math.min(t*2,e.config.maxSpeed),s=t>0?1/t:0;this.tempDirection.set(n*s*o,r*s*o,i*s*o),this.move(this.tempDirection)}}getMotionType(){return this.motionType}getSnapshot(){if(this.latestSnapshot)return this.latestSnapshot;let e=this.bridge.getCachedSnapshot(this.id);if(e)return this.latestSnapshot=e,e;let t=this.bridge.snapshot(this.id);return t&&(this.latestSnapshot=t),t}isGrounded(){return this.getSnapshot()?.isGrounded??!1}isMoving(){return this.getSnapshot()?.isMoving??!1}getSpeed(){return this.getSnapshot()?.speed??0}dispose(){this.stop(),this.disableAutomation(),this.unsubscribe?.(),this.unsubscribe=null,this.latestSnapshot=null,this.bridge.unregister(this.id)}};function Rt(e,t){let{motionType:n,rigidBodyRef:r,position:i,autoStart:a=!0}=t,o=f.L(),s=(0,J.useMemo)(()=>o?new Lt(e,n,o):null,[o,e,n]);(0,J.useEffect)(()=>{if(s)return s.initialize(),()=>s.dispose()},[s]),(0,J.useEffect)(()=>{let e=r.current;s&&e&&a&&(s.setRigidBody(e),i&&e.setTranslation(i,!0))},[s,r,i,a]);let c=e=>{s?.move(e)},l=()=>{s?.jump()},u=()=>{s?.stop()},d=e=>{s?.turn(e)},p=()=>{s?.reset()},m=e=>{s?.setConfig(e)},h=e=>{s?.enableAutomation(e)},g=()=>{s?.disableAutomation()},_=s?.getSnapshot();return{entity:s,move:c,jump:l,stop:u,turn:d,reset:p,setConfig:m,enableAutomation:h,disableAutomation:g,isGrounded:s?.isGrounded()??!1,isMoving:s?.isMoving()??!1,speed:s?.getSpeed()??0,position:_?.position??null,velocity:_?.velocity??null}}function zt({blueprint:e,rigidBodyRef:n,innerGroupRef:i,outerGroupRef:a,animationClips:o,enabled:s=!0,getMovementInput:c}){let l=(0,J.useRef)(null),[u,d]=(0,J.useState)(null);return(0,J.useEffect)(()=>{if(!s||!n.current)return;R.c();let t=R.t.getInstance(),c={rigidBodyRef:n,...i?{innerGroupRef:i}:{},...a?{outerGroupRef:a}:{},...o?{animationClips:o}:{}},u;if(typeof e==`string`){let n=R.n.get(e);if(!n){r.t.error(`Blueprint not found: ${e}`);return}u=t.createEntity(n,c)}else u=t.createFromDefinition(e,c);return l.current=u,d(u),()=>{l.current=null,d(null),u.dispose()}},[e,n,i,a,o,s]),t.t(`prePhysics`,e=>{s&&l.current&&l.current.update(e,c?.())},{active:s,label:`motions:blueprint-entity`}),{entity:u,getComponent:e=>l.current?.getComponent(e),addComponent:e=>l.current?.addComponent(e),removeComponent:e=>l.current?.removeComponent(e)}}function Bt(){return y.N(e=>e.current)}function Vt(e=!0){let t=T.y(),n=y.P();(0,J.useEffect)(()=>{if(e)return t.register(`interaction.activate`,{key:()=>n.getState().current?.key,execute:()=>n.getState().activateCurrent()})},[t,n,e])}function Ht({throttleMs:e=80}={}){let{position:n}=L.l({reactive:!1}),r=y.P();return t.t(`postPhysics`,(t,i)=>{r.getState().track(n,i,e)},{order:10,label:`interactions:tracker`}),null}function Ut(){let e=f.i(),[t,n]=(0,J.useState)(()=>({keyboard:e.getKeyboard(),mouse:e.getMouse()}));(0,J.useEffect)(()=>(n({keyboard:e.getKeyboard(),mouse:e.getMouse()}),e.subscribe?.(e=>{n({keyboard:e.keyboard,mouse:e.mouse})})),[e]);let r=(0,J.useCallback)(t=>{e.updateKeyboard(t),e.subscribe||n({keyboard:e.getKeyboard(),mouse:e.getMouse()})},[e]),i=(0,J.useCallback)(t=>{e.updateMouse(t),e.subscribe||n({keyboard:e.getKeyboard(),mouse:e.getMouse()})},[e]),a=(0,J.useCallback)(e=>{i(e)},[i]);return{keyboard:t.keyboard,mouse:t.mouse,updateKeyboard:r,updateMouse:i,dispatchInput:a}}var Wt=class{constructor(e){this.isEnabled=!1,this.positionHistory=[],this.debugInfo=[],this.maxHistoryLength=100,this.cleanupInterval=null,this.disposables=new Set,this.debugLines=[],this.scene=null,this.handleResize=()=>{this.clearDebugInfo()},this.scene=e||null}enable(e){this.isEnabled=!0,e&&(this.scene=e),this.setupCleanupInterval(),this.setupEventListeners()}disable(){this.isEnabled=!1,this.cleanup()}setupCleanupInterval(){this.cleanupInterval=window.setInterval(()=>{this.cleanupOldHistory()},5e3),this.disposables.add(()=>{this.cleanupInterval&&=(clearInterval(this.cleanupInterval),null)})}setupEventListeners(){let e=()=>this.handleResize();window.addEventListener(`resize`,e),this.disposables.add(()=>window.removeEventListener(`resize`,e))}update(e,t,n){if(!this.isEnabled)return;let r=e.position.clone(),i=new q.Vector3;e.getWorldDirection(i),i.multiplyScalar(10).add(r),this.addPositionToHistory(r);let a={position:r.clone(),target:i.clone(),distance:r.length(),fov:e instanceof q.PerspectiveCamera?e.fov:0,state:n||`unknown`,timestamp:Date.now()};this.addDebugInfo(a),this.updateDebugVisuals(e)}addPositionToHistory(e){this.positionHistory.push(e.clone()),this.positionHistory.length>this.maxHistoryLength&&this.positionHistory.shift()}addDebugInfo(e){this.debugInfo.push(e),this.debugInfo.length>this.maxHistoryLength&&this.debugInfo.shift()}updateDebugVisuals(e){if(this.scene&&(this.clearDebugLines(),this.positionHistory.length>1)){let e=new q.BufferGeometry,t=[];this.positionHistory.forEach(e=>{t.push(e.x,e.y,e.z)}),e.setAttribute(`position`,new q.Float32BufferAttribute(t,3));let n=new q.LineBasicMaterial({color:65280,transparent:!0,opacity:.6}),r=new q.Line(e,n);this.scene.add(r),this.debugLines.push(r),this.disposables.add(()=>{e.dispose(),n.dispose(),this.scene&&this.scene.remove(r)})}}clearDebugLines(){this.debugLines.forEach(e=>{e.geometry&&e.geometry.dispose(),e.material instanceof q.Material&&e.material.dispose(),this.scene&&this.scene.remove(e)}),this.debugLines.length=0}cleanupOldHistory(){let e=Date.now();if(this.debugInfo=this.debugInfo.filter(t=>e-t.timestamp<1e4),this.positionHistory.length>this.maxHistoryLength*.8){let e=Math.floor(this.positionHistory.length*.2);this.positionHistory.splice(0,e)}}getDebugInfo(){return[...this.debugInfo]}getPositionHistory(){return[...this.positionHistory]}exportData(){let e={debugInfo:this.debugInfo,positionHistory:this.positionHistory.map(e=>({x:e.x,y:e.y,z:e.z})),timestamp:Date.now()};return JSON.stringify(e,null,2)}clearDebugInfo(){this.debugInfo.length=0,this.positionHistory.length=0,this.clearDebugLines()}cleanup(){this.clearDebugInfo(),this.clearDebugLines()}dispose(){this.disable(),this.disposables.forEach(e=>e()),this.disposables.clear(),this.cleanup()}},Gt=`gaesup.camera`,Kt=`camera.system`,qt=`camera`,Jt=`camera.store`,Yt=new Set([`scene`,`colliders`]),Xt=new Set([`focusTarget`,`fixedPosition`]),Zt=new Set([`offset`,`maxDistance`,`distance`,`target`,`position`,`focusDuration`,`minFov`,`maxFov`,`mode`,`rotation`,`isoAngle`,`modeSettings`]);function Qt(e){if(e instanceof q.Vector3)return{x:e.x,y:e.y,z:e.z};if(e instanceof q.Euler)return{x:e.x,y:e.y,z:e.z,order:e.order};if(Array.isArray(e))return e.map(Qt);if(e&&typeof e==`object`)return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Qt(t)]));if(e==null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e}function $t(e){if(!e||typeof e!=`object`)return!1;let t=e;return Number.isFinite(t.x)&&Number.isFinite(t.y)&&Number.isFinite(t.z)}function en(e){let t={};for(let[n,r]of Object.entries(e))if(!(r===void 0||Zt.has(n))){if(Xt.has(n)&&!$t(r))throw TypeError(`Invalid camera vector`);if(Xt.has(n)&&$t(r)){Object.assign(t,{[n]:new q.Vector3(r.x,r.y,r.z)});continue}Object.assign(t,{[n]:Qt(r)})}return t}function tn(e=p.o){let t=e.getState();return{mode:{...t.mode},cameraOption:Qt(Object.fromEntries(Object.entries(t.cameraOption).filter(([e])=>!Zt.has(e))))}}function nn(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`Invalid camera numeric options`);for(let t of Object.values(e))if(t!==void 0){if(t&&typeof t==`object`)nn(t);else if(typeof t!=`number`||!Number.isFinite(t))throw TypeError(`Invalid camera numeric option`)}}function rn(e,t=p.o){if(e==null)return()=>{};if(typeof e!=`object`||Array.isArray(e)||e.mode!==void 0&&(!e.mode||typeof e.mode!=`object`||Array.isArray(e.mode))||e.cameraOption!==void 0&&(!e.cameraOption||typeof e.cameraOption!=`object`||Array.isArray(e.cameraOption)))throw TypeError(`Invalid camera snapshot`);let n=e.mode?{...e.mode}:void 0;if(n&&(n.type!==void 0&&![`character`,`vehicle`,`airplane`].includes(n.type)||n.controller!==void 0&&![`keyboard`,`clicker`,`gamepad`].includes(n.controller)||n.control!==void 0&&![`thirdPerson`,`firstPerson`,`topDown`,`sideScroll`,`isometric`,`fixed`,`chase`].includes(n.control)))throw TypeError(`Invalid camera mode`);let r=e.cameraOption;if(r){for(let e of[`maxDistance`,`distance`,`xDistance`,`yDistance`,`zDistance`,`zoom`,`zoomSpeed`,`minZoom`,`maxZoom`,`focusDuration`,`focusDistance`,`focusLerpSpeed`,`collisionMargin`,`fov`,`minFov`,`maxFov`,`isoAngle`])if(r[e]!==void 0&&(typeof r[e]!=`number`||!Number.isFinite(r[e])))throw TypeError(`Invalid camera number`);for(let e of[`enableZoom`,`focus`,`enableFocus`,`enableCollision`])if(r[e]!==void 0&&typeof r[e]!=`boolean`)throw TypeError(`Invalid camera boolean`);for(let e of[`smoothing`,`bounds`,`modeSettings`])r[e]!==void 0&&nn(r[e]);if(r.mode!==void 0&&typeof r.mode!=`string`)throw TypeError(`Invalid camera option mode`);if(r.collisionTargets!==void 0&&!Yt.has(r.collisionTargets))throw TypeError(`Invalid camera collision targets`)}let i=r?en(r):void 0;return()=>{let e=t.getState();n&&e.setMode(n),i&&e.setCameraOption(i)}}function an(e){let{mode:t,cameraOption:n}=e.getInitialState(),r=en(Qt(n));e.setState({mode:{...t},cameraOption:r})}function on(e,t=p.o){rn(e,t)()}function sn(e={}){let t=e.id??Gt,n=e.systemExtensionId??`camera.system`,r=e.saveExtensionId??`camera`,i=e.storeServiceId??`camera.store`;return{id:t,name:`GaeSup Camera`,version:`0.1.0`,runtime:`client`,capabilities:[`camera`],setup(e){let a=e.services.get(`gaesup.runtime.world-store`)??p.o;e.systems.register(n,{System:T.a,create:e=>new T.a(e)},t),e.save.register(r,{key:r,serialize:()=>tn(a),hydrate:e=>on(e,a),prepareHydrate:e=>rn(e,a),revision:o.t(()=>[a.getState().mode,a.getState().cameraOption]),reset:()=>an(a)},t),e.services.register(i,{useStore:a,getState:()=>tn(a),setMode:e=>a.getState().setMode(e),setCameraOption:e=>a.getState().setCameraOption(e)},t),e.events.emit(`camera:ready`,{pluginId:t,systemExtensionId:n,saveExtensionId:r,storeServiceId:i})},dispose(e){e.systems.remove(n),e.save.remove(r),e.services.remove(i)}}}var cn=sn(),ln={onClick:`클릭할 때`,onHover:`커서를 올릴 때`,onInteract:`상호작용할 때`,onProximity:`가까이 다가갈 때`},un={dialogue:`대화 표시`,animation:`애니메이션 재생`,sound:`소리 재생`,custom:`사용자 지정 동작`};function dn({instanceId:e,onClose:t}){let n=y.a(t=>t.instances.get(e)),r=y.a(e=>e.addInstanceEvent),i=y.a(e=>e.removeInstanceEvent),[a,o]=(0,J.useState)(`onClick`),[s,c]=(0,J.useState)(`dialogue`),[l,u]=(0,J.useState)(``),[d,f]=(0,J.useState)(``);return n?(0,X.jsxs)(`div`,{className:`npc-event-editor`,children:[(0,X.jsxs)(`div`,{className:`npc-event-editor-header`,children:[(0,X.jsxs)(`h3`,{children:[`이벤트 편집: `,n.name]}),(0,X.jsx)(`button`,{type:`button`,"aria-label":`이벤트 편집 닫기`,onClick:t,className:`npc-event-editor-close`,children:`×`})]}),(0,X.jsxs)(`div`,{className:`npc-event-editor-content`,children:[(0,X.jsxs)(`div`,{className:`npc-event-editor-section`,children:[(0,X.jsx)(`h4`,{children:`등록된 이벤트`}),n.events&&n.events.length>0?(0,X.jsx)(`ul`,{className:`npc-event-list`,children:n.events.map(t=>(0,X.jsxs)(`li`,{className:`npc-event-item`,children:[(0,X.jsxs)(`span`,{children:[ln[t.type],` → `,un[t.action]]}),(0,X.jsx)(`button`,{onClick:()=>i(e,t.id),className:`npc-event-remove`,children:`삭제`})]},t.id))}):(0,X.jsx)(`p`,{className:`npc-event-empty`,children:`등록된 이벤트가 없습니다`})]}),(0,X.jsxs)(`div`,{className:`npc-event-editor-section`,children:[(0,X.jsx)(`h4`,{children:`새 이벤트 추가`}),(0,X.jsxs)(`div`,{className:`npc-event-editor-field`,children:[(0,X.jsx)(`label`,{children:`발생 조건:`}),(0,X.jsxs)(`select`,{value:a,onChange:e=>o(e.target.value),className:`npc-event-editor-select`,children:[(0,X.jsx)(`option`,{value:`onClick`,children:`클릭할 때`}),(0,X.jsx)(`option`,{value:`onHover`,children:`커서를 올릴 때`}),(0,X.jsx)(`option`,{value:`onInteract`,children:`상호작용할 때`}),(0,X.jsx)(`option`,{value:`onProximity`,children:`가까이 다가갈 때`})]})]}),(0,X.jsxs)(`div`,{className:`npc-event-editor-field`,children:[(0,X.jsx)(`label`,{children:`실행 동작:`}),(0,X.jsxs)(`select`,{value:s,onChange:e=>c(e.target.value),className:`npc-event-editor-select`,children:[(0,X.jsx)(`option`,{value:`dialogue`,children:`대화 표시`}),(0,X.jsx)(`option`,{value:`animation`,children:`애니메이션 재생`}),(0,X.jsx)(`option`,{value:`sound`,children:`소리 재생`}),(0,X.jsx)(`option`,{value:`custom`,children:`사용자 지정 동작`})]})]}),s===`dialogue`&&(0,X.jsxs)(`div`,{className:`npc-event-editor-field`,children:[(0,X.jsx)(`label`,{children:`대화 내용:`}),(0,X.jsx)(`textarea`,{value:l,onChange:e=>u(e.target.value),placeholder:`대화 내용을 입력하세요…`,className:`npc-event-editor-textarea`})]}),s===`animation`&&(0,X.jsxs)(`div`,{className:`npc-event-editor-field`,children:[(0,X.jsx)(`label`,{children:`애니메이션:`}),(0,X.jsxs)(`select`,{value:d,onChange:e=>f(e.target.value),className:`npc-event-editor-select`,children:[(0,X.jsx)(`option`,{value:``,children:`애니메이션 선택…`}),(0,X.jsx)(`option`,{value:`idle`,children:`대기`}),(0,X.jsx)(`option`,{value:`walk`,children:`걷기`}),(0,X.jsx)(`option`,{value:`talk`,children:`대화`})]})]}),(0,X.jsx)(`button`,{onClick:()=>{let t;switch(s){case`dialogue`:t={type:`dialogue`,text:l};break;case`animation`:t={type:`animation`,animationId:d};break;case`sound`:t={type:`sound`,soundUrl:``};break;case`custom`:t={type:`custom`,data:{script:``}}}let n={id:m.t(`event`),type:a,action:s,...t?{payload:t}:{}};r(e,n),u(``),f(``)},className:`npc-event-editor-add-button`,disabled:s===`dialogue`&&!l||s===`animation`&&!d,children:`이벤트 추가`})]})]})]}):null}var fn=`gaesup.npc`,pn=`npc`,mn=`npc.store`;function hn(e=y.a){let t=e.getState();return{version:1,templates:Array.from(t.templates.values(),f.qt),instances:Array.from((y.u(e)?.snapshotInstances()??t.instances).values(),f.qt),categories:Array.from(t.categories.values(),f.qt),clothingSets:Array.from(t.clothingSets.values(),f.qt),clothingCategories:Array.from(t.clothingCategories.values(),f.qt),animations:Array.from(t.animations.values(),f.qt),brainBlueprints:Array.from(t.brainBlueprints.values(),f.qt)}}function gn(e){if(!Array.isArray(e))throw TypeError(`Invalid NPC collection`);let t=new Map;for(let n of e){if(!n||typeof n!=`object`||typeof n.id!=`string`||!n.id.trim()||t.has(n.id))throw TypeError(`Invalid NPC collection ID`);t.set(n.id,f.qt(n))}return t}function _n(e,t=y.a){if(e==null)return()=>{};let n=Array.isArray(e)?{instances:e}:e;if(typeof n!=`object`||n.version!==void 0&&n.version!==1)throw TypeError(`Invalid NPC snapshot`);let r={...n.templates===void 0?{}:{templates:gn(n.templates)},...n.categories===void 0?{}:{categories:gn(n.categories)},...n.clothingSets===void 0?{}:{clothingSets:gn(n.clothingSets)},...n.clothingCategories===void 0?{}:{clothingCategories:gn(n.clothingCategories)},...n.animations===void 0?{}:{animations:gn(n.animations)},...n.brainBlueprints===void 0?{}:{brainBlueprints:gn(n.brainBlueprints)},...n.instances===void 0?{}:{instances:gn(n.instances)}};for(let e of r.instances?.values()??[])if(typeof e.templateId!=`string`||!e.templateId.trim()||typeof e.name!=`string`||![e.position,e.rotation,e.scale].every(e=>Array.isArray(e)&&e.length===3&&[...e].every(Number.isFinite)))throw TypeError(`Invalid NPC instance transform`);return()=>t.setState(r)}function vn(e,t=y.a){_n(e,t)()}function yn(e={}){let t=e.id??fn,n=e.saveExtensionId??pn,r=e.storeServiceId??mn;return{id:t,name:`GaeSup NPC`,version:`0.1.0`,runtime:`client`,capabilities:[`npc`],setup(e){let i=e.services.get(y.r)??y.a;e.save.register(n,{key:n,serialize:()=>hn(i),hydrate:e=>vn(e,i),prepareHydrate:e=>_n(e,i),owned:!0,revision:o.t(()=>{let e=i.getState();return[e.templates,e.instances,e.categories,e.clothingSets,e.clothingCategories,e.animations,e.brainBlueprints,y.u(i)?.poseRevision??0]}),reset:()=>{let{templates:e,instances:t,categories:n,clothingSets:r,clothingCategories:a,animations:o,brainBlueprints:s}=i.getInitialState();i.setState({templates:e,instances:t,categories:n,clothingSets:r,clothingCategories:a,animations:o,brainBlueprints:s,initialized:!1})}},t),e.services.register(r,{useStore:i,getState:i.getState,setState:i.setState},t),e.events.emit(`npc:ready`,{pluginId:t,saveExtensionId:n,storeServiceId:r})},dispose(e){e.save.remove(n),e.services.remove(r)}}}var bn=yn();function xn(e){let t=j.i(),n=s.n()?.npcScheduler??u.I(),[r,i]=(0,J.useState)(()=>{let r=t.getState();return n.resolve(e,r.time)});return(0,J.useEffect)(()=>{let r=()=>{let r=t.getState(),a=n.resolve(e,r.time);i(a)};r();let a=t.subscribe((e,t)=>{(e.time.hour!==t.time.hour||e.time.day!==t.time.day||e.time.season!==t.time.season||e.time.weekday!==t.time.weekday)&&r()}),o=n.subscribe(r);return()=>{a(),o()}},[e,t,n]),r}function Sn(e,t=`character`,n){let r=(0,J.useRef)(e);r.current=e;let i=f.K();(0,J.useEffect)(()=>{if(i)return i.onAnimatorEvent(t,e=>{(n===void 0||e.name===n)&&r.current(e)})},[i,t,n])}function Cn(){let e=p.s(),{activeState:t,gameStates:n}=f.Y(),r=p.o(e=>e.mode),i=p.o(e=>e.controllerOptions),a=e.getState();return{state:t||null,mode:r,states:n,control:i,context:{mode:r,states:n,control:i},controller:a}}function wn(){let{activeState:e,updateActiveState:t}=f.Y(),n=s.n(),r=s.r(),i=(0,J.useMemo)(()=>n?n.getService(`motions.runtime`)?.create()??null:null,[n,r]),a=!!e;return{teleport:(0,J.useCallback)((n,r,a={})=>{if(!e){console.warn(`[useTeleport]: Cannot teleport - activeState not available`);return}let o=Math.max(0,a.dropHeight??7),s=o>0?n.clone().add(new q.Vector3(0,o,0)):n.clone(),c=a.effect!==!1,l=typeof a.effect==`object`?a.effect:{},u={position:{x:n.x,y:n.y,z:n.z},spawnPosition:{x:s.x,y:s.y,z:s.z},...c?{effect:{id:m.t(`teleport`),kind:l.kind??(o>0?`drop`:`instant`),dropHeight:o,durationMs:l.durationMs??900}}:{}};i?f.lt(i,u):typeof window<`u`&&window.dispatchEvent(new CustomEvent(`gaesup:teleport`,{detail:u})),t({position:s,euler:r||e.euler})},[e,i,t]),canTeleport:a}}function Tn({id:e,center:t,size:n}){let r=s.n()?.gameplayAreas,[i,a,o]=t,[c,l,u]=n;return(0,J.useEffect)(()=>r?.register({id:e,center:[i,a,o],size:[c,l,u]}),[r,e,i,a,o,c,l,u]),null}var En=class{constructor(){this.animationBridge=f.W(),this.lastAnimation=`idle`}update(e){let{isMoving:t,isRunning:n,isJumping:r,isFalling:i,isRiding:a}=e,o=`idle`;a?o=`ride`:r?o=`jump`:i?o=`fall`:n?o=`run`:t&&(o=`walk`),o!==this.lastAnimation&&(this.animationBridge.execute(`character`,{type:`play`,animation:o}),this.lastAnimation=o)}};function Dn(e=p.o){let{cameraOption:t,setCameraOption:n}=e.getState();t?.focus&&n({focus:!1})}var On=(0,J.forwardRef)(({children:e,position:t,focusDistance:n=10,onFocus:r,onBlur:i,...a},o)=>{let s=p.s(),c=p.o(e=>e.setCameraOption),l=p.o(e=>e.cameraOption),u=e=>{if(e.stopPropagation(),!l?.enableFocus)return;if(l.focus){Dn(s),i&&i(e);return}let t=e.object.getWorldPosition(new q.Vector3);c({focusTarget:t,focusDistance:n,focus:!0}),r&&r(e)},d=()=>{l?.enableFocus&&(document.body.style.cursor=`pointer`)},f=e=>{document.body.style.cursor=`default`,i&&!l?.focus&&i(e)},m={...a,...t?{position:t}:{}};return(0,X.jsx)(`group`,{ref:o,onClick:u,onPointerOver:d,onPointerOut:f,...m,children:e})});On.displayName=`FocusableObject`;function kn({enabled:e=!0}){let t=Bt();return Vt(e),!e||!t?null:(0,X.jsxs)(`div`,{style:{position:`fixed`,bottom:96,left:`50%`,transform:`translateX(-50%)`,zIndex:`var(--gaesup-z-hud, 60)`,padding:`8px 14px`,background:`var(--gaesup-ui-surface, rgba(18,20,28,0.55))`,color:`var(--gaesup-ui-text, #f3f4f8)`,fontFamily:`var(--gaesup-ui-font, 'Pretendard', system-ui, sans-serif)`,fontSize:13,fontWeight:500,borderRadius:999,border:`1px solid var(--gaesup-ui-border, rgba(255,255,255,0.12))`,display:`flex`,alignItems:`center`,gap:10,boxShadow:`var(--gaesup-ui-shadow, 0 8px 22px rgba(0,0,0,0.32))`,backdropFilter:`var(--gaesup-ui-blur, blur(18px) saturate(140%))`,WebkitBackdropFilter:`var(--gaesup-ui-blur, blur(18px) saturate(140%))`,pointerEvents:`none`,userSelect:`none`},children:[(0,X.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,minWidth:22,height:22,padding:`0 6px`,borderRadius:6,background:`var(--gaesup-ui-accent, #ffd84a)`,color:`var(--gaesup-ui-accent-text, #222)`,fontWeight:700},children:t.key.toUpperCase()}),(0,X.jsx)(`span`,{children:t.label}),(0,X.jsxs)(`span`,{style:{opacity:.5,fontSize:11},children:[t.distance.toFixed(1),`m`]})]})}function An(e){return e instanceof q.Vector3?[e.x,e.y,e.z]:Array.isArray(e)?[e[0],e[1],e[2]]:[e.x,e.y,e.z]}function jn(e){return{id:e.id,name:e.name,position:An(e.position),radius:e.radius??1.4,markerColor:e.markerColor??`#61dafb`}}function Mn(e){let[t,n,r]=e.position;return new q.Vector3(t,n,r)}function Nn(e,t){return e.find(e=>e.id===t)}function Pn({showController:e=!0,showDebugPanel:t=!0,controllerProps:n={},debugPanelProps:r={}}){return(0,X.jsxs)(X.Fragment,{children:[e&&(0,X.jsx)(h.Zt,{position:`bottom-left`,showLabels:!0,compact:!1,...n}),t&&(0,X.jsx)(h.Xt,{position:`top-right`,updateInterval:100,precision:2,compact:!1,...r})]})}function Fn({text:e,position:t,teleportStyle:n}){let{teleport:r,canTeleport:i}=wn();return(0,X.jsxs)(`button`,{type:`button`,disabled:!i,className:`teleport ${i?``:`teleport--disabled`}`,onClick:()=>{r(t)},style:n,title:i?`순간이동`:`지금은 순간이동할 수 없습니다.`,children:[e||`순간이동`,!i&&(0,X.jsx)(`span`,{className:`teleport__cooldown`,children:`⏱️`})]})}function In(e,t){return t===`none`||e.nativeEvent[t]===!0}function Ln({enabled:e=!0,modifierKey:t=`altKey`,yOffset:n=0,size:r=1e3,position:i=[0,0,0],onTeleport:a}){let{teleport:o,canTeleport:s}=wn();return(0,X.jsxs)(`mesh`,{position:i,rotation:[-Math.PI/2,0,0],onPointerDown:r=>{if(!e||!s||!In(r,t))return;r.stopPropagation();let i=r.point.clone();i.y+=n,o(i),a?.(i,r)},visible:e,userData:{intangible:!0,teleportOnClick:!0},children:[(0,X.jsx)(`planeGeometry`,{args:[r,r]}),(0,X.jsx)(`meshBasicMaterial`,{transparent:!0,opacity:0,depthWrite:!1,colorWrite:!1})]})}function Rn({destination:e,enabled:t=!0,yOffset:n=0,onTeleport:r}){let{teleport:i,canTeleport:a}=wn(),o=Mn(e);o.y+=n;let s=n=>{t&&a&&(n.stopPropagation(),i(o),r?.(e,n))};return(0,X.jsxs)(`group`,{position:o,userData:{teleportMarker:!0,destinationId:e.id},children:[(0,X.jsxs)(`mesh`,{position:[0,.04,0],rotation:[-Math.PI/2,0,0],onPointerDown:s,castShadow:!0,children:[(0,X.jsx)(`ringGeometry`,{args:[e.radius*.58,e.radius,32]}),(0,X.jsx)(`meshBasicMaterial`,{color:e.markerColor,transparent:!0,opacity:.52})]}),(0,X.jsxs)(`mesh`,{position:[0,.34,0],onPointerDown:s,castShadow:!0,children:[(0,X.jsx)(`cylinderGeometry`,{args:[.12,.24,.55,16]}),(0,X.jsx)(`meshStandardMaterial`,{color:e.markerColor,roughness:.45,metalness:.1})]})]})}var zn=class{constructor(){this.listeners=new Set,this.state={minimapVisible:!0,hudVisible:!0,tooltipText:``,tooltipPosition:new q.Vector2(0,0),tooltipVisible:!1,modalVisible:!1,modalContent:null,notifications:[],lastUpdate:Date.now()},this.minimapSystem=y.n.getInstance()}getState(){return{...this.state}}execute(e){switch(e.type){case`showTooltip`:this.state.tooltipText=e.text,this.state.tooltipPosition=e.position,this.state.tooltipVisible=!0;break;case`hideTooltip`:this.state.tooltipVisible=!1,this.state.tooltipText=``;break;case`showModal`:this.state.modalVisible=!0,this.state.modalContent=e.content;break;case`hideModal`:this.state.modalVisible=!1,this.state.modalContent=null;break;case`toggleMinimap`:this.state.minimapVisible=!this.state.minimapVisible;break;case`toggleHUD`:this.state.hudVisible=!this.state.hudVisible;break;case`addNotification`:this.state.notifications.push({id:e.id,message:e.message,type:e.notificationType||`info`,timestamp:Date.now()});break;case`removeNotification`:this.state.notifications=this.state.notifications.filter(t=>t.id!==e.id);break;case`addMinimapMarker`:this.minimapSystem.addMarker(e.id,e.markerType,e.text,e.position,e.size);break;case`removeMinimapMarker`:this.minimapSystem.removeMarker(e.id);break;case`updateMinimapMarker`:this.minimapSystem.updateMarker(e.id,e.updates);break;default:console.warn(`Unknown UI command:`,e)}this.state.lastUpdate=Date.now(),this.notifyListeners()}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notifyListeners(){this.listeners.forEach(e=>e())}dispose(){this.listeners.clear(),this.minimapSystem.clear()}getMetrics(){return{notificationCount:this.state.notifications.length,isMinimapVisible:this.state.minimapVisible,isHudVisible:this.state.hudVisible,isTooltipVisible:this.state.tooltipVisible,isModalVisible:this.state.modalVisible,lastUpdate:this.state.lastUpdate}}},Bn=5,Vn=.5,Hn=20,Un=200,Wn=e=>{let{activeState:t}=f.Y(),n=f.Ut(e=>e.tileGroups),r=(0,J.useRef)(new Map),i=(0,J.useRef)(null),{size:a=Un,scale:o=e.initialScale??Bn,minScale:s=Vn,maxScale:c=Hn,blockRotate:l=!1,updateInterval:u=33}=e,d=(0,J.useRef)(null),[p,m]=(0,J.useState)(()=>Math.min(c,Math.max(s,o))),h=!!(t.position&&e);(0,J.useEffect)(()=>{let e=d.current;if(!e)return;let t=y.n.getInstance(),n=new y.n;n.setCanvas(e),i.current=n;let r=e=>{n.clear();for(let t of e.values())n.addMarker(t.id,t.type,t.text,t.center,t.size)};r(t.getMarkers());let a=t.subscribe(r);return()=>{a(),i.current=null,n.dispose()}},[]);let g=(0,J.useCallback)(()=>{e.blockScale||m(e=>Math.min(c,e+.1))},[e.blockScale,c]),_=(0,J.useCallback)(()=>{e.blockScale||m(e=>Math.max(s,e-.1))},[e.blockScale,s]),v=(0,J.useCallback)(t=>{e.blockScale||(t.preventDefault(),t.deltaY<0?g():_())},[e.blockScale,g,_]),b=(0,J.useCallback)(()=>{let t=d.current;if(!t)return;let n=t=>{e.blockScale||(t.preventDefault(),t.deltaY<0?g():_())};return t.addEventListener(`wheel`,n,{passive:!1}),()=>{t.removeEventListener(`wheel`,n)}},[e.blockScale,g,_]),x=(0,J.useCallback)(()=>{if(document.hidden)return;let{position:e,euler:o}=t;e&&o&&i.current?.render({size:a,scale:p,position:e,rotation:o.y,blockRotate:l,tileGroups:n,sceneObjects:r.current})},[t,a,p,l,n]);return(0,J.useEffect)(()=>{if(!h)return;let e=()=>{let{position:e,euler:n}=t;e&&n&&(i.current?.checkForUpdates(e,l?0:n.y),x())},n=document.hidden?void 0:setInterval(e,u),r=()=>{n!==void 0&&clearInterval(n),n=void 0,!document.hidden&&(e(),n=setInterval(e,u))};return document.addEventListener(`visibilitychange`,r),()=>{clearInterval(n),document.removeEventListener(`visibilitychange`,r)}},[x,u,h,t,l]),(0,J.useEffect)(()=>{x()},[p,x]),{canvasRef:d,scale:p,upscale:g,downscale:_,handleWheel:v,setupWheelListener:b,updateCanvas:x,isReady:h}},Gn=200;function Kn({size:e=Gn,updateInterval:t=33,scale:n=5,minScale:r=.5,maxScale:i=20,blockScale:a=!1,blockScaleControl:o=!1,blockRotate:s=!1,angle:c=0,minimapStyle:l,scaleStyle:u,plusMinusStyle:d,position:f=`top-right`,showZoom:p=!0,showCompass:m=!0,markers:h=[]}){let{canvasRef:g,scale:_,upscale:v,downscale:y,handleWheel:b}=Wn({size:e,updateInterval:t,initialScale:n,minScale:r,maxScale:i,blockScale:a,blockRotate:s,angle:c}),x=f?`minimap--${f}`:``;return(0,X.jsxs)(`div`,{className:`minimap ${x}`,style:{width:e,height:e,...l},children:[(0,X.jsx)(`canvas`,{ref:g,className:`minimap__canvas`,"aria-label":`주변 지도`,width:e,height:e,onWheel:b}),m&&(0,X.jsx)(`div`,{className:`minimap__compass`,children:(0,X.jsx)(`div`,{style:{transform:`rotate(${c}deg)`},children:`북`})}),h.map((e,t)=>(0,X.jsx)(`div`,{className:`minimap__marker minimap__marker--${e.type||`normal`}`,style:{left:`${e.x}%`,top:`${e.y}%`},children:e.label&&(0,X.jsx)(`div`,{className:`minimap__marker-label`,children:e.label})},e.id||t)),p&&!o&&(0,X.jsx)(`div`,{className:`minimap__controls`,style:u,children:(0,X.jsxs)(`div`,{className:`minimap__zoom-controls`,children:[(0,X.jsx)(`button`,{className:`minimap__control-button`,type:`button`,"aria-label":`지도 확대`,onClick:v,disabled:_>=i,style:d,children:`+`}),(0,X.jsx)(`button`,{className:`minimap__control-button`,type:`button`,"aria-label":`지도 축소`,onClick:y,disabled:_<=r,style:d,children:`-`})]})})]})}function qn({id:e,position:t,size:n=[2,2,2],text:r=``,type:i=`normal`,children:a}){return(0,J.useEffect)(()=>{let a=y.n.getInstance(),o=Array.isArray(t)?t:[t.x,t.y,t.z],s=Array.isArray(n)?n:[n.x,n.y,n.z];return a.addMarker(e,i,r||``,new q.Vector3(o[0],o[1],o[2]),new q.Vector3(s[0],s[1],s[2])),()=>{a.removeMarker(e)}},[e,t,n,i,r]),(0,X.jsx)(X.Fragment,{children:a})}function Jn({id:e,position:t,size:n,label:r,children:i}){return(0,X.jsx)(qn,{id:e,position:t,size:n,text:r,type:`ground`,children:i})}function Yn({id:e,position:t,emoji:n,size:r=[3,3,3],children:i}){return(0,X.jsx)(qn,{id:e,position:t,size:r,text:n,type:`normal`,children:i})}var Xn={info:{bg:`rgba(20,30,50,0.55)`,ring:`#7aa6ff`,icon:`i`},success:{bg:`rgba(20,40,30,0.55)`,ring:`#7adf90`,icon:`+`},warn:{bg:`rgba(50,40,20,0.55)`,ring:`#ffd84a`,icon:`!`},error:{bg:`rgba(50,20,20,0.55)`,ring:`#ff7a7a`,icon:`x`},reward:{bg:`rgba(40,30,10,0.55)`,ring:`#ffc24a`,icon:`*`},mail:{bg:`rgba(30,20,40,0.55)`,ring:`#cf9aff`,icon:`M`}};function Zn({position:e=`top-right`,max:t=5}){let n=x.c(e=>e.toasts),r=x.c(e=>e.dismiss);(0,J.useEffect)(()=>{if(!n.length)return;let e=n.map(e=>window.setTimeout(()=>r(e.id),Math.max(0,e.createdAt+Math.max(500,e.durationMs)-Date.now())));return()=>{e.forEach(e=>window.clearTimeout(e))}},[n,r]);let i=e===`top-center`?{top:`var(--gaesup-toast-top, 64px)`,left:`50%`,transform:`translateX(-50%)`}:{top:`var(--gaesup-toast-top, 64px)`,right:12},a=n.slice(-t);return(0,X.jsxs)(`div`,{role:`log`,"aria-label":`알림`,"aria-live":`polite`,style:{position:`fixed`,zIndex:`var(--gaesup-z-toast, 140)`,display:`flex`,flexDirection:`column`,gap:8,pointerEvents:`none`,bottom:`var(--gaesup-toast-bottom, auto)`,...i},children:[a.map(e=>{let t=Xn[e.kind];return(0,X.jsxs)(`div`,{style:{boxSizing:`border-box`,minWidth:`min(220px, calc(100vw - 24px))`,maxWidth:`min(360px, calc(100vw - 24px))`,overflowWrap:`anywhere`,padding:`9px 14px`,borderRadius:12,background:`var(--gaesup-toast-${e.kind}, ${t.bg})`,color:`var(--gaesup-ui-text, #f3f4f8)`,fontFamily:`var(--gaesup-ui-font, 'Pretendard', system-ui, sans-serif)`,fontSize:13,fontWeight:500,display:`flex`,alignItems:`center`,gap:10,border:`1px solid ${t.ring}55`,boxShadow:`0 8px 22px rgba(0,0,0,0.32), inset 0 1px 0 rgba(255,255,255,0.05)`,backdropFilter:`var(--gaesup-ui-blur, blur(18px) saturate(140%))`,WebkitBackdropFilter:`var(--gaesup-ui-blur, blur(18px) saturate(140%))`,animation:`gaesup-toast-in 220ms ease-out both`},children:[(0,X.jsx)(`span`,{"aria-hidden":`true`,style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:22,height:22,borderRadius:6,background:t.ring,color:`#1a1a1a`,fontWeight:700},children:e.icon??t.icon}),(0,X.jsx)(`span`,{children:e.text})]},e.id)}),(0,X.jsx)(`style`,{children:`@keyframes gaesup-toast-in {
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-Chgba0Kb.cjs"),t=require("./useEngineFrame-ujTlLQfa.cjs"),n=require("./AnimationSystem-CHlx6FwX.cjs"),r=require("./logger-B9OaKOPw.cjs"),i=require("./GLTFAssetCache-BymcVceI.cjs"),a=require("./storeDomainPlugin-d8Tmd5eW.cjs"),o=require("./revision-Dq_fdc2e.cjs"),s=require("./runtimeContext-zx_GnKx4.cjs"),c=require("./scopedStore-Px5jL718.cjs"),l=require("./assetStore-DbqlOBWB.cjs"),u=require("./Rideable-CWddzOkn.cjs"),d=require("./WorldPhysics-CueqwH91.cjs"),f=require("./useClicker-0Ln5ZSz0.cjs"),p=require("./CoreBridge-CnLqWZNv.cjs"),m=require("./id-DWiNl1ym.cjs"),h=require("./shell-BRQStYy9.cjs"),g=require("./defaults-BLDQhn77.cjs"),_=require("./serviceKey-DwHFFFAA.cjs"),v=require("./weatherStore-DwLl0Jjo.cjs"),y=require("./WorldProps-L3Izutxz.cjs"),b=require("./SaveSystem-DwfckGGo.cjs"),x=require("./clientServices-Bs-PZVqS.cjs"),S=require("./guards-FnxbNibY.cjs"),C=require("./areas-CnRl22N4.cjs"),w=require("./engine-DLNEnn0R.cjs"),T=require("./useGenericRefs-CZ_HIQG_.cjs"),E=require("./useNavigation-D-c4u9T4.cjs"),D=require("./runtimeFilter-5rYxTYwr.cjs"),O=require("./EventBus-Ch3emYsZ.cjs"),k=require("./validation-B--im0iK.cjs"),A=require("./WorldContainer-BjZj0uvZ.cjs"),j=require("./timeStore-Be94nnui.cjs"),M=require("./WorldBridge-DmvFhm9b.cjs"),N=require("./sceneCompile-D9xft0op.cjs"),P=require("./normals-BtV0LhhY.cjs"),F=require("./release-IDuX7D6M.cjs"),ee=require("./AssetPreviewCanvas-C0cInsac.cjs"),I=require("./plugin-BUKo4q0N.cjs"),L=require("./ControllerWrapper-C6mzwejv.cjs"),R=require("./BlueprintFactory-D6FM31oL.cjs"),z=require("./sfe-DnOKmvUM.cjs"),B=require("./quality-0VukPLnv.cjs"),V=require("./templates-D2DtrEv3.cjs"),H=require("./types-CpzpTnuW.cjs"),U=require("./snapshot-BwAZISiG.cjs"),te=require("./serverHost-_RHfsfYt.cjs"),W=require("./loader-shJVRMj9.cjs"),G=require("./useVisitRoom-GXR8KyFN.cjs"),ne=require("./Gamepad-BVhh5IfO.cjs"),re=require("./outline-DX9TqHot.cjs"),K=require("./LutOverlay-TKW0BDN1.cjs");let q=require("three");q=e.n(q,1);let J=require("react"),ie=require("zustand"),Y=require("@react-three/fiber"),X=require("react/jsx-runtime"),ae=require("zustand/react/shallow"),oe=require("@react-three/rapier"),se=require("@react-three/drei");var ce=class{constructor(e={}){this.id=e.id??`free`,this.precision=e.precision??1e3}toWorld(e){return{...e.position}}fromWorld(e){return{position:{...e}}}getNeighbors(e){return[e]}equals(e,t){return this.key(e)===this.key(t)}key(e){let t=e.position;return[this.quantize(t.x),this.quantize(t.y),this.quantize(t.z)].join(`:`)}quantize(e){return Math.round(e*this.precision)/this.precision}},le=class{},ue=class extends le{constructor(e={},t=0){super(),this.config=e,this.waterLevel=t}setWaterLevel(e){this.waterLevel=e}update(e,t){let n=this.config.buoyancy??0;if(n===0||t<=0)return;let r=e.translation(),i=Math.max(0,this.waterLevel-r.y);i!==0&&e.addForce({x:0,y:i*n*t,z:0},!0)}},de=class extends le{constructor(e={},t=[1,0,0],n=0){super(),this.config=e,this.direction=Array.isArray(t)?new q.Vector3(...t):t.clone(),this.strength=n}setWind(e,t){this.direction=Array.isArray(e)?new q.Vector3(...e):e.clone(),this.strength=t}update(e,t){if(this.strength===0||t<=0)return;let n=this.direction.clone().normalize().multiplyScalar(this.strength*t);e.addForce({x:n.x,y:n.y,z:n.z},!0)}};function fe([e,t,n]){let r=Math.cos(e/2),i=Math.cos(t/2),a=Math.cos(n/2),o=Math.sin(e/2),s=Math.sin(t/2),c=Math.sin(n/2);return[o*i*a+r*s*c,r*s*a-o*i*c,r*i*c+o*s*a,r*i*a-o*s*c]}function pe(e){let t=Math.hypot(...e);if(!Number.isFinite(t)||t<2**-52)throw TypeError(`Rotation must be a finite nonzero quaternion.`);let[n,r,i,a]=e.map(e=>e/t),o=2*(n*i+a*r),s=Math.asin(Math.max(-1,Math.min(1,o)));return Math.abs(o)<.9999999?[Math.atan2(2*(a*n-r*i),1-2*(n*n+r*r)),s,Math.atan2(2*(a*i-n*r),1-2*(r*r+i*i))]:[Math.atan2(2*(r*i+a*n),1-2*(n*n+i*i)),s,0]}function me(e){let[t,n,r,i]=fe(e.rotation),[a,o,s]=e.scale;return[(1-2*(n*n+r*r))*a,2*(t*n+i*r)*a,2*(t*r-i*n)*a,0,2*(t*n-i*r)*o,(1-2*(t*t+r*r))*o,2*(n*r+i*t)*o,0,2*(t*r+i*n)*s,2*(n*r-i*t)*s,(1-2*(t*t+n*n))*s,0,...e.position,1]}function he(e,t){let n=Array(16).fill(0);for(let r=0;r<4;r++)for(let i=0;i<4;i++){let a=0;for(let n=0;n<4;n++)a+=e[n*4+i]*t[r*4+n];n[r*4+i]=a}return n}function ge(e){let t=Math.hypot(e[0],e[1],e[2]),n=Math.hypot(e[4],e[5],e[6]),r=Math.hypot(e[8],e[9],e[10]),i=e[0]*(e[5]*e[10]-e[6]*e[9])-e[4]*(e[1]*e[10]-e[2]*e[9])+e[8]*(e[1]*e[6]-e[2]*e[5]);if(Math.min(t,n,r)<2**-52)throw RangeError(`Singular transform: use getWorldMatrix().`);i<0&&(t=-t);let a=e[0]/t,o=e[4]/n,s=e[8]/r,c=e[1]/t,l=e[5]/n,u=e[9]/r,d=e[2]/t,f=e[6]/n,p=e[10]/r;if(Math.max(Math.abs(a*o+c*l+d*f),Math.abs(a*s+c*u+d*p),Math.abs(o*s+l*u+f*p))>1e-7)throw RangeError(`Sheared transform: use getWorldMatrix().`);let m=Math.abs(s)<.9999999?[Math.atan2(-u,p),Math.asin(Math.max(-1,Math.min(1,s))),Math.atan2(-o,a)]:[Math.atan2(f,l),Math.asin(Math.max(-1,Math.min(1,s))),0];return{position:[e[12],e[13],e[14]],rotation:m.map(h.xt),scale:[t,n,r]}}var _e=Symbol(`scene-root-parent`);function ve(e){let t=h.Ct(e);if(!t.ok||!t.document)return{ok:!1,issues:t.issues};let n=t.document,r=new Map,i=new Map;for(let e of n.objects){r.set(e.id,e);let t=e.parentId??_e,n=i.get(t)??[];n.push(e),i.set(t,n)}let a=new Map,o=e=>{let t=[],n;for(let i=e;i&&(n=a.get(i.id),!n);i=i.parentId?r.get(i.parentId):void 0)t.push(i);for(let e=t.length-1;e>=0;e--){let r=me(t[e].transform);n=Object.freeze(n?he(n,r):r),a.set(t[e].id,n)}return n};return{ok:!0,runtime:{document:n,objects:r,children:ye(i),roots:i.get(_e)??[],getObject:e=>r.get(e),getChildren:e=>i.get(e??_e)??[],getWorldTransform:e=>{let t=r.get(e);if(t)return t.parentId?ge(o(t)):t.transform},getWorldMatrix:e=>{let t=r.get(e);return t?o(t):void 0}},issues:[]}}function ye(e){let t=new Map;for(let[n,r]of e)n!==_e&&t.set(n,r);return t}function be(e,t){return ge(he(me(e),me(t)))}var xe=([e,t,n])=>[e,t,h.xt(-n)],Se=([e,t,n,r])=>[h.xt(-e),h.xt(-t),n,r];function Ce(e){let t=h.Ct(e);if(!t.ok||!t.document)throw TypeError(`Invalid scene document.`);return{format:`gaesup-unity-scene`,version:1,id:e.id,name:e.name??``,objects:t.document.objects.map(e=>({id:e.id,name:e.name,parentId:e.parentId??``,position:xe(e.transform.position),rotation:Se(fe(e.transform.rotation)),scale:[...e.transform.scale],componentsJson:JSON.stringify(e.components),tags:[...e.tags],layer:e.layer??``}))}}function we(e,t){return Array.isArray(e)&&e.length===t&&e.every(e=>typeof e==`number`&&Number.isFinite(e))}function Te(e){let t=typeof e==`string`?JSON.parse(e):e;if(!S.r(t)||t.format!==`gaesup-unity-scene`||t.version!==1||typeof t.id!=`string`||typeof t.name!=`string`||!Array.isArray(t.objects))throw TypeError(`Invalid Unity scene interchange document.`);let n=t.objects.map(e=>{if(!S.r(e)||![`id`,`name`,`parentId`,`componentsJson`,`layer`].every(t=>typeof e[t]==`string`)||!we(e.position,3)||!we(e.rotation,4)||!we(e.scale,3)||!Array.isArray(e.tags)||!e.tags.every(e=>typeof e==`string`))throw TypeError(`Invalid Unity scene object.`);let t=JSON.parse(e.componentsJson);if(!Array.isArray(t))throw TypeError(`Invalid Unity component metadata.`);return{id:e.id,name:e.name,...e.parentId?{parentId:e.parentId}:{},transform:{position:xe(e.position),rotation:pe(Se(e.rotation)).map(h.xt),scale:e.scale.map(h.xt)},components:t,tags:e.tags,...e.layer?{layer:e.layer}:{}}}),r=h.Ct({version:1,id:t.id,...t.name?{name:t.name}:{},objects:n});if(!r.ok||!r.document)throw TypeError(r.issues.map(e=>e.message).join(` `));return h.Rt(r.document)}function Ee(e,t={}){return Array.from(e.objects.values()).filter(e=>Pe(e,t))}function De(e,t){return Ee(e,t)[0]}function Oe(e,t){return Ee(e,{tag:t})}function ke(e,t){return Ee(e,{layer:t})}function Ae(e,t){return Ee(e,{componentType:t})}function je(e,t){return e.components.find(e=>e.type===t)}function Me(e,t){return e.components.filter(e=>e.type===t)}function Ne(e,t){return e.components.some(e=>e.type===t)}function Pe(e,t){return!(t.id!==void 0&&e.id!==t.id||t.name!==void 0&&e.name!==t.name||t.parentId!==void 0&&e.parentId!==t.parentId||t.layer!==void 0&&e.layer!==t.layer||t.tag!==void 0&&!e.tags.includes(t.tag)||t.tags!==void 0&&!t.tags.every(t=>e.tags.includes(t))||t.componentType!==void 0&&!Ne(e,t.componentType)||t.componentTypes!==void 0&&!t.componentTypes.every(t=>Ne(e,t)))}function Fe(e=[]){let t=[...e];return{register(e){t.push(e)},getMigrations(){return[...t].sort(Le)},migrate(e,n=1){return Ie(e,t,n)}}}function Ie(e,t=[],n=1){let r=typeof e==`string`?Re(e):e;if(!S.r(r))return Be(`Scene document must be an object.`);let i=ze(r);if(!Number.isInteger(i))return Be(`Scene document version must be an integer.`);let a=r,o=i,s=[],c=[...t].sort(Le),l=new Set;for(;o!==n;){if(l.has(o))return Be(`Scene migration loop detected at version ${o}.`,s,o);l.add(o);let e=c.find(e=>e.fromVersion===o&&e.toVersion<=n);if(!e)return Be(`No scene migration found from version ${o} to ${n}.`,s,o,`unsupported-scene-version`);try{a={...e.migrate(a),version:e.toVersion},o=e.toVersion,s.push({fromVersion:e.fromVersion,toVersion:e.toVersion,...e.description?{description:e.description}:{}})}catch(e){return Be(e instanceof Error?e.message:`Scene migration failed.`,s,o,`scene-migration-failed`)}}let u=h.Ct(a);return{ok:u.ok,...u.document?{document:u.document}:{},version:o,steps:s,issues:u.issues}}function Le(e,t){return e.fromVersion-t.fromVersion||e.toVersion-t.toVersion}function Re(e){try{return JSON.parse(e)}catch{return null}}function ze(e){return typeof e.version==`number`?e.version:NaN}function Be(e,t=[],n,r=`scene-migration-failed`){return{ok:!1,...n===void 0?{}:{version:n},steps:t,issues:[{code:r,message:e}]}}var Ve=[We({id:`default`,index:0,purposes:[`collision`,`rendering`,`editor`,`selection`]}),We({id:`environment`,index:1,purposes:[`collision`,`rendering`,`editor`]}),We({id:`player`,index:2,purposes:[`collision`,`rendering`,`selection`]}),We({id:`npc`,index:3,purposes:[`collision`,`rendering`,`selection`]}),We({id:`interactable`,index:4,purposes:[`collision`,`rendering`,`editor`,`selection`]}),We({id:`editor`,index:5,purposes:[`editor`],selectable:!1})],He=[Ge({id:`player`}),Ge({id:`npc`}),Ge({id:`resource`}),Ge({id:`interactable`}),Ge({id:`spawn`})],Ue={layers:Ve,tags:He};function We(e){return{id:e.id,...e.name?{name:e.name}:{},...e.index===void 0?{}:{index:e.index},purposes:e.purposes??[`collision`,`rendering`,`editor`,`selection`],visible:e.visible??!0,selectable:e.selectable??!0}}function Ge(e){return{id:e.id,...e.name?{name:e.name}:{},...e.color?{color:e.color}:{}}}function Ke(e={}){return{layers:e.layers?.map(We)??[...Ve],tags:e.tags?.map(Ge)??[...He]}}function qe(e){let t=[],n=new Set,r=new Set,i=new Set;return e.layers.forEach((e,i)=>{tt(e.id)||t.push(nt(`invalid-layer`,`layers.${i}.id`,`Layer id must be a non-empty string.`)),n.has(e.id)&&t.push(nt(`duplicate-layer`,`layers.${i}.id`,`Duplicate layer "${e.id}".`)),n.add(e.id),e.index!==void 0&&(!Number.isInteger(e.index)||e.index<0?t.push(nt(`invalid-layer`,`layers.${i}.index`,`Layer index must be a non-negative integer.`)):r.has(e.index)&&t.push(nt(`duplicate-layer-index`,`layers.${i}.index`,`Duplicate layer index ${e.index}.`)),r.add(e.index))}),e.tags.forEach((e,n)=>{tt(e.id)||t.push(nt(`invalid-tag`,`tags.${n}.id`,`Tag id must be a non-empty string.`)),i.has(e.id)&&t.push(nt(`duplicate-tag`,`tags.${n}.id`,`Duplicate tag "${e.id}".`)),i.add(e.id)}),{valid:t.length===0,issues:t}}function Je(e,t){let n=[...qe(t).issues],r=new Set(t.layers.map(e=>e.id)),i=new Set(t.tags.map(e=>e.id));return e.objects.forEach(e=>{e.layer&&!r.has(e.layer)&&n.push(nt(`unknown-object-layer`,et(e,`layer`),`Unknown layer "${e.layer}".`)),e.tags.forEach((t,r)=>{i.has(t)||n.push(nt(`unknown-object-tag`,et(e,`tags.${r}`),`Unknown tag "${t}".`))})}),{valid:n.length===0,issues:n}}function Ye(e,t){let n=[],r=new Set(t.layers.map(e=>e.id));return Object.entries(e.collisionMatrix).forEach(([e,t])=>{r.has(e)||n.push(nt(`unknown-collision-layer`,`collisionMatrix.${e}`,`Unknown collision layer "${e}".`)),t.forEach((t,i)=>{r.has(t)||n.push(nt(`unknown-collision-layer`,`collisionMatrix.${e}.${i}`,`Unknown collision target "${t}".`))})}),{valid:n.length===0,issues:n}}function Xe(e,t,n){return!!(e.collisionMatrix[t]?.includes(n)||e.collisionMatrix[n]?.includes(t))}function Ze(e,t){return e.layers.find(e=>e.id===t)?.visible??!0}function Qe(e,t){return e.layers.find(e=>e.id===t)?.selectable??!0}function $e(e,t){return e.layers.filter(e=>e.purposes.includes(t))}function et(e,t){return`objects.${e.id}.${t}`}function tt(e){return typeof e==`string`&&e.trim().length>0}function nt(e,t,n){return{code:e,path:t,message:n}}var rt=16,it=16;function at(e){return e.purposes.includes(`collision`)&&e.index!==void 0&&e.index<rt}function ot(e,t){let n=e.layers.filter(at),r=new Map;return n.forEach(e=>{let i=0;n.forEach(n=>{Xe(t,e.id,n.id)&&(i|=1<<n.index)}),r.set(e.id,(1<<e.index<<it|i)>>>0)}),r}function st(e){let t=h.Ct(e);if(!t.ok||!t.document)throw TypeError(lt(t.issues));let n=h._t(h.vt(t.document)),r=0,i=new Map,a=[],o=!1,s=e=>{if(a.push(e),!o){o=!0;try{for(let e=0;e<a.length;e++){let t=a[e];if(!t)continue;let n=[...i.values()];for(let e of n)try{e.listener(t.snapshot,t.event,{revision:t.revision})}catch(e){ct(e)}}}finally{a.length=0,o=!1}}};return{getSnapshot:()=>n,getRevision:()=>r,subscribe:e=>{let t={listener:e};return i.set(e,t),()=>{i.get(e)===t&&i.delete(e)}},dispatch:(e,t)=>{if(t?.expectedRevision!==void 0&&t.expectedRevision!==r)return{accepted:!1,document:n,issues:[{code:`revision-conflict`,message:`Expected revision ${t.expectedRevision}, current revision is ${r}.`}]};let i=h.pt(n,e);return i.accepted?(n=i.document,r++,s({snapshot:i.document,event:i.event,revision:r}),i):i}}}function ct(e){try{r.t.error(`Scene document controller listener failed.`,e instanceof Error?e:String(e))}catch{}}function lt(e){return e.map(e=>e.message).join(` `)||`Scene document is invalid.`}function ut(e,t){e.removed.delete(t)?e.updated.add(t):e.added.add(t)}function dt(e,t){e.added.has(t)||e.updated.add(t)}function ft(e,t){e.added.delete(t)||(e.updated.delete(t),e.removed.add(t))}function pt(e,t){switch(t.type){case`scene-document.replaced`:e.reset=!0;return;case`scene-object.created`:ut(e,t.objectId);return;case`scene-object.deleted`:for(let n of t.objectIds)ft(e,n);return;case`scene-object.updated`:case`scene-object.moved`:case`scene-object.component.added`:case`scene-object.component.removed`:case`scene-object.component.updated`:dt(e,t.objectId);return;case`scene-document.batch-applied`:for(let n of t.events)pt(e,n);return}}function mt(e){let t={reset:!1,added:new Set,removed:new Set,updated:new Set};return pt(t,e),t}function ht(e,t){return e.subscribe((e,n,r)=>t(e,mt(n),r.revision))}var gt=`scene-document`;function _t(e,t=[]){let n=t.map(e=>({...e})),r=t=>{if(t==null)return()=>{};let r=Ie(t,n);if(!r.ok||!r.document)throw TypeError(vt(r.issues));let i=h._t(h.vt(r.document));return()=>{let t=e.dispatch({type:`scene-document.replace`,document:i});if(!t.accepted)throw TypeError(vt(t.issues))}};return{key:gt,serialize:()=>{let t=e.getSnapshot();return h.gt(t)?f.qt(t):h.St(t)},owned:!0,revision:o.t(()=>{let t=e.getSnapshot();return[h.gt(t)?t:{}]}),prepareHydrate:r,hydrate:e=>r(e)()}}function vt(e){return e.map(e=>e.message).join(` `)||`Scene document is invalid.`}function yt(e,t){return t?e.map(e=>({...e,id:`${t}${e.id}`,...e.parentId===void 0?{}:{parentId:`${t}${e.parentId}`},components:e.components.map(e=>({...e,id:`${t}${e.id}`}))})):[...e]}var bt=class{constructor(e){this.controller=e,this.loaders=new Map,this.loaded=new Map,this.listeners=new Set,this.generation=0}register(e,t){return this.loaders.set(e,t),()=>{this.loaders.get(e)===t&&this.loaders.delete(e)}}has(e){return this.loaders.has(e)}getLoadedScenes(){return Array.from(this.loaded.keys())}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async load(e,t={}){let n=this.loaders.get(e),r=t.additive??!1;if(!n)return this.emit({type:`failed`,sceneId:e,message:`등록되지 않은 씬입니다: ${e}`}),!1;let i=++this.generation;this.emit({type:`loading`,sceneId:e,additive:r});let a;try{a=await n()}catch(t){return this.emit({type:`failed`,sceneId:e,message:t instanceof Error?t.message:String(t)}),!1}if(!r&&i!==this.generation)return!1;let o=h.Ct(a);return!o.ok||!o.document?(this.emit({type:`failed`,sceneId:e,message:o.issues[0]?.message??`씬 문서가 올바르지 않습니다`}),!1):r?this.mergeAdditive(e,o.document,t.idPrefix??`${e}:`):this.replace(e,o.document)}unload(e){let t=this.loaded.get(e);if(!t||!t.additive)return!1;let n=this.controller.getSnapshot();return this.controller.dispatch({type:`scene-document.replace`,document:{...n,objects:n.objects.filter(e=>!t.objectIds.has(e.id))}}).accepted?(this.loaded.delete(e),this.emit({type:`unloaded`,sceneId:e}),!0):!1}replace(e,t){let n=this.controller.dispatch({type:`scene-document.replace`,document:t});return n.accepted?(this.loaded.clear(),this.loaded.set(e,{sceneId:e,additive:!1,objectIds:new Set(t.objects.map(e=>e.id))}),this.emit({type:`loaded`,sceneId:e,additive:!1,objectCount:t.objects.length}),!0):(this.emit({type:`failed`,sceneId:e,message:n.issues[0]?.message??`씬 교체가 거부되었습니다`}),!1)}mergeAdditive(e,t,n){this.loaded.has(e)&&this.unload(e);let r=this.controller.getSnapshot(),i=yt(t.objects,n),a=this.controller.dispatch({type:`scene-document.replace`,document:{...r,objects:[...r.objects,...i]}});return a.accepted?(this.loaded.set(e,{sceneId:e,additive:!0,objectIds:new Set(i.map(e=>e.id))}),this.emit({type:`loaded`,sceneId:e,additive:!0,objectCount:i.length}),!0):(this.emit({type:`failed`,sceneId:e,message:a.issues[0]?.message??`씬 병합이 거부되었습니다`}),!1)}emit(e){this.listeners.forEach(t=>t(e))}},xt=`sceneObjectId`,St=[1,1,1],Ct=.5,wt=1,Tt=.5,Et={fixed:`fixed`,dynamic:`dynamic`,kinematic:`kinematicPosition`};function Dt(e,t){let n=je(e,t);return n?.enabled?n.data:void 0}function Ot({other:e}){let t=e.rigidBodyObject,n=t?.userData[xt];return typeof n==`string`?n:t?.name??``}function kt({object:e,collisionGroups:t,onPhysicsEvent:n,children:r}){let i=Dt(e,h.Et.collider);if(!i)return(0,X.jsx)(X.Fragment,{children:r});let a=Dt(e,h.Et.rigidBody),o=e.layer?t?.get(e.layer):void 0,s={sensor:i.trigger===!0,...o===void 0?{}:{collisionGroups:o},...a?.mass===void 0?{}:{mass:a.mass}},c=t=>r=>{n?.(t,e.id,Ot(r))},l=i.size??St,u=i.radius??Ct,d=i.height??wt;return(0,X.jsxs)(oe.RigidBody,{type:Et[a?.type??`fixed`],colliders:i.shape===`mesh`&&`trimesh`,position:[...e.transform.position],rotation:[...e.transform.rotation],userData:{[xt]:e.id},...a?.gravityScale===void 0?{}:{gravityScale:a.gravityScale},...a?.lockRotations?{lockRotations:!0}:{},...i.shape===`mesh`?s:{},onIntersectionEnter:c(`triggerEnter`),onIntersectionExit:c(`triggerExit`),onCollisionEnter:c(`collisionEnter`),onCollisionExit:c(`collisionExit`),children:[i.shape===`box`&&(0,X.jsx)(oe.CuboidCollider,{args:[l[0]*Tt,l[1]*Tt,l[2]*Tt],...s}),i.shape===`sphere`&&(0,X.jsx)(oe.BallCollider,{args:[u],...s}),i.shape===`capsule`&&(0,X.jsx)(oe.CapsuleCollider,{args:[Math.max(0,d*Tt-u),u],...s}),r]})}function At(e){return JSON.stringify(e)}function jt(e){return Mt(At(e)).prefab??h.lt({id:e.id,name:e.name})}function Mt(e){let t=typeof e==`string`?Pt(e):e;if(!t||typeof t!=`object`)return Ft(`Prefab document must be an object.`);let n=t;if(n.version!==1)return Ft(`Prefab document version must be 1.`);if(typeof n.id!=`string`||!n.id.trim())return Ft(`Prefab document id must be a non-empty string.`);if(!Array.isArray(n.objects))return Ft(`Prefab document objects must be an array.`);let r=h.lt({id:n.id,...typeof n.name==`string`?{name:n.name}:{},objects:n.objects,...Array.isArray(n.rootObjectIds)?{rootObjectIds:n.rootObjectIds.filter(e=>typeof e==`string`)}:{},...n.metadata&&typeof n.metadata==`object`?{metadata:It(n.metadata)}:{}}),i=h.ft(r);return{ok:i.valid,prefab:r,issues:i.issues}}function Nt(e){let t=Mt(e);return{valid:t.ok,issues:t.issues}}function Pt(e){try{return JSON.parse(e)}catch{return null}}function Ft(e){return{ok:!1,issues:[{code:`invalid-prefab-scene`,message:e}]}}function It(e){let t=e;return{...typeof t.description==`string`?{description:t.description}:{},...typeof t.thumbnailUrl==`string`?{thumbnailUrl:t.thumbnailUrl}:{},...Array.isArray(t.tags)?{tags:t.tags.filter(e=>typeof e==`string`)}:{},...typeof t.sourceSceneId==`string`?{sourceSceneId:t.sourceSceneId}:{},...typeof t.createdAt==`string`?{createdAt:t.createdAt}:{},...typeof t.updatedAt==`string`?{updatedAt:t.updatedAt}:{}}}var Lt=class{constructor(e,t,n){this.rigidBody=null,this.targetPosition=null,this.isAutomated=!1,this.isSteering=!1,this.unsubscribe=null,this.latestSnapshot=null,this.tempDirection=new q.Vector3,this.id=e,this.bridge=n??p.n.getOrCreateFor(f.ur),this.motionType=t}initialize(){this.unsubscribe||=this.bridge.subscribe((e,t)=>{if(t===this.id&&(e&&(this.latestSnapshot=e),this.isAutomated&&this.targetPosition&&!this.isSteering)){this.isSteering=!0;try{this.handleAutomatedMovement(e)}finally{this.isSteering=!1}}})}setRigidBody(e){this.rigidBody=e,this.bridge.register(this.id,this.motionType,e)}execute(e){this.bridge.execute(this.id,e)}move(e){this.execute({type:`move`,data:{movement:e}})}jump(){this.execute({type:`jump`})}stop(){this.execute({type:`stop`})}turn(e){this.execute({type:`turn`,data:{direction:e}})}reset(){this.execute({type:`reset`})}setConfig(e){this.execute({type:`setConfig`,data:{config:e}})}enableAutomation(e){this.isAutomated=!0,this.targetPosition=e}disableAutomation(){this.isAutomated=!1,this.targetPosition=null}handleAutomatedMovement(e){if(!this.targetPosition||!this.rigidBody)return;let t=e.position,n=this.targetPosition.x-t.x,r=this.targetPosition.y-t.y,i=this.targetPosition.z-t.z,a=n*n+r*r+i*i;if(a<.25)this.stop(),this.disableAutomation();else{let t=Math.sqrt(a),o=Math.min(t*2,e.config.maxSpeed),s=t>0?1/t:0;this.tempDirection.set(n*s*o,r*s*o,i*s*o),this.move(this.tempDirection)}}getMotionType(){return this.motionType}getSnapshot(){if(this.latestSnapshot)return this.latestSnapshot;let e=this.bridge.getCachedSnapshot(this.id);if(e)return this.latestSnapshot=e,e;let t=this.bridge.snapshot(this.id);return t&&(this.latestSnapshot=t),t}isGrounded(){return this.getSnapshot()?.isGrounded??!1}isMoving(){return this.getSnapshot()?.isMoving??!1}getSpeed(){return this.getSnapshot()?.speed??0}dispose(){this.stop(),this.disableAutomation(),this.unsubscribe?.(),this.unsubscribe=null,this.latestSnapshot=null,this.bridge.unregister(this.id)}};function Rt(e,t){let{motionType:n,rigidBodyRef:r,position:i,autoStart:a=!0}=t,o=f.L(),s=(0,J.useMemo)(()=>o?new Lt(e,n,o):null,[o,e,n]);(0,J.useEffect)(()=>{if(s)return s.initialize(),()=>s.dispose()},[s]),(0,J.useEffect)(()=>{let e=r.current;s&&e&&a&&(s.setRigidBody(e),i&&e.setTranslation(i,!0))},[s,r,i,a]);let c=e=>{s?.move(e)},l=()=>{s?.jump()},u=()=>{s?.stop()},d=e=>{s?.turn(e)},p=()=>{s?.reset()},m=e=>{s?.setConfig(e)},h=e=>{s?.enableAutomation(e)},g=()=>{s?.disableAutomation()},_=s?.getSnapshot();return{entity:s,move:c,jump:l,stop:u,turn:d,reset:p,setConfig:m,enableAutomation:h,disableAutomation:g,isGrounded:s?.isGrounded()??!1,isMoving:s?.isMoving()??!1,speed:s?.getSpeed()??0,position:_?.position??null,velocity:_?.velocity??null}}function zt({blueprint:e,rigidBodyRef:n,innerGroupRef:i,outerGroupRef:a,animationClips:o,enabled:s=!0,getMovementInput:c}){let l=(0,J.useRef)(null),[u,d]=(0,J.useState)(null);return(0,J.useEffect)(()=>{if(!s||!n.current)return;R.c();let t=R.t.getInstance(),c={rigidBodyRef:n,...i?{innerGroupRef:i}:{},...a?{outerGroupRef:a}:{},...o?{animationClips:o}:{}},u;if(typeof e==`string`){let n=R.n.get(e);if(!n){r.t.error(`Blueprint not found: ${e}`);return}u=t.createEntity(n,c)}else u=t.createFromDefinition(e,c);return l.current=u,d(u),()=>{l.current=null,d(null),u.dispose()}},[e,n,i,a,o,s]),t.t(`prePhysics`,e=>{s&&l.current&&l.current.update(e,c?.())},{active:s,label:`motions:blueprint-entity`}),{entity:u,getComponent:e=>l.current?.getComponent(e),addComponent:e=>l.current?.addComponent(e),removeComponent:e=>l.current?.removeComponent(e)}}function Bt(){return y.N(e=>e.current)}function Vt(e=!0){let t=T.y(),n=y.P();(0,J.useEffect)(()=>{if(e)return t.register(`interaction.activate`,{key:()=>n.getState().current?.key,execute:()=>n.getState().activateCurrent()})},[t,n,e])}function Ht({throttleMs:e=80}={}){let{position:n}=L.l({reactive:!1}),r=y.P();return t.t(`postPhysics`,(t,i)=>{r.getState().track(n,i,e)},{order:10,label:`interactions:tracker`}),null}function Ut(){let e=f.i(),[t,n]=(0,J.useState)(()=>({keyboard:e.getKeyboard(),mouse:e.getMouse()}));(0,J.useEffect)(()=>(n({keyboard:e.getKeyboard(),mouse:e.getMouse()}),e.subscribe?.(e=>{n({keyboard:e.keyboard,mouse:e.mouse})})),[e]);let r=(0,J.useCallback)(t=>{e.updateKeyboard(t),e.subscribe||n({keyboard:e.getKeyboard(),mouse:e.getMouse()})},[e]),i=(0,J.useCallback)(t=>{e.updateMouse(t),e.subscribe||n({keyboard:e.getKeyboard(),mouse:e.getMouse()})},[e]),a=(0,J.useCallback)(e=>{i(e)},[i]);return{keyboard:t.keyboard,mouse:t.mouse,updateKeyboard:r,updateMouse:i,dispatchInput:a}}var Wt=class{constructor(e){this.isEnabled=!1,this.positionHistory=[],this.debugInfo=[],this.maxHistoryLength=100,this.cleanupInterval=null,this.disposables=new Set,this.debugLines=[],this.scene=null,this.handleResize=()=>{this.clearDebugInfo()},this.scene=e||null}enable(e){this.isEnabled=!0,e&&(this.scene=e),this.setupCleanupInterval(),this.setupEventListeners()}disable(){this.isEnabled=!1,this.cleanup()}setupCleanupInterval(){this.cleanupInterval=window.setInterval(()=>{this.cleanupOldHistory()},5e3),this.disposables.add(()=>{this.cleanupInterval&&=(clearInterval(this.cleanupInterval),null)})}setupEventListeners(){let e=()=>this.handleResize();window.addEventListener(`resize`,e),this.disposables.add(()=>window.removeEventListener(`resize`,e))}update(e,t,n){if(!this.isEnabled)return;let r=e.position.clone(),i=new q.Vector3;e.getWorldDirection(i),i.multiplyScalar(10).add(r),this.addPositionToHistory(r);let a={position:r.clone(),target:i.clone(),distance:r.length(),fov:e instanceof q.PerspectiveCamera?e.fov:0,state:n||`unknown`,timestamp:Date.now()};this.addDebugInfo(a),this.updateDebugVisuals(e)}addPositionToHistory(e){this.positionHistory.push(e.clone()),this.positionHistory.length>this.maxHistoryLength&&this.positionHistory.shift()}addDebugInfo(e){this.debugInfo.push(e),this.debugInfo.length>this.maxHistoryLength&&this.debugInfo.shift()}updateDebugVisuals(e){if(this.scene&&(this.clearDebugLines(),this.positionHistory.length>1)){let e=new q.BufferGeometry,t=[];this.positionHistory.forEach(e=>{t.push(e.x,e.y,e.z)}),e.setAttribute(`position`,new q.Float32BufferAttribute(t,3));let n=new q.LineBasicMaterial({color:65280,transparent:!0,opacity:.6}),r=new q.Line(e,n);this.scene.add(r),this.debugLines.push(r),this.disposables.add(()=>{e.dispose(),n.dispose(),this.scene&&this.scene.remove(r)})}}clearDebugLines(){this.debugLines.forEach(e=>{e.geometry&&e.geometry.dispose(),e.material instanceof q.Material&&e.material.dispose(),this.scene&&this.scene.remove(e)}),this.debugLines.length=0}cleanupOldHistory(){let e=Date.now();if(this.debugInfo=this.debugInfo.filter(t=>e-t.timestamp<1e4),this.positionHistory.length>this.maxHistoryLength*.8){let e=Math.floor(this.positionHistory.length*.2);this.positionHistory.splice(0,e)}}getDebugInfo(){return[...this.debugInfo]}getPositionHistory(){return[...this.positionHistory]}exportData(){let e={debugInfo:this.debugInfo,positionHistory:this.positionHistory.map(e=>({x:e.x,y:e.y,z:e.z})),timestamp:Date.now()};return JSON.stringify(e,null,2)}clearDebugInfo(){this.debugInfo.length=0,this.positionHistory.length=0,this.clearDebugLines()}cleanup(){this.clearDebugInfo(),this.clearDebugLines()}dispose(){this.disable(),this.disposables.forEach(e=>e()),this.disposables.clear(),this.cleanup()}},Gt=`gaesup.camera`,Kt=`camera.system`,qt=`camera`,Jt=`camera.store`,Yt=new Set([`scene`,`colliders`]),Xt=new Set([`focusTarget`,`fixedPosition`]),Zt=new Set([`offset`,`maxDistance`,`distance`,`target`,`position`,`focusDuration`,`minFov`,`maxFov`,`mode`,`rotation`,`isoAngle`,`modeSettings`]);function Qt(e){if(e instanceof q.Vector3)return{x:e.x,y:e.y,z:e.z};if(e instanceof q.Euler)return{x:e.x,y:e.y,z:e.z,order:e.order};if(Array.isArray(e))return e.map(Qt);if(e&&typeof e==`object`)return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Qt(t)]));if(e==null||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e}function $t(e){if(!e||typeof e!=`object`)return!1;let t=e;return Number.isFinite(t.x)&&Number.isFinite(t.y)&&Number.isFinite(t.z)}function en(e){let t={};for(let[n,r]of Object.entries(e))if(!(r===void 0||Zt.has(n))){if(Xt.has(n)&&!$t(r))throw TypeError(`Invalid camera vector`);if(Xt.has(n)&&$t(r)){Object.assign(t,{[n]:new q.Vector3(r.x,r.y,r.z)});continue}Object.assign(t,{[n]:Qt(r)})}return t}function tn(e=p.o){let t=e.getState();return{mode:{...t.mode},cameraOption:Qt(Object.fromEntries(Object.entries(t.cameraOption).filter(([e])=>!Zt.has(e))))}}function nn(e){if(!e||typeof e!=`object`||Array.isArray(e))throw TypeError(`Invalid camera numeric options`);for(let t of Object.values(e))if(t!==void 0){if(t&&typeof t==`object`)nn(t);else if(typeof t!=`number`||!Number.isFinite(t))throw TypeError(`Invalid camera numeric option`)}}function rn(e,t=p.o){if(e==null)return()=>{};if(typeof e!=`object`||Array.isArray(e)||e.mode!==void 0&&(!e.mode||typeof e.mode!=`object`||Array.isArray(e.mode))||e.cameraOption!==void 0&&(!e.cameraOption||typeof e.cameraOption!=`object`||Array.isArray(e.cameraOption)))throw TypeError(`Invalid camera snapshot`);let n=e.mode?{...e.mode}:void 0;if(n&&(n.type!==void 0&&![`character`,`vehicle`,`airplane`].includes(n.type)||n.controller!==void 0&&![`keyboard`,`clicker`,`gamepad`].includes(n.controller)||n.control!==void 0&&![`thirdPerson`,`firstPerson`,`topDown`,`sideScroll`,`isometric`,`fixed`,`chase`].includes(n.control)))throw TypeError(`Invalid camera mode`);let r=e.cameraOption;if(r){for(let e of[`maxDistance`,`distance`,`xDistance`,`yDistance`,`zDistance`,`zoom`,`zoomSpeed`,`minZoom`,`maxZoom`,`focusDuration`,`focusDistance`,`focusLerpSpeed`,`collisionMargin`,`fov`,`minFov`,`maxFov`,`isoAngle`])if(r[e]!==void 0&&(typeof r[e]!=`number`||!Number.isFinite(r[e])))throw TypeError(`Invalid camera number`);for(let e of[`enableZoom`,`focus`,`enableFocus`,`enableCollision`])if(r[e]!==void 0&&typeof r[e]!=`boolean`)throw TypeError(`Invalid camera boolean`);for(let e of[`smoothing`,`bounds`,`modeSettings`])r[e]!==void 0&&nn(r[e]);if(r.mode!==void 0&&typeof r.mode!=`string`)throw TypeError(`Invalid camera option mode`);if(r.collisionTargets!==void 0&&!Yt.has(r.collisionTargets))throw TypeError(`Invalid camera collision targets`)}let i=r?en(r):void 0;return()=>{let e=t.getState();n&&e.setMode(n),i&&e.setCameraOption(i)}}function an(e){let{mode:t,cameraOption:n}=e.getInitialState(),r=en(Qt(n));e.setState({mode:{...t},cameraOption:r})}function on(e,t=p.o){rn(e,t)()}function sn(e={}){let t=e.id??Gt,n=e.systemExtensionId??`camera.system`,r=e.saveExtensionId??`camera`,i=e.storeServiceId??`camera.store`;return{id:t,name:`GaeSup Camera`,version:`0.1.0`,runtime:`client`,capabilities:[`camera`],setup(e){let a=e.services.get(`gaesup.runtime.world-store`)??p.o;e.systems.register(n,{System:T.a,create:e=>new T.a(e)},t),e.save.register(r,{key:r,serialize:()=>tn(a),hydrate:e=>on(e,a),prepareHydrate:e=>rn(e,a),revision:o.t(()=>[a.getState().mode,a.getState().cameraOption]),reset:()=>an(a)},t),e.services.register(i,{useStore:a,getState:()=>tn(a),setMode:e=>a.getState().setMode(e),setCameraOption:e=>a.getState().setCameraOption(e)},t),e.events.emit(`camera:ready`,{pluginId:t,systemExtensionId:n,saveExtensionId:r,storeServiceId:i})},dispose(e){e.systems.remove(n),e.save.remove(r),e.services.remove(i)}}}var cn=sn(),ln={onClick:`클릭할 때`,onHover:`커서를 올릴 때`,onInteract:`상호작용할 때`,onProximity:`가까이 다가갈 때`},un={dialogue:`대화 표시`,animation:`애니메이션 재생`,sound:`소리 재생`,custom:`사용자 지정 동작`};function dn({instanceId:e,onClose:t}){let n=y.a(t=>t.instances.get(e)),r=y.a(e=>e.addInstanceEvent),i=y.a(e=>e.removeInstanceEvent),[a,o]=(0,J.useState)(`onClick`),[s,c]=(0,J.useState)(`dialogue`),[l,u]=(0,J.useState)(``),[d,f]=(0,J.useState)(``);return n?(0,X.jsxs)(`div`,{className:`npc-event-editor`,children:[(0,X.jsxs)(`div`,{className:`npc-event-editor-header`,children:[(0,X.jsxs)(`h3`,{children:[`이벤트 편집: `,n.name]}),(0,X.jsx)(`button`,{type:`button`,"aria-label":`이벤트 편집 닫기`,onClick:t,className:`npc-event-editor-close`,children:`×`})]}),(0,X.jsxs)(`div`,{className:`npc-event-editor-content`,children:[(0,X.jsxs)(`div`,{className:`npc-event-editor-section`,children:[(0,X.jsx)(`h4`,{children:`등록된 이벤트`}),n.events&&n.events.length>0?(0,X.jsx)(`ul`,{className:`npc-event-list`,children:n.events.map(t=>(0,X.jsxs)(`li`,{className:`npc-event-item`,children:[(0,X.jsxs)(`span`,{children:[ln[t.type],` → `,un[t.action]]}),(0,X.jsx)(`button`,{onClick:()=>i(e,t.id),className:`npc-event-remove`,children:`삭제`})]},t.id))}):(0,X.jsx)(`p`,{className:`npc-event-empty`,children:`등록된 이벤트가 없습니다`})]}),(0,X.jsxs)(`div`,{className:`npc-event-editor-section`,children:[(0,X.jsx)(`h4`,{children:`새 이벤트 추가`}),(0,X.jsxs)(`div`,{className:`npc-event-editor-field`,children:[(0,X.jsx)(`label`,{children:`발생 조건:`}),(0,X.jsxs)(`select`,{value:a,onChange:e=>o(e.target.value),className:`npc-event-editor-select`,children:[(0,X.jsx)(`option`,{value:`onClick`,children:`클릭할 때`}),(0,X.jsx)(`option`,{value:`onHover`,children:`커서를 올릴 때`}),(0,X.jsx)(`option`,{value:`onInteract`,children:`상호작용할 때`}),(0,X.jsx)(`option`,{value:`onProximity`,children:`가까이 다가갈 때`})]})]}),(0,X.jsxs)(`div`,{className:`npc-event-editor-field`,children:[(0,X.jsx)(`label`,{children:`실행 동작:`}),(0,X.jsxs)(`select`,{value:s,onChange:e=>c(e.target.value),className:`npc-event-editor-select`,children:[(0,X.jsx)(`option`,{value:`dialogue`,children:`대화 표시`}),(0,X.jsx)(`option`,{value:`animation`,children:`애니메이션 재생`}),(0,X.jsx)(`option`,{value:`sound`,children:`소리 재생`}),(0,X.jsx)(`option`,{value:`custom`,children:`사용자 지정 동작`})]})]}),s===`dialogue`&&(0,X.jsxs)(`div`,{className:`npc-event-editor-field`,children:[(0,X.jsx)(`label`,{children:`대화 내용:`}),(0,X.jsx)(`textarea`,{value:l,onChange:e=>u(e.target.value),placeholder:`대화 내용을 입력하세요…`,className:`npc-event-editor-textarea`})]}),s===`animation`&&(0,X.jsxs)(`div`,{className:`npc-event-editor-field`,children:[(0,X.jsx)(`label`,{children:`애니메이션:`}),(0,X.jsxs)(`select`,{value:d,onChange:e=>f(e.target.value),className:`npc-event-editor-select`,children:[(0,X.jsx)(`option`,{value:``,children:`애니메이션 선택…`}),(0,X.jsx)(`option`,{value:`idle`,children:`대기`}),(0,X.jsx)(`option`,{value:`walk`,children:`걷기`}),(0,X.jsx)(`option`,{value:`talk`,children:`대화`})]})]}),(0,X.jsx)(`button`,{onClick:()=>{let t;switch(s){case`dialogue`:t={type:`dialogue`,text:l};break;case`animation`:t={type:`animation`,animationId:d};break;case`sound`:t={type:`sound`,soundUrl:``};break;case`custom`:t={type:`custom`,data:{script:``}}}let n={id:m.t(`event`),type:a,action:s,...t?{payload:t}:{}};r(e,n),u(``),f(``)},className:`npc-event-editor-add-button`,disabled:s===`dialogue`&&!l||s===`animation`&&!d,children:`이벤트 추가`})]})]})]}):null}var fn=`gaesup.npc`,pn=`npc`,mn=`npc.store`;function hn(e=y.a){let t=e.getState();return{version:1,templates:Array.from(t.templates.values(),f.qt),instances:Array.from((y.u(e)?.snapshotInstances()??t.instances).values(),f.qt),categories:Array.from(t.categories.values(),f.qt),clothingSets:Array.from(t.clothingSets.values(),f.qt),clothingCategories:Array.from(t.clothingCategories.values(),f.qt),animations:Array.from(t.animations.values(),f.qt),brainBlueprints:Array.from(t.brainBlueprints.values(),f.qt)}}function gn(e){if(!Array.isArray(e))throw TypeError(`Invalid NPC collection`);let t=new Map;for(let n of e){if(!n||typeof n!=`object`||typeof n.id!=`string`||!n.id.trim()||t.has(n.id))throw TypeError(`Invalid NPC collection ID`);t.set(n.id,f.qt(n))}return t}function _n(e,t=y.a){if(e==null)return()=>{};let n=Array.isArray(e)?{instances:e}:e;if(typeof n!=`object`||n.version!==void 0&&n.version!==1)throw TypeError(`Invalid NPC snapshot`);let r={...n.templates===void 0?{}:{templates:gn(n.templates)},...n.categories===void 0?{}:{categories:gn(n.categories)},...n.clothingSets===void 0?{}:{clothingSets:gn(n.clothingSets)},...n.clothingCategories===void 0?{}:{clothingCategories:gn(n.clothingCategories)},...n.animations===void 0?{}:{animations:gn(n.animations)},...n.brainBlueprints===void 0?{}:{brainBlueprints:gn(n.brainBlueprints)},...n.instances===void 0?{}:{instances:gn(n.instances)}};for(let e of r.instances?.values()??[])if(typeof e.templateId!=`string`||!e.templateId.trim()||typeof e.name!=`string`||![e.position,e.rotation,e.scale].every(e=>Array.isArray(e)&&e.length===3&&[...e].every(Number.isFinite)))throw TypeError(`Invalid NPC instance transform`);return()=>t.setState(r)}function vn(e,t=y.a){_n(e,t)()}function yn(e={}){let t=e.id??fn,n=e.saveExtensionId??pn,r=e.storeServiceId??mn;return{id:t,name:`GaeSup NPC`,version:`0.1.0`,runtime:`client`,capabilities:[`npc`],setup(e){let i=e.services.get(y.r)??y.a;e.save.register(n,{key:n,serialize:()=>hn(i),hydrate:e=>vn(e,i),prepareHydrate:e=>_n(e,i),owned:!0,revision:o.t(()=>{let e=i.getState();return[e.templates,e.instances,e.categories,e.clothingSets,e.clothingCategories,e.animations,e.brainBlueprints,y.u(i)?.poseRevision??0]}),reset:()=>{let{templates:e,instances:t,categories:n,clothingSets:r,clothingCategories:a,animations:o,brainBlueprints:s}=i.getInitialState();i.setState({templates:e,instances:t,categories:n,clothingSets:r,clothingCategories:a,animations:o,brainBlueprints:s,initialized:!1})}},t),e.services.register(r,{useStore:i,getState:i.getState,setState:i.setState},t),e.events.emit(`npc:ready`,{pluginId:t,saveExtensionId:n,storeServiceId:r})},dispose(e){e.save.remove(n),e.services.remove(r)}}}var bn=yn();function xn(e){let t=j.i(),n=s.n()?.npcScheduler??u.I(),[r,i]=(0,J.useState)(()=>{let r=t.getState();return n.resolve(e,r.time)});return(0,J.useEffect)(()=>{let r=()=>{let r=t.getState(),a=n.resolve(e,r.time);i(a)};r();let a=t.subscribe((e,t)=>{(e.time.hour!==t.time.hour||e.time.day!==t.time.day||e.time.season!==t.time.season||e.time.weekday!==t.time.weekday)&&r()}),o=n.subscribe(r);return()=>{a(),o()}},[e,t,n]),r}function Sn(e,t=`character`,n){let r=(0,J.useRef)(e);r.current=e;let i=f.K();(0,J.useEffect)(()=>{if(i)return i.onAnimatorEvent(t,e=>{(n===void 0||e.name===n)&&r.current(e)})},[i,t,n])}function Cn(){let e=p.s(),{activeState:t,gameStates:n}=f.Y(),r=p.o(e=>e.mode),i=p.o(e=>e.controllerOptions),a=e.getState();return{state:t||null,mode:r,states:n,control:i,context:{mode:r,states:n,control:i},controller:a}}function wn(){let{activeState:e,updateActiveState:t}=f.Y(),n=s.n(),r=s.r(),i=(0,J.useMemo)(()=>n?n.getService(`motions.runtime`)?.create()??null:null,[n,r]),a=!!e;return{teleport:(0,J.useCallback)((n,r,a={})=>{if(!e){console.warn(`[useTeleport]: Cannot teleport - activeState not available`);return}let o=Math.max(0,a.dropHeight??7),s=o>0?n.clone().add(new q.Vector3(0,o,0)):n.clone(),c=a.effect!==!1,l=typeof a.effect==`object`?a.effect:{},u={position:{x:n.x,y:n.y,z:n.z},spawnPosition:{x:s.x,y:s.y,z:s.z},...c?{effect:{id:m.t(`teleport`),kind:l.kind??(o>0?`drop`:`instant`),dropHeight:o,durationMs:l.durationMs??900}}:{}};i?f.lt(i,u):typeof window<`u`&&window.dispatchEvent(new CustomEvent(`gaesup:teleport`,{detail:u})),t({position:s,euler:r||e.euler})},[e,i,t]),canTeleport:a}}function Tn({id:e,center:t,size:n}){let r=s.n()?.gameplayAreas,[i,a,o]=t,[c,l,u]=n;return(0,J.useEffect)(()=>r?.register({id:e,center:[i,a,o],size:[c,l,u]}),[r,e,i,a,o,c,l,u]),null}var En=class{constructor(){this.animationBridge=f.W(),this.lastAnimation=`idle`}update(e){let{isMoving:t,isRunning:n,isJumping:r,isFalling:i,isRiding:a}=e,o=`idle`;a?o=`ride`:r?o=`jump`:i?o=`fall`:n?o=`run`:t&&(o=`walk`),o!==this.lastAnimation&&(this.animationBridge.execute(`character`,{type:`play`,animation:o}),this.lastAnimation=o)}};function Dn(e=p.o){let{cameraOption:t,setCameraOption:n}=e.getState();t?.focus&&n({focus:!1})}var On=(0,J.forwardRef)(({children:e,position:t,focusDistance:n=10,onFocus:r,onBlur:i,...a},o)=>{let s=p.s(),c=p.o(e=>e.setCameraOption),l=p.o(e=>e.cameraOption),u=e=>{if(e.stopPropagation(),!l?.enableFocus)return;if(l.focus){Dn(s),i&&i(e);return}let t=e.object.getWorldPosition(new q.Vector3);c({focusTarget:t,focusDistance:n,focus:!0}),r&&r(e)},d=()=>{l?.enableFocus&&(document.body.style.cursor=`pointer`)},f=e=>{document.body.style.cursor=`default`,i&&!l?.focus&&i(e)},m={...a,...t?{position:t}:{}};return(0,X.jsx)(`group`,{ref:o,onClick:u,onPointerOver:d,onPointerOut:f,...m,children:e})});On.displayName=`FocusableObject`;function kn({enabled:e=!0}){let t=Bt();return Vt(e),!e||!t?null:(0,X.jsxs)(`div`,{style:{position:`fixed`,bottom:96,left:`50%`,transform:`translateX(-50%)`,zIndex:`var(--gaesup-z-hud, 60)`,padding:`8px 14px`,background:`var(--gaesup-ui-surface, rgba(18,20,28,0.55))`,color:`var(--gaesup-ui-text, #f3f4f8)`,fontFamily:`var(--gaesup-ui-font, 'Pretendard', system-ui, sans-serif)`,fontSize:13,fontWeight:500,borderRadius:999,border:`1px solid var(--gaesup-ui-border, rgba(255,255,255,0.12))`,display:`flex`,alignItems:`center`,gap:10,boxShadow:`var(--gaesup-ui-shadow, 0 8px 22px rgba(0,0,0,0.32))`,backdropFilter:`var(--gaesup-ui-blur, blur(18px) saturate(140%))`,WebkitBackdropFilter:`var(--gaesup-ui-blur, blur(18px) saturate(140%))`,pointerEvents:`none`,userSelect:`none`},children:[(0,X.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,minWidth:22,height:22,padding:`0 6px`,borderRadius:6,background:`var(--gaesup-ui-accent, #ffd84a)`,color:`var(--gaesup-ui-accent-text, #222)`,fontWeight:700},children:t.key.toUpperCase()}),(0,X.jsx)(`span`,{children:t.label}),(0,X.jsxs)(`span`,{style:{opacity:.5,fontSize:11},children:[t.distance.toFixed(1),`m`]})]})}function An(e){return e instanceof q.Vector3?[e.x,e.y,e.z]:Array.isArray(e)?[e[0],e[1],e[2]]:[e.x,e.y,e.z]}function jn(e){return{id:e.id,name:e.name,position:An(e.position),radius:e.radius??1.4,markerColor:e.markerColor??`#61dafb`}}function Mn(e){let[t,n,r]=e.position;return new q.Vector3(t,n,r)}function Nn(e,t){return e.find(e=>e.id===t)}function Pn({showController:e=!0,showDebugPanel:t=!0,controllerProps:n={},debugPanelProps:r={}}){return(0,X.jsxs)(X.Fragment,{children:[e&&(0,X.jsx)(h.$t,{position:`bottom-left`,showLabels:!0,compact:!1,...n}),t&&(0,X.jsx)(h.Qt,{position:`top-right`,updateInterval:100,precision:2,compact:!1,...r})]})}function Fn({text:e,position:t,teleportStyle:n}){let{teleport:r,canTeleport:i}=wn();return(0,X.jsxs)(`button`,{type:`button`,disabled:!i,className:`teleport ${i?``:`teleport--disabled`}`,onClick:()=>{r(t)},style:n,title:i?`순간이동`:`지금은 순간이동할 수 없습니다.`,children:[e||`순간이동`,!i&&(0,X.jsx)(`span`,{className:`teleport__cooldown`,children:`⏱️`})]})}function In(e,t){return t===`none`||e.nativeEvent[t]===!0}function Ln({enabled:e=!0,modifierKey:t=`altKey`,yOffset:n=0,size:r=1e3,position:i=[0,0,0],onTeleport:a}){let{teleport:o,canTeleport:s}=wn();return(0,X.jsxs)(`mesh`,{position:i,rotation:[-Math.PI/2,0,0],onPointerDown:r=>{if(!e||!s||!In(r,t))return;r.stopPropagation();let i=r.point.clone();i.y+=n,o(i),a?.(i,r)},visible:e,userData:{intangible:!0,teleportOnClick:!0},children:[(0,X.jsx)(`planeGeometry`,{args:[r,r]}),(0,X.jsx)(`meshBasicMaterial`,{transparent:!0,opacity:0,depthWrite:!1,colorWrite:!1})]})}function Rn({destination:e,enabled:t=!0,yOffset:n=0,onTeleport:r}){let{teleport:i,canTeleport:a}=wn(),o=Mn(e);o.y+=n;let s=n=>{t&&a&&(n.stopPropagation(),i(o),r?.(e,n))};return(0,X.jsxs)(`group`,{position:o,userData:{teleportMarker:!0,destinationId:e.id},children:[(0,X.jsxs)(`mesh`,{position:[0,.04,0],rotation:[-Math.PI/2,0,0],onPointerDown:s,castShadow:!0,children:[(0,X.jsx)(`ringGeometry`,{args:[e.radius*.58,e.radius,32]}),(0,X.jsx)(`meshBasicMaterial`,{color:e.markerColor,transparent:!0,opacity:.52})]}),(0,X.jsxs)(`mesh`,{position:[0,.34,0],onPointerDown:s,castShadow:!0,children:[(0,X.jsx)(`cylinderGeometry`,{args:[.12,.24,.55,16]}),(0,X.jsx)(`meshStandardMaterial`,{color:e.markerColor,roughness:.45,metalness:.1})]})]})}var zn=class{constructor(){this.listeners=new Set,this.state={minimapVisible:!0,hudVisible:!0,tooltipText:``,tooltipPosition:new q.Vector2(0,0),tooltipVisible:!1,modalVisible:!1,modalContent:null,notifications:[],lastUpdate:Date.now()},this.minimapSystem=y.n.getInstance()}getState(){return{...this.state}}execute(e){switch(e.type){case`showTooltip`:this.state.tooltipText=e.text,this.state.tooltipPosition=e.position,this.state.tooltipVisible=!0;break;case`hideTooltip`:this.state.tooltipVisible=!1,this.state.tooltipText=``;break;case`showModal`:this.state.modalVisible=!0,this.state.modalContent=e.content;break;case`hideModal`:this.state.modalVisible=!1,this.state.modalContent=null;break;case`toggleMinimap`:this.state.minimapVisible=!this.state.minimapVisible;break;case`toggleHUD`:this.state.hudVisible=!this.state.hudVisible;break;case`addNotification`:this.state.notifications.push({id:e.id,message:e.message,type:e.notificationType||`info`,timestamp:Date.now()});break;case`removeNotification`:this.state.notifications=this.state.notifications.filter(t=>t.id!==e.id);break;case`addMinimapMarker`:this.minimapSystem.addMarker(e.id,e.markerType,e.text,e.position,e.size);break;case`removeMinimapMarker`:this.minimapSystem.removeMarker(e.id);break;case`updateMinimapMarker`:this.minimapSystem.updateMarker(e.id,e.updates);break;default:console.warn(`Unknown UI command:`,e)}this.state.lastUpdate=Date.now(),this.notifyListeners()}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notifyListeners(){this.listeners.forEach(e=>e())}dispose(){this.listeners.clear(),this.minimapSystem.clear()}getMetrics(){return{notificationCount:this.state.notifications.length,isMinimapVisible:this.state.minimapVisible,isHudVisible:this.state.hudVisible,isTooltipVisible:this.state.tooltipVisible,isModalVisible:this.state.modalVisible,lastUpdate:this.state.lastUpdate}}},Bn=5,Vn=.5,Hn=20,Un=200,Wn=e=>{let{activeState:t}=f.Y(),n=f.Ut(e=>e.tileGroups),r=(0,J.useRef)(new Map),i=(0,J.useRef)(null),{size:a=Un,scale:o=e.initialScale??Bn,minScale:s=Vn,maxScale:c=Hn,blockRotate:l=!1,updateInterval:u=33}=e,d=(0,J.useRef)(null),[p,m]=(0,J.useState)(()=>Math.min(c,Math.max(s,o))),h=!!(t.position&&e);(0,J.useEffect)(()=>{let e=d.current;if(!e)return;let t=y.n.getInstance(),n=new y.n;n.setCanvas(e),i.current=n;let r=e=>{n.clear();for(let t of e.values())n.addMarker(t.id,t.type,t.text,t.center,t.size)};r(t.getMarkers());let a=t.subscribe(r);return()=>{a(),i.current=null,n.dispose()}},[]);let g=(0,J.useCallback)(()=>{e.blockScale||m(e=>Math.min(c,e+.1))},[e.blockScale,c]),_=(0,J.useCallback)(()=>{e.blockScale||m(e=>Math.max(s,e-.1))},[e.blockScale,s]),v=(0,J.useCallback)(t=>{e.blockScale||(t.preventDefault(),t.deltaY<0?g():_())},[e.blockScale,g,_]),b=(0,J.useCallback)(()=>{let t=d.current;if(!t)return;let n=t=>{e.blockScale||(t.preventDefault(),t.deltaY<0?g():_())};return t.addEventListener(`wheel`,n,{passive:!1}),()=>{t.removeEventListener(`wheel`,n)}},[e.blockScale,g,_]),x=(0,J.useCallback)(()=>{if(document.hidden)return;let{position:e,euler:o}=t;e&&o&&i.current?.render({size:a,scale:p,position:e,rotation:o.y,blockRotate:l,tileGroups:n,sceneObjects:r.current})},[t,a,p,l,n]);return(0,J.useEffect)(()=>{if(!h)return;let e=()=>{let{position:e,euler:n}=t;e&&n&&(i.current?.checkForUpdates(e,l?0:n.y),x())},n=document.hidden?void 0:setInterval(e,u),r=()=>{n!==void 0&&clearInterval(n),n=void 0,!document.hidden&&(e(),n=setInterval(e,u))};return document.addEventListener(`visibilitychange`,r),()=>{clearInterval(n),document.removeEventListener(`visibilitychange`,r)}},[x,u,h,t,l]),(0,J.useEffect)(()=>{x()},[p,x]),{canvasRef:d,scale:p,upscale:g,downscale:_,handleWheel:v,setupWheelListener:b,updateCanvas:x,isReady:h}},Gn=200;function Kn({size:e=Gn,updateInterval:t=33,scale:n=5,minScale:r=.5,maxScale:i=20,blockScale:a=!1,blockScaleControl:o=!1,blockRotate:s=!1,angle:c=0,minimapStyle:l,scaleStyle:u,plusMinusStyle:d,position:f=`top-right`,showZoom:p=!0,showCompass:m=!0,markers:h=[]}){let{canvasRef:g,scale:_,upscale:v,downscale:y,handleWheel:b}=Wn({size:e,updateInterval:t,initialScale:n,minScale:r,maxScale:i,blockScale:a,blockRotate:s,angle:c}),x=f?`minimap--${f}`:``;return(0,X.jsxs)(`div`,{className:`minimap ${x}`,style:{width:e,height:e,...l},children:[(0,X.jsx)(`canvas`,{ref:g,className:`minimap__canvas`,"aria-label":`주변 지도`,width:e,height:e,onWheel:b}),m&&(0,X.jsx)(`div`,{className:`minimap__compass`,children:(0,X.jsx)(`div`,{style:{transform:`rotate(${c}deg)`},children:`북`})}),h.map((e,t)=>(0,X.jsx)(`div`,{className:`minimap__marker minimap__marker--${e.type||`normal`}`,style:{left:`${e.x}%`,top:`${e.y}%`},children:e.label&&(0,X.jsx)(`div`,{className:`minimap__marker-label`,children:e.label})},e.id||t)),p&&!o&&(0,X.jsx)(`div`,{className:`minimap__controls`,style:u,children:(0,X.jsxs)(`div`,{className:`minimap__zoom-controls`,children:[(0,X.jsx)(`button`,{className:`minimap__control-button`,type:`button`,"aria-label":`지도 확대`,onClick:v,disabled:_>=i,style:d,children:`+`}),(0,X.jsx)(`button`,{className:`minimap__control-button`,type:`button`,"aria-label":`지도 축소`,onClick:y,disabled:_<=r,style:d,children:`-`})]})})]})}function qn({id:e,position:t,size:n=[2,2,2],text:r=``,type:i=`normal`,children:a}){return(0,J.useEffect)(()=>{let a=y.n.getInstance(),o=Array.isArray(t)?t:[t.x,t.y,t.z],s=Array.isArray(n)?n:[n.x,n.y,n.z];return a.addMarker(e,i,r||``,new q.Vector3(o[0],o[1],o[2]),new q.Vector3(s[0],s[1],s[2])),()=>{a.removeMarker(e)}},[e,t,n,i,r]),(0,X.jsx)(X.Fragment,{children:a})}function Jn({id:e,position:t,size:n,label:r,children:i}){return(0,X.jsx)(qn,{id:e,position:t,size:n,text:r,type:`ground`,children:i})}function Yn({id:e,position:t,emoji:n,size:r=[3,3,3],children:i}){return(0,X.jsx)(qn,{id:e,position:t,size:r,text:n,type:`normal`,children:i})}var Xn={info:{bg:`rgba(20,30,50,0.55)`,ring:`#7aa6ff`,icon:`i`},success:{bg:`rgba(20,40,30,0.55)`,ring:`#7adf90`,icon:`+`},warn:{bg:`rgba(50,40,20,0.55)`,ring:`#ffd84a`,icon:`!`},error:{bg:`rgba(50,20,20,0.55)`,ring:`#ff7a7a`,icon:`x`},reward:{bg:`rgba(40,30,10,0.55)`,ring:`#ffc24a`,icon:`*`},mail:{bg:`rgba(30,20,40,0.55)`,ring:`#cf9aff`,icon:`M`}};function Zn({position:e=`top-right`,max:t=5}){let n=x.c(e=>e.toasts),r=x.c(e=>e.dismiss);(0,J.useEffect)(()=>{if(!n.length)return;let e=n.map(e=>window.setTimeout(()=>r(e.id),Math.max(0,e.createdAt+Math.max(500,e.durationMs)-Date.now())));return()=>{e.forEach(e=>window.clearTimeout(e))}},[n,r]);let i=e===`top-center`?{top:`var(--gaesup-toast-top, 64px)`,left:`50%`,transform:`translateX(-50%)`}:{top:`var(--gaesup-toast-top, 64px)`,right:12},a=n.slice(-t);return(0,X.jsxs)(`div`,{role:`log`,"aria-label":`알림`,"aria-live":`polite`,style:{position:`fixed`,zIndex:`var(--gaesup-z-toast, 140)`,display:`flex`,flexDirection:`column`,gap:8,pointerEvents:`none`,bottom:`var(--gaesup-toast-bottom, auto)`,...i},children:[a.map(e=>{let t=Xn[e.kind];return(0,X.jsxs)(`div`,{style:{boxSizing:`border-box`,minWidth:`min(220px, calc(100vw - 24px))`,maxWidth:`min(360px, calc(100vw - 24px))`,overflowWrap:`anywhere`,padding:`9px 14px`,borderRadius:12,background:`var(--gaesup-toast-${e.kind}, ${t.bg})`,color:`var(--gaesup-ui-text, #f3f4f8)`,fontFamily:`var(--gaesup-ui-font, 'Pretendard', system-ui, sans-serif)`,fontSize:13,fontWeight:500,display:`flex`,alignItems:`center`,gap:10,border:`1px solid ${t.ring}55`,boxShadow:`0 8px 22px rgba(0,0,0,0.32), inset 0 1px 0 rgba(255,255,255,0.05)`,backdropFilter:`var(--gaesup-ui-blur, blur(18px) saturate(140%))`,WebkitBackdropFilter:`var(--gaesup-ui-blur, blur(18px) saturate(140%))`,animation:`gaesup-toast-in 220ms ease-out both`},children:[(0,X.jsx)(`span`,{"aria-hidden":`true`,style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:22,height:22,borderRadius:6,background:t.ring,color:`#1a1a1a`,fontWeight:700},children:e.icon??t.icon}),(0,X.jsx)(`span`,{children:e.text})]},e.id)}),(0,X.jsx)(`style`,{children:`@keyframes gaesup-toast-in {
|
|
2
2
|
0% { opacity: 0; transform: translateY(-6px); }
|
|
3
3
|
100% { opacity: 1; transform: translateY(0); }
|
|
4
|
-
}`})]})}function Qn(e){return`${e.phase===`serialize`?`저장`:`불러오기`} 실패: ${e.key} - ${e.errorMessage}`}function $n({enabled:e=!0,includeExisting:t=!1,durationMs:n=6500,kind:r=`error`,icon:i,formatMessage:a=Qn}){let o=s.n(),c=s.r();return(0,J.useEffect)(()=>{if(!e||!o)return;let s=new Set,c=e=>{if(s.has(e.id))return;s.add(e.id);let t=er(r,e),o=i?er(i,e):void 0;x.s(t,a(e),{durationMs:n,...o?{icon:o}:{}})},l=o.saveDiagnostics.getDiagnostics();return t?l.forEach(c):l.forEach(e=>s.add(e.id)),o.saveDiagnostics.subscribe(c)},[n,e,a,i,t,r,c,o]),null}function er(e,t){return typeof e==`function`?e(t):e}var tr=class extends p.t{constructor(){super({metrics:!0}),this.register(`main`,new zn),this.setupEngineSubscriptions()}setupEngineSubscriptions(){this.engines.forEach(e=>{e.subscribe(()=>{this.notifyListeners(`main`)})})}buildEngine(){return new zn}executeCommand(e,t){e.execute(t)}createSnapshot(e){let t=e.getState();return{minimapVisible:t.minimapVisible,hudVisible:t.hudVisible,tooltipVisible:t.tooltipVisible,modalVisible:t.modalVisible,notificationCount:t.notifications.length,lastUpdate:t.lastUpdate}}showTooltip(e,t){this.execute(`main`,{type:`showTooltip`,text:e,position:t})}hideTooltip(){this.execute(`main`,{type:`hideTooltip`})}showModal(e){this.execute(`main`,{type:`showModal`,content:e})}hideModal(){this.execute(`main`,{type:`hideModal`})}toggleMinimap(){this.execute(`main`,{type:`toggleMinimap`})}toggleHUD(){this.execute(`main`,{type:`toggleHUD`})}addNotification(e,t,n){this.execute(`main`,{type:`addNotification`,id:e,message:t,notificationType:n||`info`})}removeNotification(e){this.execute(`main`,{type:`removeNotification`,id:e})}addMinimapMarker(e,t,n,r,i){this.execute(`main`,{type:`addMinimapMarker`,id:e,markerType:t,text:n,position:r,size:i})}removeMinimapMarker(e){this.execute(`main`,{type:`removeMinimapMarker`,id:e})}updateMinimapMarker(e,t){this.execute(`main`,{type:`updateMinimapMarker`,id:e,updates:t})}getUIMetrics(){let e=this.getEngine(`main`);return e?e.getMetrics():null}execute(e,t){super.execute(e,t)}snapshot(e){return super.snapshot(e)}},nr={get(e){if(typeof window<`u`){let t=localStorage.getItem(e);if(t)try{return JSON.parse(t)}catch(e){return console.error(`Error parsing cached data:`,e),null}}return null},set(e,t){if(typeof window<`u`)try{let n=JSON.stringify(t);localStorage.setItem(e,n)}catch(e){console.error(`Error serializing data for cache:`,e)}},remove(e){typeof window<`u`&&localStorage.removeItem(e)}},rr=class{constructor(e,t,n={}){this.available=[],this.inUse=new Set,this.createFn=e,this.resetFn=t,this.config={initialSize:10,maxSize:100,growthRate:2,...n},this.initialize()}initialize(){for(let e=0;e<this.config.initialSize;e++)this.available.push(this.createFn())}acquire(){if(this.available.length===0){if(this.available.length+this.inUse.size>=this.config.maxSize)throw Error(`ObjectPool: Maximum size ${this.config.maxSize} reached`);if(this.grow(),this.available.length===0){let e=this.createFn();return this.inUse.add(e),e}}let e=this.available.pop();return this.inUse.add(e),e}release(e){this.inUse.has(e)&&(this.resetFn(e),this.inUse.delete(e),this.available.push(e))}grow(){let e=this.available.length+this.inUse.size;if(e>=this.config.maxSize)return;let t=Math.min(Math.ceil(e*(this.config.growthRate-1)),this.config.maxSize-e);for(let e=0;e<t;e++)this.available.push(this.createFn())}clear(){this.available=[],this.inUse.clear()}get stats(){return{available:this.available.length,inUse:this.inUse.size,total:this.available.length+this.inUse.size}}},ir=class e{constructor(){this.vector3Pool=new rr(()=>new q.Vector3,e=>e.set(0,0,0),{initialSize:20,maxSize:200}),this.quaternionPool=new rr(()=>new q.Quaternion,e=>e.set(0,0,0,1),{initialSize:10,maxSize:100}),this.eulerPool=new rr(()=>new q.Euler,e=>e.set(0,0,0),{initialSize:10,maxSize:100}),this.matrix4Pool=new rr(()=>new q.Matrix4,e=>e.identity(),{initialSize:5,maxSize:50})}static getInstance(){return e.instance||=new e,e.instance}acquireVector3(){return this.vector3Pool.acquire()}releaseVector3(e){this.vector3Pool.release(e)}acquireQuaternion(){return this.quaternionPool.acquire()}releaseQuaternion(e){this.quaternionPool.release(e)}acquireEuler(){return this.eulerPool.acquire()}releaseEuler(e){this.eulerPool.release(e)}acquireMatrix4(){return this.matrix4Pool.acquire()}releaseMatrix4(e){this.matrix4Pool.release(e)}withVector3(e){let t=this.acquireVector3();try{return e(t)}finally{this.releaseVector3(t)}}withQuaternion(e){let t=this.acquireQuaternion();try{return e(t)}finally{this.releaseQuaternion(t)}}withEuler(e){let t=this.acquireEuler();try{return e(t)}finally{this.releaseEuler(t)}}withMatrix4(e){let t=this.acquireMatrix4();try{return e(t)}finally{this.releaseMatrix4(t)}}getStats(){return{vector3:this.vector3Pool.stats,quaternion:this.quaternionPool.stats,euler:this.eulerPool.stats,matrix4:this.matrix4Pool.stats}}clear(){this.vector3Pool.clear(),this.quaternionPool.clear(),this.eulerPool.clear(),this.matrix4Pool.clear()}},ar=ir.getInstance(),or={isNonEmptyString(e){return typeof e==`string`&&e.trim().length>0},isPositiveNumber(e){return typeof e==`number`&&e>0},isInRange(e,t,n){return e>=t&&e<=n},isValidId(e){return this.isNonEmptyString(e)&&/^[a-zA-Z0-9_-]+$/.test(e)},isValidEmail(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)},isValidUrl(e){try{return new URL(e),!0}catch{return!1}},hasRequiredProperties(e,t){return typeof e!=`object`||!e?!1:t.every(t=>Object.prototype.hasOwnProperty.call(e,t))}},sr={clamp(e,t,n){return Math.max(t,Math.min(n,e))},lerp(e,t,n){return e+(t-e)*this.clamp(n,0,1)},smoothStep(e,t,n){let r=this.clamp((n-e)/(t-e),0,1);return r*r*(3-2*r)},mapRange(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)},randomInRange(e,t){return Math.random()*(t-e)+e},degToRad(e){return Math.PI/180*e},radToDeg(e){return 180/Math.PI*e},distance2D(e,t,n,r){let i=n-e,a=r-t;return Math.sqrt(i*i+a*a)},normalizeAngle(e){for(;e>Math.PI;)e-=2*Math.PI;for(;e<-Math.PI;)e+=2*Math.PI;return e},angleDifference(e,t){return this.normalizeAngle(t-e)},vectorToAngle(e){return Math.atan2(e.x,e.z)},angleToVector(e){return new q.Vector3(Math.sin(e),0,Math.cos(e))}},cr=`gaesup.time`,lr=`time`,ur=`time.store`;function dr(e=j.r){return e.getState().serialize()}function fr(e,t=j.r){t.getState().hydrate(e)}function pr(e={}){return a.t({id:e.id??cr,name:`GaeSup Time`,saveExtensionId:e.saveExtensionId??lr,storeServiceId:e.storeServiceId??ur,store:j.r,readyEvent:`time:ready`,capabilities:[`time`],resolveStore:e=>e.services.get(`gaesup.runtime.time-store`)??j.r,serialize:dr,hydrate:fr,prepareHydrate:(e,t)=>t.getState().prepareHydrate(e)})}var mr=pr();function hr(){return j.r(e=>e.time)}function gr(){return j.r((0,ae.useShallow)(e=>({hour:e.time.hour,minute:e.time.minute})))}function _r(e=!0){let t=j.i();(0,J.useEffect)(()=>{if(e)return f.Z(t).acquire()},[e,t])}function vr(e){let t=j.r(e=>e.addListener);(0,J.useEffect)(()=>t(t=>{t.kind===`newDay`&&e(t.time)}),[t,e])}function yr(e){let t=j.r(e=>e.addListener);(0,J.useEffect)(()=>t(t=>{t.kind===`newHour`&&e(t.time)}),[t,e])}var br={spring:`#ffb6c1`,summer:`#9bd97a`,autumn:`#e0a060`,winter:`#cfe2ff`},xr={sun:`일`,mon:`월`,tue:`화`,wed:`수`,thu:`목`,fri:`금`,sat:`토`};function Sr(){let e=hr(),t=String(e.hour).padStart(2,`0`),n=String(e.minute).padStart(2,`0`);return(0,X.jsx)(`div`,{style:{position:`fixed`,top:10,left:10,zIndex:90,padding:`6px 10px`,background:`rgba(0,0,0,0.55)`,color:`#fff`,fontFamily:`'Pretendard', system-ui, sans-serif`,fontSize:13,borderRadius:6,userSelect:`none`,pointerEvents:`none`,backdropFilter:`blur(4px)`},children:(0,X.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,X.jsx)(`span`,{style:{display:`inline-block`,width:8,height:8,borderRadius:`50%`,background:br[e.season]??`#fff`}}),(0,X.jsxs)(`span`,{children:[`Y`,e.year,` M`,String(e.month).padStart(2,`0`),` D`,String(e.day).padStart(2,`0`),` `,`(`,xr[e.weekday],`)`]}),(0,X.jsxs)(`span`,{style:{opacity:.85},children:[t,`:`,n]})]})})}function Cr({advanceKey:e=`e`,closeKey:t=`Escape`}){let n=f.mr(),r=x.p(),i=x.f(e=>e.node),a=x.f(e=>e.runner),o=x.f(e=>e.advance),s=x.f(e=>e.choose),c=x.f(e=>e.close),[,l]=(0,J.useReducer)(e=>e+1,0),u=a?.visibleChoices()??[],d=(0,J.useCallback)(e=>{if(!a||r.getState().runner!==a)return;let t=a.visibleChoices().indexOf(e);t>=0?s(t):l()},[a,s,r]);return(0,J.useEffect)(()=>{if(!i)return;let r=n.listen(`keydown`,n=>{if(n.isComposing||n.ctrlKey||n.metaKey||n.altKey)return;let r=n.target;if(r instanceof HTMLElement&&(r.matches(`input, textarea, select`)||r.isContentEditable))return;let i=/^[1-9]$/.test(n.key)?Number(n.key):0,a=n.key.toLowerCase()===e.toLowerCase();if((n.key===t||a||i>=1&&i<=u.length)&&(n.preventDefault(),n.stopImmediatePropagation(),!n.repeat)){if(n.key===t){c();return}if(u.length===0&&a){o();return}if(i>=1&&i<=u.length){let e=u[i-1];e&&d(e)}}},!0);return()=>r()},[n,i,u,o,d,c,e,t]),i?(0,X.jsxs)(g.a,{role:`dialog`,"aria-label":i.speaker?`${i.speaker} 대화`:`대화`,"data-world-overlay":!0,style:{position:`fixed`,left:`50%`,bottom:110,transform:`translateX(-50%)`,width:`min(720px, 92vw)`,boxSizing:`border-box`,maxHeight:`calc(100dvh - var(--app-header-height, 64px) - 130px)`,overflowY:`auto`,overflowWrap:`anywhere`,zIndex:`var(--gaesup-z-panel, 90)`,background:`var(--gaesup-ui-surface, rgba(18,20,28,0.62))`,color:`var(--gaesup-ui-text, #f3f4f8)`,borderRadius:`var(--gaesup-ui-radius, 14px)`,border:`1px solid var(--gaesup-ui-border, rgba(255,255,255,0.12))`,boxShadow:`var(--gaesup-ui-shadow, 0 12px 28px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.06))`,backdropFilter:`var(--gaesup-ui-blur, blur(20px) saturate(140%))`,WebkitBackdropFilter:`var(--gaesup-ui-blur, blur(20px) saturate(140%))`,fontFamily:`var(--gaesup-ui-font, 'Pretendard', system-ui, sans-serif)`,fontSize:14,padding:14},children:[i.speaker&&(0,X.jsx)(`div`,{style:{display:`inline-block`,padding:`3px 8px`,background:`var(--gaesup-ui-accent, #ffd84a)`,color:`var(--gaesup-ui-accent-text, #1a1a1a)`,borderRadius:6,fontWeight:700,fontSize:12,marginBottom:6},children:i.speaker}),(0,X.jsx)(`div`,{style:{lineHeight:1.55,whiteSpace:`pre-wrap`},children:i.text}),u.length===0?(0,X.jsxs)(`button`,{type:`button`,onClick:o,style:{marginTop:10,marginRight:8,padding:`9px 12px`,cursor:`pointer`,background:`var(--gaesup-ui-control, rgba(255,255,255,0.06))`,color:`inherit`,border:`1px solid var(--gaesup-ui-border, rgba(255,255,255,0.12))`,borderRadius:8},children:[`[`,e.toUpperCase(),`] 다음`]}):(0,X.jsx)(`div`,{style:{marginTop:10,display:`flex`,flexDirection:`column`,gap:6},children:u.map((e,t)=>(0,X.jsxs)(`button`,{type:`button`,onClick:()=>d(e),style:{textAlign:`left`,padding:`9px 12px`,background:`var(--gaesup-ui-control, rgba(255,255,255,0.06))`,color:`var(--gaesup-ui-text, #f3f4f8)`,border:`1px solid var(--gaesup-ui-border, rgba(255,255,255,0.12))`,borderRadius:8,cursor:`pointer`,fontFamily:`var(--gaesup-ui-font, 'Pretendard', system-ui, sans-serif)`,fontSize:13,fontWeight:500},children:[(0,X.jsxs)(`span`,{style:{display:`inline-block`,width:18,color:`var(--gaesup-ui-accent-strong, #ffd84a)`,marginRight:6},children:[t+1,`.`]}),e.text]},t))}),(0,X.jsx)(`button`,{type:`button`,onClick:c,style:{marginTop:10,marginRight:8,padding:`9px 12px`,cursor:`pointer`,background:`var(--gaesup-ui-control, rgba(255,255,255,0.06))`,color:`inherit`,border:`1px solid var(--gaesup-ui-border, rgba(255,255,255,0.12))`,borderRadius:8},children:`대화 닫기`})]}):null}var wr=`gaesup.weather`,Tr=`weather`,Er=`weather.store`;function Dr(e=v.r){return e.getState().serialize()}function Or(e,t=v.r){t.getState().hydrate(e)}function kr(e={}){return a.t({id:e.id??wr,name:`GaeSup Weather`,saveExtensionId:e.saveExtensionId??Tr,storeServiceId:e.storeServiceId??Er,store:v.r,readyEvent:`weather:ready`,capabilities:[`weather`],resolveStore:e=>e.services.get(v.t)??v.r,serialize:Dr,hydrate:Or,prepareHydrate:(e,t)=>t.getState().prepareHydrate(e)})}var Ar=kr(),jr={sunny:{sym:`O`,color:`#ffd84a`,label:`맑음`},cloudy:{sym:`c`,color:`#aab2bc`,label:`흐림`},rain:{sym:`r`,color:`#4aa8ff`,label:`비`},snow:{sym:`*`,color:`#dff0ff`,label:`눈`},storm:{sym:`!`,color:`#7f7fff`,label:`폭풍`}};function Mr({position:e=`top-left`}){let t=v.r(e=>e.current);if(!t)return null;let n=jr[t.kind],r=e===`top-right`?{top:50,right:12}:{top:50,left:12};return(0,X.jsxs)(`div`,{style:{position:`fixed`,zIndex:90,padding:`4px 10px`,background:`rgba(20,20,28,0.85)`,color:`#fff`,fontFamily:`'Pretendard', system-ui, sans-serif`,fontSize:12,borderRadius:999,display:`flex`,alignItems:`center`,gap:8,boxShadow:`inset 0 0 0 1px ${n.color}55`,pointerEvents:`none`,userSelect:`none`,...r},children:[(0,X.jsx)(`span`,{style:{width:18,height:18,borderRadius:`50%`,background:n.color,color:`#1a1a1a`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,fontWeight:800,fontSize:11},children:n.sym}),(0,X.jsx)(`span`,{children:n.label})]})}function Nr(e){let t=new WeakMap;return(n,i,a)=>{let o=t.get(n);o||(o=new WeakMap,t.set(n,o));let s=o.get(i),c=!s;s||(s={owners:new Set,snapshot:[]},o.set(i,s));let l=s,u={...a};l.owners.add(u),l.snapshot=[...l.owners];let d=()=>{if(!l.owners.delete(u)||(l.snapshot=[...l.owners],l.owners.size))return;o.get(i)===l&&o.delete(i);let e=l.stop;delete l.stop,e?.()};if(c)try{let t=!1,a=[],o=e(n,i,{active:()=>l.snapshot.some(e=>e.active()),emit:e=>{if(a.push({value:e,owners:l.snapshot}),!t){t=!0;try{for(let e=0;e<a.length;e++){let t=a[e];for(let e of t.owners)if(l.owners.has(e)&&e.active())try{e.notify?.(t.value)}catch(e){r.t.error(`World observer callback failed`,e instanceof Error?e:String(e))}}}finally{a.length=0,t=!1}}}});l.owners.size?l.stop=o:o()}catch(e){throw o.get(i)===l&&o.delete(i),l.owners.clear(),l.snapshot=[],e}return d}}var Pr=Nr((e,t,{active:n})=>{let r=()=>{if(!n())return;let r=e.getState(),i=j.s(r.totalMinutes),a=t.getState().current;(!a||a.day!==i)&&t.getState().rollForDay(i,r.time.season)},i=e.subscribe((e,t)=>{e.hydrationRevision===t.hydrationRevision&&j.s(e.totalMinutes)!==j.s(t.totalMinutes)&&r()});try{return r(),i}catch(e){throw i(),e}});function Fr(e=!0){let t=s.n(),n=s.r(),r=v.i(),i=j.i();(0,J.useEffect)(()=>{if(!(!e||t&&!t.isActive()))return Pr(i,r,{active:()=>!t||t.isActive()&&!t.save.isRestoring()})},[e,i,r,t,n])}var Ir=`gaesup.audio`,Lr=`audio`,Rr=`audio.store`;function zr(e=u.G){return e.getState().serialize()}function Br(e,t=u.G){t.getState().hydrate(e)}function Vr(e={}){return a.t({id:e.id??Ir,name:`GaeSup Audio`,saveExtensionId:e.saveExtensionId??Lr,storeServiceId:e.storeServiceId??Rr,store:u.G,readyEvent:`audio:ready`,capabilities:[`audio`],resolveStore:e=>e.services.get(u.U)??u.G,serialize:zr,hydrate:Br,prepareHydrate:(e,t)=>t.getState().prepareHydrate(e)})}var Hr=Vr(),Ur=[0,2,4,5,7,9,11],Wr=[0,2,3,5,7,8,10];function Gr(e){return e===`rain`||e===`storm`||e===`snow`?Wr:Ur}function Kr(e){return e<6?`night`:e<10?`dawn`:e<18?`day`:e<22?`dusk`:`night`}function qr(e,t){let n=Kr(e),r=Gr(t),i=n===`night`?174.6:n===`dawn`?220:n===`dusk`?196:261.6,a=n===`day`?700:950,o=[r[0],r[2],r[4],r[2],r[0],r[3],r[1],r[4]];return{id:`bgm.${n}.${t??`unknown`}`,baseFreq:i,intervalMs:a,pattern:o,volume:t===`storm`?.6:1}}var Jr=new WeakMap;function Yr(e,t,n,r){let i=Jr.get(e);i||(i=new WeakMap,Jr.set(e,i));let a=i.get(t);a||(a=new WeakMap,i.set(t,a));let o=a.get(n);if(!o){let i,s=!0,c=()=>{if(!s||r?.isRestoring())return;let a=t.getState(),o=n.getState().current,c=qr(a.time.hour,o?.kind);e.getState().currentBgmId!==c.id&&(i=e.getState().bgmRevision+1,e.getState().playBgm(c))},l=t.subscribe((e,t)=>{e.time.hour!==t.time.hour&&c()}),u=n.subscribe((e,t)=>{e.current?.kind!==t.current?.kind&&c()}),d=r?.registerRestoreGuard(()=>c);c(),o={owners:0,dispose:()=>{s=!1,l(),u(),d?.(),e.getState().bgmRevision===i&&e.getState().stopBgm()}},a.set(n,o)}let s=o;s.owners++;let c=!1;return()=>{c||(c=!0,--s.owners===0&&(a.delete(n),s.dispose()))}}function Xr(e=!0){let t=s.n(),n=s.r(),r=u.K(),i=v.i(),a=j.i();(0,J.useEffect)(()=>{if(!(!e||t&&!t.isActive()))return Yr(r,a,i,t?.save)},[e,a,i,r,t,n])}function Zr({position:e=`bottom-right`,offset:t}){let n=u.G(e=>e.masterMuted),r=u.G(e=>e.bgmMuted),i=u.G(e=>e.sfxMuted),a=u.G(e=>e.toggleMaster),o=u.G(e=>e.toggleBgm),s=u.G(e=>e.toggleSfx),c={...e===`top-right`?{top:50,right:200}:e===`bottom-left`?{bottom:12,left:240}:e===`top-left`?{top:220,left:12}:{bottom:12,right:110},...t??{}},l=(e,t,n)=>(0,X.jsxs)(`button`,{onClick:n,"aria-pressed":!t,style:{padding:`4px 8px`,background:t?`rgba(80,30,30,0.85)`:`rgba(20,20,28,0.85)`,color:t?`#ff8a8a`:`#fff`,fontFamily:`'Pretendard', system-ui, sans-serif`,fontSize:11,border:`1px solid rgba(255,255,255,0.18)`,borderRadius:6,cursor:`pointer`},children:[e,t?` 꺼짐`:``]});return(0,X.jsxs)(`div`,{style:{position:`fixed`,zIndex:95,display:`flex`,gap:4,pointerEvents:`auto`,...c},children:[l(`M`,n,a),l(`Bgm`,r,o),l(`Sfx`,i,s)]})}var Qr={grass:{freq:320,duration:.07,type:`triangle`,volume:.18},sand:{freq:220,duration:.1,type:`sine`,volume:.2},snow:{freq:380,duration:.1,type:`triangle`,volume:.22},wood:{freq:540,duration:.06,type:`square`,volume:.14},stone:{freq:760,duration:.05,type:`square`,volume:.16},water:{freq:180,duration:.13,type:`sine`,volume:.24}},$r=new WeakMap;function ei(e,t,n){let{tileGroups:r,meshes:i}=n.getState(),a=$r.get(r);a||$r.set(r,a=I.Z({tileGroups:r.values()}));let o=a.at(e,t);if(!o)return`grass`;let{tile:s}=o;switch(s.objectType){case`water`:return`water`;case`sand`:return`sand`;case`snowfield`:return`snow`;case`grass`:return`grass`;case`dirt`:return`sand`}return i.get(o.materialId)?.grass?`grass`:s.shape===`stairs`||s.shape===`ramp`?`wood`:`stone`}function ti({strideMeters:e=.65,maxStepsPerSecond:n=6,volume:r=1,resolveSurface:i,enabled:a=!0}={}){let o=u.K(),s=f.Wt(),c=L.l({updateInterval:32,reactive:!1}),{position:l}=c,d=(0,J.useRef)({x:l.x,z:l.z}),p=(0,J.useRef)(0),m=(0,J.useRef)(0);return(0,J.useEffect)(()=>{d.current.x=l.x,d.current.z=l.z},[]),t.t(`lateUpdate`,()=>{let t=performance.now(),a=l.x-d.current.x,u=l.z-d.current.z;if(d.current.x=l.x,d.current.z=l.z,!c.isGrounded||!c.isMoving){p.current=0;return}let f=Math.hypot(a,u);if(f<=0||(p.current+=f,p.current<e)||t-m.current<1e3/n)return;p.current=0,m.current=t;let h=i?i(l.x,l.z):ei(l.x,l.z,s),g=Qr[h],_=Math.min(1.4,.7+c.speed*.06);o.getState().playSfx({id:`footstep-${h}`,type:g.type??`sine`,freq:g.freq??320,duration:g.duration??.08,volume:(g.volume??.2)*r*_})},{label:`audio:footsteps`,active:a}),null}var ni=`gaesup.character`,ri=`character`,ii=`character.store`;function ai(e=b.S){return e.getState().serialize()}function oi(e,t=b.S){t.getState().hydrate(e)}function si(e={}){return a.t({id:e.id??ni,name:`GaeSup Character`,saveExtensionId:e.saveExtensionId??ri,storeServiceId:e.storeServiceId??ii,store:b.S,resolveStore:e=>e.services.get(b.v)??b.S,readyEvent:`character:ready`,capabilities:[`character`],serialize:ai,hydrate:oi,prepareHydrate:(e,t)=>t.getState().prepareHydrate(e)})}var ci=si(),li={root:`character-menu-root`,backdrop:`character-menu-backdrop`,panel:`character-menu-panel`,header:`character-menu-header`,title:`character-menu-title`,actions:`character-menu-actions`,iconButton:`character-menu-button character-menu-button--icon`,primaryButton:`character-menu-button character-menu-button--primary`,ghostButton:`character-menu-button character-menu-button--ghost`,body:`character-menu-body`,previewSection:`character-menu-preview`,previewFrame:`character-menu-preview-frame`,previewGlyph:`character-menu-preview-glyph`,previewControls:`character-menu-preview-controls`,previewControlGroup:`character-menu-preview-control-group`,controls:`character-menu-controls`,section:`character-menu-section`,sectionStack:`character-menu-section-stack`,sectionTitle:`character-menu-section-title`,input:`character-menu-input`,optionRow:`character-menu-option-row`,chip:`character-menu-chip`,activeChip:`character-menu-chip character-menu-chip--active`,colorGrid:`character-menu-color-grid`,colorRow:`character-menu-color-row`,colorLabel:`character-menu-color-label`,colorInput:`character-menu-color-input`,filterRow:`character-menu-filter-row`,filterLabel:`character-menu-filter-label`,checkbox:`character-menu-checkbox`,range:`character-menu-range`,slotList:`character-menu-slot-list`,slot:`character-menu-slot`,slotHeader:`character-menu-slot-header`,slotTitle:`character-menu-slot-title`,assetGrid:`character-menu-asset-grid`,assetButton:`character-menu-asset-button`,activeAssetButton:`character-menu-asset-button character-menu-asset-button--active`,assetImage:`character-menu-asset-image`,assetInitial:`character-menu-asset-initial`,assetName:`character-menu-asset-name`,emptyState:`character-menu-empty-state`,closeUpOverlay:`character-menu-close-up-overlay`,footer:`character-menu-footer`},ui=[`preview`,`identity`,`colors`,`outfits`],di=[`hat`,`top`,`bottom`,`shoes`,`face`,`glasses`,`weapon`,`accessory`],fi={zoomControl:!0,closeUpMode:!0,previewRotate:!0,colorPicker:!0,assetBrowser:!0,savePresets:!1,nameEditor:!0,hairPicker:!0,facePicker:!0,tagFilter:!0,ownedOnly:!0,clearSlot:!0,resetButton:!0,closeButton:!0},pi=`rgba(0, 0, 0, 0.16)`,mi={title:`캐릭터 메뉴`,close:`닫기`,reset:`초기화`,preview:`미리보기`,zoom:`확대`,rotate:`회전`,rotateLeft:`왼쪽 회전`,rotateRight:`오른쪽 회전`,closeUp:`클로즈업`,exitCloseUp:`클로즈업 해제`,name:`이름`,hair:`헤어`,face:`표정`,colors:`색상`,outfits:`의상`,tagFilter:`태그 필터`,ownedOnly:`보유만`,clearSlot:`비우기`,emptyAssets:`에셋 없음`},Z={colors:{body:`피부`,hair:`머리카락`,hat:`모자`,top:`상의`,bottom:`하의`,shoes:`신발`},hair:{short:`짧은 머리`,long:`긴 머리`,cap:`캡`,bun:`올림머리`,spiky:`뾰족 머리`},face:{default:`기본`,smile:`미소`,wink:`윙크`,sleepy:`졸림`,surprised:`놀람`},slots:{hat:`모자`,top:`상의`,bottom:`하의`,shoes:`신발`,face:`표정`,glasses:`안경`,weapon:`무기`,accessory:`액세서리`}},hi=[{value:`body`,label:Z.colors.body},{value:`hair`,label:Z.colors.hair},{value:`hat`,label:Z.colors.hat},{value:`top`,label:Z.colors.top},{value:`bottom`,label:Z.colors.bottom},{value:`shoes`,label:Z.colors.shoes}],gi=[{value:`short`,label:Z.hair.short},{value:`long`,label:Z.hair.long},{value:`cap`,label:Z.hair.cap},{value:`bun`,label:Z.hair.bun},{value:`spiky`,label:Z.hair.spiky}],_i=[{value:`default`,label:Z.face.default},{value:`smile`,label:Z.face.smile},{value:`wink`,label:Z.face.wink},{value:`sleepy`,label:Z.face.sleepy},{value:`surprised`,label:Z.face.surprised}],vi={bgColor:`rgba(18, 20, 28, 0.94)`,borderColor:`rgba(255, 255, 255, 0.16)`,textColor:`#f3f4f8`,accentColor:`#7adf90`,mutedTextColor:`rgba(243, 244, 248, 0.64)`,surfaceColor:`rgba(255, 255, 255, 0.07)`,blurEffect:!0},yi={default:{id:`default`,name:`기본`,layout:`modal`,position:{},theme:vi,features:{...fi},sections:ui,slots:di,compact:!1},compact:{id:`compact`,name:`간단`,layout:`sidebar-right`,position:{top:16,right:16,width:360,maxHeight:`calc(100vh - 32px)`},theme:{...vi,bgColor:`rgba(14, 17, 24, 0.96)`},features:{...fi,previewRotate:!1,colorPicker:!1,savePresets:!1,tagFilter:!1},sections:[`preview`,`identity`,`outfits`],slots:[`hat`,`top`,`bottom`,`shoes`,`weapon`],compact:!0},minimal:{id:`minimal`,name:`최소`,layout:`floating`,position:{right:16,bottom:16,width:320},theme:{...vi,bgColor:`rgba(24, 27, 36, 0.9)`,accentColor:`#ffd84a`,blurEffect:!1},features:{...fi,closeUpMode:!1,assetBrowser:!1,tagFilter:!1,ownedOnly:!1,clearSlot:!1},sections:[`preview`,`identity`,`colors`],slots:[`hat`,`top`],compact:!0},creative:{id:`creative`,name:`크리에이티브`,layout:`modal`,position:{width:`min(1040px, calc(100vw - 32px))`},theme:{...vi,bgColor:`rgba(16, 20, 32, 0.95)`,accentColor:`#72d6ff`,surfaceColor:`rgba(114, 214, 255, 0.08)`},features:{...fi,savePresets:!0},sections:ui,slots:di,compact:!1}};function bi({context:e}){return(0,X.jsxs)(`div`,{className:e.classNameFor(`header`),style:e.styleFor(`header`,{borderColor:e.preset.theme.borderColor}),children:[(0,X.jsx)(`h2`,{className:e.classNameFor(`title`),children:e.labels.title}),(0,X.jsxs)(`div`,{className:e.classNameFor(`actions`),children:[e.features.resetButton&&(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`ghostButton`),style:e.styleFor(`ghostButton`,e.getButtonStyle()),onClick:e.actions.reset,children:e.labels.reset}),e.features.closeButton&&(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`primaryButton`),style:e.styleFor(`primaryButton`,e.getButtonStyle(!0)),onClick:e.actions.close,children:e.labels.close})]})]})}function xi({context:e}){return(0,X.jsxs)(`section`,{className:e.classNameFor(`previewSection`),children:[(0,X.jsx)(`p`,{className:e.classNameFor(`sectionTitle`),children:e.labels.preview}),(0,X.jsx)(`div`,{className:e.classNameFor(`previewFrame`),style:e.styleFor(`previewFrame`,{borderColor:e.preset.theme.borderColor}),children:(0,X.jsx)(`div`,{className:e.classNameFor(`previewGlyph`),style:e.styleFor(`previewGlyph`,e.getPreviewGlyphStyle())})}),(e.features.zoomControl||e.features.previewRotate||e.features.closeUpMode)&&(0,X.jsxs)(`div`,{className:e.classNameFor(`previewControls`),children:[e.features.zoomControl&&(0,X.jsxs)(`label`,{className:e.classNameFor(`previewControlGroup`),children:[(0,X.jsx)(`span`,{style:{color:e.preset.theme.mutedTextColor},children:e.labels.zoom}),(0,X.jsx)(`input`,{type:`range`,min:`0.6`,max:`2.4`,step:`0.1`,value:e.zoom,onChange:t=>e.actions.setZoom(Number(t.target.value)),className:e.classNameFor(`range`),"aria-label":e.labels.zoom})]}),e.features.previewRotate&&(0,X.jsxs)(`div`,{className:e.classNameFor(`previewControlGroup`),children:[(0,X.jsxs)(`button`,{type:`button`,className:e.classNameFor(`iconButton`),style:e.styleFor(`iconButton`,e.getButtonStyle()),onClick:()=>e.actions.rotatePreview(-30),"aria-label":e.labels.rotateLeft,children:[`-`,30]}),(0,X.jsxs)(`button`,{type:`button`,className:e.classNameFor(`iconButton`),style:e.styleFor(`iconButton`,e.getButtonStyle()),onClick:()=>e.actions.rotatePreview(30),"aria-label":e.labels.rotateRight,children:[`+`,30]})]}),e.features.closeUpMode&&(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`ghostButton`),style:e.styleFor(`ghostButton`,e.getButtonStyle(e.isCloseUp)),onClick:e.actions.toggleCloseUp,children:e.labels.closeUp})]})]})}function Si({context:e}){return(0,X.jsxs)(`section`,{className:e.classNameFor(`section`),style:e.styleFor(`section`,e.getSectionStyle()),children:[(0,X.jsx)(`p`,{className:e.classNameFor(`sectionTitle`),children:e.labels.colors}),(0,X.jsx)(`div`,{className:e.classNameFor(`colorGrid`),children:e.colorOptions.map(t=>(0,X.jsxs)(`label`,{className:e.classNameFor(`colorRow`),children:[(0,X.jsx)(`span`,{className:e.classNameFor(`colorLabel`),children:t.label}),(0,X.jsx)(`input`,{type:`color`,value:e.appearance.colors[t.value],onChange:n=>e.actions.setColor(t.value,n.target.value),className:e.classNameFor(`colorInput`),style:e.styleFor(`colorInput`,{borderColor:e.preset.theme.accentColor})})]},t.value))})]})}function Ci({context:e}){return(0,X.jsxs)(`section`,{className:e.classNameFor(`section`),style:e.styleFor(`section`,e.getSectionStyle()),children:[e.features.nameEditor&&(0,X.jsxs)(`label`,{className:e.classNameFor(`sectionStack`),children:[(0,X.jsx)(`span`,{className:e.classNameFor(`sectionTitle`),children:e.labels.name}),(0,X.jsx)(`input`,{value:e.appearance.name,onChange:t=>e.actions.setName(t.target.value),maxLength:16,className:e.classNameFor(`input`),style:e.styleFor(`input`,{borderColor:e.preset.theme.borderColor,color:e.preset.theme.textColor})})]}),e.features.hairPicker&&(0,X.jsxs)(`div`,{className:e.classNameFor(`sectionStack`),children:[(0,X.jsx)(`p`,{className:e.classNameFor(`sectionTitle`),children:e.labels.hair}),(0,X.jsx)(`div`,{className:e.classNameFor(`optionRow`),children:e.hairOptions.map(t=>{let n=e.appearance.hair===t.value;return(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(n?`activeChip`:`chip`),style:e.styleFor(n?`activeChip`:`chip`,e.getButtonStyle(n)),onClick:()=>e.actions.setHair(t.value),children:t.label},t.value)})})]}),e.features.facePicker&&(0,X.jsxs)(`div`,{className:e.classNameFor(`sectionStack`),children:[(0,X.jsx)(`p`,{className:e.classNameFor(`sectionTitle`),children:e.labels.face}),(0,X.jsx)(`div`,{className:e.classNameFor(`optionRow`),children:e.faceOptions.map(t=>{let n=e.appearance.face===t.value;return(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(n?`activeChip`:`chip`),style:e.styleFor(n?`activeChip`:`chip`,e.getButtonStyle(n)),onClick:()=>e.actions.setFace(t.value),children:t.label},t.value)})})]})]})}function wi(e,t,n,r){return(0,X.jsxs)(`button`,{type:`button`,title:n.name,className:e.classNameFor(r?`activeAssetButton`:`assetButton`),style:e.styleFor(r?`activeAssetButton`:`assetButton`,e.getButtonStyle(r)),onClick:()=>e.actions.equipOutfit(t,n.id),children:[n.thumbnailUrl?(0,X.jsx)(`img`,{src:n.thumbnailUrl,alt:n.name,className:e.classNameFor(`assetImage`)}):(0,X.jsx)(`span`,{className:e.classNameFor(`assetInitial`),children:e.getAssetInitial(n)}),(0,X.jsx)(`span`,{className:e.classNameFor(`assetName`),children:n.name})]})}function Ti(e){return(0,X.jsx)(`div`,{className:e.classNameFor(`emptyState`),style:e.styleFor(`emptyState`,{borderColor:e.preset.theme.borderColor}),children:e.labels.emptyAssets})}function Ei(e,t,n,r){return t?.outfitSlot?t.outfitSlot(e,n,r):(0,X.jsxs)(`div`,{className:e.classNameFor(`slot`),style:e.styleFor(`slot`,{background:pi,borderColor:e.preset.theme.borderColor}),children:[(0,X.jsxs)(`div`,{className:e.classNameFor(`slotHeader`),children:[(0,X.jsx)(`span`,{className:e.classNameFor(`slotTitle`),children:e.labelMaps.slots[n]}),e.features.clearSlot&&e.outfits[n]&&(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`iconButton`),style:e.styleFor(`iconButton`,e.getButtonStyle()),onClick:()=>e.actions.equipOutfit(n,null),children:e.labels.clearSlot})]}),r.length===0?t?.emptyAssets?.(e,n)??Ti(e):(0,X.jsx)(`div`,{className:e.classNameFor(`assetGrid`),children:r.map(r=>{let i=e.outfits[n]===r.id;return(0,X.jsx)(J.Fragment,{children:t?.assetButton?.(e,n,r,i)??wi(e,n,r,i)},r.id)})})]})}function Di({context:e,renderers:t}){return(0,X.jsxs)(`section`,{className:e.classNameFor(`section`),style:e.styleFor(`section`,e.getSectionStyle()),children:[(0,X.jsx)(`p`,{className:e.classNameFor(`sectionTitle`),children:e.labels.outfits}),(e.features.tagFilter||e.features.ownedOnly)&&(0,X.jsxs)(`div`,{className:e.classNameFor(`filterRow`),children:[e.features.tagFilter&&(0,X.jsx)(`input`,{value:e.tagFilter,onChange:t=>e.actions.setTagFilter(t.target.value),placeholder:e.labels.tagFilter,className:e.classNameFor(`input`),style:e.styleFor(`input`,{borderColor:e.preset.theme.borderColor,color:e.preset.theme.textColor})}),e.features.ownedOnly&&(0,X.jsxs)(`label`,{className:e.classNameFor(`filterLabel`),children:[(0,X.jsx)(`input`,{type:`checkbox`,checked:e.ownedOnly,onChange:t=>e.actions.setOwnedOnly(t.target.checked),className:e.classNameFor(`checkbox`)}),e.labels.ownedOnly]})]}),(0,X.jsx)(`div`,{className:e.classNameFor(`slotList`),children:e.selectedSlots.map(n=>(0,X.jsx)(J.Fragment,{children:Ei(e,t,n,e.assetsBySlot[n]??[])},n))})]})}var Oi=`gaesup:character-menu-presets`;function ki(){if(typeof window>`u`)return null;try{return window.localStorage??null}catch{return null}}function Ai(){try{let e=ki();if(!e)return{};let t=e.getItem(Oi);return t?JSON.parse(t):{}}catch{return{}}}function ji(e){return{...yi,...Ai(),...e}}function Mi(...e){return e.filter(e=>!!e).join(` `)}function Ni(e,t){return{...fi,...e.features,...t}}function Pi(e,t,n,r){return{...r,...t.styles?.[e],...n?.[e]}}function Fi(e,t){return typeof e==`object`&&e?e:ji(t)[e??`default`]??yi.default}function Ii(e){return{colors:{...Z.colors,...e?.colors},hair:{...Z.hair,...e?.hair},face:{...Z.face,...e?.face},slots:{...Z.slots,...e?.slots}}}function Li(e,t,n){return e.filter(e=>t?.includes(e)?!1:e===`colors`?n.colorPicker:e===`outfits`?n.assetBrowser:e!==`identity`||n.nameEditor||n.hairPicker||n.facePicker)}function Ri(e,t,n,r){return Li(e??t.sections??ui,n,r)}function zi(e,t,n){return(e??t.slots??di).filter(e=>!n?.includes(e))}function Bi(e,t){return t===`weapon`?e.kind===`weapon`||e.slot===`weapon`:e.slot===t&&(e.kind===`characterPart`||e.kind===`weapon`)}function Vi(e){let t=e.metadata?.owned;return t===void 0||t===!0}function Hi(e){return e.name.trim().charAt(0).toUpperCase()||`?`}var Ui=[0,1.7,3],Wi={focusDistance:3,focusLerpSpeed:8,fov:50},Gi={top:`50%`,left:`50%`,width:`min(920px, calc(100vw - 32px))`,maxHeight:`calc(100vh - 32px)`,transform:`translate(-50%, -50%)`},Ki={top:16,bottom:16,left:16,width:360,maxWidth:`calc(100vw - 32px)`},qi={top:16,bottom:16,right:16,width:360,maxWidth:`calc(100vw - 32px)`},Ji={right:16,bottom:16,width:340,maxWidth:`calc(100vw - 32px)`,maxHeight:`calc(100vh - 32px)`},Yi=`0 18px 42px rgba(0, 0, 0, 0.38), inset 0 1px 0 rgba(255, 255, 255, 0.06)`,Xi=`rgba(255, 255, 255, 0.07)`,Zi=`rgba(255, 255, 255, 0.07)`,Qi=`26`,$i=`1fr`,ea=`minmax(240px, 0.85fr) minmax(320px, 1.15fr)`,ta=74,na=118,ra=112,ia=168;function aa(e){return e.layout===`sidebar-left`?Ki:e.layout===`sidebar-right`?qi:e.layout===`floating`?Ji:Gi}var oa=new Set;function sa({toggleKey:e,open:t,onClose:n,onOpenChange:r,preset:i,customPresets:a,sections:o,hiddenSections:s,slots:c,hiddenSlots:u,features:d,className:p,classNames:m,styles:h,labels:g,labelMaps:_,colorOptions:v,hairOptions:y,faceOptions:x,ownedOnlyDefault:S=!1,tagFilterDefault:C=``,assetFilter:w,assetSort:T,isAssetOwned:E=Vi,closeUpController:D}={}){let O=f.mr(),k=typeof t==`boolean`,[A,j]=(0,J.useState)(!1),M=k?!!t:A,[N,P]=(0,J.useState)(`normal`),[F,ee]=(0,J.useState)(1),[I,L]=(0,J.useState)(0),[R,z]=(0,J.useState)(C),[B,V]=(0,J.useState)(S),H=(0,J.useMemo)(()=>Fi(i,a),[a,i]),U=(0,J.useMemo)(()=>Ni(H,d),[d,H]),te=(0,J.useMemo)(()=>({...mi,...g}),[g]),W=(0,J.useMemo)(()=>Ii(_),[_]),G=(0,J.useMemo)(()=>v??hi.map(e=>({...e,label:W.colors[e.value]})),[v,W]),ne=(0,J.useMemo)(()=>y??gi.map(e=>({...e,label:W.hair[e.value]})),[y,W]),re=(0,J.useMemo)(()=>x??_i.map(e=>({...e,label:W.face[e.value]})),[x,W]),K=(0,J.useMemo)(()=>Ri(o,H,s,U),[U,s,H.sections,o]),q=(0,J.useMemo)(()=>zi(c,H,u),[u,H,c]),ie=(0,J.useMemo)(()=>K.filter(e=>e!==`preview`),[K]),Y=!!H.compact,X=Y||K.length<=2?$i:ea,ae=(0,J.useCallback)((e,t)=>Mi(li[e],H.classNames?.[e],m?.[e],t),[m,H.classNames]),oe=(0,J.useCallback)((e,t)=>Pi(e,H,h,t),[H,h]),se=b.S(e=>e.activeCharacterId),ce=b.S(e=>e.appearance),le=b.S(e=>e.outfits),ue=b.S(e=>e.setName),de=b.S(e=>e.setColor),fe=b.S(e=>e.setHair),pe=b.S(e=>e.setFace),me=b.S(e=>e.equipOutfit),he=b.S(e=>e.resetAppearance),ge=l.i(e=>e.ids),_e=l.i(e=>e.records),ve=(0,J.useCallback)(()=>{if(D){D.restore();return}b.A()},[D]),ye=(0,J.useCallback)(()=>{if(D){D.request();return}b.k(Ui,Wi)},[D]),be=(0,J.useCallback)(()=>{N===`closeUp`&&(ve(),P(`normal`)),k||j(!1),n?.(),r?.(!1)},[k,n,r,N,ve]),xe=(0,J.useCallback)(()=>{oa.forEach(e=>e()),k||j(!0),r?.(!0)},[k,r]),Se=(0,J.useCallback)(()=>{M?be():xe()},[be,M,xe]),Ce=(0,J.useCallback)(()=>{if(N===`closeUp`){ve(),P(`normal`);return}ye(),P(`closeUp`)},[N,ye,ve]),we=(0,J.useCallback)(e=>ee(e),[]),Te=(0,J.useCallback)(e=>L(e),[]),Ee=(0,J.useCallback)(e=>{L(t=>t+e)},[]),De=(0,J.useCallback)(()=>{he(se)},[se,he]),Oe=(0,J.useMemo)(()=>{let e=R.trim().toLowerCase(),t={};for(let n of q){let r=le[n],i=ge.map(e=>_e[e]).filter(e=>!!e).filter(e=>Bi(e,n)).filter(e=>!B||E(e)).filter(t=>e?t.tags?.some(t=>t.toLowerCase().includes(e))??!1:!0).filter(e=>!w||w({asset:e,slot:n,tagFilter:R,ownedOnly:B,selectedAssetId:r}));t[n]=T?[...i].sort((e,t)=>T(e,t,n)):i}return t},[w,ge,_e,T,E,le,B,q,R]);(0,J.useEffect)(()=>{if(M)return oa.add(be),()=>{oa.delete(be)}},[be,M]),(0,J.useEffect)(()=>{if(!e||k)return;let t=O.listen(`keydown`,t=>{let n=t.target?.tagName?.toLowerCase();if(n===`input`||n===`textarea`||n===`select`)return;let r=e.toLowerCase(),i=`Key${e.toUpperCase()}`;(t.code===i||t.key.toLowerCase()===r)&&Se()});return()=>t()},[O,k,e,Se]),(0,J.useEffect)(()=>{M||N!==`closeUp`||(ve(),P(`normal`))},[M,N,ve]);let ke=(0,J.useRef)(N),Ae=(0,J.useRef)(ve);(0,J.useEffect)(()=>{ke.current=N},[N]),(0,J.useEffect)(()=>{Ae.current=ve},[ve]),(0,J.useEffect)(()=>()=>{ke.current===`closeUp`&&Ae.current()},[]);let je=(0,J.useCallback)((e=!1)=>({background:e?`${H.theme.accentColor}${Qi}`:Xi,borderColor:e?H.theme.accentColor:H.theme.borderColor,color:e?H.theme.accentColor:H.theme.textColor}),[H.theme]),Me=(0,J.useCallback)(()=>({background:H.theme.bgColor,borderColor:H.theme.borderColor,color:H.theme.textColor,boxShadow:Yi,...aa(H),...H.position}),[H]),Ne=(0,J.useCallback)(()=>({background:H.theme.surfaceColor??Zi,borderColor:H.theme.borderColor}),[H.theme]),Pe=(0,J.useCallback)(()=>({width:Y?ta:ra,height:Y?na:ia,borderColor:H.theme.accentColor,boxShadow:`0 20px 40px ${H.theme.accentColor}22`,background:`linear-gradient(160deg, ${ce.colors.hair}, ${ce.colors.top} 48%, ${ce.colors.bottom})`,transform:`scale(${F}) rotateY(${I}deg)`}),[ce.colors.bottom,ce.colors.hair,ce.colors.top,Y,H.theme.accentColor,I,F]),Fe=(0,J.useMemo)(()=>({open:xe,close:be,toggle:Se,reset:De,setName:ue,setColor:de,setHair:fe,setFace:pe,equipOutfit:me,setZoom:we,setRotation:Te,rotatePreview:Ee,setTagFilter:z,setOwnedOnly:V,toggleCloseUp:Ce}),[be,me,xe,De,Ee,de,pe,fe,ue,Te,we,Ce,Se]);return(0,J.useMemo)(()=>({isOpen:M,controlled:k,isCloseUp:N===`closeUp`,previewMode:N,zoom:F,rotation:I,tagFilter:R,ownedOnly:B,compact:Y,bodyColumns:X,preset:H,features:U,labels:te,labelMaps:W,selectedSections:K,rightSections:ie,selectedSlots:q,colorOptions:G,hairOptions:ne,faceOptions:re,appearance:ce,outfits:le,assetsBySlot:Oe,rootClassName:p,classNameFor:ae,styleFor:oe,getButtonStyle:je,getPanelStyle:Me,getSectionStyle:Ne,getPreviewGlyphStyle:Pe,getAssetInitial:Hi,actions:Fe}),[Fe,ce,Oe,X,p,ae,G,Y,k,re,U,je,Me,Pe,Ne,ne,M,W,te,le,B,H,N,ie,I,K,q,oe,R,F])}function ca(e,t,n){return n===`identity`?t?.identity?.(e)??(0,X.jsx)(Ci,{context:e}):n===`colors`?t?.colors?.(e)??(0,X.jsx)(Si,{context:e}):n===`outfits`?t?.outfits?.(e)??(0,X.jsx)(Di,{context:e,renderers:t}):null}function la(e,t,n){return(0,X.jsxs)(X.Fragment,{children:[t?.header?.(e)??(0,X.jsx)(bi,{context:e}),(0,X.jsxs)(`div`,{className:e.classNameFor(`body`),style:e.styleFor(`body`,{gridTemplateColumns:e.bodyColumns}),children:[e.selectedSections.includes(`preview`)&&(t?.preview?.(e)??(0,X.jsx)(xi,{context:e})),e.rightSections.length>0&&(0,X.jsx)(`div`,{className:e.classNameFor(`sectionStack`),children:e.rightSections.map(n=>(0,X.jsx)(`div`,{children:ca(e,t,n)},n))})]}),n&&(t?.footer?.(e,n)??(0,X.jsx)(`div`,{className:e.classNameFor(`footer`),style:e.styleFor(`footer`,{borderColor:e.preset.theme.borderColor}),children:n}))]})}function ua(e){return(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`backdrop`),style:e.styleFor(`backdrop`,{background:e.isCloseUp?`transparent`:`rgba(0, 0, 0, 0.28)`,backdropFilter:!e.isCloseUp&&e.preset.theme.blurEffect?`blur(4px)`:`none`}),onClick:e.isCloseUp?void 0:e.actions.close,"aria-label":e.labels.close})}function da(e,t,n){let r=la(e,t,n);return t?.panel?.(e,r)??(0,X.jsx)(`div`,{className:e.classNameFor(`panel`),style:e.styleFor(`panel`,e.getPanelStyle()),onClick:e=>e.stopPropagation(),children:r})}function fa(e){return(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`closeUpOverlay`),style:e.styleFor(`closeUpOverlay`),onClick:e.actions.toggleCloseUp,"aria-label":e.labels.exitCloseUp})}function pa(e,t,n){let r=(0,X.jsxs)(X.Fragment,{children:[t?.backdrop?.(e)??ua(e),!e.isCloseUp&&da(e,t,n),e.isCloseUp&&(t?.closeUpOverlay?.(e)??fa(e))]});return t?.root?.(e,r)??(0,X.jsx)(`div`,{className:e.classNameFor(`root`,e.rootClassName),style:e.styleFor(`root`,{pointerEvents:e.isCloseUp?`none`:`auto`}),children:r})}function ma(e={}){let t=sa(e);return t.isOpen?(0,X.jsx)(g.a,{tabIndex:-1,style:{display:`contents`},children:pa(t,e.renderers,e.children)}):null}var ha={title:`캐릭터 만들기`,close:`완료`},ga={savePresets:!1,tagFilter:!0,ownedOnly:!0};function _a({preset:e=`creative`,labels:t,features:n,...r}={}){return(0,X.jsx)(ma,{...r,preset:e,labels:{...ha,...t},features:{...ga,...n}})}var va={hat:{socket:`head`,position:[0,.18,0],scale:[1,1,1]},top:{socket:`chest`,position:[0,-.58,0],scale:[1,1,1]},bottom:{socket:`hips`,position:[0,-.82,0],scale:[1,1,1]},shoes:{socket:`leftFoot`,position:[0,-1.12,.04],scale:[1,1,1]},face:{socket:`face`,position:[0,-.18,.32],scale:[1,1,1]},glasses:{socket:`face`,position:[0,-.08,.32],scale:[1,1,1]},weapon:{socket:`rightHand`,position:[.48,-.55,.02],rotation:[0,0,-.55],scale:[1,1,1]},accessory:{socket:`face`,position:[.36,-.08,.1],rotation:[Math.PI/2,0,0],scale:[1,1,1]}};function ya(e){return Array.isArray(e)&&e.length===3&&e.every(e=>typeof e==`number`&&Number.isFinite(e))}function ba(e){return e===`head`||e===`face`||e===`chest`||e===`hips`||e===`leftFoot`||e===`rightFoot`||e===`leftHand`||e===`rightHand`||e===`back`}function xa(e){if(e.metadata?.deformation!==`rigid`)return;let t=e.metadata.attachment;if(!t||typeof t!=`object`||Array.isArray(t))return;let n=t,r=n.bone;if(typeof r!=`string`||!r.trim())return;for(let e of[`position`,`rotation`,`scale`])if(n[e]!==void 0&&!ya(n[e]))return;let i=n.position,a=n.rotation,o=n.scale;return{bone:r,position:ya(i)?[...i]:[0,0,0],...ya(a)?{rotation:[...a]}:{},...ya(o)?{scale:[...o]}:{}}}function Sa(e){let t=e.metadata;if(!t||typeof t!=`object`)return{};let n=t.attachment;if(!n||typeof n!=`object`)return{};let r=n;return{...ba(r.socket)?{socket:r.socket}:{},...ya(r.position)?{position:r.position}:{},...ya(r.rotation)?{rotation:r.rotation}:{},...ya(r.scale)?{scale:r.scale}:{}}}function Ca(e){return{socket:e.socket,position:[...e.position],...e.rotation?{rotation:[...e.rotation]}:{},...e.scale?{scale:[...e.scale]}:{}}}function wa(e,t){let n=Ca(va[t]),r=Sa(e),i={...n,...r};return{assetId:e.id,assetName:e.name,slot:t,kind:e.kind,socket:i.socket,position:[...i.position],...i.rotation?{rotation:[...i.rotation]}:{},...i.scale?{scale:[...i.scale]}:{}}}function Ta({outfits:e,assets:t}){return Object.entries(e).flatMap(([e,n])=>{if(!n)return[];let r=t[n];return r?[wa(r,e)]:[]})}var Ea=e=>!e?.url||e.metadata?.placeholder===!0?!1:e.kind===`characterPart`||e.kind===`weapon`;function Da(e){return(0,J.useMemo)(()=>{switch(e){case`long`:return{geometry:new q.SphereGeometry(.28,12,10,0,Math.PI*2,0,Math.PI*.65),position:[0,-.05,0],scale:[1.05,1.55,1.05]};case`cap`:return{geometry:new q.CylinderGeometry(.32,.34,.18,16),position:[0,.1,0],scale:[1,1,1]};case`bun`:return{geometry:new q.SphereGeometry(.22,12,10),position:[0,.18,-.05],scale:[1,1,1]};case`spiky`:return{geometry:new q.ConeGeometry(.32,.36,8),position:[0,.15,0],scale:[1,1,1]};default:return{geometry:new q.SphereGeometry(.3,12,10,0,Math.PI*2,0,Math.PI*.5),position:[0,.05,0],scale:[1,1,1]}}},[e])}function Oa({headHeight:e=1.55,enabled:n=!0,opacity:r=1,characterId:i}={}){let a=(0,J.useRef)(null),o=b.S(e=>i?e.characters[i]?.appearance??b.w:e.appearance),s=b.S(e=>i?e.characters[i]?.outfits??b.b:e.outfits),c=l.i(e=>e.records),{position:u,rotation:d}=L.l({reactive:!1}),f=Da(o.hair);if((0,J.useEffect)(()=>{let e=f.geometry;return()=>{e.dispose()}},[f.geometry]),t.t(`lateUpdate`,()=>{let t=a.current;t&&(t.position.set(u.x,u.y+e,u.z),t.rotation.set(0,d.y,0))},{label:`character:outfit-avatar`}),!n)return null;let p=e=>{let t=s[e];return t?!Ea(c[t]):!1},m=!!s.hat,h=p(`hat`),g=p(`top`),_=p(`bottom`),v=p(`shoes`),y=p(`glasses`),x=p(`weapon`),S=p(`accessory`),C=q.MathUtils.clamp(r,0,1),w=va.weapon,T=va.accessory;return(0,X.jsxs)(`group`,{ref:a,children:[!m&&(0,X.jsxs)(`mesh`,{position:f.position,scale:f.scale,castShadow:!0,children:[(0,X.jsx)(`primitive`,{object:f.geometry,attach:`geometry`}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.hair,roughness:.85,metalness:.05,transparent:C<1,opacity:C})]}),h&&(0,X.jsxs)(`group`,{position:[0,.1,0],children:[(0,X.jsxs)(`mesh`,{castShadow:!0,children:[(0,X.jsx)(`cylinderGeometry`,{args:[.34,.34,.22,18]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.hat,roughness:.7,metalness:.05,transparent:C<1,opacity:C})]}),(0,X.jsxs)(`mesh`,{position:[0,-.1,0],children:[(0,X.jsx)(`cylinderGeometry`,{args:[.5,.5,.04,24]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.hat,roughness:.7,metalness:.05,transparent:C<1,opacity:C})]})]}),g&&(0,X.jsxs)(`mesh`,{position:[0,-.58,0],scale:[.72,.18,.18],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.top,roughness:.8,metalness:.05,transparent:C<1,opacity:C})]}),_&&(0,X.jsxs)(`mesh`,{position:[0,-.82,0],scale:[.48,.14,.16],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.bottom,roughness:.85,metalness:.04,transparent:C<1,opacity:C})]}),v&&(0,X.jsxs)(`group`,{position:[0,-1.12,.04],children:[(0,X.jsxs)(`mesh`,{position:[-.13,0,0],scale:[.17,.07,.28],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.shoes,roughness:.9,metalness:.03,transparent:C<1,opacity:C})]}),(0,X.jsxs)(`mesh`,{position:[.13,0,0],scale:[.17,.07,.28],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.shoes,roughness:.9,metalness:.03,transparent:C<1,opacity:C})]})]}),x&&(0,X.jsxs)(`group`,{position:w.position,...w.rotation?{rotation:w.rotation}:{},children:[(0,X.jsxs)(`mesh`,{position:[0,.18,0],scale:[.045,.48,.045],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#d7dde8`,roughness:.45,metalness:.45,transparent:C<1,opacity:C})]}),(0,X.jsxs)(`mesh`,{position:[0,-.12,0],scale:[.12,.08,.08],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#5c4635`,roughness:.7,metalness:.08,transparent:C<1,opacity:C})]})]}),S&&(0,X.jsxs)(`mesh`,{position:T.position,...T.rotation?{rotation:T.rotation}:{},castShadow:!0,children:[(0,X.jsx)(`torusGeometry`,{args:[.08,.015,8,18]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#f3d35f`,roughness:.42,metalness:.55,transparent:C<1,opacity:C})]}),y&&(0,X.jsxs)(`group`,{position:[0,-.08,.33],children:[(0,X.jsxs)(`mesh`,{position:[-.11,0,0],scale:[.09,.045,.018],children:[(0,X.jsx)(`torusGeometry`,{args:[1,.12,8,18]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#172033`,roughness:.35,metalness:.18})]}),(0,X.jsxs)(`mesh`,{position:[.11,0,0],scale:[.09,.045,.018],children:[(0,X.jsx)(`torusGeometry`,{args:[1,.12,8,18]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#172033`,roughness:.35,metalness:.18})]}),(0,X.jsxs)(`mesh`,{scale:[.08,.012,.012],children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#172033`,roughness:.35,metalness:.18})]})]}),(0,X.jsx)(ka,{style:o.face,opacity:C})]})}function ka({style:e,opacity:t}){let n=(0,J.useMemo)(()=>{switch(e){case`smile`:return`#ff8aa0`;case`wink`:return`#ffb04a`;case`sleepy`:return`#7d8ec8`;case`surprised`:return`#ffe066`;default:return`#ffb6a8`}},[e]);return(0,X.jsxs)(`group`,{position:[0,-.18,.32],children:[(0,X.jsxs)(`mesh`,{position:[-.13,0,0],children:[(0,X.jsx)(`sphereGeometry`,{args:[.045,8,8]}),(0,X.jsx)(`meshBasicMaterial`,{color:n,transparent:!0,opacity:t*.6})]}),(0,X.jsxs)(`mesh`,{position:[.13,0,0],children:[(0,X.jsx)(`sphereGeometry`,{args:[.045,8,8]}),(0,X.jsx)(`meshBasicMaterial`,{color:n,transparent:!0,opacity:t*.6})]})]})}var Aa=[`default`,`smile`,`wink`,`surprised`,`sleepy`],ja=8,Ma={header:!0,meta:!0,faceCycle:!0,weaponToggle:!0,presets:!0,reset:!0},Na={title:`동작과 장비`,face:`표정`,equipWeapon:`무기 장착`,unequipWeapon:`무기 해제`,reset:`초기화`,emptyPresets:`프리셋이 없습니다`},Pa={default:`기본`,smile:`미소`,wink:`윙크`,surprised:`놀람`,sleepy:`졸림`},Fa={root:`action-equipment-panel`,header:`action-equipment-panel-header`,title:`action-equipment-panel-title`,meta:`action-equipment-panel-meta`,actionRow:`action-equipment-panel-row action-equipment-panel-row--actions`,presetRow:`action-equipment-panel-row action-equipment-panel-row--presets`,button:`action-equipment-panel-button`,activeButton:`action-equipment-panel-button--active`,faceButton:`action-equipment-panel-button--face`,weaponButton:`action-equipment-panel-button--weapon`,presetButton:`action-equipment-panel-button--preset`,resetButton:`action-equipment-panel-button--reset`,emptyPresets:`action-equipment-panel-empty`};function Ia(...e){return e.filter(e=>!!e).join(` `)}function La(e){return{...Ma,...e}}function Ra(e){return{...Na,...e}}function za(e){return{...Pa,...e}}function Ba(e,t,n){return{...n,...e?.[t]}}function Va(e,t){return e.features.header?t?.header?t.header(e):(0,X.jsxs)(`div`,{className:e.classNameFor(`header`),style:e.styleFor(`header`),children:[(0,X.jsx)(`span`,{className:e.classNameFor(`title`),style:e.styleFor(`title`),children:e.labels.title}),e.features.meta&&(0,X.jsx)(`span`,{className:e.classNameFor(`meta`),style:e.styleFor(`meta`),children:e.metaLabel})]}):null}function Ha(e,t,n=!1){let r=e.styleFor(t,e.styleFor(`button`));return n?e.styleFor(`activeButton`,r):r}function Ua(e,t){return e.features.faceCycle?t?.faceButton?t.faceButton(e):(0,X.jsx)(`button`,{type:`button`,className:Ia(e.classNameFor(`button`),e.classNameFor(`faceButton`)),style:Ha(e,`faceButton`),onClick:e.actions.cycleFace,children:e.faceButtonLabel}):null}function Wa(e,t){return e.features.weaponToggle?t?.weaponButton?t.weaponButton(e):(0,X.jsx)(`button`,{type:`button`,className:Ia(e.classNameFor(`button`),e.classNameFor(`weaponButton`),e.weaponEquipped&&e.classNameFor(`activeButton`)),style:Ha(e,`weaponButton`,e.weaponEquipped),onClick:e.actions.toggleWeapon,children:e.weaponButtonLabel}):null}function Ga(e,t,n){return t?.presetButton?(0,X.jsx)(J.Fragment,{children:t.presetButton(e,n)},n.id):(0,X.jsx)(`button`,{type:`button`,className:Ia(e.classNameFor(`button`),e.classNameFor(`presetButton`)),style:Ha(e,`presetButton`),onClick:()=>e.actions.applyPreset(n),children:n.label},n.id)}function Ka(e,t){return e.features.reset?t?.resetButton?t.resetButton(e):(0,X.jsx)(`button`,{type:`button`,className:Ia(e.classNameFor(`button`),e.classNameFor(`resetButton`)),style:Ha(e,`resetButton`),onClick:e.actions.reset,children:e.labels.reset}):null}function qa(e,t){return t?.emptyPresets?t.emptyPresets(e):(0,X.jsx)(`span`,{className:e.classNameFor(`emptyPresets`),style:e.styleFor(`emptyPresets`),children:e.labels.emptyPresets})}function Ja(e,t){let n=(0,X.jsxs)(X.Fragment,{children:[Ua(e,t),Wa(e,t)]});return!e.features.faceCycle&&!e.features.weaponToggle?null:t?.actionRow?t.actionRow(e,n):(0,X.jsx)(`div`,{className:e.classNameFor(`actionRow`),style:e.styleFor(`actionRow`),children:n})}function Ya(e,t){if(!e.features.presets&&!e.features.reset)return null;let n=e.features.presets?e.presets.length>0?e.presets.map(n=>Ga(e,t,n)):qa(e,t):null,r=(0,X.jsxs)(X.Fragment,{children:[n,Ka(e,t)]});return t?.presetRow?t.presetRow(e,r):(0,X.jsx)(`div`,{className:e.classNameFor(`presetRow`),style:e.styleFor(`presetRow`),children:r})}function Xa(e,t,n){return(0,X.jsxs)(X.Fragment,{children:[Va(e,t),Ja(e,t),Ya(e,t),n]})}function Za({presets:e=b.h,weaponItemId:t=`starter-weapon-layer`,outfitSlotCount:n=8,faceSequence:r=Aa,className:i,style:a,classNames:o,styles:s,labels:c,labelMaps:l,features:u,renderers:d,formatFaceLabel:f,formatWeaponLabel:p,formatMetaLabel:m,children:h}={}){let g=b.C(),_=b.S(e=>e.appearance.face),v=b.S(e=>e.outfits),y=b.S(e=>e.setFace),x=b.S(e=>e.resetAppearance),S=(0,J.useMemo)(()=>r.length>0?r:Aa,[r]),C=(0,J.useMemo)(()=>Object.values(v).filter(Boolean).length,[v]),w=(0,J.useMemo)(()=>La(u),[u]),T=(0,J.useMemo)(()=>Ra(c),[c]),E=(0,J.useMemo)(()=>za(l?.face),[l?.face]),D=E[_],O=v.weapon===t,k=(0,J.useMemo)(()=>f?.(_,D)??`${T.face}: ${D}`,[_,D,f,T.face]),A=(0,J.useMemo)(()=>p?.(O,T)??(O?T.unequipWeapon:T.equipWeapon),[p,T,O]),j=(0,J.useMemo)(()=>m?.(C,n)??`${C}/${n}`,[C,m,n]),M=(0,J.useCallback)(()=>{let e=S.indexOf(_);y(S[(e+1)%S.length]??`default`)},[_,S,y]),N=(0,J.useCallback)(()=>{b._(t,g)},[t,g]),P=(0,J.useCallback)(e=>{b.g(e,g)},[g]),F=(0,J.useMemo)(()=>({cycleFace:M,toggleWeapon:N,applyPreset:P,reset:x}),[P,M,x,N]),ee=(0,J.useCallback)((e,t)=>Ia(Fa[e],o?.[e],e===`root`&&i,t),[i,o]),I=(0,J.useCallback)((e,t)=>{let n=Ba(s,e,t);return e===`root`?{...n,...a}:n},[a,s]),L=(0,J.useMemo)(()=>({face:_,faceLabel:D,faceButtonLabel:k,weaponButtonLabel:A,metaLabel:j,outfits:v,equippedCount:C,outfitSlotCount:n,weaponItemId:t,weaponEquipped:O,presets:e,faceSequence:S,labels:T,faceLabels:E,features:w,classNameFor:ee,styleFor:I,actions:F}),[F,ee,C,_,k,D,E,w,T,j,S,n,v,e,I,A,O,t]),R=Xa(L,d,h);return d?.root?(0,X.jsx)(X.Fragment,{children:d.root(L,R)}):(0,X.jsx)(`div`,{className:L.classNameFor(`root`),style:L.styleFor(`root`),children:R})}var Qa=e=>!e?.url||e.metadata?.placeholder===!0||e.metadata?.deformation===`rigid`&&!xa(e)?!1:e.kind===`characterPart`||e.kind===`weapon`,$a=e=>{let t=e.metadata?.hideBodyRegions;if(!Array.isArray(t))return;let n=t.filter(e=>typeof e==`string`);return n.length>0?n:void 0},eo=e=>{let t=$a(e),n=xa(e);return{id:e.id,...e.slot?{slot:e.slot}:{},url:e.url,...e.colors?.primary?{color:e.colors.primary}:{},...t?{hideNodeNames:t}:{},...n?{attachment:n}:{}}};function to({baseParts:e=[],outfits:t,assets:n}){let r=Object.values(t).map(e=>e?n[e]:void 0).filter(Qa).map(eo);if(r.length===0)return e.map(e=>({...e}));let i=new Set(r.map(e=>e.slot).filter(Boolean)),a=e.filter(e=>!e.slot||!i.has(e.slot)).map(e=>({...e}));for(let e of r)a.some(t=>t.url===e.url&&t.slot===e.slot)||a.push(e);return a}var no={top:[`tee`],face:[],glasses:[],hat:[],weapon:[],accessory:[]};function ro(e){let t=new Set;for(let n of e)n.hideNodeNames?.forEach(e=>t.add(e)),n.slot&&no[n.slot]?.forEach(e=>t.add(e));return[...t]}function io({capacity:e=64,step:n=.55,lifetime:r=9,size:i=.34,y:a=.02,color:o=`#1a1612`}={}){let s=(0,J.useRef)(null),c=L.l({updateInterval:32,reactive:!1}),{position:l}=c,u=(0,J.useMemo)(()=>new q.Color(o),[o]),d=(0,J.useMemo)(()=>Array.from({length:e},()=>({x:0,z:0,bornAt:-1/0,side:1})),[e]),f=(0,J.useRef)(null),p=(0,J.useRef)(0),m=(0,J.useRef)(1),h=(0,J.useMemo)(()=>{let e=new q.PlaneGeometry(1,1);return e.rotateX(-Math.PI/2),e},[]),g=(0,J.useMemo)(()=>new q.MeshBasicMaterial({color:u,transparent:!0,opacity:.42,depthWrite:!1,polygonOffset:!0,polygonOffsetFactor:-1,polygonOffsetUnits:-1}),[u]);(0,J.useEffect)(()=>()=>{h.dispose(),g.dispose()},[h,g]);let _=(0,J.useMemo)(()=>new q.Object3D,[]),v=(0,J.useMemo)(()=>new q.Color,[]);return t.t(`lateUpdate`,(o,h)=>{let g=s.current;if(!g)return;let y=h/t.d;if(c.isGrounded&&c.isMoving){let t=f.current,r=l.x-(t?.x??l.x),i=l.z-(t?.z??l.z);if(!t||Math.hypot(r,i)>=n){let t=d[p.current];t&&(t.x=l.x,t.z=l.z,t.bornAt=y,t.side=m.current,m.current=m.current===1?-1:1,p.current=(p.current+1)%e,f.current={x:l.x,z:l.z})}}let b=0;for(let t=0;t<e;t++){let e=d[t];if(!e)continue;let n=y-e.bornAt;if(n<0||n>r)continue;let o=1-n/r;_.position.set(e.x+e.side*.07,a,e.z),_.rotation.set(0,0,0),_.scale.set(i,1,i*1.4),_.updateMatrix(),g.setMatrixAt(b,_.matrix),v.copy(u).multiplyScalar(.6+o*.4),g.setColorAt(b,v),b++}g.count=b,g.instanceMatrix.needsUpdate=!0,g.instanceColor&&(g.instanceColor.needsUpdate=!0)},{label:`effects:footprints`}),(0,X.jsx)(`instancedMesh`,{ref:s,args:[h,g,e],frustumCulled:!1,renderOrder:1})}function ao(e){if(!(`detail`in e))return null;let t=e.detail;if(!t||typeof t!=`object`)return null;let n=t,r=n.position;return!r||typeof r.x!=`number`||typeof r.y!=`number`||typeof r.z!=`number`?null:n}function oo(e){return Array.from({length:e},(t,n)=>({angle:n/Math.max(1,e)*Math.PI*2,distance:.25+n*37%100/100,height:.2+n*19%100/70}))}function so(e,t){return e.effect===void 0?null:{id:e.effect.id??m.t(`teleport-effect`),startedAt:performance.now(),durationMs:e.effect.durationMs??900,dropHeight:e.effect.dropHeight??0,position:new q.Vector3(e.position.x,e.position.y,e.position.z),particles:oo(t)}}function co({effect:e,color:n,ringRadius:r,onDone:i}){let a=(0,J.useRef)(null),o=(0,J.useRef)(null),s=(0,J.useRef)([]),c=(0,J.useRef)(null),l=(0,J.useRef)(null),u=(0,J.useRef)([]),d=(0,J.useRef)(!1),f=Math.max(1.2,e.dropHeight);return t.t(`lateUpdate`,()=>{if(d.current)return;let t=q.MathUtils.clamp((performance.now()-e.startedAt)/e.durationMs,0,1),n=1-t,p=.45+t*r;a.current?.scale.set(p,p,1),c.current&&(c.current.opacity=n*.55),o.current&&(o.current.position.y=f*(.5-t*.15)),l.current&&(l.current.opacity=n*.16);for(let r=0;r<e.particles.length;r++){let i=e.particles[r],a=s.current[r];if(!i||!a)continue;let o=i.distance*p;a.position.set(Math.cos(i.angle)*o,i.height*(1-t),Math.sin(i.angle)*o),a.scale.setScalar(.08+n*.06);let c=u.current[r];c&&(c.opacity=n*.8)}t>=1&&(d.current=!0,i(e.id))},{label:`effects:teleport-drop`}),(0,X.jsxs)(`group`,{position:e.position,children:[(0,X.jsxs)(`mesh`,{ref:a,rotation:[-Math.PI/2,0,0],scale:[.45,.45,1],children:[(0,X.jsx)(`ringGeometry`,{args:[.78,1,40]}),(0,X.jsx)(`meshBasicMaterial`,{ref:c,color:n,transparent:!0,opacity:.55,depthWrite:!1,side:q.DoubleSide})]}),(0,X.jsxs)(`mesh`,{ref:o,position:[0,f*.5,0],children:[(0,X.jsx)(`cylinderGeometry`,{args:[.18,.42,f,18,1,!0]}),(0,X.jsx)(`meshBasicMaterial`,{ref:l,color:n,transparent:!0,opacity:.16,depthWrite:!1,side:q.DoubleSide})]}),e.particles.map((e,t)=>(0,X.jsxs)(`mesh`,{ref:e=>{s.current[t]=e},position:[Math.cos(e.angle)*e.distance*.45,e.height,Math.sin(e.angle)*e.distance*.45],scale:.14,children:[(0,X.jsx)(`sphereGeometry`,{args:[1,8,8]}),(0,X.jsx)(`meshBasicMaterial`,{ref:e=>{u.current[t]=e},color:n,transparent:!0,opacity:.8,depthWrite:!1})]},t))]})}function lo({enabled:e=!0,color:t=`#70d6ff`,ringRadius:n=1.35,particleCount:r=14,maxEffects:i=6}={}){let a=s.n(),o=s.r(),[c,l]=(0,J.useState)([]),u=(0,J.useMemo)(()=>a?a.getService(`motions.runtime`)?.create()??null:null,[a,o]),d=(0,J.useCallback)(e=>{l(t=>t.filter(t=>t.id!==e))},[]);return(0,J.useEffect)(()=>{if(!e||typeof window>`u`||typeof document>`u`)return;let t=e=>{let t=so(e,r);t&&l(e=>[...e,t].slice(-i))},n=u?.events.on(f.it,t),a=e=>{let n=ao(e);n&&t(n)};return window.addEventListener(`gaesup:teleport`,a),document.addEventListener(`teleport-request`,a),()=>{n?.(),window.removeEventListener(`gaesup:teleport`,a),document.removeEventListener(`teleport-request`,a)}},[e,i,u,r]),!e||c.length===0?null:(0,X.jsx)(X.Fragment,{children:c.map(e=>(0,X.jsx)(co,{effect:e,color:t,ringRadius:n,onDone:d},e.id))})}var uo={ko:`한국어`,en:`English`,ja:`日本語`},fo=`ko`;function po(){if(typeof navigator>`u`)return fo;let e=(navigator.language||fo).slice(0,2).toLowerCase();return e===`ko`||e===`en`||e===`ja`?e:fo}function mo(e,t){return t?e.replace(/\{(\w+)\}/g,(e,n)=>{let r=t[n];return r==null?`{${n}}`:String(r)}):e}var ho=c.n(()=>(0,ie.create)((e,t)=>({locale:po(),bundle:{ko:{},en:{},ja:{}},setLocale:t=>e({locale:t}),registerMessages:(n,r)=>{let i=t().bundle;e({bundle:{...i,[n]:{...i[n],...r}}})},registerBundle:n=>{let r=t().bundle,i={...r};Object.keys(n).forEach(e=>{let t=n[e];t&&(i[e]={...r[e],...t})}),e({bundle:i})},t:(e,n)=>{let{locale:r,bundle:i}=t(),a=i[r]?.[e];if(a!==void 0)return mo(a,n);let o=i[fo]?.[e];return mo(o===void 0?e:o,n)},serialize:()=>({version:1,locale:t().locale}),prepareHydrate:t=>{if(t==null)return()=>{};if(typeof t!=`object`||t.version!==1||![`ko`,`en`,`ja`].includes(t.locale))throw TypeError(`Invalid language snapshot`);let{locale:n}=t;return()=>e({locale:n})},hydrate:e=>t().prepareHydrate(e)()})));function go(e,t){return ho.getState().t(e,t)}var _o=`gaesup.i18n`,vo=`i18n`,yo=`i18n.store`;function bo(){return ho.getState().serialize()}function xo(e){ho.getState().hydrate(e)}function So(e={}){return a.t({id:e.id??_o,name:`GaeSup i18n`,saveExtensionId:e.saveExtensionId??vo,storeServiceId:e.storeServiceId??yo,store:ho,readyEvent:`i18n:ready`,capabilities:[`i18n`],serialize:bo,hydrate:xo,prepareHydrate:e=>ho.getState().prepareHydrate(e)})}var Co=So();function wo(){let e=ho(e=>e.locale),t=ho(e=>e.bundle);return(0,J.useCallback)((n,r)=>{let i=t[e]?.[n];if(i!==void 0)return Eo(i,r);let a=t.ko?.[n];return Eo(a===void 0?n:a,r)},[e,t])}function To(){return{locale:ho(e=>e.locale),setLocale:ho(e=>e.setLocale)}}function Eo(e,t){return t?e.replace(/\{(\w+)\}/g,(e,n)=>{let r=t[n];return r==null?`{${n}}`:String(r)}):e}var Do=[{id:`jump`,label:`점프`,key:` `},{id:`use`,label:`사용`,key:`F`}];function Oo(){return typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(`(pointer: coarse)`).matches}function ko({forceVisible:e=!1,radius:t=60,deadzone:n=.18,runThreshold:r=.8,actions:i=Do}={}){let[a,o]=(0,J.useState)(!1),s=f.i(),c=f.mr(),l=(0,J.useMemo)(()=>T.x(s),[s]),u=(0,J.useRef)(null),d=(0,J.useRef)(null),p=(0,J.useRef)({pointerId:-1,cx:0,cy:0,forward:!1,backward:!1,leftward:!1,rightward:!1,run:!1});return(0,J.useEffect)(()=>{o(e||Oo())},[e]),(0,J.useEffect)(()=>{if(!a)return;let e=u.current,i=d.current;if(!e||!i)return;let o=()=>{let e=p.current;e.forward=e.backward=e.leftward=e.rightward=e.run=!1,l.release(),i.style.transform=`translate(-50%, -50%)`,p.current.pointerId=-1},s=t=>{if(!c.isEnabled())return;c.activate(),t.preventDefault();let n=e.getBoundingClientRect();p.current.cx=n.left+n.width/2,p.current.cy=n.top+n.height/2,p.current.pointerId=t.pointerId,e.setPointerCapture(t.pointerId),f(t)},f=e=>{if(e.pointerId!==p.current.pointerId)return;let a=e.clientX-p.current.cx,o=e.clientY-p.current.cy,s=Math.min(Math.hypot(a,o),t),c=Math.atan2(o,a),u=Math.cos(c)*s,d=Math.sin(c)*s;i.style.transform=`translate(calc(-50% + ${u}px), calc(-50% + ${d}px))`;let f=s/t,m=p.current,h={};if(f<n)m.forward&&=(h.forward=!1,!1),m.backward&&=(h.backward=!1,!1),m.leftward&&=(h.leftward=!1,!1),m.rightward&&=(h.rightward=!1,!1),m.run&&=(h.shift=!1,!1);else{let e=Math.cos(c),t=Math.sin(c),n=t<-.35,i=t>.35,a=e<-.35,o=e>.35,s=f>=r;m.forward!==n&&(h.forward=n,m.forward=n),m.backward!==i&&(h.backward=i,m.backward=i),m.leftward!==a&&(h.leftward=a,m.leftward=a),m.rightward!==o&&(h.rightward=o,m.rightward=o),m.run!==s&&(h.shift=s,m.run=s)}for(let[e,t]of Object.entries(h))l.set(`joystick:${e}`,e,t)},m=e=>{e.pointerId===p.current.pointerId&&o()};e.addEventListener(`pointerdown`,s),e.addEventListener(`pointermove`,f),e.addEventListener(`pointerup`,m),e.addEventListener(`pointercancel`,m),e.addEventListener(`pointerleave`,m);let h=c.onBlur(o);return()=>{e.removeEventListener(`pointerdown`,s),e.removeEventListener(`pointermove`,f),e.removeEventListener(`pointerup`,m),e.removeEventListener(`pointercancel`,m),e.removeEventListener(`pointerleave`,m),h(),o()}},[a,t,n,r,l,c]),a?(0,X.jsxs)(g.a,{style:{position:`fixed`,inset:0,zIndex:`var(--gaesup-z-input, 75)`,pointerEvents:`none`,fontFamily:`'Pretendard', system-ui, sans-serif`},children:[(0,X.jsx)(`div`,{ref:u,style:{position:`absolute`,left:24,bottom:24,width:t*2,height:t*2,borderRadius:`50%`,border:`1px solid rgba(255,255,255,0.25)`,background:`rgba(20,22,30,0.32)`,backdropFilter:`blur(14px) saturate(140%)`,WebkitBackdropFilter:`blur(14px) saturate(140%)`,touchAction:`none`,pointerEvents:`auto`},children:(0,X.jsx)(`div`,{ref:d,style:{position:`absolute`,left:`50%`,top:`50%`,width:t*.85,height:t*.85,borderRadius:`50%`,background:`rgba(255,255,255,0.55)`,boxShadow:`0 4px 12px rgba(0,0,0,0.28)`,transform:`translate(-50%, -50%)`,transition:`transform 0.04s linear`,pointerEvents:`none`}})}),(0,X.jsx)(`div`,{style:{position:`absolute`,right:20,bottom:32,display:`grid`,gridTemplateColumns:`repeat(2, auto)`,gap:12,pointerEvents:`auto`},children:i.map(e=>(0,X.jsx)(Ao,{action:e},e.id))})]}):null}function Ao({action:e}){let[t,n]=(0,J.useState)(!1),r=(0,J.useRef)(!1),i=f.mr(),a=(0,J.useId)(),o=(0,J.useCallback)(()=>{r.current&&(r.current=!1,n(!1),e.key&&i.dispatchKey(`keyup`,e.key,a),e.onRelease?.())},[e.key,e.onRelease,i,a]);(0,J.useEffect)(()=>{let e=i.onBlur(o);return()=>{e(),o()}},[i,o]);let s=()=>{!r.current&&i.isEnabled()&&(i.activate(),r.current=!0,n(!0),e.key&&i.dispatchKey(`keydown`,e.key,a),e.onPress?.())};return(0,X.jsx)(`button`,{type:`button`,onPointerDown:e=>{e.preventDefault(),s()},onPointerUp:e=>{e.preventDefault(),o()},onPointerCancel:o,onPointerLeave:o,style:{width:64,height:64,borderRadius:`50%`,border:`1px solid rgba(255,255,255,0.22)`,background:t?`rgba(255,216,74,0.32)`:`rgba(20,22,30,0.42)`,color:`#f3f4f8`,backdropFilter:`blur(14px) saturate(140%)`,WebkitBackdropFilter:`blur(14px) saturate(140%)`,fontFamily:`inherit`,fontSize:13,fontWeight:600,cursor:`pointer`,touchAction:`none`,userSelect:`none`},children:e.label})}var jo=.15,Mo=.5;function No(){return{keyboard:new Set,mouse:new Set,gamepad:new Map,touch:new Map}}function Po(e,t){switch(t.device){case`keyboard`:return+!!e.keyboard.has(t.code);case`mouse`:return+!!e.mouse.has(t.code);case`gamepad`:return e.gamepad.get(t.code)??0;case`touch`:return e.touch.get(t.code)??0}}function Fo(e,t){return Math.abs(e)<t?0:e}function Io(e){return Math.max(-1,Math.min(1,e))}function Lo(){return{pressed:!1,down:!1,up:!1,value:0,x:0,y:0}}var Ro=class{constructor(e){this.slots=new Map,this.order=[],e.forEach(e=>{if(this.slots.has(e.name))throw Error(`[InputActionMap Error]: 중복 액션 ${e.name}`);let t={definition:e,state:Lo()};this.slots.set(e.name,t),this.order.push(t)})}get(e){return this.slots.get(e)?.state}names(){return this.order.map(e=>e.definition.name)}definitions(){return this.order.map(e=>e.definition)}evaluate(e){for(let t=0;t<this.order.length;t++){let n=this.order[t],{definition:r}=n,i=r.deadzone??jo,a=0,o=0,s=0;for(let t=0;t<r.bindings.length;t++){let n=r.bindings[t],c=Fo(Po(e,n),i)*(n.scale??1);r.kind===`axis2D`?n.axis===`y`?o+=c:a+=c:r.kind===`button`?s=Math.max(s,Math.abs(c)):s+=c}if(r.kind===`axis2D`){let e=Math.hypot(a,o);e>1&&(a/=e,o/=e),s=Math.min(1,e)}else s=r.kind===`button`?Math.min(1,s):Io(s);this.writeState(n.state,s,a,o)}}applyRecordedFrame(e){for(let t=0;t<this.order.length;t++){let n=this.order[t],r=e[n.definition.name];r?this.writeState(n.state,r[0],r[1],r[2]):this.writeState(n.state,0,0,0)}}captureFrame(){let e={};for(let t=0;t<this.order.length;t++){let n=this.order[t],{value:r,x:i,y:a}=n.state;(r!==0||i!==0||a!==0)&&(e[n.definition.name]=[r,i,a])}return e}reset(){this.order.forEach(e=>this.writeState(e.state,0,0,0))}writeState(e,t,n,r){let i=t>=Mo;e.down=i&&!e.pressed,e.up=!i&&e.pressed,e.pressed=i,e.value=t,e.x=n,e.y=r}},zo=class{constructor(){this.frames=[],this.recording=!1}start(){this.frames=[],this.recording=!0}capture(e){this.recording&&this.frames.push(e.captureFrame())}stop(){return this.recording=!1,{version:1,frames:this.frames}}isRecording(){return this.recording}},Bo=class{constructor(e){this.recording=e,this.cursor=0}next(e){let t=this.recording.frames[this.cursor];return t?(e.applyRecordedFrame(t),this.cursor++,!0):(e.reset(),!1)}isFinished(){return this.cursor>=this.recording.frames.length}rewind(){this.cursor=0}};function Vo(e=window,t=typeof navigator<`u`?navigator:{}){let n=No(),r=e=>{n.keyboard.add(e.code)},i=e=>{n.keyboard.delete(e.code)},a=e=>{n.mouse.add(`button:${e.button}`)},o=e=>{n.mouse.delete(`button:${e.button}`)},s=()=>{n.keyboard.clear(),n.mouse.clear()};return e.addEventListener(`keydown`,r),e.addEventListener(`keyup`,i),e.addEventListener(`mousedown`,a),e.addEventListener(`mouseup`,o),e.addEventListener(`blur`,s),{state:n,poll:()=>{let e=t.getGamepads?.();if(n.gamepad.clear(),e)for(let t=0;t<e.length;t++){let r=e[t];if(r){for(let e=0;e<r.buttons.length;e++){let t=r.buttons[e]?.value??0;t>0&&n.gamepad.set(`button:${e}`,Math.max(t,n.gamepad.get(`button:${e}`)??0))}for(let e=0;e<r.axes.length;e++){let t=r.axes[e]??0;t!==0&&!n.gamepad.has(`axis:${e}`)&&n.gamepad.set(`axis:${e}`,t)}}}},dispose:()=>{e.removeEventListener(`keydown`,r),e.removeEventListener(`keyup`,i),e.removeEventListener(`mousedown`,a),e.removeEventListener(`mouseup`,o),e.removeEventListener(`blur`,s),s(),n.gamepad.clear(),n.touch.clear()}}}function Ho({definitions:e,active:n=!0,onFrame:r}={}){let i=(0,J.useMemo)(()=>new Ro(e??L.s()),[e]),a=(0,J.useRef)(null),o=(0,J.useRef)(r);return o.current=r,(0,J.useEffect)(()=>{if(!n||typeof window>`u`)return;let e=Vo(window);return a.current=e,()=>{a.current=null,e.dispose(),i.reset()}},[n,i]),t.t(`input`,()=>{let e=a.current;e&&(e.poll(),i.evaluate(e.state),o.current?.(i))},{active:n,label:`input:actions`}),i}var Uo={fps:0,avgMs:0,p50Ms:0,p95Ms:0,maxMs:0};function Wo(e,t){if(!e.length||t<=0)return Uo;let n=[...e].sort((e,t)=>e-t),r=e=>n[Math.min(n.length-1,Math.floor(e*n.length))],i=n.reduce((e,t)=>e+t,0);return{fps:e.length*1e3/t,avgMs:i/n.length,p50Ms:r(.5),p95Ms:r(.95),maxMs:n[n.length-1]}}var Go=()=>{let e=globalThis.performance.memory;return e?{usedMB:e.usedJSHeapSize/1048576,limitMB:e.jsHeapSizeLimit/1048576}:null};function Ko(e=500){let t=s.n(),n=p.o(e=>e.retainPerformanceSampling),{render:r,engine:i}=p.o((0,ae.useShallow)(e=>e.performance)),a=p.o(e=>e.framePhases),o=p.o(e=>e.shadow),c=p.o(e=>e.resolution),l=p.o(e=>e.gpuMs),u=p.o(e=>e.cpuBound),d=B.a(e=>e.profile.tier),[f,m]=(0,J.useState)({frames:Uo,drawnFps:null,fixedTicksPerSecond:null,memory:null,nearOnlyCasters:0});(0,J.useEffect)(()=>n(),[n]),(0,J.useEffect)(()=>{let n=[],r=()=>t?.stats.snapshot(),i=r(),a=0,o=globalThis.performance.now(),s=requestAnimationFrame(function t(c){a&&n.push(c-a),a=c;let l=c-o;if(l>=e){let e=r(),t=t=>{let n=(e?.[t]??0)-(i?.[t]??0);return e&&n>=0?n*1e3/l:null};m({frames:Wo(n,l),drawnFps:t(`frames`),fixedTicksPerSecond:t(`fixedTicks`),memory:Go(),nearOnlyCasters:I.ot()}),i=e,n.length=0,o=c}s=requestAnimationFrame(t)});return()=>cancelAnimationFrame(s)},[e,t]);let{nearOnlyCasters:h,...g}=f;return{...g,render:r,engine:i,phases:a,tier:d,shadow:o?{...o,nearOnlyCasters:h}:null,resolution:c,gpuMs:l,cpuBound:u}}var qo=[`pointerdown`,`pointermove`,`wheel`,`keydown`,`keyup`,`touchstart`,`touchmove`];function Jo({fps:e=30,afterMs:t=2e3}={}){let n=900/e,r=-1/0,i=-1/0;return{activity(e){e>r&&(r=e)},shouldDraw(e){return e-r>=t&&e-i<n?!1:(i=e,!0)}}}function Yo({fps:e=30,after:n=2}){let r=(0,Y.useThree)(e=>e.get),i=t.i(),a=f.i(),o=(0,Y.useThree)(e=>e.frameloop),s=(0,J.useRef)(0),c=(0,J.useRef)(!1);return(0,J.useLayoutEffect)(()=>{if(o!==`always`)return;c.current=!0;let e=r();e.setFrameloop(`never`),e.internal.frames=0,e.clock.elapsedTime=s.current},[o,r]),(0,J.useEffect)(()=>()=>{c.current&&r().setFrameloop(`always`)},[r]),(0,J.useEffect)(()=>{let t=Jo({fps:e,afterMs:n*1e3}),o=()=>t.activity(performance.now());o();let l=performance.now(),u=new Float64Array(16),d=requestAnimationFrame(function e(n){d=requestAnimationFrame(e);let a=r();if(t.activity(i.getLastActivity()),!c.current||a.frameloop!==`never`||!t.shouldDraw(n))return;let o=a.camera.matrixWorld.elements;for(let e=0;e<16;e++)if(u[e]!==o[e]){u.set(o),t.activity(n);break}a.clock.elapsedTime=s.current,s.current+=Math.max(0,n-l)/1e3,l=n,(0,Y.flushGlobalEffects)(`before`,n),(0,Y.advance)(s.current,!1,a),(0,Y.flushGlobalEffects)(`after`,n)});for(let e of qo)window.addEventListener(e,o,{capture:!0,passive:!0});let f=a.subscribe?.(o);return()=>{cancelAnimationFrame(d);for(let e of qo)window.removeEventListener(e,o,{capture:!0});f?.()}},[n,e,r,a,i]),null}var Xo=400,Zo=1500;function Qo(){let{active:e,loaded:t,total:n,item:r}=(0,se.useProgress)(),i=(0,J.useSyncExternalStore)(N.l,N.o,N.o),[a,o]=(0,J.useState)(!1),s=(0,J.useRef)(0),c=(0,J.useRef)(0),l=(0,J.useRef)(0);s.current=Math.max(s.current,i);let u=e||i>0;if((0,J.useEffect)(()=>{if(l.current||=performance.now(),a||u)return;let e=n>0?Xo:Math.max(Xo,Zo-(performance.now()-l.current)),t=setTimeout(()=>o(!0),e);return()=>clearTimeout(t)},[u,a,n]),a)return{stage:`ready`,progress:1,loaded:t,total:n,item:r};let d=e||s.current===0?`assets`:`shaders`,f=n>0?t/n:0,p=d===`assets`?.8*f:.8+.2*(1-i/Math.max(1,s.current));return c.current=Math.max(c.current,p),{stage:d,progress:c.current,loaded:t,total:n,item:r}}var $o=1,Q={version:1,name:`Gaesup World`,physics:{enabled:!0,gravity:[0,-9.81,0],timeStep:1/60,maxSubSteps:4,solverIterations:8,collisionMatrix:{default:[`default`,`environment`,`interactable`],environment:[`default`,`player`,`npc`],player:[`environment`,`interactable`,`npc`],npc:[`environment`,`player`,`interactable`],interactable:[`default`,`player`,`npc`]}},rendering:{backend:`auto`,pixelRatio:1.5,shadows:!0,antialias:!0,toneMapping:`aces`,outputColorSpace:`srgb`,toon:{enabled:!0},postprocessing:{enabled:!1,bloom:!1,colorGrade:!1}},input:{pointerLock:!1,touchControls:!0,gamepad:!0,bindings:{moveForward:[{device:`keyboard`,code:`KeyW`}],moveBackward:[{device:`keyboard`,code:`KeyS`}],moveLeft:[{device:`keyboard`,code:`KeyA`}],moveRight:[{device:`keyboard`,code:`KeyD`}],run:[{device:`keyboard`,code:`ShiftLeft`}],jump:[{device:`keyboard`,code:`Space`}],interact:[{device:`keyboard`,code:`KeyE`}]}},build:{target:`web`,publicPath:`/`,assetBaseUrl:`/`,sourceMaps:!1,minify:!0,chunkStrategy:`domain-split`},editor:{autosave:!0,autosaveIntervalMs:3e4,gridSize:1,snapMove:.5,snapRotateDegrees:15,showGizmos:!0}},es=new Set([`auto`,`webgl`,`webgpu`]),ts=new Set([`none`,`aces`,`reinhard`]),ns=new Set([`srgb`,`linear`]),rs=new Set([`keyboard`,`mouse`,`gamepad`,`touch`]),is=new Set([`web`]),as=new Set([`single`,`vendor-split`,`domain-split`]);function os(e={}){return{version:1,name:e.name??Q.name,physics:{...Q.physics,...e.physics,gravity:e.physics?.gravity??Q.physics.gravity,collisionMatrix:{...Q.physics.collisionMatrix,...e.physics?.collisionMatrix}},rendering:{...Q.rendering,...e.rendering,toon:{...Q.rendering.toon,...e.rendering?.toon},postprocessing:{...Q.rendering.postprocessing,...e.rendering?.postprocessing}},input:{...Q.input,...e.input,bindings:{...Q.input.bindings,...e.input?.bindings}},build:{...Q.build,...e.build},editor:{...Q.editor,...e.editor}}}function ss(e){return JSON.parse(JSON.stringify(e))}function cs(e){return JSON.stringify(e)}function ls(e){let t=typeof e==`string`?ys(e):e;if(!S.r(t))return bs(`Project settings must be an object.`,`invalid-project-settings-version`,`version`);let n=t;if(n.version!==1)return bs(`Project settings version must be 1.`,`invalid-project-settings-version`,`version`);let r={};typeof n.name==`string`&&(r.name=n.name),S.r(n.physics)&&(r.physics=n.physics),S.r(n.rendering)&&(r.rendering=n.rendering),S.r(n.input)&&(r.input=n.input),S.r(n.build)&&(r.build=n.build),S.r(n.editor)&&(r.editor=n.editor);let i=os(r);return{...us(i),settings:i}}function us(e){let t=[];return e.version!==1&&t.push($(`invalid-project-settings-version`,`version`,`Version must be 1.`)),e.name.trim()||t.push($(`invalid-project-settings-version`,`name`,`Project name must not be empty.`)),ds(e,t),fs(e,t),ps(e,t),ms(e,t),hs(e,t),{valid:t.length===0,issues:t}}function ds(e,t){let n=e.physics;_s(n.gravity)||t.push($(`invalid-physics-settings`,`physics.gravity`,`Gravity must be a numeric vector3.`)),vs(n.timeStep)||t.push($(`invalid-physics-settings`,`physics.timeStep`,`Physics timeStep must be positive.`)),(!Number.isInteger(n.maxSubSteps)||n.maxSubSteps<1)&&t.push($(`invalid-physics-settings`,`physics.maxSubSteps`,`maxSubSteps must be a positive integer.`)),(!Number.isInteger(n.solverIterations)||n.solverIterations<1)&&t.push($(`invalid-physics-settings`,`physics.solverIterations`,`solverIterations must be a positive integer.`)),Object.entries(n.collisionMatrix).forEach(([e,n])=>{(!e.trim()||!Array.isArray(n)||n.some(e=>typeof e!=`string`||!e.trim()))&&t.push($(`invalid-physics-settings`,`physics.collisionMatrix.${e}`,`Collision matrix entries must be layer name arrays.`))})}function fs(e,t){let n=e.rendering;es.has(n.backend)||t.push($(`invalid-rendering-settings`,`rendering.backend`,`Rendering backend is not supported.`)),vs(n.pixelRatio)||t.push($(`invalid-rendering-settings`,`rendering.pixelRatio`,`Pixel ratio must be positive.`)),ts.has(n.toneMapping)||t.push($(`invalid-rendering-settings`,`rendering.toneMapping`,`Tone mapping is not supported.`)),ns.has(n.outputColorSpace)||t.push($(`invalid-rendering-settings`,`rendering.outputColorSpace`,`Output color space is not supported.`))}function ps(e,t){Object.entries(e.input.bindings).forEach(([e,n])=>{if(!e.trim()||!Array.isArray(n)){t.push($(`invalid-input-binding`,`input.bindings.${e}`,`Input action must map to binding arrays.`));return}n.forEach((n,r)=>{gs(n)||t.push($(`invalid-input-binding`,`input.bindings.${e}.${r}`,`Input binding has invalid device or code.`))})})}function ms(e,t){let n=e.build;is.has(n.target)||t.push($(`invalid-build-settings`,`build.target`,`Build target is not supported.`)),n.publicPath.trim()||t.push($(`invalid-build-settings`,`build.publicPath`,`publicPath must not be empty.`)),n.assetBaseUrl.trim()||t.push($(`invalid-build-settings`,`build.assetBaseUrl`,`assetBaseUrl must not be empty.`)),as.has(n.chunkStrategy)||t.push($(`invalid-build-settings`,`build.chunkStrategy`,`Chunk strategy is not supported.`))}function hs(e,t){let n=e.editor;(!Number.isInteger(n.autosaveIntervalMs)||n.autosaveIntervalMs<1e3)&&t.push($(`invalid-editor-settings`,`editor.autosaveIntervalMs`,`Autosave interval must be at least 1000ms.`)),vs(n.gridSize)||t.push($(`invalid-editor-settings`,`editor.gridSize`,`Grid size must be positive.`)),vs(n.snapMove)||t.push($(`invalid-editor-settings`,`editor.snapMove`,`Move snapping must be positive.`)),vs(n.snapRotateDegrees)||t.push($(`invalid-editor-settings`,`editor.snapRotateDegrees`,`Rotate snapping must be positive.`))}function gs(e){return S.r(e)&&rs.has(e.device)&&typeof e.code==`string`&&e.code.trim().length>0&&(e.scale===void 0||Number.isFinite(e.scale))}function _s(e){return Array.isArray(e)&&e.length===3&&e.every(e=>Number.isFinite(e))}function vs(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function ys(e){try{return JSON.parse(e)}catch{return null}}function bs(e,t,n){return{valid:!1,issues:[$(t,n,e)]}}function $(e,t,n){return{code:e,path:t,message:n}}var xs=1;function Ss(e){return{version:1,settings:os(e.settings),startScene:e.startScene,scenes:e.scenes.map(e=>({...e})),prefabs:(e.prefabs??[]).map(e=>({...e})),requiredScripts:[...e.requiredScripts??[]],...e.assetManifest===void 0?{}:{assetManifest:e.assetManifest}}}function Cs(e,t,n){let r=new Set;e.forEach((e,i)=>{e.id.trim()||n.push({path:`${t}[${i}].id`,message:`id가 비어 있습니다`}),e.path.trim()||n.push({path:`${t}[${i}].path`,message:`path가 비어 있습니다`}),r.has(e.id)&&n.push({path:`${t}[${i}].id`,message:`중복 id: ${e.id}`}),r.add(e.id)})}function ws(e,t={}){let n=[];return e.version!==1&&n.push({path:`version`,message:`지원하지 않는 프로젝트 버전: ${String(e.version)}`}),ls(e.settings).issues.forEach(e=>n.push({path:`settings.${e.path}`,message:e.message})),Cs(e.scenes,`scenes`,n),Cs(e.prefabs,`prefabs`,n),e.scenes.some(t=>t.id===e.startScene)||n.push({path:`startScene`,message:`시작 씬이 scenes에 없습니다: ${e.startScene}`}),t.isScriptRegistered&&e.requiredScripts.forEach((e,r)=>{t.isScriptRegistered?.(e)||n.push({path:`requiredScripts[${r}]`,message:`등록되지 않은 스크립트: ${e}`})}),n}function Ts(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return{issues:[{path:``,message:`JSON 형식이 아닙니다`}]}}if(!t||typeof t!=`object`||Array.isArray(t))return{issues:[{path:``,message:`프로젝트 파일은 객체여야 합니다`}]};let n=t,r=ls(n.settings??{});if(!r.settings)return{issues:r.issues.map(e=>({path:`settings.${e.path}`,message:e.message}))};let i=e=>Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`&&typeof e.id==`string`&&typeof e.path==`string`):[],a={version:1,settings:r.settings,startScene:typeof n.startScene==`string`?n.startScene:``,scenes:i(n.scenes),prefabs:i(n.prefabs),requiredScripts:Array.isArray(n.requiredScripts)?n.requiredScripts.filter(e=>typeof e==`string`):[],...typeof n.assetManifest==`string`?{assetManifest:n.assetManifest}:{}};return{file:a,issues:ws(n.version===1?a:{...a,version:n.version})}}var Es=`gaesup.scene`,Ds=`scene`,Os=`scene.store`;function ks(e=b.f){return e.getState().serialize()}function As(e,t=b.f){t.getState().hydrate(e)}function js(e={}){return a.t({id:e.id??Es,name:`GaeSup Scene`,saveExtensionId:e.saveExtensionId??Ds,storeServiceId:e.storeServiceId??Os,store:b.f,resolveStore:e=>e.services.get(b.u)??b.f,readyEvent:`scene:ready`,capabilities:[`scene`],serialize:ks,hydrate:As,prepareHydrate:(e,t)=>t.getState().prepareHydrate(e)})}var Ms=js();function Ns({zIndex:e=9999}={}){let t=b.f(e=>e.transition);return!t.active&&t.progress<=.001?null:(0,X.jsx)(`div`,{"aria-hidden":!0,style:{position:`fixed`,inset:0,background:t.color,opacity:t.progress,pointerEvents:t.progress>.5?`auto`:`none`,zIndex:e,transition:`background-color 80ms linear`}})}function Ps({scene:e,children:t}){let n=b.f(e=>e.registerScene),r=b.f(e=>e.unregisterScene),i=b.f(e=>e.current);return(0,J.useEffect)(()=>(n(e),()=>r(e.id)),[e,n,r]),i===e.id?(0,X.jsx)(X.Fragment,{children:t}):null}var Fs={phase:`postPhysics`,label:`scene:house-door`,order:10};function Is({position:e,sceneId:t,entry:n,exitOverride:r,radius:i=1.4,cooldownMs:a=800,color:o=`#5a8acf`,label:s}){let c=b.f(e=>e.goTo),l=b.f(e=>e.current),{teleport:u}=wn(),{position:d}=L.l({updateInterval:50,reactive:!1}),p=(0,J.useRef)(-1/0),m=(0,J.useMemo)(()=>new q.CylinderGeometry(i,i,.08,28),[i]);(0,J.useEffect)(()=>()=>m.dispose(),[m]),f.br(Fs,()=>{let n=performance.now();if(n-p.current<a)return;let r=d.x-e[0],o=d.z-e[2];r*r+o*o>i*i||(p.current=n,l!==t&&h())});async function h(){let i=r??{position:[e[0],e[1],e[2]]};await c(t,{entry:n,saveReturn:i,onEntered:()=>u(new q.Vector3(...n.position))})}return(0,X.jsxs)(`group`,{position:e,children:[(0,X.jsx)(`mesh`,{rotation:[0,0,0],geometry:m,children:(0,X.jsx)(`meshStandardMaterial`,{color:o,emissive:o,emissiveIntensity:.35,transparent:!0,opacity:.6})}),s&&(0,X.jsxs)(`mesh`,{position:[0,1.3,0],children:[(0,X.jsx)(`boxGeometry`,{args:[.04,.6,.04]}),(0,X.jsx)(`meshStandardMaterial`,{color:o,emissive:o,emissiveIntensity:.4})]})]})}function Ls({sceneId:e,roomId:t,bounds:n,children:r}){let i=b.f(e=>e.current),a=u.j(e=>e.registerRoom),o=u.j(e=>e.unregisterRoom),s=u.j(e=>e.initializedSceneId),c=u.j(e=>e.visibleRoomIds);return(0,J.useEffect)(()=>(a({id:t,sceneId:e,bounds:n}),()=>o(t)),[t,e,n,a,o]),i===e?s===e?c.has(t)?(0,X.jsx)(X.Fragment,{children:r}):null:(0,X.jsx)(X.Fragment,{children:r}):null}function Rs({id:e,sceneId:t,fromRoomId:n,toRoomId:r,position:i,radius:a,revealDistance:o}){let s=u.j(e=>e.registerPortal),c=u.j(e=>e.unregisterPortal);return(0,J.useEffect)(()=>(s({id:e,sceneId:t,fromRoomId:n,toRoomId:r,position:i,...a===void 0?{}:{radius:a},...o===void 0?{}:{revealDistance:o}}),()=>c(e)),[e,t,n,r,i,a,o,s,c]),null}function zs(e,t){return e.x>=t.min[0]&&e.x<=t.max[0]&&e.y>=t.min[1]&&e.y<=t.max[1]&&e.z>=t.min[2]&&e.z<=t.max[2]}function Bs(e,t,n){for(let r of t)if(r.sceneId===e&&zs(n,r.bounds))return r.id;return null}function Vs(e){let t=e.rooms.filter(t=>t.sceneId===e.sceneId);if(t.length===0)return new Set;let n=Bs(e.sceneId,t,e.position);if(!n)return new Set(t.map(e=>e.id));let r=new Set([n]),i=e.portals.filter(t=>t.sceneId===e.sceneId);for(let t of i){let i=t.revealDistance??3.8,a=e.position.x-t.position[0],o=e.position.y-t.position[1],s=e.position.z-t.position[2];a*a+o*o+s*s>i*i||(t.fromRoomId===n?r.add(t.toRoomId):t.toRoomId===n&&r.add(t.fromRoomId))}return r}function Hs(){let e=s.n(),n=b.f(e=>e.current),r=u.j(e=>e.rooms),i=u.j(e=>e.portals),a=(0,J.useMemo)(()=>Array.from(r.values()),[r]),o=(0,J.useMemo)(()=>Array.from(i.values()),[i]),c=u.j(e=>e.setVisibleRooms),l=u.j(e=>e.reset),{position:d}=L.l({updateInterval:50,reactive:!1}),f=(0,J.useRef)(0);return(0,J.useEffect)(()=>l,[l]),t.t(`postPhysics`,t=>{if(e&&!e.isActive()){f.current=0;return}if(f.current+=Math.max(0,t),f.current<.12)return;f.current=0;let r=Bs(n,a,d),i=Vs({sceneId:n,rooms:a,portals:o,position:d});c(n,r,i)},{order:10,label:`scene:room-visibility`}),null}var Us=100,Ws={get:()=>void 0};function Gs(e,t){e.x=t[0],e.y=t[1],e.z=t[2]}function Ks(e,t){return!(t.id!==void 0&&e.id!==t.id||t.name!==void 0&&e.name!==t.name||t.tag!==void 0&&!e.tags.includes(t.tag)||t.componentType!==void 0&&!e.components.some(e=>e.type===t.componentType))}var qs=class{constructor(e){this.instances=new Map,this.handles=new Map,this.listeners=new Map,this.errors=[],this.time={delta:0,elapsed:0,frame:0},this.updateList=[],this.fixedList=[],this.lateList=[],this.document=null,this.unsubscribe=null,this.controller=e.controller,this.services=e.services??Ws}start(){this.unsubscribe||=(this.sync(this.controller.getSnapshot()),this.controller.subscribe(e=>this.sync(e)))}stop(){this.unsubscribe?.(),this.unsubscribe=null,Array.from(this.instances.values()).forEach(e=>this.destroyInstance(e)),this.instances.clear(),this.handles.clear(),this.rebuildLists(),this.document=null,this.time.delta=0,this.time.elapsed=0,this.time.frame=0}isRunning(){return this.unsubscribe!==null}update(e){this.time.delta=e,this.time.elapsed+=e,this.time.frame++;let t=this.updateList;for(let n=0;n<t.length;n++){let r=t[n];if(!this.ensureStarted(r))continue;let i=r.hooks.onUpdate;i&&this.runHook(r,`onUpdate`,()=>i(e))}}fixedUpdate(e){let t=this.fixedList;for(let n=0;n<t.length;n++){let r=t[n];if(!this.ensureStarted(r))continue;let i=r.hooks.onFixedUpdate;i&&this.runHook(r,`onFixedUpdate`,()=>i(e))}}lateUpdate(e){let t=this.lateList;for(let n=0;n<t.length;n++){let r=t[n];if(!this.ensureStarted(r))continue;let i=r.hooks.onLateUpdate;i&&this.runHook(r,`onLateUpdate`,()=>i(e))}}dispatchInteract(e,t={}){let n=0;return this.instances.forEach(r=>{if(r.objectId!==e||!this.isLive(r))return;let i=r.hooks.onInteract;i&&(n++,this.runHook(r,`onInteract`,()=>i(t)))}),n}dispatchPhysicsEvent(e,t,n){this.instances.forEach(r=>{if(r.objectId!==t||!this.isLive(r))return;let i=e===`triggerEnter`?r.hooks.onTriggerEnter:e===`triggerExit`?r.hooks.onTriggerExit:e===`collisionEnter`?r.hooks.onCollisionEnter:r.hooks.onCollisionExit;i&&this.runHook(r,e,()=>i(n))})}on(e,t){let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),()=>{n.delete(t)}}emit(e,t={}){this.listeners.get(e)?.forEach(n=>{try{n(t)}catch(t){r.t.error(`[ScriptRuntime Error]: 이벤트 리스너 실패 ${e}`,t instanceof Error?t:String(t))}})}getObjectHandle(e){return this.handles.get(e)?.handle}getInstanceCount(){return this.instances.size}getErrors(){return this.errors}isLive(e){return e.enabled&&!e.failed}ensureStarted(e){if(!this.isLive(e))return!1;if(e.started)return!0;e.started=!0;let t=e.hooks.onStart;return t&&this.runHook(e,`onStart`,t),this.isLive(e)}runHook(e,t,n){try{n()}catch(n){e.failed=!0;let i=n instanceof Error?n.message:String(n);this.errors.length>=Us&&this.errors.shift(),this.errors.push({objectId:e.objectId,componentId:e.componentId,scriptId:e.definition.id,hook:t,message:i}),r.t.error(`[ScriptRuntime Error]: ${e.definition.id}.${t} 실패 (${e.objectId})`,i),this.rebuildLists()}}sync(e){this.document=e;let t=new Set,n=new Set;for(let r of e.objects){n.add(r.id),this.syncHandle(r);for(let e of r.components){if(e.type!==h.wt.script)continue;let n=`${r.id}/${e.id}`;t.add(n),this.syncInstance(n,r,e)}}this.instances.forEach((e,n)=>{t.has(n)||(this.destroyInstance(e),this.instances.delete(n))}),this.handles.forEach((e,t)=>{n.has(t)||this.handles.delete(t)}),this.rebuildLists()}syncHandle(e){let t=this.handles.get(e.id);if(t){t.object=e,t.sourceTransform!==e.transform&&(t.sourceTransform=e.transform,Gs(t.handle.position,e.transform.position),Gs(t.handle.rotation,e.transform.rotation),Gs(t.handle.scale,e.transform.scale));return}let n={object:e,sourceTransform:e.transform,handle:void 0},r={x:0,y:0,z:0},i={x:0,y:0,z:0},a={x:1,y:1,z:1};Gs(r,e.transform.position),Gs(i,e.transform.rotation),Gs(a,e.transform.scale),n.handle={id:e.id,get name(){return n.object.name},get tags(){return n.object.tags},position:r,rotation:i,scale:a,hasComponent:e=>n.object.components.some(t=>t.type===e),getComponentData:e=>n.object.components.find(t=>t.type===e)?.data},this.handles.set(e.id,n)}syncInstance(e,t,n){let i=n.data.scriptId,a=typeof i==`string`?h.L(i):void 0,o=this.instances.get(e);if(o&&(o.definition!==a||o.data!==n.data))this.destroyInstance(o),this.instances.delete(e);else if(o){this.setEnabled(o,n.enabled);return}if(!a){typeof i==`string`&&r.t.warn(`[ScriptRuntime] 등록되지 않은 스크립트: ${i} (${t.id})`);return}let s=this.createInstance(e,t.id,n,a);s&&this.instances.set(e,s)}createInstance(e,t,n,i){let a=n.data.props,o=a&&typeof a==`object`&&!Array.isArray(a)?a:void 0,{props:s,issues:c}=h.B(i.props,o);c.forEach(e=>r.t.warn(`[ScriptRuntime] ${i.id}.${e.prop}: ${e.message}`));let l={key:e,objectId:t,componentId:n.id,definition:i,data:n.data,hooks:{},enabled:!1,started:!1,failed:!1,subscriptions:[]};if(this.runHook(l,`create`,()=>{l.hooks=i.create(this.createContext(l),s)}),l.failed)return l;let u=l.hooks.onAwake;return u&&this.runHook(l,`onAwake`,u),this.setEnabled(l,n.enabled),l}setEnabled(e,t){if(e.enabled===t||e.failed)return;e.enabled=t;let n=t?e.hooks.onEnable:e.hooks.onDisable;n&&this.runHook(e,t?`onEnable`:`onDisable`,n)}destroyInstance(e){e.enabled&&!e.failed&&this.setEnabled(e,!1);let t=e.hooks.onDestroy;t&&!e.failed&&this.runHook(e,`onDestroy`,t),e.subscriptions.forEach(e=>e()),e.subscriptions.length=0,e.enabled=!1}rebuildLists(){let e=[],t=[],n=[];this.instances.forEach(r=>{r.failed||((r.hooks.onUpdate||r.hooks.onStart)&&e.push(r),r.hooks.onFixedUpdate&&t.push(r),r.hooks.onLateUpdate&&n.push(r))}),this.updateList=e,this.fixedList=t,this.lateList=n}find(e){let t=this.document?.objects??[],n=[];for(let r of t){if(!Ks(r,e))continue;let t=this.handles.get(r.id)?.handle;t&&n.push(t)}return n}createContext(e){let t=this.handles.get(e.objectId)?.handle;if(!t)throw Error(`[ScriptRuntime Error]: 객체 핸들이 없습니다 ${e.objectId}`);return{objectId:e.objectId,object:t,time:this.time,find:e=>this.find(e),findOne:e=>this.find(e)[0],emit:(e,t)=>this.emit(e,t),on:(t,n)=>{let r=this.on(t,n);return e.subscriptions.push(r),r},services:this.services,commit:e=>this.controller.dispatch(e)}}},Js={getState:()=>({mode:`play`}),subscribe:()=>()=>void 0};function Ys(e){return(0,J.useSyncExternalStore)(e.subscribe,()=>e.getState().mode,()=>e.getState().mode)}function Xs({controller:e,services:n,active:r=!0,playMode:i=Js,scheduler:a}){let o=(0,J.useMemo)(()=>new qs({controller:e,...n?{services:n}:{}}),[e,n]),s=Ys(i),c=r&&s!==`edit`,l=c&&s===`play`;(0,J.useEffect)(()=>{if(c)return o.start(),()=>o.stop()},[c,o]);let u={active:l,...a?{scheduler:a}:{}};return t.t(`script`,e=>o.update(e),{...u,label:`scripts:update`}),t.t(`prePhysics`,e=>o.fixedUpdate(e),{...u,label:`scripts:fixed`}),t.t(`lateUpdate`,e=>o.lateUpdate(e),{...u,label:`scripts:late`}),o}function Zs(e){return Xs(e),null}var Qs={phase:`lateUpdate`,label:`scripts:transform-projection`,order:1};function $s(e,t,n,r){let i=(0,J.useRef)(!1),a=(0,J.useRef)(r);a.current=r,f.br(Qs,()=>{let r=n.current;if(!r)return;let o=e?.getObjectHandle(t);if(o){r.position.set(o.position.x,o.position.y,o.position.z),r.rotation.set(o.rotation.x,o.rotation.y,o.rotation.z),r.scale.set(o.scale.x,o.scale.y,o.scale.z),i.current=!0;return}if(!i.current)return;let{position:s,rotation:c,scale:l}=a.current;r.position.set(s[0],s[1],s[2]),r.rotation.set(c[0],c[1],c[2]),r.scale.set(l[0],l[1],l[2]),i.current=!1},e!==null)}var ec=Math.PI/180,tc={rotator:`gaesup.rotator`,door:`gaesup.door`,triggerZone:`gaesup.triggerZone`,collectible:`gaesup.collectible`,dialogTrigger:`gaesup.dialogTrigger`};function nc(e,t,n){return Math.abs(t-e)<=n?t:e+Math.sign(t-e)*n}var rc=h.I({id:tc.rotator,name:`회전체`,props:{degreesPerSecond:h.V.number({default:45})},create:(e,t)=>({onUpdate:n=>{e.object.rotation.y+=t.degreesPerSecond*ec*n}})}),ic=h.I({id:tc.door,name:`문`,props:{openDegrees:h.V.number({default:90,min:-180,max:180}),degreesPerSecond:h.V.number({default:180,min:1}),requiredItemId:h.V.assetRef({assetKind:`item`,default:null})},create:(e,t)=>{let n=e.object.rotation.y,r=n;return{onInteract:()=>{if(t.requiredItemId&&!e.services.get(`inventory`)?.has(t.requiredItemId,1)){e.emit(`door:locked`,{objectId:e.objectId});return}let i=r!==n;r=i?n:n+t.openDegrees*ec,e.emit(i?`door:closing`:`door:opening`,{objectId:e.objectId})},onUpdate:n=>{let i=t.degreesPerSecond*ec*n;e.object.rotation.y=nc(e.object.rotation.y,r,i)}}}}),ac=h.I({id:tc.triggerZone,name:`트리거 존`,props:{enterEvent:h.V.string({default:`zone:enter`}),exitEvent:h.V.string({default:`zone:exit`}),requiredTag:h.V.string({default:``})},create:(e,t)=>{let n=n=>!t.requiredTag||!!e.findOne({id:n,tag:t.requiredTag});return{onTriggerEnter:r=>{n(r)&&e.emit(t.enterEvent,{zoneId:e.objectId,otherId:r})},onTriggerExit:r=>{n(r)&&e.emit(t.exitEvent,{zoneId:e.objectId,otherId:r})}}}}),oc=h.I({id:tc.collectible,name:`수집 아이템`,props:{itemId:h.V.string({default:``}),count:h.V.number({default:1,min:1}),collectorTag:h.V.string({default:`player`}),removeOnCollect:h.V.boolean({default:!0})},create:(e,t)=>{let n=!1;return{onTriggerEnter:r=>{if(n||!e.findOne({id:r,tag:t.collectorTag}))return;n=!0;let i=e.services.get(`inventory`);t.itemId&&i?.add(t.itemId,t.count),e.emit(`item:collected`,{objectId:e.objectId,itemId:t.itemId,count:t.count,collectorId:r}),t.removeOnCollect&&e.commit({type:`scene-object.delete`,objectId:e.objectId})}}}}),sc=h.I({id:tc.dialogTrigger,name:`대화 트리거`,props:{dialogTreeId:h.V.string({default:``}),npcId:h.V.string({default:``})},create:(e,t)=>({onInteract:()=>{if(!t.dialogTreeId)return;let n=e.services.get(`dialog`);if(n){n.start(t.dialogTreeId,t.npcId||void 0);return}e.emit(`dialog:request`,{dialogTreeId:t.dialogTreeId,npcId:t.npcId})}})});function cc(){let e=[h.z(rc),h.z(ic),h.z(ac),h.z(oc),h.z(sc)];return()=>e.forEach(e=>e())}var lc=[{hour:0,sunColor:`#1f2a48`,ambientColor:`#1a1f2e`,sunIntensity:.05,ambientIntensity:.18,azimuth:-Math.PI/2,elevation:-.3},{hour:5,sunColor:`#3b3a5a`,ambientColor:`#28304a`,sunIntensity:.15,ambientIntensity:.22,azimuth:-Math.PI/3,elevation:-.05},{hour:7,sunColor:`#ffb27a`,ambientColor:`#7a8aa6`,sunIntensity:.55,ambientIntensity:.3,azimuth:-Math.PI/4,elevation:.25},{hour:10,sunColor:`#fff1c8`,ambientColor:`#aab4c8`,sunIntensity:.85,ambientIntensity:.34,azimuth:-Math.PI/8,elevation:.7},{hour:13,sunColor:`#ffffff`,ambientColor:`#b6c2d8`,sunIntensity:1.05,ambientIntensity:.38,azimuth:0,elevation:1.05},{hour:16,sunColor:`#ffe0a8`,ambientColor:`#a8b4cc`,sunIntensity:.85,ambientIntensity:.34,azimuth:Math.PI/6,elevation:.65},{hour:18,sunColor:`#ff9a5a`,ambientColor:`#806a8a`,sunIntensity:.55,ambientIntensity:.28,azimuth:Math.PI/3,elevation:.18},{hour:20,sunColor:`#5a3f6a`,ambientColor:`#34304a`,sunIntensity:.18,ambientIntensity:.22,azimuth:Math.PI/2,elevation:-.05},{hour:24,sunColor:`#1f2a48`,ambientColor:`#1a1f2e`,sunIntensity:.05,ambientIntensity:.18,azimuth:3*Math.PI/4,elevation:-.3}],uc={spring:new q.Color(`#fff0f5`),summer:new q.Color(`#fff5d8`),autumn:new q.Color(`#ffd9b0`),winter:new q.Color(`#dfe8f5`)},dc={sunny:{sun:1,ambient:1,tint:new q.Color(`#ffffff`)},cloudy:{sun:.55,ambient:.95,tint:new q.Color(`#cfd6e2`)},rain:{sun:.3,ambient:.85,tint:new q.Color(`#90a0b8`)},snow:{sun:.65,ambient:1.1,tint:new q.Color(`#dfeaf5`)},storm:{sun:.2,ambient:.75,tint:new q.Color(`#5a6a82`)}};function fc(){return{sunColor:new q.Color,ambientColor:new q.Color,sunIntensity:0,ambientIntensity:0,azimuth:0,elevation:0}}function pc(e){let t=[...e].sort((e,t)=>e.hour-t.hour).map(e=>({...e,sunColor:new q.Color(e.sunColor),ambientColor:new q.Color(e.ambientColor)}));return(e,n)=>{let r=(e%24+24)%24,i=t[0],a=t[t.length-1];for(let e=0;e<t.length-1;e+=1){let n=t[e],o=t[e+1];if(r>=n.hour&&r<=o.hour){i=n,a=o;break}}let o=q.MathUtils.clamp((r-i.hour)/Math.max(1e-4,a.hour-i.hour),0,1);return n.sunColor.copy(i.sunColor).lerp(a.sunColor,o),n.ambientColor.copy(i.ambientColor).lerp(a.ambientColor,o),n.sunIntensity=q.MathUtils.lerp(i.sunIntensity,a.sunIntensity,o),n.ambientIntensity=q.MathUtils.lerp(i.ambientIntensity,a.ambientIntensity,o),n.azimuth=q.MathUtils.lerp(i.azimuth,a.azimuth,o),n.elevation=q.MathUtils.lerp(i.elevation,a.elevation,o),n}}var mc=new q.Vector3(0,1,0),hc=new q.Vector3,gc=new q.Vector3,_c=new q.Vector3,vc=new q.Vector3,yc=new q.Vector3;function bc(e,t,n){return e.getWorldDirection(vc),vc.y=0,vc.lengthSq()>1e-8&&vc.normalize().multiplyScalar(t*.4),n.set(e.position.x+vc.x,0,e.position.z+vc.z)}function xc(e,t){return Math.round(e/t)*t}function Sc(e,t,n,r){_c.copy(n).normalize(),hc.crossVectors(mc,_c),hc.lengthSq()<1e-8&&hc.set(1,0,0),hc.normalize(),gc.crossVectors(_c,hc),yc.copy(_c).multiplyScalar(xc(t.dot(_c),r)).addScaledVector(hc,xc(t.dot(hc),r)).addScaledVector(gc,xc(t.dot(gc),r)),e.target.position.copy(yc),e.target.updateMatrixWorld(),e.position.copy(yc).add(n)}var Cc=.0035;function wc({rigDistance:e=60,castShadow:n=!0,shadowMapSize:r,shadowRange:i=90,followCamera:a=!0,keyframes:o,damping:s=.12}={}){let c=B.i(),l=r??c?.shadowMapSize??1024,u=(0,Y.useThree)(e=>e.get),d=v.i(),f=j.i(),p=(0,J.useRef)(null),m=(0,J.useRef)(null),h=(0,J.useMemo)(()=>pc(o??lc),[o]),g=(0,J.useMemo)(()=>({sky:fc(),sunOffset:new q.Vector3,appliedOffset:new q.Vector3,focus:new q.Vector3}),[]);return t.t(`effects`,()=>{let t=p.current,n=m.current;if(!t||!n)return;let r=f.getState().time,o=d.getState().current,c=q.MathUtils.clamp(o?.intensity??.5,0,1),_=dc[o?.kind??`sunny`]??dc.sunny,v=uc[r.season]??uc.spring,y=h(r.hour+r.minute/60,g.sky),b=q.MathUtils.clamp(s,.01,1);y.sunColor.lerp(v,.18).lerp(_.tint,.35+.25*c),y.ambientColor.lerp(v,.2).lerp(_.tint,.3+.3*c),t.color.lerp(y.sunColor,b),n.color.lerp(y.ambientColor,b);let x=q.MathUtils.lerp(1,_.sun,.5+.5*c),S=q.MathUtils.lerp(1,_.ambient,.5+.5*c);t.intensity=q.MathUtils.lerp(t.intensity,y.sunIntensity*x,b),n.intensity=q.MathUtils.lerp(n.intensity,y.ambientIntensity*S,b);let C=Math.cos(y.elevation),{sunOffset:w,appliedOffset:T,focus:E}=g;w.set(Math.cos(y.azimuth)*C*e,Math.max(2,Math.sin(y.elevation)*e),Math.sin(y.azimuth)*C*e),(T.lengthSq()===0||T.angleTo(w)>Cc)&&T.copy(w),a?bc(u().camera,i,E):E.set(0,0,0),Sc(t,E,T,i*2/l)},{label:`rendering:dynamic-sky`}),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`ambientLight`,{ref:m,intensity:.3,color:`#b6c2d8`}),(0,X.jsx)(`directionalLight`,{ref:p,castShadow:n,"shadow-mapSize":[l,l],"shadow-normalBias":.06,"shadow-camera-near":1,"shadow-camera-far":Math.max(120,e*2),"shadow-camera-top":i,"shadow-camera-right":i,"shadow-camera-bottom":-i,"shadow-camera-left":-i,intensity:.8,color:`#ffffff`,position:[20,30,10]})]})}var Tc=.9;function Ec(e,t){let n=Array(e).fill(1/0),r=Array(e).fill(!1),i=e=>e>0?Tc/e:1/0,a=!0;return{tick(o,s=!1){for(let t=0;t<e;t++)n[t]+=o;if(r.fill(!1),s||a)return a=!1,r.fill(!0),n.fill(0),r;e>0&&n[0]>=i(t.near)&&(r[0]=!0,n[0]=0);let c=-1,l=i(t.far);for(let t=1;t<e;t++)n[t]>=l&&(l=n[t],c=t);return c>0&&(r[c]=!0,n[c]=0),r}}}var Dc=70,Oc=6,kc=Math.cos(q.MathUtils.degToRad(.25)),Ac={low:{cascades:2,mapSize:512,maxFar:80,lightMargin:60,updateHz:{near:20,far:5}},medium:{cascades:3,mapSize:1024,maxFar:140,lightMargin:100,updateHz:{near:30,far:10}},high:{cascades:4,mapSize:2048,maxFar:220,lightMargin:140,updateHz:{near:30,far:15}}},jc={near:15,far:5};function Mc(e,t){return typeof e==`number`?{near:e,far:e}:{near:e?.near??t.near,far:e?.far??t.far}}async function Nc(e,t){let{CSMShadowNode:n}=await import(`three/addons/csm/CSMShadowNode.js`),r=new n(e,{cascades:t.cascades,maxFar:t.maxFar,mode:t.mode,lightMargin:t.lightMargin});r.fade=t.fade;let i=r,a=i._init;return typeof a==`function`&&(i._init=function(...e){a.apply(this,e),i._shadowNodes?.slice(1).forEach(I.st),i.lights?.forEach(({shadow:e})=>{e.autoUpdate=!1,e.needsUpdate=!0})}),r}function Pc({position:e=[28,36,18],color:n=`#ffffff`,intensity:i=1.8,quality:a,castShadow:o=!0,cascades:s,maxFar:c,mode:l=`practical`,lightMargin:u,fade:d=!0,shadowMapSize:f,shadowBias:m=-15e-5,shadowNormalBias:h=.04,shadowRadius:g=1,updateHz:_}){let v=B.i(),y=a??v?.tier??`medium`,b=(0,J.useRef)(null),x=(0,J.useMemo)(()=>new q.Vector3(...e),[e]),S=(0,J.useMemo)(()=>new q.Vector3,[]),C=(0,J.useRef)(null),w=(0,J.useMemo)(()=>new q.Vector3,[]),T=(0,J.useMemo)(()=>new q.Vector3(NaN,NaN,NaN),[]),[E,D]=(0,J.useState)(!1),O=(0,Y.useThree)(e=>e.gl),k=(0,Y.useThree)(e=>e.camera),A=(0,J.useMemo)(()=>new Float64Array(16),[]),j=(0,J.useRef)(!1),M=Ac[y],P=s??M.cascades,F=c??M.maxFar,ee=u??M.lightMargin,I=f??M.mapSize,L=Mc(_,M.updateHz),R=p.o(e=>e.cpuBound),z=R?Math.min(L.near,jc.near):L.near,V=R?Math.min(L.far,jc.far):L.far,H=N.h(O)===`webgpu`,U=H?P:1,te=(0,J.useMemo)(()=>Ec(U,{near:z,far:V}),[U,z,V]),W=p.o(e=>e.setShadow);return(0,J.useEffect)(()=>{if(o)return W({maps:U,mapSize:I,nearHz:z,farHz:V}),()=>W(null)},[o,V,U,z,I,W]),(0,J.useEffect)(()=>{let e=b.current;if(!e||(D(!1),e.shadow.radius=g,!o||N.h(O)!==`webgpu`))return;let t=!1,n=e.shadow;return Nc(e,{cascades:P,maxFar:F,mode:l,lightMargin:ee,fade:d}).then(e=>{if(t){e.dispose();return}n.shadowNode=e,C.current=e,D(!0);let r=k.projectionMatrix.elements;for(let e=0;e<16;e+=1)A[e]=r[e]??0;j.current=!0}).catch(e=>{t||(D(!0),r.t.error(`Cascaded sun shadow initialization failed`,e instanceof Error?e:String(e)))}),()=>{t=!0;let e=C.current;e&&(n.shadowNode===e&&delete n.shadowNode,C.current=null,j.current=!1,e.dispose())}},[k,o,d,l,A,O,P,ee,F,I,m,h,g]),t.t(`effects`,e=>{let t=b.current;if(!t||!o)return;H||(Sc(t,bc(k,Dc,S),x,140/I),t.shadow.autoUpdate=!1);let n=!1,r=S.copy(t.position).sub(t.target.position).normalize();r.dot(w)>=kc||(w.copy(r),n=!0);let i=k.getWorldPosition(S);i.distanceTo(T)<=Oc||(n=!0),T.copy(i);let a=C.current;if(a&&a.camera!==null&&j.current){let e=k.projectionMatrix.elements;for(let t=0;t<16;t+=1)if(A[t]!==e[t]){for(let t=0;t<16;t+=1)A[t]=e[t]??0;a.updateFrustums(),n=!0;break}}let s=te.tick(e,n);if(!H){s[0]&&(t.shadow.needsUpdate=!0);return}a?.lights?.forEach(({shadow:e},t)=>{s[t]&&(e.needsUpdate=!0)})},{label:`rendering:cascaded-sun`}),(0,X.jsx)(`directionalLight`,{ref:b,castShadow:o&&(N.h(O)!==`webgpu`||E),position:e,intensity:i,color:n,"shadow-mapSize":[I,I],"shadow-camera-near":1,"shadow-camera-far":F,"shadow-camera-top":Dc,"shadow-camera-right":Dc,"shadow-camera-bottom":-70,"shadow-camera-left":-70,"shadow-bias":m,"shadow-normalBias":h},`${k.uuid}:${P}:${I}:${F}:${ee}:${l}:${d}:${m}:${h}:${g}`)}var Fc=64,Ic=32;function Lc(e,t,n){let r=new q.Color(e),i=new q.Color(t),a=new q.Color(n),o=new q.Color,s=new Float32Array(8192);for(let e=0;e<Ic;e++){let t=Math.sin(((e+.5)/Ic-.5)*Math.PI);t>=0?o.copy(i).lerp(r,q.MathUtils.smoothstep(t,0,.7)):o.copy(i).lerp(a,q.MathUtils.smoothstep(-t,0,.25));for(let t=0;t<Fc;t++){let n=(e*Fc+t)*4;s[n]=o.r,s[n+1]=o.g,s[n+2]=o.b,s[n+3]=1}}let c=new q.DataTexture(s,Fc,Ic,q.RGBAFormat,q.FloatType);return c.mapping=q.EquirectangularReflectionMapping,c.colorSpace=q.LinearSRGBColorSpace,c.magFilter=q.LinearFilter,c.minFilter=q.LinearFilter,c.needsUpdate=!0,c}function Rc({sky:e=`#bfe2ff`,horizon:t=`#f3f9ff`,ground:n=`#6f8a57`,intensity:r=.35}){let i=(0,Y.useThree)(e=>e.scene),a=new q.Color(e).getHex(),o=new q.Color(t).getHex(),s=new q.Color(n).getHex(),c=(0,J.useMemo)(()=>Lc(a,o,s),[a,o,s]);return(0,J.useEffect)(()=>{let e=i.environment;return i.environment=c,()=>{i.environment===c&&(i.environment=e),c.dispose()}},[i,c]),(0,J.useEffect)(()=>{let e=i.environmentIntensity;return i.environmentIntensity=r,()=>{i.environmentIntensity=e}},[i,r]),null}var zc=([e,t,n],[r,i,a],{x:o,y:s,z:c})=>Math.abs(o-e)<=r/2&&Math.abs(s-t)<=i/2&&Math.abs(c-n)<=a/2;function Bc({center:e,size:n,profile:r,lamp:i,blendSeconds:a=.6}){let o=(0,Y.useThree)(e=>e.scene),c=s.n(),l=(0,J.useRef)(null),u=(0,J.useRef)({blend:0,profile:r}).current;if(u.profile=r,(0,J.useEffect)(()=>{let e=f.g(o);return e.zones.set(u,u),()=>{e.zones.delete(u),e.apply()}},[o,u]),t.t(`effects`,t=>{let r=c?.stateManager.getActiveState().position,s=r&&zc(e,n,r)?1:0;if(u.blend===s&&s===0)return;let d=t/Math.max(a,.001);u.blend=s>u.blend?Math.min(s,u.blend+d):Math.max(s,u.blend-d),f.g(o).apply(),l.current&&(l.current.intensity=(i?.intensity??0)*u.blend)},{label:`lighting:zone`}),!i)return null;let d=e[1]-n[1]/2;return(0,X.jsx)(`pointLight`,{ref:l,position:[e[0],d+(i.height??2.6),e[2]],color:i.color??`#ffd9a8`,intensity:0,distance:i.distance??10,decay:2})}function Vc(e=300){let[t,n]=(0,J.useState)(0);return(0,J.useEffect)(()=>{let t,r=()=>{clearTimeout(t),t=setTimeout(()=>n(e=>e+1),e)};return window.addEventListener(N.d,r),()=>{window.removeEventListener(N.d,r),clearTimeout(t)}},[e]),t}exports.ACTION_EQUIPMENT_PANEL_DEFAULT_CLASSES=Fa,exports.ACTION_EQUIPMENT_PANEL_DEFAULT_FACE_LABELS=Pa,exports.ACTION_EQUIPMENT_PANEL_DEFAULT_FACE_SEQUENCE=Aa,exports.ACTION_EQUIPMENT_PANEL_DEFAULT_FEATURES=Ma,exports.ACTION_EQUIPMENT_PANEL_DEFAULT_LABELS=Na,exports.ACTION_EQUIPMENT_PANEL_DEFAULT_SLOT_COUNT=ja,exports.AFTER_MOTION_FRAME_ORDER=t.h,exports.ANIMATION_PANEL_DEFAULT_CLASSES=h.Qt,exports.ANIMATION_PANEL_DEFAULT_LABELS=h.$t,exports.ANIMATION_PANEL_DEFAULT_TABS=h.en,exports.ANIMATOR_ANY_STATE=n.a,exports.ANIMATOR_DEFAULT_TRANSITION_DURATION=n.r,exports.ActionEquipmentPanel=Za,exports.ActiveObjects=u.s,exports.Airplane=u.u,exports.AnimationBridge=f.pr,exports.AnimationClockLoop=f.et,exports.AnimationController=h.in,exports.AnimationDebugPanel=h.rn,exports.AnimationPanel=h.tn,exports.AnimationPlayer=h.nn,exports.AnimationSystem=n.t,exports.AnimatorRuntime=n.i,exports.AssetPreviewCanvas=ee.t,exports.AudioControls=Zr,exports.AutomationSystem=p.d,exports.BODY_REGIONS=f.x,exports.BUILDING_BASIC_OBJECT_OPTIONS=f.Yt,exports.BUILDING_FLAG_STYLE_OPTIONS=f.Xt,exports.BUILDING_PLACED_OBJECT_OPTIONS=f.Zt,exports.BUILDING_STORE_SERVICE=f.Vt,exports.BUILDING_TILE_GROUP_DRAG_TYPE=f.Qt,exports.BUILDING_TILE_OBJECT_OPTIONS=f.$t,exports.BUILDING_TILE_PRESETS=f.en,exports.BUILDING_TILE_PRESET_DRAG_TYPE=f.tn,exports.BUILDING_TILE_SHAPE_OPTIONS=f.nn,exports.BUILDING_TREE_COLOR_PRESETS=f.rn,exports.BUILDING_TREE_OPTIONS=f.in,exports.BUILDING_WALL_KIND_OPTIONS=f.an,exports.BUILDING_WALL_PRESETS=f.on,exports.BUILDING_WEATHER_EFFECT_OPTIONS=f.sn,exports.BUILDING_WORLD_SURFACE_OPTIONS=f.cn,exports.BUILTIN_SCRIPT_IDS=tc,exports.BaseCameraSystem=T._,exports.BaseController=T.p,exports.Billboard=I.U,exports.BlockSystem=I.K,exports.BrowserGamepadHub=u.V,exports.BuildingController=I.h,exports.BuildingGpuCullingDriver=I.f,exports.BuildingGpuMirrorDriver=I.m,exports.BuildingGpuUploadDriver=I.p,exports.BuildingIndirectArgsUploadDriver=I.u,exports.BuildingIndirectDrawDriver=I.d,exports.BuildingNavigationObstacleDriver=I.tt,exports.BuildingPanel=h.O,exports.BuildingRenderStateDriver=I._,exports.BuildingSystem=I.x,exports.BuildingUI=I.s,exports.BuildingVisibilityDriver=I.g,exports.BuoyancyComponent=ue,exports.CAMERA_COLLIDER_LAYER=T.g,exports.CAMERA_CONTROLLER_DEFAULT_CLASSES=g.t,exports.CAMERA_CONTROLLER_DEFAULT_LABELS=g.n,exports.CAMERA_CONTROLLER_DEFAULT_MODES=g.r,exports.CAMERA_CONTROLLER_MODE_OPTIONS=g.i,exports.CAMERA_DEBUG_PANEL_DEFAULT_CLASSES=h.hn,exports.CAMERA_DEBUG_PANEL_DEFAULT_FIELDS=h.gn,exports.CAMERA_DEBUG_PANEL_DEFAULT_INTERVAL=h._n,exports.CAMERA_DEBUG_PANEL_DEFAULT_LABELS=h.vn,exports.CAMERA_DEBUG_PANEL_DEFAULT_PRECISION=h.yn,exports.CAMERA_PANEL_DEFAULT_CLASSES=h.an,exports.CAMERA_PANEL_DEFAULT_LABELS=h.on,exports.CAMERA_PANEL_DEFAULT_TABS=h.sn,exports.CAMERA_PRESETS_DEFAULT_CLASSES=h.un,exports.CAMERA_PRESETS_DEFAULT_LABELS=h.dn,exports.CAMERA_PRESETS_DEFAULT_PRESETS=h.fn,exports.CAMERA_PRESETS_DEFAULT_SMOOTHING=h.pn,exports.CAMERA_SETTINGS_DEFAULT_CLASSES=h.Cn,exports.CAMERA_SETTINGS_DEFAULT_LABELS=h.wn,exports.CAMERA_SETTINGS_DEFAULT_SECTIONS=h.Tn,exports.CHARACTER_ANIMATOR_FRAME_PRIORITY=f.F,exports.CHARACTER_ANIMATOR_PARAMETERS=f.z,exports.CHARACTER_LOCOMOTION=f.B,exports.CHARACTER_MENU_DEFAULT_FEATURES=fi,exports.CHARACTER_MENU_DEFAULT_SECTIONS=ui,exports.CHARACTER_MENU_DEFAULT_SLOTS=di,exports.CHARACTER_SKIN_NODE_NAMES=f._,exports.CONTENT_SCHEMA_VERSION=W.o,exports.Camera=T.n,exports.CameraController=h.xn,exports.CameraDebugPanel=h.mn,exports.CameraDebugger=Wt,exports.CameraPanel=h.cn,exports.CameraPresets=h.ln,exports.CameraSettingsTab=h.Sn,exports.CameraSystem=T.a,exports.CascadedSun=Pc,exports.Character=u.l,exports.CharacterCreator=_a,exports.CharacterMenu=ma,exports.ChaseController=T.u,exports.CinematicPanel=h.E,exports.CircularPluginDependencyError=D.r,exports.Clicker=L.i,exports.ColorGrade=re.r,exports.CommandPalette=h.En,exports.ConnectionForm=G.p,exports.ContactShadows=f.m,exports.ControllerWrapper=L.t,exports.GaesupController=L.t,exports.DEFAULT_APPEARANCE=b.w,exports.DEFAULT_ASSET_IMPORT_LIMITS=P.n,exports.DEFAULT_BUILDING_GRID_EXTENSION_ID=I.t,exports.DEFAULT_BUILDING_OBJECT_CATALOG=I.rt,exports.DEFAULT_BUILDING_PLACEMENT_EXTENSION_ID=I.n,exports.DEFAULT_BUILDING_SAVE_EXTENSION_ID=I.r,exports.DEFAULT_BUILDING_STORE_SERVICE_ID=I.i,exports.DEFAULT_CAMERA_SAVE_EXTENSION_ID=qt,exports.DEFAULT_CAMERA_STORE_SERVICE_ID=Jt,exports.DEFAULT_CAMERA_SYSTEM_EXTENSION_ID=Kt,exports.DEFAULT_CHARACTER_ANIMATOR_ID=f.V,exports.DEFAULT_CHARACTER_ATTACHMENT_SOCKETS=va,exports.DEFAULT_CHARACTER_EQUIPMENT_PRESETS=b.h,exports.DEFAULT_CHARACTER_ID=b.y,exports.DEFAULT_EDITOR_SHORTCUTS=h.On,exports.DEFAULT_FIGURE_LIMITS=P.r,exports.DEFAULT_INPUT_ACTIONS=L.o,exports.DEFAULT_INTERACTION_INPUT_EXTENSION_ID=p.f,exports.DEFAULT_INTERACTION_KEY=I.lt,exports.DEFAULT_INTERACTION_RANGE=I.ut,exports.DEFAULT_MOTIONS_INPUT_EXTENSION_ID=f.tt,exports.DEFAULT_MOTIONS_PHYSICS_EXTENSION_ID=f.nt,exports.DEFAULT_MOTIONS_RUNTIME_SERVICE_ID=f.rt,exports.DEFAULT_NETWORK_CONFIG=G.l,exports.DEFAULT_NPC_SCALE=y.s,exports.DEFAULT_PREFAB_METADATA=h.it,exports.DEFAULT_PROJECT_SETTINGS=Q,exports.DEFAULT_RUNTIME_SAVE_DIAGNOSTICS_SERVICE_ID=u.Y,exports.DEFAULT_SCENE_ID=b.m,exports.DEFAULT_SCENE_LAYERS=Ve,exports.DEFAULT_SCENE_LAYER_TAG_REGISTRY=Ue,exports.DEFAULT_SCENE_TAGS=He,exports.DEFAULT_SCENE_TRANSFORM=h.Nt,exports.DEFAULT_SERVER_COMMAND_AUTHORITY_SERVICE_ID=te.t,exports.DEFAULT_SQUARE_GRID_SPEC=f.Zn,exports.DEFAULT_VISIT_DOMAINS=G.c,exports.DEFAULT_WORLD_SAVE_ENVIRONMENT=u.p,exports.DRAW_CLUSTER_BILLBOARD=y.rt,exports.DRAW_CLUSTER_BLOCK=y.it,exports.DRAW_CLUSTER_COUNT=y.at,exports.DRAW_CLUSTER_DESCRIPTORS=y.Z,exports.DRAW_CLUSTER_FIRE=y.ot,exports.DRAW_CLUSTER_FLAG=y.st,exports.DRAW_CLUSTER_GRASS=y.ct,exports.DRAW_CLUSTER_MODEL=y.lt,exports.DRAW_CLUSTER_SAKURA=y.ut,exports.DRAW_CLUSTER_SAND=y.dt,exports.DRAW_CLUSTER_SNOWFIELD=y.ft,exports.DRAW_CLUSTER_TILE=y.pt,exports.DRAW_CLUSTER_WALL=y.mt,exports.DRAW_CLUSTER_WATER=y.ht,exports.DialogBox=Cr,exports.DialogRunner=x.g,exports.DirectionComponent=f.mt,exports.DuplicateExtensionError=D.f,exports.DuplicatePluginError=D.i,exports.DuplicateSaveDomainBindingError=b.t,exports.DynamicFog=I.X,exports.DynamicSky=wc,exports.EDITOR_PANEL_COMPONENT_KIND=h.Hn,exports.EMPTY_EDITOR_SELECTION=h.u,exports.EMPTY_OUTFITS=b.b,exports.Editor=h.C,exports.EditorLayout=h.w,exports.Elr=f.gt,exports.EntityController=L.n,exports.EntityStateManager=f.pt,exports.FACE_STYLE_LABEL=b.T,exports.FLAG_STYLE_META=f.ln,exports.FRAME_PHASES=t.g,exports.FRAME_PRE_PHYSICS_PRIORITY=t.s,exports.FRAME_SCHEDULER_PRIORITY=t.c,exports.Fire=I.H,exports.FirstPersonController=T.d,exports.FixedController=T.o,exports.FixedStepClock=f.Q,exports.FocusableObject=On,exports.Footprints=io,exports.Footsteps=ti,exports.FrameScheduler=t.f,exports.FrameSchedulerHost=d.n,exports.FreePlacementAdapter=ce,exports.GAESUP_SKELETON_ID=f.S,exports.GAMEPLAY_EVENT_ACTION_TYPES=V.t,exports.GAMEPLAY_EVENT_CONDITION_TYPES=V.n,exports.GAMEPLAY_EVENT_TRIGGER_TYPES=V.r,exports.GLTFAssetCache=i.t,exports.GLTF_CONCURRENCY=i.n,exports.GLTF_RETAINED=i.r,exports.GLTF_RETRY_MS=i.i,exports.GPU_META_STRIDE=y.K,exports.GPU_SPATIAL_STRIDE=y.q,exports.GaeSupProps=y.t,exports.WorldProps=y.t,exports.GaesupErrorBoundary=G.b,exports.GaesupRuntimeProvider=A.i,exports.GaesupStoreProvider=p.r,exports.GaesupWorld=A.n,exports.World=A.n,exports.WorldConfigProvider=A.n,exports.GaesupWorldContent=A.t,exports.GamePad=ne.t,exports.Gamepad=ne.t,exports.GameplayArea=Tn,exports.GameplayEventEngine=x.t,exports.GameplayEventPanel=h.D,exports.GameplayEventRegistry=w.n,exports.GpuBatchBridge=I.J,exports.Grass=I.O,exports.GrassDriver=I.z,exports.GrassManagerProvider=I.B,exports.GravityComponent=f.zt,exports.GridHelper=I.W,exports.GroundClicker=L.r,exports.HAIR_STYLE_LABEL=b.E,exports.HierarchyPanel=h.Wt,exports.HouseDoor=Is,exports.HttpAssetSource=P.u,exports.HttpContentBundleSource=W.t,exports.INDIRECT_DRAW_STRIDE=y.Q,exports.IdleFrameRate=Yo,exports.ImpulseComponent=f.ft,exports.InMemoryEventBus=O.t,exports.InMemoryExtensionRegistry=D.p,exports.IndexedDBAdapter=b.s,exports.InnerGroupRef=f.v,exports.InputActionMap=Ro,exports.InputRecorder=zo,exports.InputReplay=Bo,exports.InspectorPanel=h.F,exports.Interactable=I.dt,exports.InteractionBridge=p.u,exports.InteractionPrompt=kn,exports.InteractionSystem=p.y,exports.InteractionTracker=Ht,exports.IsometricController=T.c,exports.LOCALE_LABEL=uo,Object.defineProperty(exports,"LegacyGrid",{enumerable:!0,get:function(){return se.Grid}}),exports.LightingZone=Bc,exports.LocalStorageAdapter=b.o,exports.LutOverlay=K.t,exports.MAX_QUALITY_PIXEL_RATIO=B.t,exports.MENU_PRESETS=yi,exports.MOTIONS_TELEPORT_EVENT=f.it,exports.MOTION_PANEL_DEFAULT_CLASSES=h.Kt,exports.MOTION_PANEL_DEFAULT_LABELS=h.qt,exports.MOTION_PANEL_DEFAULT_TABS=h.Jt,exports.ManagedMotionEntity=Lt,exports.MaterialManager=I.q,exports.MathUtils=sr,exports.MemoizationManager=f.jt,exports.MiniMap=Kn,exports.MinimapObject=Yn,exports.MinimapPlatform=Jn,exports.MinimapSystem=y.n,exports.MissingExtensionError=D.m,exports.MissingPlacementEntryError=f.Wn,exports.MissingPluginDependencyError=D.a,exports.MockNetworkAdapter=H.l,exports.ModelRenderer=f.y,exports.MotionAnimationController=En,exports.MotionBridge=f.ur,exports.MotionController=h.Zt,exports.MotionDebugPanel=h.Xt,exports.MotionPanel=h.Yt,exports.MotionService=f.fr,exports.MotionSystem=f.dr,exports.MotionUI=Pn,exports.MultiplayerCanvas=G.d,exports.NPCEventEditor=dn,exports.NPCInstance=I.at,exports.NPCPerceptionIndex=y.d,exports.NPCPreview=I.$,exports.NPCSimulation=y.l,exports.NPCSystem=I.et,exports.NPC_STORE_SERVICE=y.r,exports.Nameplates=z.n,exports.NamespacedSaveAdapter=b.a,exports.NavigationSystem=E.c,exports.OUTFIT_SLOT_LABEL=b.D,exports.OutfitAvatar=Oa,exports.Outlined=re.t,exports.PHYSICS_STEP_PRIORITY=t.l,exports.PLAYER_PROGRESS_DOMAINS=U.t,exports.PREFAB_DOCUMENT_VERSION=h.at,exports.PROJECT_ASSETS_PANEL_DEFAULT_CLASSES=h.j,exports.PROJECT_ASSETS_PANEL_DEFAULT_KIND_OPTIONS=h.M,exports.PROJECT_ASSETS_PANEL_DEFAULT_LABELS=h.N,exports.PROJECT_ASSETS_PANEL_DEFAULT_TABS=h.P,exports.PROJECT_FILE_VERSION=xs,exports.PROJECT_SETTINGS_VERSION=$o,exports.PartsGroupRef=f.b,exports.PassiveAirplane=u.a,exports.PassiveCharacter=u.i,exports.PassiveObjects=u.r,exports.PassiveVehicle=u.o,exports.PerformancePanel=h.Gt,exports.PhysicsBridge=f.ut,exports.PhysicsEntity=f.n,exports.PhysicsSystem=f.dt,exports.PlacementEngine=f.Gn,exports.PlacementRejectedError=f.Kn,exports.PlayerInfoOverlay=G.f,exports.PlayerNetworkManager=G.y,exports.PlayerPositionTracker=G.v,exports.PluginManifestValidationError=D.o,exports.PluginRegistry=D.s,exports.PluginValidationAssertionError=k.t,exports.PluginVersionMismatchError=D.c,exports.ProjectAssetsPanel=h.A,exports.Qt=f._t,exports.QualityProfileProvider=B.n,exports.RENDERER_LOST_EVENT=N.d,exports.RUNTIME_GAESUP_STORE_SERVICE_ID=p.i,exports.RUNTIME_OWNED_MOTIONS_SERVICE_ID=f.at,exports.RUNTIME_SAVE_BINDING_REJECTED_EVENT=u.X,exports.RUNTIME_SAVE_DIAGNOSTIC_EVENT=u.Z,exports.RUNTIME_TIME_STORE_SERVICE_ID=f.X,exports.RemotePlayer=G.h,exports.RemotePlayers=G.m,exports.ResizablePanel=h.S,exports.Rideable=u.t,exports.RideableUI=u.n,exports.RoomPortal=Rs,exports.RoomRoot=Ls,exports.RoomVisibilityDriver=Hs,exports.RuntimeSaveDiagnosticsToaster=$n,exports.SCENE_COMPONENT_TYPES=h.wt,exports.SCENE_DOCUMENT_SAVE_KEY=gt,exports.SCENE_DOCUMENT_VERSION=h.Pt,exports.SCENE_OBJECT_BODY_ID_KEY=xt,exports.SEED_ASSETS=l.o,exports.SEED_GAMEPLAY_EVENTS=V.l,exports.SIMULATION_PHASES=f.$,exports.STANDARD_GAMEPAD_BUTTONS=u.R,exports.Sakura=I.L,exports.SakuraBatch=I.R,exports.Sand=I.E,exports.SandBatch=I.D,exports.SaveLoadManager=u.b,exports.SaveSystem=b.n,exports.SceneDocumentManager=bt,exports.SceneFader=Ns,exports.SceneObjectBody=kt,exports.SceneObjectTransformGizmo=h.v,exports.SceneRoot=Ps,exports.ScriptRuntime=qs,exports.ScriptRuntimeHost=Zs,exports.SideScrollController=T.s,exports.SkyEnvironment=Rc,exports.Snow=I.I,exports.Snowfield=I.w,exports.SnowfieldBatch=I.T,exports.SpeechBalloon=z.a,exports.SquareGridAdapter=f.Qn,exports.StudioPanel=h.T,exports.TIME_CONSTANTS=j.a,exports.Teleport=Fn,exports.TeleportDropEffect=lo,exports.TeleportMarker=Rn,exports.TeleportOnClick=Ln,exports.ThirdPersonController=T.f,exports.ThreeAnimatorBinding=n.n,exports.ThreeObjectPool=ir,exports.TileSystem=I.C,exports.TimeHUD=Sr,exports.TimeStoreProvider=j.t,exports.ToastHost=Zn,exports.ToonOutlines=re.n,exports.TopDownController=T.l,exports.TouchControls=ko,exports.UIBridge=tr,exports.UISystem=zn,exports.V3=f.vt,exports.V30=f.yt,exports.V31=f.bt,exports.ValidationUtils=or,exports.Vehicle=u.c,exports.VehiclePanel=h.k,exports.WORLD_SNAPSHOT_DOMAINS=U.n,exports.WallSystem=I.S,exports.Water=I.A,exports.WeatherEffect=I.Q,exports.WeatherHUD=Mr,exports.WindComponent=de,exports.WorldBridge=M.t,exports.WorldGamepadInput=u.z,exports.WorldInputActions=T.b,exports.WorldInputScope=f.hr,exports.WorldInputSurface=g.a,exports.WorldPhysics=d.t,exports.WorldSystem=M.n,exports.WorldViews=u.k,exports.addPrefabInstance=h.H,exports.applyAgentBehaviorBlueprint=y.x,exports.applyBuildingNavigationObstacles=I.nt,exports.applyCharacterEquipmentPreset=b.g,exports.applyGamepadDeadzone=u.B,exports.applyInstanceToPrefab=h.Y,exports.applyNPCBehaviorBlueprint=y.S,exports.applyPrefabOverrides=h.X,exports.applySceneComponentUpdate=h.ft,exports.applySceneDocumentBatch=h.pt,exports.applySceneDocumentCommand=h.dt,exports.applySceneTransform=h.y,exports.applyToonToScene=f.c,exports.applyVisitSnapshot=G.i,exports.assertValidGaesupPlugin=k.n,exports.assetToMeshConfig=ee.n,exports.attachReinforcementAdapter=y._,exports.audioPlugin=Hr,exports.autoDetectProfile=B.o,exports.blockToPlacementEntry=f.un,exports.buildAssetDependencyGraph=P.s,exports.buildBuildingGpuMirror=y.J,exports.buildBuildingIndirectDrawMirror=y.$,exports.buildingCellToWorld=f.dn,exports.buildingGridAdapter=f.fn,exports.buildingGroupsToPlacementEntries=f.pn,exports.buildingPlacementAdapter=f.mn,exports.buildingPlugin=I.a,exports.cache=nr,exports.calcAngleByVector=f.xt,exports.calcNorm=f.St,exports.cameraPlugin=cn,exports.cameraUtils=T.m,exports.canSceneLayersCollide=Xe,exports.captureVisitRestorePoint=G.a,exports.cellToTilePosition=f.hn,exports.characterPlugin=ci,exports.classifyTier=B.s,exports.clearEditorSelection=h.d,exports.clearTrigCache=f.Mt,exports.cloneCameraSystemConfig=T.v,exports.clonePrefabDocument=jt,exports.cloneProjectSettings=ss,exports.cloneSceneDocument=h.bt,exports.collectAssetReferences=P.c,exports.collectPrefabSubtreeIds=h.ot,exports.collectSaveDomains=U.r,exports.collectibleScript=oc,exports.commitGameplayEffect=w.o,exports.compareSkeletons=f.C,exports.compileNPCBrainBlueprint=y.C,exports.composeSceneTransforms=be,exports.computeGameTime=j.o,exports.computePrefabOverrides=h.Z,exports.configureReinforcementAdapter=y.v,exports.convertElr=f.Ct,exports.convertN3=f.wt,exports.convertV3=f.Tt,exports.createAgentBehaviorBlueprintFromNPCBehaviorBlueprint=y.w,exports.createAnimationController=f.O,exports.createAnimationSlice=p.x,exports.createAnimatorComponent=h.Tt,exports.createAssetStore=l.t,exports.createAudioEngine=u.q,exports.createAudioPlugin=Vr,exports.createAudioStore=u.W,exports.createBlockFootprint=f.gn,exports.createBrowserInputDevices=Vo,exports.createBuildingCullingStore=y.Ct,exports.createBuildingGpuUploadPlan=y.Y,exports.createBuildingIndirectDrawUploadPlan=y.et,exports.createBuildingPieceComponent=h.Et,exports.createBuildingPlacementEngine=f._n,exports.createBuildingPlugin=I.o,exports.createBuildingRenderStore=y.R,exports.createBuildingScopeId=I.l,exports.createBuildingStore=f.Ht,exports.createBuildingVisibilityStore=y.F,exports.createCameraCinematicPlayer=b.c,exports.createCameraCloseUpPreset=b.O,exports.createCameraOptionSlice=p.S,exports.createCameraPlugin=sn,exports.createCameraSaveDataFromDomain=u.m,exports.createCharacterPlugin=si,exports.createCharacterStore=b.x,exports.createClientGameplayEventServices=x.n,exports.createColliderComponent=h.Dt,exports.createCommandAcceptedResult=H.n,exports.createCommandAuthorityRouter=H.r,exports.createCommandRejectedResult=H.i,exports.createContentBundleFromSaveSystem=W.a,exports.createCustomMeshId=I.c,exports.createDefaultCharacterAnimator=f.H,exports.createDefaultGameplayEventRegistry=x.r,exports.createDefaultInputActions=L.s,exports.createDefaultInteractionInputBackend=p.p,exports.createDefaultSaveSystem=b.r,exports.createDialogRegistry=x.m,exports.createDialogStore=x.u,exports.createEditorCommandStack=h.t,exports.createEditorPlayModeController=h.a,exports.createEditorSaveStatus=h.Pn,exports.createEditorSelectionState=h.f,exports.createEditorShell=h.n,exports.createEditorShortcutRegistry=h.kn,exports.createEditorSlice=h.c,exports.createEditorTransaction=h.r,exports.createEmptyBuildingGpuUploadResources=y.V,exports.createEmptyBuildingIndirectDrawMirror=y.tt,exports.createEmptyGpuMirror=y.X,exports.createFrameDriver=u.et,exports.createGaesupRuntime=u.C,exports.createGaesupStore=p.a,exports.createGameCommand=H.a,exports.createGameplayAreas=C.t,exports.createGameplayEventActionTemplate=V.i,exports.createGameplayEventConditionTemplate=V.a,exports.createGameplayEventTriggerTemplate=V.o,exports.createGrassManager=y.Et,exports.createI18nPlugin=So,exports.createIdleFrameGate=Jo,exports.createInitialCameraMetrics=h.bn,exports.createInputDeviceState=No,exports.createInteractableComponent=h.Ot,exports.createInteractablesStore=y.M,exports.createInteractionInputAdapter=p.m,exports.createInteractionSlice=p.c,exports.createInteractionSliceWithServices=p.l,exports.createInteractionSystemInputBackend=p.h,exports.createLegacyRenderer=N.f,exports.createLocalVisitChannel=G.n,exports.createLutTexture=K.n,exports.createManualToastEventBlueprint=V.s,exports.createMemoryInputBackend=p.b,exports.createMeshRendererComponent=h.kt,exports.createMotionsPlugin=f.ot,exports.createMotionsRuntime=f.st,exports.createNPCBehaviorBlueprintFromAgentBehaviorBlueprint=y.T,exports.createNPCBehaviorBlueprintFromInstance=y.E,exports.createNPCBrainAdapterRegistry=y.f,exports.createNPCObservation=y.p,exports.createNPCPlugin=yn,exports.createNPCScheduler=u.F,exports.createNPCStore=y.i,exports.createNetworkEnvelope=H.t,exports.createNoOverlapRule=f.Jn,exports.createNpcComponent=h.At,exports.createNpcTalkEventBlueprint=V.c,exports.createPersistenceSlice=u.d,exports.createPersistenceSliceWithOptions=u.f,exports.createPlacementEngine=f.qn,exports.createPlayerProgress=U.i,exports.createPlayerProgressFromSaveSystem=U.a,exports.createPluginContext=D.u,exports.createPluginLogger=D.d,exports.createPluginRegistry=D.l,exports.createPrefabDocument=h.st,exports.createPrefabFromSceneObjects=h.ct,exports.createPrefabInstance=h.Q,exports.createPrefabVariant=h.$,exports.createProjectFile=Ss,exports.createProjectSettings=os,exports.createReinforcementAdapter=y.y,exports.createRenderer=N.p,exports.createRigidBodyComponent=h.jt,exports.createRoomVisibilityStore=u.A,exports.createRuntimeSaveDiagnostics=u.Q,exports.createSaveDataFromSaveSystem=u.h,exports.createSceneCollisionGroups=ot,exports.createSceneComponent=h.Ft,exports.createSceneDocument=h.It,exports.createSceneDocumentController=st,exports.createSceneDocumentSaveBinding=_t,exports.createSceneLayerDefinition=We,exports.createSceneLayerTagRegistry=Ke,exports.createSceneMigrationRegistry=Fe,exports.createSceneObject=h.Lt,exports.createSceneObjectEditorCommands=h.i,exports.createScenePlugin=js,exports.createSceneStore=b.d,exports.createSceneTagDefinition=Ge,exports.createScopedAssetMeshConfig=ee.r,exports.createScopedBuildingMeshId=ee.i,exports.createScriptComponent=h.Mt,exports.createServerEvent=H.o,exports.createServerPluginHost=te.n,exports.createShoreField=I.M,exports.createSkyEnvironmentTexture=Lc,exports.createSnapshotAck=H.s,exports.createStateDelta=H.c,exports.createStoreDomainPlugin=a.t,exports.createTeleportDestination=jn,exports.createTerrainBlockMaterial=I.v,exports.createTileFootprint=f.vn,exports.createTileSampler=I.Z,exports.createTimePlugin=pr,exports.createTimeStore=j.n,exports.createToonMaterial=f.l,exports.createVectorCache=f.Nt,exports.createWeatherPlugin=kr,exports.createWeatherStore=v.n,exports.createWebSocketVisitChannel=G.r,exports.createWorldDataFromSaveDomains=u.g,exports.createWorldInputScope=f.gr,exports.createWorldObjectStore=u.w,exports.createWorldSlice=u.D,exports.createWorldSliceForBridge=u.O,exports.createWorldSnapshot=U.o,exports.createWorldSnapshotFromSaveSystem=U.s,exports.dayOfTotalMinutes=j.s,exports.defaultCharacterAnimator=f.U,exports.defaultMultiplayerConfig=G.u,exports.defineGaesupPlugin=k.i,exports.defineScript=h.I,exports.defineService=_.t,exports.destroyBuildingGpuUploadResources=y.H,exports.detectCapabilities=B.c,exports.dialogTriggerScript=sc,exports.disposeGLTFAsset=i.a,exports.disposeToonGradients=f.u,exports.doorScript=ic,exports.edgeKey=f.yn,exports.edgeSideToWallRotation=f.bn,exports.edgeToWallTransform=f.xn,exports.editorSlice=h.l,exports.exportUnityScene=Ce,exports.filterPluginsForRuntime=D.t,exports.findMissingAssetReferences=P.l,exports.findPrefabInstanceLink=h.U,exports.findSceneObject=De,exports.findSceneObjects=Ee,exports.findSceneObjectsByLayer=ke,exports.findSceneObjectsByTag=Oe,exports.findSceneObjectsWithComponent=Ae,exports.findTeleportDestination=Nn,exports.findTerrainBlockMaterial=I.y,exports.formatEditorShortcut=h.An,exports.formatRuntimeSaveDiagnostic=u.$,exports.formatRuntimeSaveDiagnosticToastMessage=Qn,exports.frameScheduler=t.m,exports.gamepadDefault=ne.n,exports.getActiveSceneObject=h.p,exports.getAnimatorController=h.Vt,exports.getAudioEngine=u.J,exports.getBindPoseHash=f.w,exports.getBlockSupportHeight=f.Sn,exports.getBrowserGamepadHub=u.H,exports.getBuildingSupportHeight=f.Cn,exports.getCachedTrig=f.Pt,exports.getDefaultBuildingObject=I.it,exports.getDefaultInteractionInputBackend=p.g,exports.getDefaultToonMode=f.d,exports.getDefaultWorldInputScope=f._r,exports.getDialogRegistry=x.h,exports.getDrawClusterForSnapshotEntry=y.gt,exports.getEditorSaveStatusLabel=h.Fn,exports.getGameplayEventRegistry=x.a,exports.getGlobalAnimationBridge=f.W,exports.getGlobalStateManager=f.q,exports.getGrassManager=y.Dt,exports.getIndirectInstanceCount=y.nt,exports.getNPCBrainBlueprint=y.D,exports.getNPCScheduler=u.I,exports.getNextAutosaveAt=h.In,exports.getPooledVector=f.Et,exports.getPrefabInstanceObjects=h.W,exports.getPrefabRootObjectIds=h.lt,exports.getReinforcementAdapterConfig=y.b,exports.getSaveSystem=b.i,exports.getSceneChildren=h.Rt,exports.getSceneLayersByPurpose=$e,exports.getSceneObjectComponent=je,exports.getSceneObjectComponents=Me,exports.getScript=h.L,exports.getSharedFrameEntryCount=f.yr,exports.getSkeletonBoneNames=f.T,exports.getTileSupportHeight=f.wn,exports.getTimeClock=f.Z,exports.getToonGradient=f.f,exports.getTrigCacheStats=f.Ft,exports.getWallMaterialKey=I.G,exports.getWebGPUDeviceFromRenderer=y.U,exports.gltfAssetCache=i.o,exports.hasSceneObjectComponent=Ne,exports.hasTileCollision=f.Tn,exports.hasWallCollision=f.En,exports.holdUnkeyedTracks=I.ft,exports.hydrateAudioState=Br,exports.hydrateCharacterState=oi,exports.hydrateI18nState=xo,exports.hydrateNPCState=vn,exports.hydrateSceneState=As,exports.hydrateTimeState=fr,exports.hydrateWeatherState=Or,exports.i18nPlugin=Co,exports.importUnityScene=Te,exports.indexAabb=f.Dn,exports.inputActionsFromProjectSettings=L.c,exports.inspectFigure=P.i,exports.inspectModel=P.a,exports.installClientGameplayEventServices=x.o,exports.instantiatePrefabObjects=h.rt,exports.invalidateCollisionCache=T.h,exports.isAutoSaveSuspended=A.a,exports.isCanonicalSceneJsonObject=h.zt,exports.isEditableInputEvent=f.vr,exports.isEditableShortcutTarget=h.jn,exports.isEditorPanelComponentExtension=h.Un,exports.isNewDay=j.c,exports.isNewHour=j.l,exports.isSceneLayerSelectable=Qe,exports.isSceneLayerVisible=Ze,exports.isSceneObjectSelected=h.m,exports.isValidOrOne=f.Dt,exports.isValidOrZero=f.Ot,exports.isVectorNonZero=f.kt,exports.isWebGPUAvailable=N.m,exports.listAnimatorControllers=h.Ht,exports.listScripts=h.R,exports.loadContentBundleFromManifest=W.n,exports.loadCoreWasm=E.u,exports.loadCubeLut=K.r,exports.loadCubeLutTexture=K.i,exports.loadSceneRuntime=ve,exports.logger=r.t,exports.makeClipInPlace=I.pt,exports.markEditorDirty=h.Ln,exports.markEditorSaveError=h.Rn,exports.markEditorSaved=h.zn,exports.markEditorSaving=h.Bn,exports.matchesEditorShortcut=h.Mn,exports.matchesSceneObjectQuery=Pe,exports.migrateSceneDocument=Ie,exports.motionsPlugin=f.ct,exports.multiplySceneMatrices=he,exports.normalizeAngle=f.It,exports.normalizeImportedMaterials=F.n,exports.normalizeQuarterTurnRotation=f.On,exports.normalizeSaveMetadata=u._,exports.notify=x.s,exports.npcPlugin=bn,exports.object3DToSceneTransform=h.b,exports.pair=f.kn,exports.parseBuildingGpuVisibilityFlags=y._t,exports.parseCubeLut=K.a,exports.parsePrefabDocument=Mt,exports.parseProjectFile=Ts,exports.parseProjectSettings=ls,exports.parseSceneDocument=h.xt,exports.parseWorldSaveId=u.v,exports.parseWorldSaveTimestamp=u.y,exports.pickDomains=U.c,exports.placeNameplates=z.i,exports.placementOk=f.Yn,exports.placementRejected=f.Xn,exports.playCameraCinematic=b.l,exports.profileForTier=B.l,exports.propagatePrefabChanges=h.et,exports.propagatePrefabToDocument=h.G,exports.queryAabbIds=f.An,exports.readPrefabInstanceLink=h.tt,exports.readRendererStats=A.r,exports.realMsToGameMinutes=j.u,exports.registerAnimatorController=h.Ut,exports.registerBuiltinScripts=cc,exports.registerDefaultReinforcementAdapter=y.m,exports.registerNPCBrainAdapter=y.h,exports.registerNPCBrainBlueprint=y.O,exports.registerSceneComponentSchema=h._t,exports.registerScript=h.z,exports.releaseVector=f.At,exports.remapSkinnedGeometryJoints=f.E,exports.replaceWithPrefabInstance=h.K,exports.requestCameraCloseUp=b.k,exports.requestMotionsTeleport=f.lt,exports.resolveCharacterAttachment=wa,exports.resolveCharacterBaseNodeExclusions=ro,exports.resolveCharacterParts=to,exports.resolveDefaultInteractionSystem=p._,exports.resolveEditorPanelComponentExtensions=h.Wn,exports.resolveEquippedCharacterAttachments=Ta,exports.resolveNPCBrainDecision=y.g,exports.resolveQualityDpr=B.r,exports.resolveRuntimeInputBackend=f.r,exports.resolveSchedule=u.L,exports.resolveScriptProps=h.B,exports.resolveSharedSkeletonBinding=f.D,exports.restoreCameraCloseUp=b.A,exports.revertPrefabInstance=h.q,exports.revertPrefabInstanceOverride=h.J,exports.revertPrefabOverride=h.nt,exports.rideableDefault=u.x,exports.rotatorScript=rc,exports.runtimeStoreServiceKey=_.n,exports.sceneEulerToQuaternion=fe,exports.sceneMatrixToTransform=ge,exports.scenePlugin=Ms,exports.sceneQuaternionToEuler=pe,exports.sceneTransformToMatrix=me,exports.scriptProp=h.V,exports.selectAssetsByKind=l.n,exports.selectAssetsBySlot=l.r,exports.selectSceneObject=h.h,exports.selectSceneObjectRange=h.g,exports.serializeAudioState=zr,exports.serializeCharacterState=ai,exports.serializeI18nState=bo,exports.serializeNPCState=hn,exports.serializePrefabDocument=At,exports.serializeProjectSettings=cs,exports.serializeSceneDocument=h.St,exports.serializeSceneState=ks,exports.serializeTimeState=dr,exports.serializeVisit=G.o,exports.serializeWeatherState=Dr,exports.setDefaultGameplayEventServices=w.a,exports.setDefaultInteractionSystemResolver=p.v,exports.setDefaultToonMode=f.p,exports.setSceneObjectHover=h._,exports.shouldRunEditorAutosave=h.Vn,exports.shouldSetupPluginForRuntime=D.n,exports.shouldUpdate=f.Lt,exports.shouldUpdateVector3=f.Rt,exports.smoothSeamNormals=P.t,exports.snapBuildingPosition=f.jn,exports.snapSceneTransform=h.x,exports.steeringTickScale=f.ht,exports.subscribeSceneObjectDelta=ht,exports.summarizeFrameTimes=Wo,exports.supportsGpuInstanceBatches=I.Y,exports.suspendAutoSave=A.o,exports.syncBuildingGpuBuffers=y.W,exports.syncBuildingIndirectArgsBuffer=y.G,exports.t=go,exports.teleportDestinationToVector3=Mn,exports.threeObjectPool=ar,exports.tileFootprintKeys=f.Mn,exports.tileGroupToPlacementEntries=f.Nn,exports.tileHalfSize=f.Pn,exports.tileOverlaps=f.Fn,exports.tilePositionToCell=f.In,exports.tileToPlacementEntry=f.Ln,exports.timePlugin=mr,exports.toSceneObjectDelta=mt,exports.toggleCharacterWeapon=b._,exports.triggerZoneScript=ac,exports.unfocusCamera=Dn,exports.unindexId=f.Rn,exports.unregisterNPCBrainBlueprint=y.k,exports.updateInputState=f.j,exports.useAmbientBgm=Xr,exports.useAnimationBridge=f.G,exports.useAnimationPlayer=f.k,exports.useAnimatorEvent=Sn,exports.useAssetStore=l.i,exports.useAssetStoreApi=l.a,exports.useAudioStore=u.G,exports.useAudioStoreApi=u.K,exports.useAutoSave=u.N,exports.useBlueprintEntity=zt,exports.useBuildingEditor=I.b,exports.useBuildingGpuCullingStore=y.wt,exports.useBuildingGpuCullingStoreApi=y.Tt,exports.useBuildingRenderStateStore=y.z,exports.useBuildingRenderStateStoreApi=y.B,exports.useBuildingStore=f.Ut,exports.useBuildingStoreApi=f.Wt,exports.useBuildingVisibilityStore=y.I,exports.useBuildingVisibilityStoreApi=y.L,exports.useCamera=T.r,exports.useCameraBridge=T.i,exports.useCanvasFrameScheduler=t.i,exports.useCharacterAnimator=f.I,exports.useCharacterMenuController=sa,exports.useCharacterStore=b.S,exports.useCharacterStoreApi=b.C,exports.useClicker=f.t,exports.useClipTransition=I.ct,exports.useContactShadow=f.h,exports.useCurrentInteraction=Bt,exports.useDayChange=vr,exports.useDialogRegistry=x.d,exports.useDialogStore=x.f,exports.useDialogStoreApi=x.p,exports.useEditor=h.o,exports.useEditorAutosave=h.Nn,exports.useEditorShortcuts=h.Dn,exports.useEditorStore=h.s,exports.useEngineFrame=t.t,exports.useFrameDriverItem=t.n,exports.useGLTFAsset=F.i,exports.useGaesupController=Cn,exports.useGaesupGltf=f.a,exports.useGaesupRuntime=s.n,exports.useGaesupRuntimeRevision=s.r,exports.useGaesupStore=p.o,exports.useGaesupStoreApi=p.s,exports.useGameClock=_r,exports.useGameTime=hr,exports.useGenericRefs=T.t,exports.useGltfAndSize=f.o,exports.useGrassManager=I.V,exports.useHourChange=yr,exports.useI18nStore=ho,exports.useImportedMaterials=F.r,exports.useInputActions=Ho,exports.useInputBackend=f.i,exports.useInteractablesStore=y.N,exports.useInteractablesStoreApi=y.P,exports.useInteractionKey=Vt,exports.useInteractionSystem=Ut,exports.useKeyboard=L.a,exports.useLoadOnMount=u.P,exports.useLocale=To,exports.useMinimap=Wn,exports.useMotion=Rt,exports.useMultiplayer=G.g,exports.useNPCStore=y.a,exports.useNPCStoreApi=y.o,exports.useNameplate=z.r,exports.useNpcSchedule=xn,exports.usePerfStore=B.a,exports.usePerformanceReport=Ko,exports.usePhysicsBridge=f.A,exports.usePlayerNetwork=G._,exports.usePlayerPosition=L.l,exports.usePlayerWorldPosition=L.u,exports.useQualityProfile=B.i,exports.useRendererRecovery=Vc,exports.useRideable=u.S,exports.useRoomVisibilityStore=u.j,exports.useRoomVisibilityStoreApi=u.M,exports.useSceneStore=b.f,exports.useSceneStoreApi=b.p,exports.useScriptObjectTransform=$s,exports.useScriptRuntime=Xs,exports.useSharedFrame=f.br,exports.useShoreField=I.j,exports.useSpeechBalloonPosition=z.s,exports.useStateSystem=f.Y,exports.useTeleport=wn,exports.useTimeOfDay=gr,exports.useTimeStore=j.r,exports.useTimeStoreApi=j.i,exports.useToastStore=x.c,exports.useTranslate=wo,exports.useUIConfigStore=z.o,exports.useVisitRoom=G.t,exports.useWeatherStore=v.r,exports.useWeatherStoreApi=v.i,exports.useWeatherTicker=Fr,exports.useWorldInputActions=T.y,exports.useWorldInputScope=f.mr,exports.useWorldLoadProgress=Qo,exports.useWorldObjectStore=u.T,exports.useWorldObjectStoreApi=u.E,exports.useWorldPhysicsInterpolation=f.N,exports.useWorldPhysicsStep=f.P,exports.validateAnimatorController=n.o,exports.validateContentBundle=W.r,exports.validateContentBundleManifest=W.i,exports.validateGaesupPlugin=k.r,exports.validateModelStats=P.o,exports.validatePrefabDocument=h.ut,exports.validateProjectCollisionLayers=Ye,exports.validateProjectFile=ws,exports.validateProjectSettings=us,exports.validateSceneComponentData=h.vt,exports.validateSceneDocument=h.Bt,exports.validateSceneLayerTagRegistry=qe,exports.validateSceneObjectLayersAndTags=Je,exports.validateSerializedPrefabDocument=Nt,exports.validateSerializedSceneDocument=h.Ct,exports.visitProviderFromSaveSystem=G.s,exports.wallGroupToPlacementEntries=f.zn,exports.wallToPlacementEntry=f.Bn,exports.wallTransformToEdge=f.Vn,exports.weatherPlugin=Ar,exports.worldToBuildingCell=f.Hn,exports.zigZag=f.Un;
|
|
4
|
+
}`})]})}function Qn(e){return`${e.phase===`serialize`?`저장`:`불러오기`} 실패: ${e.key} - ${e.errorMessage}`}function $n({enabled:e=!0,includeExisting:t=!1,durationMs:n=6500,kind:r=`error`,icon:i,formatMessage:a=Qn}){let o=s.n(),c=s.r();return(0,J.useEffect)(()=>{if(!e||!o)return;let s=new Set,c=e=>{if(s.has(e.id))return;s.add(e.id);let t=er(r,e),o=i?er(i,e):void 0;x.s(t,a(e),{durationMs:n,...o?{icon:o}:{}})},l=o.saveDiagnostics.getDiagnostics();return t?l.forEach(c):l.forEach(e=>s.add(e.id)),o.saveDiagnostics.subscribe(c)},[n,e,a,i,t,r,c,o]),null}function er(e,t){return typeof e==`function`?e(t):e}var tr=class extends p.t{constructor(){super({metrics:!0}),this.register(`main`,new zn),this.setupEngineSubscriptions()}setupEngineSubscriptions(){this.engines.forEach(e=>{e.subscribe(()=>{this.notifyListeners(`main`)})})}buildEngine(){return new zn}executeCommand(e,t){e.execute(t)}createSnapshot(e){let t=e.getState();return{minimapVisible:t.minimapVisible,hudVisible:t.hudVisible,tooltipVisible:t.tooltipVisible,modalVisible:t.modalVisible,notificationCount:t.notifications.length,lastUpdate:t.lastUpdate}}showTooltip(e,t){this.execute(`main`,{type:`showTooltip`,text:e,position:t})}hideTooltip(){this.execute(`main`,{type:`hideTooltip`})}showModal(e){this.execute(`main`,{type:`showModal`,content:e})}hideModal(){this.execute(`main`,{type:`hideModal`})}toggleMinimap(){this.execute(`main`,{type:`toggleMinimap`})}toggleHUD(){this.execute(`main`,{type:`toggleHUD`})}addNotification(e,t,n){this.execute(`main`,{type:`addNotification`,id:e,message:t,notificationType:n||`info`})}removeNotification(e){this.execute(`main`,{type:`removeNotification`,id:e})}addMinimapMarker(e,t,n,r,i){this.execute(`main`,{type:`addMinimapMarker`,id:e,markerType:t,text:n,position:r,size:i})}removeMinimapMarker(e){this.execute(`main`,{type:`removeMinimapMarker`,id:e})}updateMinimapMarker(e,t){this.execute(`main`,{type:`updateMinimapMarker`,id:e,updates:t})}getUIMetrics(){let e=this.getEngine(`main`);return e?e.getMetrics():null}execute(e,t){super.execute(e,t)}snapshot(e){return super.snapshot(e)}},nr={get(e){if(typeof window<`u`){let t=localStorage.getItem(e);if(t)try{return JSON.parse(t)}catch(e){return console.error(`Error parsing cached data:`,e),null}}return null},set(e,t){if(typeof window<`u`)try{let n=JSON.stringify(t);localStorage.setItem(e,n)}catch(e){console.error(`Error serializing data for cache:`,e)}},remove(e){typeof window<`u`&&localStorage.removeItem(e)}},rr=class{constructor(e,t,n={}){this.available=[],this.inUse=new Set,this.createFn=e,this.resetFn=t,this.config={initialSize:10,maxSize:100,growthRate:2,...n},this.initialize()}initialize(){for(let e=0;e<this.config.initialSize;e++)this.available.push(this.createFn())}acquire(){if(this.available.length===0){if(this.available.length+this.inUse.size>=this.config.maxSize)throw Error(`ObjectPool: Maximum size ${this.config.maxSize} reached`);if(this.grow(),this.available.length===0){let e=this.createFn();return this.inUse.add(e),e}}let e=this.available.pop();return this.inUse.add(e),e}release(e){this.inUse.has(e)&&(this.resetFn(e),this.inUse.delete(e),this.available.push(e))}grow(){let e=this.available.length+this.inUse.size;if(e>=this.config.maxSize)return;let t=Math.min(Math.ceil(e*(this.config.growthRate-1)),this.config.maxSize-e);for(let e=0;e<t;e++)this.available.push(this.createFn())}clear(){this.available=[],this.inUse.clear()}get stats(){return{available:this.available.length,inUse:this.inUse.size,total:this.available.length+this.inUse.size}}},ir=class e{constructor(){this.vector3Pool=new rr(()=>new q.Vector3,e=>e.set(0,0,0),{initialSize:20,maxSize:200}),this.quaternionPool=new rr(()=>new q.Quaternion,e=>e.set(0,0,0,1),{initialSize:10,maxSize:100}),this.eulerPool=new rr(()=>new q.Euler,e=>e.set(0,0,0),{initialSize:10,maxSize:100}),this.matrix4Pool=new rr(()=>new q.Matrix4,e=>e.identity(),{initialSize:5,maxSize:50})}static getInstance(){return e.instance||=new e,e.instance}acquireVector3(){return this.vector3Pool.acquire()}releaseVector3(e){this.vector3Pool.release(e)}acquireQuaternion(){return this.quaternionPool.acquire()}releaseQuaternion(e){this.quaternionPool.release(e)}acquireEuler(){return this.eulerPool.acquire()}releaseEuler(e){this.eulerPool.release(e)}acquireMatrix4(){return this.matrix4Pool.acquire()}releaseMatrix4(e){this.matrix4Pool.release(e)}withVector3(e){let t=this.acquireVector3();try{return e(t)}finally{this.releaseVector3(t)}}withQuaternion(e){let t=this.acquireQuaternion();try{return e(t)}finally{this.releaseQuaternion(t)}}withEuler(e){let t=this.acquireEuler();try{return e(t)}finally{this.releaseEuler(t)}}withMatrix4(e){let t=this.acquireMatrix4();try{return e(t)}finally{this.releaseMatrix4(t)}}getStats(){return{vector3:this.vector3Pool.stats,quaternion:this.quaternionPool.stats,euler:this.eulerPool.stats,matrix4:this.matrix4Pool.stats}}clear(){this.vector3Pool.clear(),this.quaternionPool.clear(),this.eulerPool.clear(),this.matrix4Pool.clear()}},ar=ir.getInstance(),or={isNonEmptyString(e){return typeof e==`string`&&e.trim().length>0},isPositiveNumber(e){return typeof e==`number`&&e>0},isInRange(e,t,n){return e>=t&&e<=n},isValidId(e){return this.isNonEmptyString(e)&&/^[a-zA-Z0-9_-]+$/.test(e)},isValidEmail(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)},isValidUrl(e){try{return new URL(e),!0}catch{return!1}},hasRequiredProperties(e,t){return typeof e!=`object`||!e?!1:t.every(t=>Object.prototype.hasOwnProperty.call(e,t))}},sr={clamp(e,t,n){return Math.max(t,Math.min(n,e))},lerp(e,t,n){return e+(t-e)*this.clamp(n,0,1)},smoothStep(e,t,n){let r=this.clamp((n-e)/(t-e),0,1);return r*r*(3-2*r)},mapRange(e,t,n,r,i){return r+(e-t)*(i-r)/(n-t)},randomInRange(e,t){return Math.random()*(t-e)+e},degToRad(e){return Math.PI/180*e},radToDeg(e){return 180/Math.PI*e},distance2D(e,t,n,r){let i=n-e,a=r-t;return Math.sqrt(i*i+a*a)},normalizeAngle(e){for(;e>Math.PI;)e-=2*Math.PI;for(;e<-Math.PI;)e+=2*Math.PI;return e},angleDifference(e,t){return this.normalizeAngle(t-e)},vectorToAngle(e){return Math.atan2(e.x,e.z)},angleToVector(e){return new q.Vector3(Math.sin(e),0,Math.cos(e))}},cr=`gaesup.time`,lr=`time`,ur=`time.store`;function dr(e=j.r){return e.getState().serialize()}function fr(e,t=j.r){t.getState().hydrate(e)}function pr(e={}){return a.t({id:e.id??cr,name:`GaeSup Time`,saveExtensionId:e.saveExtensionId??lr,storeServiceId:e.storeServiceId??ur,store:j.r,readyEvent:`time:ready`,capabilities:[`time`],resolveStore:e=>e.services.get(`gaesup.runtime.time-store`)??j.r,serialize:dr,hydrate:fr,prepareHydrate:(e,t)=>t.getState().prepareHydrate(e)})}var mr=pr();function hr(){return j.r(e=>e.time)}function gr(){return j.r((0,ae.useShallow)(e=>({hour:e.time.hour,minute:e.time.minute})))}function _r(e=!0){let t=j.i();(0,J.useEffect)(()=>{if(e)return f.Z(t).acquire()},[e,t])}function vr(e){let t=j.r(e=>e.addListener);(0,J.useEffect)(()=>t(t=>{t.kind===`newDay`&&e(t.time)}),[t,e])}function yr(e){let t=j.r(e=>e.addListener);(0,J.useEffect)(()=>t(t=>{t.kind===`newHour`&&e(t.time)}),[t,e])}var br={spring:`#ffb6c1`,summer:`#9bd97a`,autumn:`#e0a060`,winter:`#cfe2ff`},xr={sun:`일`,mon:`월`,tue:`화`,wed:`수`,thu:`목`,fri:`금`,sat:`토`};function Sr(){let e=hr(),t=String(e.hour).padStart(2,`0`),n=String(e.minute).padStart(2,`0`);return(0,X.jsx)(`div`,{style:{position:`fixed`,top:10,left:10,zIndex:90,padding:`6px 10px`,background:`rgba(0,0,0,0.55)`,color:`#fff`,fontFamily:`'Pretendard', system-ui, sans-serif`,fontSize:13,borderRadius:6,userSelect:`none`,pointerEvents:`none`,backdropFilter:`blur(4px)`},children:(0,X.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:8},children:[(0,X.jsx)(`span`,{style:{display:`inline-block`,width:8,height:8,borderRadius:`50%`,background:br[e.season]??`#fff`}}),(0,X.jsxs)(`span`,{children:[`Y`,e.year,` M`,String(e.month).padStart(2,`0`),` D`,String(e.day).padStart(2,`0`),` `,`(`,xr[e.weekday],`)`]}),(0,X.jsxs)(`span`,{style:{opacity:.85},children:[t,`:`,n]})]})})}function Cr({advanceKey:e=`e`,closeKey:t=`Escape`}){let n=f.mr(),r=x.p(),i=x.f(e=>e.node),a=x.f(e=>e.runner),o=x.f(e=>e.advance),s=x.f(e=>e.choose),c=x.f(e=>e.close),[,l]=(0,J.useReducer)(e=>e+1,0),u=a?.visibleChoices()??[],d=(0,J.useCallback)(e=>{if(!a||r.getState().runner!==a)return;let t=a.visibleChoices().indexOf(e);t>=0?s(t):l()},[a,s,r]);return(0,J.useEffect)(()=>{if(!i)return;let r=n.listen(`keydown`,n=>{if(n.isComposing||n.ctrlKey||n.metaKey||n.altKey)return;let r=n.target;if(r instanceof HTMLElement&&(r.matches(`input, textarea, select`)||r.isContentEditable))return;let i=/^[1-9]$/.test(n.key)?Number(n.key):0,a=n.key.toLowerCase()===e.toLowerCase();if((n.key===t||a||i>=1&&i<=u.length)&&(n.preventDefault(),n.stopImmediatePropagation(),!n.repeat)){if(n.key===t){c();return}if(u.length===0&&a){o();return}if(i>=1&&i<=u.length){let e=u[i-1];e&&d(e)}}},!0);return()=>r()},[n,i,u,o,d,c,e,t]),i?(0,X.jsxs)(g.a,{role:`dialog`,"aria-label":i.speaker?`${i.speaker} 대화`:`대화`,"data-world-overlay":!0,style:{position:`fixed`,left:`50%`,bottom:110,transform:`translateX(-50%)`,width:`min(720px, 92vw)`,boxSizing:`border-box`,maxHeight:`calc(100dvh - var(--app-header-height, 64px) - 130px)`,overflowY:`auto`,overflowWrap:`anywhere`,zIndex:`var(--gaesup-z-panel, 90)`,background:`var(--gaesup-ui-surface, rgba(18,20,28,0.62))`,color:`var(--gaesup-ui-text, #f3f4f8)`,borderRadius:`var(--gaesup-ui-radius, 14px)`,border:`1px solid var(--gaesup-ui-border, rgba(255,255,255,0.12))`,boxShadow:`var(--gaesup-ui-shadow, 0 12px 28px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.06))`,backdropFilter:`var(--gaesup-ui-blur, blur(20px) saturate(140%))`,WebkitBackdropFilter:`var(--gaesup-ui-blur, blur(20px) saturate(140%))`,fontFamily:`var(--gaesup-ui-font, 'Pretendard', system-ui, sans-serif)`,fontSize:14,padding:14},children:[i.speaker&&(0,X.jsx)(`div`,{style:{display:`inline-block`,padding:`3px 8px`,background:`var(--gaesup-ui-accent, #ffd84a)`,color:`var(--gaesup-ui-accent-text, #1a1a1a)`,borderRadius:6,fontWeight:700,fontSize:12,marginBottom:6},children:i.speaker}),(0,X.jsx)(`div`,{style:{lineHeight:1.55,whiteSpace:`pre-wrap`},children:i.text}),u.length===0?(0,X.jsxs)(`button`,{type:`button`,onClick:o,style:{marginTop:10,marginRight:8,padding:`9px 12px`,cursor:`pointer`,background:`var(--gaesup-ui-control, rgba(255,255,255,0.06))`,color:`inherit`,border:`1px solid var(--gaesup-ui-border, rgba(255,255,255,0.12))`,borderRadius:8},children:[`[`,e.toUpperCase(),`] 다음`]}):(0,X.jsx)(`div`,{style:{marginTop:10,display:`flex`,flexDirection:`column`,gap:6},children:u.map((e,t)=>(0,X.jsxs)(`button`,{type:`button`,onClick:()=>d(e),style:{textAlign:`left`,padding:`9px 12px`,background:`var(--gaesup-ui-control, rgba(255,255,255,0.06))`,color:`var(--gaesup-ui-text, #f3f4f8)`,border:`1px solid var(--gaesup-ui-border, rgba(255,255,255,0.12))`,borderRadius:8,cursor:`pointer`,fontFamily:`var(--gaesup-ui-font, 'Pretendard', system-ui, sans-serif)`,fontSize:13,fontWeight:500},children:[(0,X.jsxs)(`span`,{style:{display:`inline-block`,width:18,color:`var(--gaesup-ui-accent-strong, #ffd84a)`,marginRight:6},children:[t+1,`.`]}),e.text]},t))}),(0,X.jsx)(`button`,{type:`button`,onClick:c,style:{marginTop:10,marginRight:8,padding:`9px 12px`,cursor:`pointer`,background:`var(--gaesup-ui-control, rgba(255,255,255,0.06))`,color:`inherit`,border:`1px solid var(--gaesup-ui-border, rgba(255,255,255,0.12))`,borderRadius:8},children:`대화 닫기`})]}):null}var wr=`gaesup.weather`,Tr=`weather`,Er=`weather.store`;function Dr(e=v.r){return e.getState().serialize()}function Or(e,t=v.r){t.getState().hydrate(e)}function kr(e={}){return a.t({id:e.id??wr,name:`GaeSup Weather`,saveExtensionId:e.saveExtensionId??Tr,storeServiceId:e.storeServiceId??Er,store:v.r,readyEvent:`weather:ready`,capabilities:[`weather`],resolveStore:e=>e.services.get(v.t)??v.r,serialize:Dr,hydrate:Or,prepareHydrate:(e,t)=>t.getState().prepareHydrate(e)})}var Ar=kr(),jr={sunny:{sym:`O`,color:`#ffd84a`,label:`맑음`},cloudy:{sym:`c`,color:`#aab2bc`,label:`흐림`},rain:{sym:`r`,color:`#4aa8ff`,label:`비`},snow:{sym:`*`,color:`#dff0ff`,label:`눈`},storm:{sym:`!`,color:`#7f7fff`,label:`폭풍`}};function Mr({position:e=`top-left`}){let t=v.r(e=>e.current);if(!t)return null;let n=jr[t.kind],r=e===`top-right`?{top:50,right:12}:{top:50,left:12};return(0,X.jsxs)(`div`,{style:{position:`fixed`,zIndex:90,padding:`4px 10px`,background:`rgba(20,20,28,0.85)`,color:`#fff`,fontFamily:`'Pretendard', system-ui, sans-serif`,fontSize:12,borderRadius:999,display:`flex`,alignItems:`center`,gap:8,boxShadow:`inset 0 0 0 1px ${n.color}55`,pointerEvents:`none`,userSelect:`none`,...r},children:[(0,X.jsx)(`span`,{style:{width:18,height:18,borderRadius:`50%`,background:n.color,color:`#1a1a1a`,display:`inline-flex`,alignItems:`center`,justifyContent:`center`,fontWeight:800,fontSize:11},children:n.sym}),(0,X.jsx)(`span`,{children:n.label})]})}function Nr(e){let t=new WeakMap;return(n,i,a)=>{let o=t.get(n);o||(o=new WeakMap,t.set(n,o));let s=o.get(i),c=!s;s||(s={owners:new Set,snapshot:[]},o.set(i,s));let l=s,u={...a};l.owners.add(u),l.snapshot=[...l.owners];let d=()=>{if(!l.owners.delete(u)||(l.snapshot=[...l.owners],l.owners.size))return;o.get(i)===l&&o.delete(i);let e=l.stop;delete l.stop,e?.()};if(c)try{let t=!1,a=[],o=e(n,i,{active:()=>l.snapshot.some(e=>e.active()),emit:e=>{if(a.push({value:e,owners:l.snapshot}),!t){t=!0;try{for(let e=0;e<a.length;e++){let t=a[e];for(let e of t.owners)if(l.owners.has(e)&&e.active())try{e.notify?.(t.value)}catch(e){r.t.error(`World observer callback failed`,e instanceof Error?e:String(e))}}}finally{a.length=0,t=!1}}}});l.owners.size?l.stop=o:o()}catch(e){throw o.get(i)===l&&o.delete(i),l.owners.clear(),l.snapshot=[],e}return d}}var Pr=Nr((e,t,{active:n})=>{let r=()=>{if(!n())return;let r=e.getState(),i=j.s(r.totalMinutes),a=t.getState().current;(!a||a.day!==i)&&t.getState().rollForDay(i,r.time.season)},i=e.subscribe((e,t)=>{e.hydrationRevision===t.hydrationRevision&&j.s(e.totalMinutes)!==j.s(t.totalMinutes)&&r()});try{return r(),i}catch(e){throw i(),e}});function Fr(e=!0){let t=s.n(),n=s.r(),r=v.i(),i=j.i();(0,J.useEffect)(()=>{if(!(!e||t&&!t.isActive()))return Pr(i,r,{active:()=>!t||t.isActive()&&!t.save.isRestoring()})},[e,i,r,t,n])}var Ir=`gaesup.audio`,Lr=`audio`,Rr=`audio.store`;function zr(e=u.G){return e.getState().serialize()}function Br(e,t=u.G){t.getState().hydrate(e)}function Vr(e={}){return a.t({id:e.id??Ir,name:`GaeSup Audio`,saveExtensionId:e.saveExtensionId??Lr,storeServiceId:e.storeServiceId??Rr,store:u.G,readyEvent:`audio:ready`,capabilities:[`audio`],resolveStore:e=>e.services.get(u.U)??u.G,serialize:zr,hydrate:Br,prepareHydrate:(e,t)=>t.getState().prepareHydrate(e)})}var Hr=Vr(),Ur=[0,2,4,5,7,9,11],Wr=[0,2,3,5,7,8,10];function Gr(e){return e===`rain`||e===`storm`||e===`snow`?Wr:Ur}function Kr(e){return e<6?`night`:e<10?`dawn`:e<18?`day`:e<22?`dusk`:`night`}function qr(e,t){let n=Kr(e),r=Gr(t),i=n===`night`?174.6:n===`dawn`?220:n===`dusk`?196:261.6,a=n===`day`?700:950,o=[r[0],r[2],r[4],r[2],r[0],r[3],r[1],r[4]];return{id:`bgm.${n}.${t??`unknown`}`,baseFreq:i,intervalMs:a,pattern:o,volume:t===`storm`?.6:1}}var Jr=new WeakMap;function Yr(e,t,n,r){let i=Jr.get(e);i||(i=new WeakMap,Jr.set(e,i));let a=i.get(t);a||(a=new WeakMap,i.set(t,a));let o=a.get(n);if(!o){let i,s=!0,c=()=>{if(!s||r?.isRestoring())return;let a=t.getState(),o=n.getState().current,c=qr(a.time.hour,o?.kind);e.getState().currentBgmId!==c.id&&(i=e.getState().bgmRevision+1,e.getState().playBgm(c))},l=t.subscribe((e,t)=>{e.time.hour!==t.time.hour&&c()}),u=n.subscribe((e,t)=>{e.current?.kind!==t.current?.kind&&c()}),d=r?.registerRestoreGuard(()=>c);c(),o={owners:0,dispose:()=>{s=!1,l(),u(),d?.(),e.getState().bgmRevision===i&&e.getState().stopBgm()}},a.set(n,o)}let s=o;s.owners++;let c=!1;return()=>{c||(c=!0,--s.owners===0&&(a.delete(n),s.dispose()))}}function Xr(e=!0){let t=s.n(),n=s.r(),r=u.K(),i=v.i(),a=j.i();(0,J.useEffect)(()=>{if(!(!e||t&&!t.isActive()))return Yr(r,a,i,t?.save)},[e,a,i,r,t,n])}function Zr({position:e=`bottom-right`,offset:t}){let n=u.G(e=>e.masterMuted),r=u.G(e=>e.bgmMuted),i=u.G(e=>e.sfxMuted),a=u.G(e=>e.toggleMaster),o=u.G(e=>e.toggleBgm),s=u.G(e=>e.toggleSfx),c={...e===`top-right`?{top:50,right:200}:e===`bottom-left`?{bottom:12,left:240}:e===`top-left`?{top:220,left:12}:{bottom:12,right:110},...t??{}},l=(e,t,n)=>(0,X.jsxs)(`button`,{onClick:n,"aria-pressed":!t,style:{padding:`4px 8px`,background:t?`rgba(80,30,30,0.85)`:`rgba(20,20,28,0.85)`,color:t?`#ff8a8a`:`#fff`,fontFamily:`'Pretendard', system-ui, sans-serif`,fontSize:11,border:`1px solid rgba(255,255,255,0.18)`,borderRadius:6,cursor:`pointer`},children:[e,t?` 꺼짐`:``]});return(0,X.jsxs)(`div`,{style:{position:`fixed`,zIndex:95,display:`flex`,gap:4,pointerEvents:`auto`,...c},children:[l(`M`,n,a),l(`Bgm`,r,o),l(`Sfx`,i,s)]})}var Qr={grass:{freq:320,duration:.07,type:`triangle`,volume:.18},sand:{freq:220,duration:.1,type:`sine`,volume:.2},snow:{freq:380,duration:.1,type:`triangle`,volume:.22},wood:{freq:540,duration:.06,type:`square`,volume:.14},stone:{freq:760,duration:.05,type:`square`,volume:.16},water:{freq:180,duration:.13,type:`sine`,volume:.24}},$r=new WeakMap;function ei(e,t,n){let{tileGroups:r,meshes:i}=n.getState(),a=$r.get(r);a||$r.set(r,a=I.Z({tileGroups:r.values()}));let o=a.at(e,t);if(!o)return`grass`;let{tile:s}=o;switch(s.objectType){case`water`:return`water`;case`sand`:return`sand`;case`snowfield`:return`snow`;case`grass`:return`grass`;case`dirt`:return`sand`}return i.get(o.materialId)?.grass?`grass`:s.shape===`stairs`||s.shape===`ramp`?`wood`:`stone`}function ti({strideMeters:e=.65,maxStepsPerSecond:n=6,volume:r=1,resolveSurface:i,enabled:a=!0}={}){let o=u.K(),s=f.Wt(),c=L.l({updateInterval:32,reactive:!1}),{position:l}=c,d=(0,J.useRef)({x:l.x,z:l.z}),p=(0,J.useRef)(0),m=(0,J.useRef)(0);return(0,J.useEffect)(()=>{d.current.x=l.x,d.current.z=l.z},[]),t.t(`lateUpdate`,()=>{let t=performance.now(),a=l.x-d.current.x,u=l.z-d.current.z;if(d.current.x=l.x,d.current.z=l.z,!c.isGrounded||!c.isMoving){p.current=0;return}let f=Math.hypot(a,u);if(f<=0||(p.current+=f,p.current<e)||t-m.current<1e3/n)return;p.current=0,m.current=t;let h=i?i(l.x,l.z):ei(l.x,l.z,s),g=Qr[h],_=Math.min(1.4,.7+c.speed*.06);o.getState().playSfx({id:`footstep-${h}`,type:g.type??`sine`,freq:g.freq??320,duration:g.duration??.08,volume:(g.volume??.2)*r*_})},{label:`audio:footsteps`,active:a}),null}var ni=`gaesup.character`,ri=`character`,ii=`character.store`;function ai(e=b.S){return e.getState().serialize()}function oi(e,t=b.S){t.getState().hydrate(e)}function si(e={}){return a.t({id:e.id??ni,name:`GaeSup Character`,saveExtensionId:e.saveExtensionId??ri,storeServiceId:e.storeServiceId??ii,store:b.S,resolveStore:e=>e.services.get(b.v)??b.S,readyEvent:`character:ready`,capabilities:[`character`],serialize:ai,hydrate:oi,prepareHydrate:(e,t)=>t.getState().prepareHydrate(e)})}var ci=si(),li={root:`character-menu-root`,backdrop:`character-menu-backdrop`,panel:`character-menu-panel`,header:`character-menu-header`,title:`character-menu-title`,actions:`character-menu-actions`,iconButton:`character-menu-button character-menu-button--icon`,primaryButton:`character-menu-button character-menu-button--primary`,ghostButton:`character-menu-button character-menu-button--ghost`,body:`character-menu-body`,previewSection:`character-menu-preview`,previewFrame:`character-menu-preview-frame`,previewGlyph:`character-menu-preview-glyph`,previewControls:`character-menu-preview-controls`,previewControlGroup:`character-menu-preview-control-group`,controls:`character-menu-controls`,section:`character-menu-section`,sectionStack:`character-menu-section-stack`,sectionTitle:`character-menu-section-title`,input:`character-menu-input`,optionRow:`character-menu-option-row`,chip:`character-menu-chip`,activeChip:`character-menu-chip character-menu-chip--active`,colorGrid:`character-menu-color-grid`,colorRow:`character-menu-color-row`,colorLabel:`character-menu-color-label`,colorInput:`character-menu-color-input`,filterRow:`character-menu-filter-row`,filterLabel:`character-menu-filter-label`,checkbox:`character-menu-checkbox`,range:`character-menu-range`,slotList:`character-menu-slot-list`,slot:`character-menu-slot`,slotHeader:`character-menu-slot-header`,slotTitle:`character-menu-slot-title`,assetGrid:`character-menu-asset-grid`,assetButton:`character-menu-asset-button`,activeAssetButton:`character-menu-asset-button character-menu-asset-button--active`,assetImage:`character-menu-asset-image`,assetInitial:`character-menu-asset-initial`,assetName:`character-menu-asset-name`,emptyState:`character-menu-empty-state`,closeUpOverlay:`character-menu-close-up-overlay`,footer:`character-menu-footer`},ui=[`preview`,`identity`,`colors`,`outfits`],di=[`hat`,`top`,`bottom`,`shoes`,`face`,`glasses`,`weapon`,`accessory`],fi={zoomControl:!0,closeUpMode:!0,previewRotate:!0,colorPicker:!0,assetBrowser:!0,savePresets:!1,nameEditor:!0,hairPicker:!0,facePicker:!0,tagFilter:!0,ownedOnly:!0,clearSlot:!0,resetButton:!0,closeButton:!0},pi=`rgba(0, 0, 0, 0.16)`,mi={title:`캐릭터 메뉴`,close:`닫기`,reset:`초기화`,preview:`미리보기`,zoom:`확대`,rotate:`회전`,rotateLeft:`왼쪽 회전`,rotateRight:`오른쪽 회전`,closeUp:`클로즈업`,exitCloseUp:`클로즈업 해제`,name:`이름`,hair:`헤어`,face:`표정`,colors:`색상`,outfits:`의상`,tagFilter:`태그 필터`,ownedOnly:`보유만`,clearSlot:`비우기`,emptyAssets:`에셋 없음`},Z={colors:{body:`피부`,hair:`머리카락`,hat:`모자`,top:`상의`,bottom:`하의`,shoes:`신발`},hair:{short:`짧은 머리`,long:`긴 머리`,cap:`캡`,bun:`올림머리`,spiky:`뾰족 머리`},face:{default:`기본`,smile:`미소`,wink:`윙크`,sleepy:`졸림`,surprised:`놀람`},slots:{hat:`모자`,top:`상의`,bottom:`하의`,shoes:`신발`,face:`표정`,glasses:`안경`,weapon:`무기`,accessory:`액세서리`}},hi=[{value:`body`,label:Z.colors.body},{value:`hair`,label:Z.colors.hair},{value:`hat`,label:Z.colors.hat},{value:`top`,label:Z.colors.top},{value:`bottom`,label:Z.colors.bottom},{value:`shoes`,label:Z.colors.shoes}],gi=[{value:`short`,label:Z.hair.short},{value:`long`,label:Z.hair.long},{value:`cap`,label:Z.hair.cap},{value:`bun`,label:Z.hair.bun},{value:`spiky`,label:Z.hair.spiky}],_i=[{value:`default`,label:Z.face.default},{value:`smile`,label:Z.face.smile},{value:`wink`,label:Z.face.wink},{value:`sleepy`,label:Z.face.sleepy},{value:`surprised`,label:Z.face.surprised}],vi={bgColor:`rgba(18, 20, 28, 0.94)`,borderColor:`rgba(255, 255, 255, 0.16)`,textColor:`#f3f4f8`,accentColor:`#7adf90`,mutedTextColor:`rgba(243, 244, 248, 0.64)`,surfaceColor:`rgba(255, 255, 255, 0.07)`,blurEffect:!0},yi={default:{id:`default`,name:`기본`,layout:`modal`,position:{},theme:vi,features:{...fi},sections:ui,slots:di,compact:!1},compact:{id:`compact`,name:`간단`,layout:`sidebar-right`,position:{top:16,right:16,width:360,maxHeight:`calc(100vh - 32px)`},theme:{...vi,bgColor:`rgba(14, 17, 24, 0.96)`},features:{...fi,previewRotate:!1,colorPicker:!1,savePresets:!1,tagFilter:!1},sections:[`preview`,`identity`,`outfits`],slots:[`hat`,`top`,`bottom`,`shoes`,`weapon`],compact:!0},minimal:{id:`minimal`,name:`최소`,layout:`floating`,position:{right:16,bottom:16,width:320},theme:{...vi,bgColor:`rgba(24, 27, 36, 0.9)`,accentColor:`#ffd84a`,blurEffect:!1},features:{...fi,closeUpMode:!1,assetBrowser:!1,tagFilter:!1,ownedOnly:!1,clearSlot:!1},sections:[`preview`,`identity`,`colors`],slots:[`hat`,`top`],compact:!0},creative:{id:`creative`,name:`크리에이티브`,layout:`modal`,position:{width:`min(1040px, calc(100vw - 32px))`},theme:{...vi,bgColor:`rgba(16, 20, 32, 0.95)`,accentColor:`#72d6ff`,surfaceColor:`rgba(114, 214, 255, 0.08)`},features:{...fi,savePresets:!0},sections:ui,slots:di,compact:!1}};function bi({context:e}){return(0,X.jsxs)(`div`,{className:e.classNameFor(`header`),style:e.styleFor(`header`,{borderColor:e.preset.theme.borderColor}),children:[(0,X.jsx)(`h2`,{className:e.classNameFor(`title`),children:e.labels.title}),(0,X.jsxs)(`div`,{className:e.classNameFor(`actions`),children:[e.features.resetButton&&(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`ghostButton`),style:e.styleFor(`ghostButton`,e.getButtonStyle()),onClick:e.actions.reset,children:e.labels.reset}),e.features.closeButton&&(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`primaryButton`),style:e.styleFor(`primaryButton`,e.getButtonStyle(!0)),onClick:e.actions.close,children:e.labels.close})]})]})}function xi({context:e}){return(0,X.jsxs)(`section`,{className:e.classNameFor(`previewSection`),children:[(0,X.jsx)(`p`,{className:e.classNameFor(`sectionTitle`),children:e.labels.preview}),(0,X.jsx)(`div`,{className:e.classNameFor(`previewFrame`),style:e.styleFor(`previewFrame`,{borderColor:e.preset.theme.borderColor}),children:(0,X.jsx)(`div`,{className:e.classNameFor(`previewGlyph`),style:e.styleFor(`previewGlyph`,e.getPreviewGlyphStyle())})}),(e.features.zoomControl||e.features.previewRotate||e.features.closeUpMode)&&(0,X.jsxs)(`div`,{className:e.classNameFor(`previewControls`),children:[e.features.zoomControl&&(0,X.jsxs)(`label`,{className:e.classNameFor(`previewControlGroup`),children:[(0,X.jsx)(`span`,{style:{color:e.preset.theme.mutedTextColor},children:e.labels.zoom}),(0,X.jsx)(`input`,{type:`range`,min:`0.6`,max:`2.4`,step:`0.1`,value:e.zoom,onChange:t=>e.actions.setZoom(Number(t.target.value)),className:e.classNameFor(`range`),"aria-label":e.labels.zoom})]}),e.features.previewRotate&&(0,X.jsxs)(`div`,{className:e.classNameFor(`previewControlGroup`),children:[(0,X.jsxs)(`button`,{type:`button`,className:e.classNameFor(`iconButton`),style:e.styleFor(`iconButton`,e.getButtonStyle()),onClick:()=>e.actions.rotatePreview(-30),"aria-label":e.labels.rotateLeft,children:[`-`,30]}),(0,X.jsxs)(`button`,{type:`button`,className:e.classNameFor(`iconButton`),style:e.styleFor(`iconButton`,e.getButtonStyle()),onClick:()=>e.actions.rotatePreview(30),"aria-label":e.labels.rotateRight,children:[`+`,30]})]}),e.features.closeUpMode&&(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`ghostButton`),style:e.styleFor(`ghostButton`,e.getButtonStyle(e.isCloseUp)),onClick:e.actions.toggleCloseUp,children:e.labels.closeUp})]})]})}function Si({context:e}){return(0,X.jsxs)(`section`,{className:e.classNameFor(`section`),style:e.styleFor(`section`,e.getSectionStyle()),children:[(0,X.jsx)(`p`,{className:e.classNameFor(`sectionTitle`),children:e.labels.colors}),(0,X.jsx)(`div`,{className:e.classNameFor(`colorGrid`),children:e.colorOptions.map(t=>(0,X.jsxs)(`label`,{className:e.classNameFor(`colorRow`),children:[(0,X.jsx)(`span`,{className:e.classNameFor(`colorLabel`),children:t.label}),(0,X.jsx)(`input`,{type:`color`,value:e.appearance.colors[t.value],onChange:n=>e.actions.setColor(t.value,n.target.value),className:e.classNameFor(`colorInput`),style:e.styleFor(`colorInput`,{borderColor:e.preset.theme.accentColor})})]},t.value))})]})}function Ci({context:e}){return(0,X.jsxs)(`section`,{className:e.classNameFor(`section`),style:e.styleFor(`section`,e.getSectionStyle()),children:[e.features.nameEditor&&(0,X.jsxs)(`label`,{className:e.classNameFor(`sectionStack`),children:[(0,X.jsx)(`span`,{className:e.classNameFor(`sectionTitle`),children:e.labels.name}),(0,X.jsx)(`input`,{value:e.appearance.name,onChange:t=>e.actions.setName(t.target.value),maxLength:16,className:e.classNameFor(`input`),style:e.styleFor(`input`,{borderColor:e.preset.theme.borderColor,color:e.preset.theme.textColor})})]}),e.features.hairPicker&&(0,X.jsxs)(`div`,{className:e.classNameFor(`sectionStack`),children:[(0,X.jsx)(`p`,{className:e.classNameFor(`sectionTitle`),children:e.labels.hair}),(0,X.jsx)(`div`,{className:e.classNameFor(`optionRow`),children:e.hairOptions.map(t=>{let n=e.appearance.hair===t.value;return(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(n?`activeChip`:`chip`),style:e.styleFor(n?`activeChip`:`chip`,e.getButtonStyle(n)),onClick:()=>e.actions.setHair(t.value),children:t.label},t.value)})})]}),e.features.facePicker&&(0,X.jsxs)(`div`,{className:e.classNameFor(`sectionStack`),children:[(0,X.jsx)(`p`,{className:e.classNameFor(`sectionTitle`),children:e.labels.face}),(0,X.jsx)(`div`,{className:e.classNameFor(`optionRow`),children:e.faceOptions.map(t=>{let n=e.appearance.face===t.value;return(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(n?`activeChip`:`chip`),style:e.styleFor(n?`activeChip`:`chip`,e.getButtonStyle(n)),onClick:()=>e.actions.setFace(t.value),children:t.label},t.value)})})]})]})}function wi(e,t,n,r){return(0,X.jsxs)(`button`,{type:`button`,title:n.name,className:e.classNameFor(r?`activeAssetButton`:`assetButton`),style:e.styleFor(r?`activeAssetButton`:`assetButton`,e.getButtonStyle(r)),onClick:()=>e.actions.equipOutfit(t,n.id),children:[n.thumbnailUrl?(0,X.jsx)(`img`,{src:n.thumbnailUrl,alt:n.name,className:e.classNameFor(`assetImage`)}):(0,X.jsx)(`span`,{className:e.classNameFor(`assetInitial`),children:e.getAssetInitial(n)}),(0,X.jsx)(`span`,{className:e.classNameFor(`assetName`),children:n.name})]})}function Ti(e){return(0,X.jsx)(`div`,{className:e.classNameFor(`emptyState`),style:e.styleFor(`emptyState`,{borderColor:e.preset.theme.borderColor}),children:e.labels.emptyAssets})}function Ei(e,t,n,r){return t?.outfitSlot?t.outfitSlot(e,n,r):(0,X.jsxs)(`div`,{className:e.classNameFor(`slot`),style:e.styleFor(`slot`,{background:pi,borderColor:e.preset.theme.borderColor}),children:[(0,X.jsxs)(`div`,{className:e.classNameFor(`slotHeader`),children:[(0,X.jsx)(`span`,{className:e.classNameFor(`slotTitle`),children:e.labelMaps.slots[n]}),e.features.clearSlot&&e.outfits[n]&&(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`iconButton`),style:e.styleFor(`iconButton`,e.getButtonStyle()),onClick:()=>e.actions.equipOutfit(n,null),children:e.labels.clearSlot})]}),r.length===0?t?.emptyAssets?.(e,n)??Ti(e):(0,X.jsx)(`div`,{className:e.classNameFor(`assetGrid`),children:r.map(r=>{let i=e.outfits[n]===r.id;return(0,X.jsx)(J.Fragment,{children:t?.assetButton?.(e,n,r,i)??wi(e,n,r,i)},r.id)})})]})}function Di({context:e,renderers:t}){return(0,X.jsxs)(`section`,{className:e.classNameFor(`section`),style:e.styleFor(`section`,e.getSectionStyle()),children:[(0,X.jsx)(`p`,{className:e.classNameFor(`sectionTitle`),children:e.labels.outfits}),(e.features.tagFilter||e.features.ownedOnly)&&(0,X.jsxs)(`div`,{className:e.classNameFor(`filterRow`),children:[e.features.tagFilter&&(0,X.jsx)(`input`,{value:e.tagFilter,onChange:t=>e.actions.setTagFilter(t.target.value),placeholder:e.labels.tagFilter,className:e.classNameFor(`input`),style:e.styleFor(`input`,{borderColor:e.preset.theme.borderColor,color:e.preset.theme.textColor})}),e.features.ownedOnly&&(0,X.jsxs)(`label`,{className:e.classNameFor(`filterLabel`),children:[(0,X.jsx)(`input`,{type:`checkbox`,checked:e.ownedOnly,onChange:t=>e.actions.setOwnedOnly(t.target.checked),className:e.classNameFor(`checkbox`)}),e.labels.ownedOnly]})]}),(0,X.jsx)(`div`,{className:e.classNameFor(`slotList`),children:e.selectedSlots.map(n=>(0,X.jsx)(J.Fragment,{children:Ei(e,t,n,e.assetsBySlot[n]??[])},n))})]})}var Oi=`gaesup:character-menu-presets`;function ki(){if(typeof window>`u`)return null;try{return window.localStorage??null}catch{return null}}function Ai(){try{let e=ki();if(!e)return{};let t=e.getItem(Oi);return t?JSON.parse(t):{}}catch{return{}}}function ji(e){return{...yi,...Ai(),...e}}function Mi(...e){return e.filter(e=>!!e).join(` `)}function Ni(e,t){return{...fi,...e.features,...t}}function Pi(e,t,n,r){return{...r,...t.styles?.[e],...n?.[e]}}function Fi(e,t){return typeof e==`object`&&e?e:ji(t)[e??`default`]??yi.default}function Ii(e){return{colors:{...Z.colors,...e?.colors},hair:{...Z.hair,...e?.hair},face:{...Z.face,...e?.face},slots:{...Z.slots,...e?.slots}}}function Li(e,t,n){return e.filter(e=>t?.includes(e)?!1:e===`colors`?n.colorPicker:e===`outfits`?n.assetBrowser:e!==`identity`||n.nameEditor||n.hairPicker||n.facePicker)}function Ri(e,t,n,r){return Li(e??t.sections??ui,n,r)}function zi(e,t,n){return(e??t.slots??di).filter(e=>!n?.includes(e))}function Bi(e,t){return t===`weapon`?e.kind===`weapon`||e.slot===`weapon`:e.slot===t&&(e.kind===`characterPart`||e.kind===`weapon`)}function Vi(e){let t=e.metadata?.owned;return t===void 0||t===!0}function Hi(e){return e.name.trim().charAt(0).toUpperCase()||`?`}var Ui=[0,1.7,3],Wi={focusDistance:3,focusLerpSpeed:8,fov:50},Gi={top:`50%`,left:`50%`,width:`min(920px, calc(100vw - 32px))`,maxHeight:`calc(100vh - 32px)`,transform:`translate(-50%, -50%)`},Ki={top:16,bottom:16,left:16,width:360,maxWidth:`calc(100vw - 32px)`},qi={top:16,bottom:16,right:16,width:360,maxWidth:`calc(100vw - 32px)`},Ji={right:16,bottom:16,width:340,maxWidth:`calc(100vw - 32px)`,maxHeight:`calc(100vh - 32px)`},Yi=`0 18px 42px rgba(0, 0, 0, 0.38), inset 0 1px 0 rgba(255, 255, 255, 0.06)`,Xi=`rgba(255, 255, 255, 0.07)`,Zi=`rgba(255, 255, 255, 0.07)`,Qi=`26`,$i=`1fr`,ea=`minmax(240px, 0.85fr) minmax(320px, 1.15fr)`,ta=74,na=118,ra=112,ia=168;function aa(e){return e.layout===`sidebar-left`?Ki:e.layout===`sidebar-right`?qi:e.layout===`floating`?Ji:Gi}var oa=new Set;function sa({toggleKey:e,open:t,onClose:n,onOpenChange:r,preset:i,customPresets:a,sections:o,hiddenSections:s,slots:c,hiddenSlots:u,features:d,className:p,classNames:m,styles:h,labels:g,labelMaps:_,colorOptions:v,hairOptions:y,faceOptions:x,ownedOnlyDefault:S=!1,tagFilterDefault:C=``,assetFilter:w,assetSort:T,isAssetOwned:E=Vi,closeUpController:D}={}){let O=f.mr(),k=typeof t==`boolean`,[A,j]=(0,J.useState)(!1),M=k?!!t:A,[N,P]=(0,J.useState)(`normal`),[F,ee]=(0,J.useState)(1),[I,L]=(0,J.useState)(0),[R,z]=(0,J.useState)(C),[B,V]=(0,J.useState)(S),H=(0,J.useMemo)(()=>Fi(i,a),[a,i]),U=(0,J.useMemo)(()=>Ni(H,d),[d,H]),te=(0,J.useMemo)(()=>({...mi,...g}),[g]),W=(0,J.useMemo)(()=>Ii(_),[_]),G=(0,J.useMemo)(()=>v??hi.map(e=>({...e,label:W.colors[e.value]})),[v,W]),ne=(0,J.useMemo)(()=>y??gi.map(e=>({...e,label:W.hair[e.value]})),[y,W]),re=(0,J.useMemo)(()=>x??_i.map(e=>({...e,label:W.face[e.value]})),[x,W]),K=(0,J.useMemo)(()=>Ri(o,H,s,U),[U,s,H.sections,o]),q=(0,J.useMemo)(()=>zi(c,H,u),[u,H,c]),ie=(0,J.useMemo)(()=>K.filter(e=>e!==`preview`),[K]),Y=!!H.compact,X=Y||K.length<=2?$i:ea,ae=(0,J.useCallback)((e,t)=>Mi(li[e],H.classNames?.[e],m?.[e],t),[m,H.classNames]),oe=(0,J.useCallback)((e,t)=>Pi(e,H,h,t),[H,h]),se=b.S(e=>e.activeCharacterId),ce=b.S(e=>e.appearance),le=b.S(e=>e.outfits),ue=b.S(e=>e.setName),de=b.S(e=>e.setColor),fe=b.S(e=>e.setHair),pe=b.S(e=>e.setFace),me=b.S(e=>e.equipOutfit),he=b.S(e=>e.resetAppearance),ge=l.i(e=>e.ids),_e=l.i(e=>e.records),ve=(0,J.useCallback)(()=>{if(D){D.restore();return}b.A()},[D]),ye=(0,J.useCallback)(()=>{if(D){D.request();return}b.k(Ui,Wi)},[D]),be=(0,J.useCallback)(()=>{N===`closeUp`&&(ve(),P(`normal`)),k||j(!1),n?.(),r?.(!1)},[k,n,r,N,ve]),xe=(0,J.useCallback)(()=>{oa.forEach(e=>e()),k||j(!0),r?.(!0)},[k,r]),Se=(0,J.useCallback)(()=>{M?be():xe()},[be,M,xe]),Ce=(0,J.useCallback)(()=>{if(N===`closeUp`){ve(),P(`normal`);return}ye(),P(`closeUp`)},[N,ye,ve]),we=(0,J.useCallback)(e=>ee(e),[]),Te=(0,J.useCallback)(e=>L(e),[]),Ee=(0,J.useCallback)(e=>{L(t=>t+e)},[]),De=(0,J.useCallback)(()=>{he(se)},[se,he]),Oe=(0,J.useMemo)(()=>{let e=R.trim().toLowerCase(),t={};for(let n of q){let r=le[n],i=ge.map(e=>_e[e]).filter(e=>!!e).filter(e=>Bi(e,n)).filter(e=>!B||E(e)).filter(t=>e?t.tags?.some(t=>t.toLowerCase().includes(e))??!1:!0).filter(e=>!w||w({asset:e,slot:n,tagFilter:R,ownedOnly:B,selectedAssetId:r}));t[n]=T?[...i].sort((e,t)=>T(e,t,n)):i}return t},[w,ge,_e,T,E,le,B,q,R]);(0,J.useEffect)(()=>{if(M)return oa.add(be),()=>{oa.delete(be)}},[be,M]),(0,J.useEffect)(()=>{if(!e||k)return;let t=O.listen(`keydown`,t=>{let n=t.target?.tagName?.toLowerCase();if(n===`input`||n===`textarea`||n===`select`)return;let r=e.toLowerCase(),i=`Key${e.toUpperCase()}`;(t.code===i||t.key.toLowerCase()===r)&&Se()});return()=>t()},[O,k,e,Se]),(0,J.useEffect)(()=>{M||N!==`closeUp`||(ve(),P(`normal`))},[M,N,ve]);let ke=(0,J.useRef)(N),Ae=(0,J.useRef)(ve);(0,J.useEffect)(()=>{ke.current=N},[N]),(0,J.useEffect)(()=>{Ae.current=ve},[ve]),(0,J.useEffect)(()=>()=>{ke.current===`closeUp`&&Ae.current()},[]);let je=(0,J.useCallback)((e=!1)=>({background:e?`${H.theme.accentColor}${Qi}`:Xi,borderColor:e?H.theme.accentColor:H.theme.borderColor,color:e?H.theme.accentColor:H.theme.textColor}),[H.theme]),Me=(0,J.useCallback)(()=>({background:H.theme.bgColor,borderColor:H.theme.borderColor,color:H.theme.textColor,boxShadow:Yi,...aa(H),...H.position}),[H]),Ne=(0,J.useCallback)(()=>({background:H.theme.surfaceColor??Zi,borderColor:H.theme.borderColor}),[H.theme]),Pe=(0,J.useCallback)(()=>({width:Y?ta:ra,height:Y?na:ia,borderColor:H.theme.accentColor,boxShadow:`0 20px 40px ${H.theme.accentColor}22`,background:`linear-gradient(160deg, ${ce.colors.hair}, ${ce.colors.top} 48%, ${ce.colors.bottom})`,transform:`scale(${F}) rotateY(${I}deg)`}),[ce.colors.bottom,ce.colors.hair,ce.colors.top,Y,H.theme.accentColor,I,F]),Fe=(0,J.useMemo)(()=>({open:xe,close:be,toggle:Se,reset:De,setName:ue,setColor:de,setHair:fe,setFace:pe,equipOutfit:me,setZoom:we,setRotation:Te,rotatePreview:Ee,setTagFilter:z,setOwnedOnly:V,toggleCloseUp:Ce}),[be,me,xe,De,Ee,de,pe,fe,ue,Te,we,Ce,Se]);return(0,J.useMemo)(()=>({isOpen:M,controlled:k,isCloseUp:N===`closeUp`,previewMode:N,zoom:F,rotation:I,tagFilter:R,ownedOnly:B,compact:Y,bodyColumns:X,preset:H,features:U,labels:te,labelMaps:W,selectedSections:K,rightSections:ie,selectedSlots:q,colorOptions:G,hairOptions:ne,faceOptions:re,appearance:ce,outfits:le,assetsBySlot:Oe,rootClassName:p,classNameFor:ae,styleFor:oe,getButtonStyle:je,getPanelStyle:Me,getSectionStyle:Ne,getPreviewGlyphStyle:Pe,getAssetInitial:Hi,actions:Fe}),[Fe,ce,Oe,X,p,ae,G,Y,k,re,U,je,Me,Pe,Ne,ne,M,W,te,le,B,H,N,ie,I,K,q,oe,R,F])}function ca(e,t,n){return n===`identity`?t?.identity?.(e)??(0,X.jsx)(Ci,{context:e}):n===`colors`?t?.colors?.(e)??(0,X.jsx)(Si,{context:e}):n===`outfits`?t?.outfits?.(e)??(0,X.jsx)(Di,{context:e,renderers:t}):null}function la(e,t,n){return(0,X.jsxs)(X.Fragment,{children:[t?.header?.(e)??(0,X.jsx)(bi,{context:e}),(0,X.jsxs)(`div`,{className:e.classNameFor(`body`),style:e.styleFor(`body`,{gridTemplateColumns:e.bodyColumns}),children:[e.selectedSections.includes(`preview`)&&(t?.preview?.(e)??(0,X.jsx)(xi,{context:e})),e.rightSections.length>0&&(0,X.jsx)(`div`,{className:e.classNameFor(`sectionStack`),children:e.rightSections.map(n=>(0,X.jsx)(`div`,{children:ca(e,t,n)},n))})]}),n&&(t?.footer?.(e,n)??(0,X.jsx)(`div`,{className:e.classNameFor(`footer`),style:e.styleFor(`footer`,{borderColor:e.preset.theme.borderColor}),children:n}))]})}function ua(e){return(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`backdrop`),style:e.styleFor(`backdrop`,{background:e.isCloseUp?`transparent`:`rgba(0, 0, 0, 0.28)`,backdropFilter:!e.isCloseUp&&e.preset.theme.blurEffect?`blur(4px)`:`none`}),onClick:e.isCloseUp?void 0:e.actions.close,"aria-label":e.labels.close})}function da(e,t,n){let r=la(e,t,n);return t?.panel?.(e,r)??(0,X.jsx)(`div`,{className:e.classNameFor(`panel`),style:e.styleFor(`panel`,e.getPanelStyle()),onClick:e=>e.stopPropagation(),children:r})}function fa(e){return(0,X.jsx)(`button`,{type:`button`,className:e.classNameFor(`closeUpOverlay`),style:e.styleFor(`closeUpOverlay`),onClick:e.actions.toggleCloseUp,"aria-label":e.labels.exitCloseUp})}function pa(e,t,n){let r=(0,X.jsxs)(X.Fragment,{children:[t?.backdrop?.(e)??ua(e),!e.isCloseUp&&da(e,t,n),e.isCloseUp&&(t?.closeUpOverlay?.(e)??fa(e))]});return t?.root?.(e,r)??(0,X.jsx)(`div`,{className:e.classNameFor(`root`,e.rootClassName),style:e.styleFor(`root`,{pointerEvents:e.isCloseUp?`none`:`auto`}),children:r})}function ma(e={}){let t=sa(e);return t.isOpen?(0,X.jsx)(g.a,{tabIndex:-1,style:{display:`contents`},children:pa(t,e.renderers,e.children)}):null}var ha={title:`캐릭터 만들기`,close:`완료`},ga={savePresets:!1,tagFilter:!0,ownedOnly:!0};function _a({preset:e=`creative`,labels:t,features:n,...r}={}){return(0,X.jsx)(ma,{...r,preset:e,labels:{...ha,...t},features:{...ga,...n}})}var va={hat:{socket:`head`,position:[0,.18,0],scale:[1,1,1]},top:{socket:`chest`,position:[0,-.58,0],scale:[1,1,1]},bottom:{socket:`hips`,position:[0,-.82,0],scale:[1,1,1]},shoes:{socket:`leftFoot`,position:[0,-1.12,.04],scale:[1,1,1]},face:{socket:`face`,position:[0,-.18,.32],scale:[1,1,1]},glasses:{socket:`face`,position:[0,-.08,.32],scale:[1,1,1]},weapon:{socket:`rightHand`,position:[.48,-.55,.02],rotation:[0,0,-.55],scale:[1,1,1]},accessory:{socket:`face`,position:[.36,-.08,.1],rotation:[Math.PI/2,0,0],scale:[1,1,1]}};function ya(e){return Array.isArray(e)&&e.length===3&&e.every(e=>typeof e==`number`&&Number.isFinite(e))}function ba(e){return e===`head`||e===`face`||e===`chest`||e===`hips`||e===`leftFoot`||e===`rightFoot`||e===`leftHand`||e===`rightHand`||e===`back`}function xa(e){if(e.metadata?.deformation!==`rigid`)return;let t=e.metadata.attachment;if(!t||typeof t!=`object`||Array.isArray(t))return;let n=t,r=n.bone;if(typeof r!=`string`||!r.trim())return;for(let e of[`position`,`rotation`,`scale`])if(n[e]!==void 0&&!ya(n[e]))return;let i=n.position,a=n.rotation,o=n.scale;return{bone:r,position:ya(i)?[...i]:[0,0,0],...ya(a)?{rotation:[...a]}:{},...ya(o)?{scale:[...o]}:{}}}function Sa(e){let t=e.metadata;if(!t||typeof t!=`object`)return{};let n=t.attachment;if(!n||typeof n!=`object`)return{};let r=n;return{...ba(r.socket)?{socket:r.socket}:{},...ya(r.position)?{position:r.position}:{},...ya(r.rotation)?{rotation:r.rotation}:{},...ya(r.scale)?{scale:r.scale}:{}}}function Ca(e){return{socket:e.socket,position:[...e.position],...e.rotation?{rotation:[...e.rotation]}:{},...e.scale?{scale:[...e.scale]}:{}}}function wa(e,t){let n=Ca(va[t]),r=Sa(e),i={...n,...r};return{assetId:e.id,assetName:e.name,slot:t,kind:e.kind,socket:i.socket,position:[...i.position],...i.rotation?{rotation:[...i.rotation]}:{},...i.scale?{scale:[...i.scale]}:{}}}function Ta({outfits:e,assets:t}){return Object.entries(e).flatMap(([e,n])=>{if(!n)return[];let r=t[n];return r?[wa(r,e)]:[]})}var Ea=e=>!e?.url||e.metadata?.placeholder===!0?!1:e.kind===`characterPart`||e.kind===`weapon`;function Da(e){return(0,J.useMemo)(()=>{switch(e){case`long`:return{geometry:new q.SphereGeometry(.28,12,10,0,Math.PI*2,0,Math.PI*.65),position:[0,-.05,0],scale:[1.05,1.55,1.05]};case`cap`:return{geometry:new q.CylinderGeometry(.32,.34,.18,16),position:[0,.1,0],scale:[1,1,1]};case`bun`:return{geometry:new q.SphereGeometry(.22,12,10),position:[0,.18,-.05],scale:[1,1,1]};case`spiky`:return{geometry:new q.ConeGeometry(.32,.36,8),position:[0,.15,0],scale:[1,1,1]};default:return{geometry:new q.SphereGeometry(.3,12,10,0,Math.PI*2,0,Math.PI*.5),position:[0,.05,0],scale:[1,1,1]}}},[e])}function Oa({headHeight:e=1.55,enabled:n=!0,opacity:r=1,characterId:i}={}){let a=(0,J.useRef)(null),o=b.S(e=>i?e.characters[i]?.appearance??b.w:e.appearance),s=b.S(e=>i?e.characters[i]?.outfits??b.b:e.outfits),c=l.i(e=>e.records),{position:u,rotation:d}=L.l({reactive:!1}),f=Da(o.hair);if((0,J.useEffect)(()=>{let e=f.geometry;return()=>{e.dispose()}},[f.geometry]),t.t(`lateUpdate`,()=>{let t=a.current;t&&(t.position.set(u.x,u.y+e,u.z),t.rotation.set(0,d.y,0))},{label:`character:outfit-avatar`}),!n)return null;let p=e=>{let t=s[e];return t?!Ea(c[t]):!1},m=!!s.hat,h=p(`hat`),g=p(`top`),_=p(`bottom`),v=p(`shoes`),y=p(`glasses`),x=p(`weapon`),S=p(`accessory`),C=q.MathUtils.clamp(r,0,1),w=va.weapon,T=va.accessory;return(0,X.jsxs)(`group`,{ref:a,children:[!m&&(0,X.jsxs)(`mesh`,{position:f.position,scale:f.scale,castShadow:!0,children:[(0,X.jsx)(`primitive`,{object:f.geometry,attach:`geometry`}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.hair,roughness:.85,metalness:.05,transparent:C<1,opacity:C})]}),h&&(0,X.jsxs)(`group`,{position:[0,.1,0],children:[(0,X.jsxs)(`mesh`,{castShadow:!0,children:[(0,X.jsx)(`cylinderGeometry`,{args:[.34,.34,.22,18]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.hat,roughness:.7,metalness:.05,transparent:C<1,opacity:C})]}),(0,X.jsxs)(`mesh`,{position:[0,-.1,0],children:[(0,X.jsx)(`cylinderGeometry`,{args:[.5,.5,.04,24]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.hat,roughness:.7,metalness:.05,transparent:C<1,opacity:C})]})]}),g&&(0,X.jsxs)(`mesh`,{position:[0,-.58,0],scale:[.72,.18,.18],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.top,roughness:.8,metalness:.05,transparent:C<1,opacity:C})]}),_&&(0,X.jsxs)(`mesh`,{position:[0,-.82,0],scale:[.48,.14,.16],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.bottom,roughness:.85,metalness:.04,transparent:C<1,opacity:C})]}),v&&(0,X.jsxs)(`group`,{position:[0,-1.12,.04],children:[(0,X.jsxs)(`mesh`,{position:[-.13,0,0],scale:[.17,.07,.28],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.shoes,roughness:.9,metalness:.03,transparent:C<1,opacity:C})]}),(0,X.jsxs)(`mesh`,{position:[.13,0,0],scale:[.17,.07,.28],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:o.colors.shoes,roughness:.9,metalness:.03,transparent:C<1,opacity:C})]})]}),x&&(0,X.jsxs)(`group`,{position:w.position,...w.rotation?{rotation:w.rotation}:{},children:[(0,X.jsxs)(`mesh`,{position:[0,.18,0],scale:[.045,.48,.045],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#d7dde8`,roughness:.45,metalness:.45,transparent:C<1,opacity:C})]}),(0,X.jsxs)(`mesh`,{position:[0,-.12,0],scale:[.12,.08,.08],castShadow:!0,children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#5c4635`,roughness:.7,metalness:.08,transparent:C<1,opacity:C})]})]}),S&&(0,X.jsxs)(`mesh`,{position:T.position,...T.rotation?{rotation:T.rotation}:{},castShadow:!0,children:[(0,X.jsx)(`torusGeometry`,{args:[.08,.015,8,18]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#f3d35f`,roughness:.42,metalness:.55,transparent:C<1,opacity:C})]}),y&&(0,X.jsxs)(`group`,{position:[0,-.08,.33],children:[(0,X.jsxs)(`mesh`,{position:[-.11,0,0],scale:[.09,.045,.018],children:[(0,X.jsx)(`torusGeometry`,{args:[1,.12,8,18]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#172033`,roughness:.35,metalness:.18})]}),(0,X.jsxs)(`mesh`,{position:[.11,0,0],scale:[.09,.045,.018],children:[(0,X.jsx)(`torusGeometry`,{args:[1,.12,8,18]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#172033`,roughness:.35,metalness:.18})]}),(0,X.jsxs)(`mesh`,{scale:[.08,.012,.012],children:[(0,X.jsx)(`boxGeometry`,{args:[1,1,1]}),(0,X.jsx)(`meshStandardMaterial`,{color:`#172033`,roughness:.35,metalness:.18})]})]}),(0,X.jsx)(ka,{style:o.face,opacity:C})]})}function ka({style:e,opacity:t}){let n=(0,J.useMemo)(()=>{switch(e){case`smile`:return`#ff8aa0`;case`wink`:return`#ffb04a`;case`sleepy`:return`#7d8ec8`;case`surprised`:return`#ffe066`;default:return`#ffb6a8`}},[e]);return(0,X.jsxs)(`group`,{position:[0,-.18,.32],children:[(0,X.jsxs)(`mesh`,{position:[-.13,0,0],children:[(0,X.jsx)(`sphereGeometry`,{args:[.045,8,8]}),(0,X.jsx)(`meshBasicMaterial`,{color:n,transparent:!0,opacity:t*.6})]}),(0,X.jsxs)(`mesh`,{position:[.13,0,0],children:[(0,X.jsx)(`sphereGeometry`,{args:[.045,8,8]}),(0,X.jsx)(`meshBasicMaterial`,{color:n,transparent:!0,opacity:t*.6})]})]})}var Aa=[`default`,`smile`,`wink`,`surprised`,`sleepy`],ja=8,Ma={header:!0,meta:!0,faceCycle:!0,weaponToggle:!0,presets:!0,reset:!0},Na={title:`동작과 장비`,face:`표정`,equipWeapon:`무기 장착`,unequipWeapon:`무기 해제`,reset:`초기화`,emptyPresets:`프리셋이 없습니다`},Pa={default:`기본`,smile:`미소`,wink:`윙크`,surprised:`놀람`,sleepy:`졸림`},Fa={root:`action-equipment-panel`,header:`action-equipment-panel-header`,title:`action-equipment-panel-title`,meta:`action-equipment-panel-meta`,actionRow:`action-equipment-panel-row action-equipment-panel-row--actions`,presetRow:`action-equipment-panel-row action-equipment-panel-row--presets`,button:`action-equipment-panel-button`,activeButton:`action-equipment-panel-button--active`,faceButton:`action-equipment-panel-button--face`,weaponButton:`action-equipment-panel-button--weapon`,presetButton:`action-equipment-panel-button--preset`,resetButton:`action-equipment-panel-button--reset`,emptyPresets:`action-equipment-panel-empty`};function Ia(...e){return e.filter(e=>!!e).join(` `)}function La(e){return{...Ma,...e}}function Ra(e){return{...Na,...e}}function za(e){return{...Pa,...e}}function Ba(e,t,n){return{...n,...e?.[t]}}function Va(e,t){return e.features.header?t?.header?t.header(e):(0,X.jsxs)(`div`,{className:e.classNameFor(`header`),style:e.styleFor(`header`),children:[(0,X.jsx)(`span`,{className:e.classNameFor(`title`),style:e.styleFor(`title`),children:e.labels.title}),e.features.meta&&(0,X.jsx)(`span`,{className:e.classNameFor(`meta`),style:e.styleFor(`meta`),children:e.metaLabel})]}):null}function Ha(e,t,n=!1){let r=e.styleFor(t,e.styleFor(`button`));return n?e.styleFor(`activeButton`,r):r}function Ua(e,t){return e.features.faceCycle?t?.faceButton?t.faceButton(e):(0,X.jsx)(`button`,{type:`button`,className:Ia(e.classNameFor(`button`),e.classNameFor(`faceButton`)),style:Ha(e,`faceButton`),onClick:e.actions.cycleFace,children:e.faceButtonLabel}):null}function Wa(e,t){return e.features.weaponToggle?t?.weaponButton?t.weaponButton(e):(0,X.jsx)(`button`,{type:`button`,className:Ia(e.classNameFor(`button`),e.classNameFor(`weaponButton`),e.weaponEquipped&&e.classNameFor(`activeButton`)),style:Ha(e,`weaponButton`,e.weaponEquipped),onClick:e.actions.toggleWeapon,children:e.weaponButtonLabel}):null}function Ga(e,t,n){return t?.presetButton?(0,X.jsx)(J.Fragment,{children:t.presetButton(e,n)},n.id):(0,X.jsx)(`button`,{type:`button`,className:Ia(e.classNameFor(`button`),e.classNameFor(`presetButton`)),style:Ha(e,`presetButton`),onClick:()=>e.actions.applyPreset(n),children:n.label},n.id)}function Ka(e,t){return e.features.reset?t?.resetButton?t.resetButton(e):(0,X.jsx)(`button`,{type:`button`,className:Ia(e.classNameFor(`button`),e.classNameFor(`resetButton`)),style:Ha(e,`resetButton`),onClick:e.actions.reset,children:e.labels.reset}):null}function qa(e,t){return t?.emptyPresets?t.emptyPresets(e):(0,X.jsx)(`span`,{className:e.classNameFor(`emptyPresets`),style:e.styleFor(`emptyPresets`),children:e.labels.emptyPresets})}function Ja(e,t){let n=(0,X.jsxs)(X.Fragment,{children:[Ua(e,t),Wa(e,t)]});return!e.features.faceCycle&&!e.features.weaponToggle?null:t?.actionRow?t.actionRow(e,n):(0,X.jsx)(`div`,{className:e.classNameFor(`actionRow`),style:e.styleFor(`actionRow`),children:n})}function Ya(e,t){if(!e.features.presets&&!e.features.reset)return null;let n=e.features.presets?e.presets.length>0?e.presets.map(n=>Ga(e,t,n)):qa(e,t):null,r=(0,X.jsxs)(X.Fragment,{children:[n,Ka(e,t)]});return t?.presetRow?t.presetRow(e,r):(0,X.jsx)(`div`,{className:e.classNameFor(`presetRow`),style:e.styleFor(`presetRow`),children:r})}function Xa(e,t,n){return(0,X.jsxs)(X.Fragment,{children:[Va(e,t),Ja(e,t),Ya(e,t),n]})}function Za({presets:e=b.h,weaponItemId:t=`starter-weapon-layer`,outfitSlotCount:n=8,faceSequence:r=Aa,className:i,style:a,classNames:o,styles:s,labels:c,labelMaps:l,features:u,renderers:d,formatFaceLabel:f,formatWeaponLabel:p,formatMetaLabel:m,children:h}={}){let g=b.C(),_=b.S(e=>e.appearance.face),v=b.S(e=>e.outfits),y=b.S(e=>e.setFace),x=b.S(e=>e.resetAppearance),S=(0,J.useMemo)(()=>r.length>0?r:Aa,[r]),C=(0,J.useMemo)(()=>Object.values(v).filter(Boolean).length,[v]),w=(0,J.useMemo)(()=>La(u),[u]),T=(0,J.useMemo)(()=>Ra(c),[c]),E=(0,J.useMemo)(()=>za(l?.face),[l?.face]),D=E[_],O=v.weapon===t,k=(0,J.useMemo)(()=>f?.(_,D)??`${T.face}: ${D}`,[_,D,f,T.face]),A=(0,J.useMemo)(()=>p?.(O,T)??(O?T.unequipWeapon:T.equipWeapon),[p,T,O]),j=(0,J.useMemo)(()=>m?.(C,n)??`${C}/${n}`,[C,m,n]),M=(0,J.useCallback)(()=>{let e=S.indexOf(_);y(S[(e+1)%S.length]??`default`)},[_,S,y]),N=(0,J.useCallback)(()=>{b._(t,g)},[t,g]),P=(0,J.useCallback)(e=>{b.g(e,g)},[g]),F=(0,J.useMemo)(()=>({cycleFace:M,toggleWeapon:N,applyPreset:P,reset:x}),[P,M,x,N]),ee=(0,J.useCallback)((e,t)=>Ia(Fa[e],o?.[e],e===`root`&&i,t),[i,o]),I=(0,J.useCallback)((e,t)=>{let n=Ba(s,e,t);return e===`root`?{...n,...a}:n},[a,s]),L=(0,J.useMemo)(()=>({face:_,faceLabel:D,faceButtonLabel:k,weaponButtonLabel:A,metaLabel:j,outfits:v,equippedCount:C,outfitSlotCount:n,weaponItemId:t,weaponEquipped:O,presets:e,faceSequence:S,labels:T,faceLabels:E,features:w,classNameFor:ee,styleFor:I,actions:F}),[F,ee,C,_,k,D,E,w,T,j,S,n,v,e,I,A,O,t]),R=Xa(L,d,h);return d?.root?(0,X.jsx)(X.Fragment,{children:d.root(L,R)}):(0,X.jsx)(`div`,{className:L.classNameFor(`root`),style:L.styleFor(`root`),children:R})}var Qa=e=>!e?.url||e.metadata?.placeholder===!0||e.metadata?.deformation===`rigid`&&!xa(e)?!1:e.kind===`characterPart`||e.kind===`weapon`,$a=e=>{let t=e.metadata?.hideBodyRegions;if(!Array.isArray(t))return;let n=t.filter(e=>typeof e==`string`);return n.length>0?n:void 0},eo=e=>{let t=$a(e),n=xa(e);return{id:e.id,...e.slot?{slot:e.slot}:{},url:e.url,...e.colors?.primary?{color:e.colors.primary}:{},...t?{hideNodeNames:t}:{},...n?{attachment:n}:{}}};function to({baseParts:e=[],outfits:t,assets:n}){let r=Object.values(t).map(e=>e?n[e]:void 0).filter(Qa).map(eo);if(r.length===0)return e.map(e=>({...e}));let i=new Set(r.map(e=>e.slot).filter(Boolean)),a=e.filter(e=>!e.slot||!i.has(e.slot)).map(e=>({...e}));for(let e of r)a.some(t=>t.url===e.url&&t.slot===e.slot)||a.push(e);return a}var no={top:[`tee`],face:[],glasses:[],hat:[],weapon:[],accessory:[]};function ro(e){let t=new Set;for(let n of e)n.hideNodeNames?.forEach(e=>t.add(e)),n.slot&&no[n.slot]?.forEach(e=>t.add(e));return[...t]}function io({capacity:e=64,step:n=.55,lifetime:r=9,size:i=.34,y:a=.02,color:o=`#1a1612`}={}){let s=(0,J.useRef)(null),c=L.l({updateInterval:32,reactive:!1}),{position:l}=c,u=(0,J.useMemo)(()=>new q.Color(o),[o]),d=(0,J.useMemo)(()=>Array.from({length:e},()=>({x:0,z:0,bornAt:-1/0,side:1})),[e]),f=(0,J.useRef)(null),p=(0,J.useRef)(0),m=(0,J.useRef)(1),h=(0,J.useMemo)(()=>{let e=new q.PlaneGeometry(1,1);return e.rotateX(-Math.PI/2),e},[]),g=(0,J.useMemo)(()=>new q.MeshBasicMaterial({color:u,transparent:!0,opacity:.42,depthWrite:!1,polygonOffset:!0,polygonOffsetFactor:-1,polygonOffsetUnits:-1}),[u]);(0,J.useEffect)(()=>()=>{h.dispose(),g.dispose()},[h,g]);let _=(0,J.useMemo)(()=>new q.Object3D,[]),v=(0,J.useMemo)(()=>new q.Color,[]);return t.t(`lateUpdate`,(o,h)=>{let g=s.current;if(!g)return;let y=h/t.d;if(c.isGrounded&&c.isMoving){let t=f.current,r=l.x-(t?.x??l.x),i=l.z-(t?.z??l.z);if(!t||Math.hypot(r,i)>=n){let t=d[p.current];t&&(t.x=l.x,t.z=l.z,t.bornAt=y,t.side=m.current,m.current=m.current===1?-1:1,p.current=(p.current+1)%e,f.current={x:l.x,z:l.z})}}let b=0;for(let t=0;t<e;t++){let e=d[t];if(!e)continue;let n=y-e.bornAt;if(n<0||n>r)continue;let o=1-n/r;_.position.set(e.x+e.side*.07,a,e.z),_.rotation.set(0,0,0),_.scale.set(i,1,i*1.4),_.updateMatrix(),g.setMatrixAt(b,_.matrix),v.copy(u).multiplyScalar(.6+o*.4),g.setColorAt(b,v),b++}g.count=b,g.instanceMatrix.needsUpdate=!0,g.instanceColor&&(g.instanceColor.needsUpdate=!0)},{label:`effects:footprints`}),(0,X.jsx)(`instancedMesh`,{ref:s,args:[h,g,e],frustumCulled:!1,renderOrder:1})}function ao(e){if(!(`detail`in e))return null;let t=e.detail;if(!t||typeof t!=`object`)return null;let n=t,r=n.position;return!r||typeof r.x!=`number`||typeof r.y!=`number`||typeof r.z!=`number`?null:n}function oo(e){return Array.from({length:e},(t,n)=>({angle:n/Math.max(1,e)*Math.PI*2,distance:.25+n*37%100/100,height:.2+n*19%100/70}))}function so(e,t){return e.effect===void 0?null:{id:e.effect.id??m.t(`teleport-effect`),startedAt:performance.now(),durationMs:e.effect.durationMs??900,dropHeight:e.effect.dropHeight??0,position:new q.Vector3(e.position.x,e.position.y,e.position.z),particles:oo(t)}}function co({effect:e,color:n,ringRadius:r,onDone:i}){let a=(0,J.useRef)(null),o=(0,J.useRef)(null),s=(0,J.useRef)([]),c=(0,J.useRef)(null),l=(0,J.useRef)(null),u=(0,J.useRef)([]),d=(0,J.useRef)(!1),f=Math.max(1.2,e.dropHeight);return t.t(`lateUpdate`,()=>{if(d.current)return;let t=q.MathUtils.clamp((performance.now()-e.startedAt)/e.durationMs,0,1),n=1-t,p=.45+t*r;a.current?.scale.set(p,p,1),c.current&&(c.current.opacity=n*.55),o.current&&(o.current.position.y=f*(.5-t*.15)),l.current&&(l.current.opacity=n*.16);for(let r=0;r<e.particles.length;r++){let i=e.particles[r],a=s.current[r];if(!i||!a)continue;let o=i.distance*p;a.position.set(Math.cos(i.angle)*o,i.height*(1-t),Math.sin(i.angle)*o),a.scale.setScalar(.08+n*.06);let c=u.current[r];c&&(c.opacity=n*.8)}t>=1&&(d.current=!0,i(e.id))},{label:`effects:teleport-drop`}),(0,X.jsxs)(`group`,{position:e.position,children:[(0,X.jsxs)(`mesh`,{ref:a,rotation:[-Math.PI/2,0,0],scale:[.45,.45,1],children:[(0,X.jsx)(`ringGeometry`,{args:[.78,1,40]}),(0,X.jsx)(`meshBasicMaterial`,{ref:c,color:n,transparent:!0,opacity:.55,depthWrite:!1,side:q.DoubleSide})]}),(0,X.jsxs)(`mesh`,{ref:o,position:[0,f*.5,0],children:[(0,X.jsx)(`cylinderGeometry`,{args:[.18,.42,f,18,1,!0]}),(0,X.jsx)(`meshBasicMaterial`,{ref:l,color:n,transparent:!0,opacity:.16,depthWrite:!1,side:q.DoubleSide})]}),e.particles.map((e,t)=>(0,X.jsxs)(`mesh`,{ref:e=>{s.current[t]=e},position:[Math.cos(e.angle)*e.distance*.45,e.height,Math.sin(e.angle)*e.distance*.45],scale:.14,children:[(0,X.jsx)(`sphereGeometry`,{args:[1,8,8]}),(0,X.jsx)(`meshBasicMaterial`,{ref:e=>{u.current[t]=e},color:n,transparent:!0,opacity:.8,depthWrite:!1})]},t))]})}function lo({enabled:e=!0,color:t=`#70d6ff`,ringRadius:n=1.35,particleCount:r=14,maxEffects:i=6}={}){let a=s.n(),o=s.r(),[c,l]=(0,J.useState)([]),u=(0,J.useMemo)(()=>a?a.getService(`motions.runtime`)?.create()??null:null,[a,o]),d=(0,J.useCallback)(e=>{l(t=>t.filter(t=>t.id!==e))},[]);return(0,J.useEffect)(()=>{if(!e||typeof window>`u`||typeof document>`u`)return;let t=e=>{let t=so(e,r);t&&l(e=>[...e,t].slice(-i))},n=u?.events.on(f.it,t),a=e=>{let n=ao(e);n&&t(n)};return window.addEventListener(`gaesup:teleport`,a),document.addEventListener(`teleport-request`,a),()=>{n?.(),window.removeEventListener(`gaesup:teleport`,a),document.removeEventListener(`teleport-request`,a)}},[e,i,u,r]),!e||c.length===0?null:(0,X.jsx)(X.Fragment,{children:c.map(e=>(0,X.jsx)(co,{effect:e,color:t,ringRadius:n,onDone:d},e.id))})}var uo={ko:`한국어`,en:`English`,ja:`日本語`},fo=`ko`;function po(){if(typeof navigator>`u`)return fo;let e=(navigator.language||fo).slice(0,2).toLowerCase();return e===`ko`||e===`en`||e===`ja`?e:fo}function mo(e,t){return t?e.replace(/\{(\w+)\}/g,(e,n)=>{let r=t[n];return r==null?`{${n}}`:String(r)}):e}var ho=c.n(()=>(0,ie.create)((e,t)=>({locale:po(),bundle:{ko:{},en:{},ja:{}},setLocale:t=>e({locale:t}),registerMessages:(n,r)=>{let i=t().bundle;e({bundle:{...i,[n]:{...i[n],...r}}})},registerBundle:n=>{let r=t().bundle,i={...r};Object.keys(n).forEach(e=>{let t=n[e];t&&(i[e]={...r[e],...t})}),e({bundle:i})},t:(e,n)=>{let{locale:r,bundle:i}=t(),a=i[r]?.[e];if(a!==void 0)return mo(a,n);let o=i[fo]?.[e];return mo(o===void 0?e:o,n)},serialize:()=>({version:1,locale:t().locale}),prepareHydrate:t=>{if(t==null)return()=>{};if(typeof t!=`object`||t.version!==1||![`ko`,`en`,`ja`].includes(t.locale))throw TypeError(`Invalid language snapshot`);let{locale:n}=t;return()=>e({locale:n})},hydrate:e=>t().prepareHydrate(e)()})));function go(e,t){return ho.getState().t(e,t)}var _o=`gaesup.i18n`,vo=`i18n`,yo=`i18n.store`;function bo(){return ho.getState().serialize()}function xo(e){ho.getState().hydrate(e)}function So(e={}){return a.t({id:e.id??_o,name:`GaeSup i18n`,saveExtensionId:e.saveExtensionId??vo,storeServiceId:e.storeServiceId??yo,store:ho,readyEvent:`i18n:ready`,capabilities:[`i18n`],serialize:bo,hydrate:xo,prepareHydrate:e=>ho.getState().prepareHydrate(e)})}var Co=So();function wo(){let e=ho(e=>e.locale),t=ho(e=>e.bundle);return(0,J.useCallback)((n,r)=>{let i=t[e]?.[n];if(i!==void 0)return Eo(i,r);let a=t.ko?.[n];return Eo(a===void 0?n:a,r)},[e,t])}function To(){return{locale:ho(e=>e.locale),setLocale:ho(e=>e.setLocale)}}function Eo(e,t){return t?e.replace(/\{(\w+)\}/g,(e,n)=>{let r=t[n];return r==null?`{${n}}`:String(r)}):e}var Do=[{id:`jump`,label:`점프`,key:` `},{id:`use`,label:`사용`,key:`F`}];function Oo(){return typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(`(pointer: coarse)`).matches}function ko({forceVisible:e=!1,radius:t=60,deadzone:n=.18,runThreshold:r=.8,actions:i=Do}={}){let[a,o]=(0,J.useState)(!1),s=f.i(),c=f.mr(),l=(0,J.useMemo)(()=>T.x(s),[s]),u=(0,J.useRef)(null),d=(0,J.useRef)(null),p=(0,J.useRef)({pointerId:-1,cx:0,cy:0,forward:!1,backward:!1,leftward:!1,rightward:!1,run:!1});return(0,J.useEffect)(()=>{o(e||Oo())},[e]),(0,J.useEffect)(()=>{if(!a)return;let e=u.current,i=d.current;if(!e||!i)return;let o=()=>{let e=p.current;e.forward=e.backward=e.leftward=e.rightward=e.run=!1,l.release(),i.style.transform=`translate(-50%, -50%)`,p.current.pointerId=-1},s=t=>{if(!c.isEnabled())return;c.activate(),t.preventDefault();let n=e.getBoundingClientRect();p.current.cx=n.left+n.width/2,p.current.cy=n.top+n.height/2,p.current.pointerId=t.pointerId,e.setPointerCapture(t.pointerId),f(t)},f=e=>{if(e.pointerId!==p.current.pointerId)return;let a=e.clientX-p.current.cx,o=e.clientY-p.current.cy,s=Math.min(Math.hypot(a,o),t),c=Math.atan2(o,a),u=Math.cos(c)*s,d=Math.sin(c)*s;i.style.transform=`translate(calc(-50% + ${u}px), calc(-50% + ${d}px))`;let f=s/t,m=p.current,h={};if(f<n)m.forward&&=(h.forward=!1,!1),m.backward&&=(h.backward=!1,!1),m.leftward&&=(h.leftward=!1,!1),m.rightward&&=(h.rightward=!1,!1),m.run&&=(h.shift=!1,!1);else{let e=Math.cos(c),t=Math.sin(c),n=t<-.35,i=t>.35,a=e<-.35,o=e>.35,s=f>=r;m.forward!==n&&(h.forward=n,m.forward=n),m.backward!==i&&(h.backward=i,m.backward=i),m.leftward!==a&&(h.leftward=a,m.leftward=a),m.rightward!==o&&(h.rightward=o,m.rightward=o),m.run!==s&&(h.shift=s,m.run=s)}for(let[e,t]of Object.entries(h))l.set(`joystick:${e}`,e,t)},m=e=>{e.pointerId===p.current.pointerId&&o()};e.addEventListener(`pointerdown`,s),e.addEventListener(`pointermove`,f),e.addEventListener(`pointerup`,m),e.addEventListener(`pointercancel`,m),e.addEventListener(`pointerleave`,m);let h=c.onBlur(o);return()=>{e.removeEventListener(`pointerdown`,s),e.removeEventListener(`pointermove`,f),e.removeEventListener(`pointerup`,m),e.removeEventListener(`pointercancel`,m),e.removeEventListener(`pointerleave`,m),h(),o()}},[a,t,n,r,l,c]),a?(0,X.jsxs)(g.a,{style:{position:`fixed`,inset:0,zIndex:`var(--gaesup-z-input, 75)`,pointerEvents:`none`,fontFamily:`'Pretendard', system-ui, sans-serif`},children:[(0,X.jsx)(`div`,{ref:u,style:{position:`absolute`,left:24,bottom:24,width:t*2,height:t*2,borderRadius:`50%`,border:`1px solid rgba(255,255,255,0.25)`,background:`rgba(20,22,30,0.32)`,backdropFilter:`blur(14px) saturate(140%)`,WebkitBackdropFilter:`blur(14px) saturate(140%)`,touchAction:`none`,pointerEvents:`auto`},children:(0,X.jsx)(`div`,{ref:d,style:{position:`absolute`,left:`50%`,top:`50%`,width:t*.85,height:t*.85,borderRadius:`50%`,background:`rgba(255,255,255,0.55)`,boxShadow:`0 4px 12px rgba(0,0,0,0.28)`,transform:`translate(-50%, -50%)`,transition:`transform 0.04s linear`,pointerEvents:`none`}})}),(0,X.jsx)(`div`,{style:{position:`absolute`,right:20,bottom:32,display:`grid`,gridTemplateColumns:`repeat(2, auto)`,gap:12,pointerEvents:`auto`},children:i.map(e=>(0,X.jsx)(Ao,{action:e},e.id))})]}):null}function Ao({action:e}){let[t,n]=(0,J.useState)(!1),r=(0,J.useRef)(!1),i=f.mr(),a=(0,J.useId)(),o=(0,J.useCallback)(()=>{r.current&&(r.current=!1,n(!1),e.key&&i.dispatchKey(`keyup`,e.key,a),e.onRelease?.())},[e.key,e.onRelease,i,a]);(0,J.useEffect)(()=>{let e=i.onBlur(o);return()=>{e(),o()}},[i,o]);let s=()=>{!r.current&&i.isEnabled()&&(i.activate(),r.current=!0,n(!0),e.key&&i.dispatchKey(`keydown`,e.key,a),e.onPress?.())};return(0,X.jsx)(`button`,{type:`button`,onPointerDown:e=>{e.preventDefault(),s()},onPointerUp:e=>{e.preventDefault(),o()},onPointerCancel:o,onPointerLeave:o,style:{width:64,height:64,borderRadius:`50%`,border:`1px solid rgba(255,255,255,0.22)`,background:t?`rgba(255,216,74,0.32)`:`rgba(20,22,30,0.42)`,color:`#f3f4f8`,backdropFilter:`blur(14px) saturate(140%)`,WebkitBackdropFilter:`blur(14px) saturate(140%)`,fontFamily:`inherit`,fontSize:13,fontWeight:600,cursor:`pointer`,touchAction:`none`,userSelect:`none`},children:e.label})}var jo=.15,Mo=.5;function No(){return{keyboard:new Set,mouse:new Set,gamepad:new Map,touch:new Map}}function Po(e,t){switch(t.device){case`keyboard`:return+!!e.keyboard.has(t.code);case`mouse`:return+!!e.mouse.has(t.code);case`gamepad`:return e.gamepad.get(t.code)??0;case`touch`:return e.touch.get(t.code)??0}}function Fo(e,t){return Math.abs(e)<t?0:e}function Io(e){return Math.max(-1,Math.min(1,e))}function Lo(){return{pressed:!1,down:!1,up:!1,value:0,x:0,y:0}}var Ro=class{constructor(e){this.slots=new Map,this.order=[],e.forEach(e=>{if(this.slots.has(e.name))throw Error(`[InputActionMap Error]: 중복 액션 ${e.name}`);let t={definition:e,state:Lo()};this.slots.set(e.name,t),this.order.push(t)})}get(e){return this.slots.get(e)?.state}names(){return this.order.map(e=>e.definition.name)}definitions(){return this.order.map(e=>e.definition)}evaluate(e){for(let t=0;t<this.order.length;t++){let n=this.order[t],{definition:r}=n,i=r.deadzone??jo,a=0,o=0,s=0;for(let t=0;t<r.bindings.length;t++){let n=r.bindings[t],c=Fo(Po(e,n),i)*(n.scale??1);r.kind===`axis2D`?n.axis===`y`?o+=c:a+=c:r.kind===`button`?s=Math.max(s,Math.abs(c)):s+=c}if(r.kind===`axis2D`){let e=Math.hypot(a,o);e>1&&(a/=e,o/=e),s=Math.min(1,e)}else s=r.kind===`button`?Math.min(1,s):Io(s);this.writeState(n.state,s,a,o)}}applyRecordedFrame(e){for(let t=0;t<this.order.length;t++){let n=this.order[t],r=e[n.definition.name];r?this.writeState(n.state,r[0],r[1],r[2]):this.writeState(n.state,0,0,0)}}captureFrame(){let e={};for(let t=0;t<this.order.length;t++){let n=this.order[t],{value:r,x:i,y:a}=n.state;(r!==0||i!==0||a!==0)&&(e[n.definition.name]=[r,i,a])}return e}reset(){this.order.forEach(e=>this.writeState(e.state,0,0,0))}writeState(e,t,n,r){let i=t>=Mo;e.down=i&&!e.pressed,e.up=!i&&e.pressed,e.pressed=i,e.value=t,e.x=n,e.y=r}},zo=class{constructor(){this.frames=[],this.recording=!1}start(){this.frames=[],this.recording=!0}capture(e){this.recording&&this.frames.push(e.captureFrame())}stop(){return this.recording=!1,{version:1,frames:this.frames}}isRecording(){return this.recording}},Bo=class{constructor(e){this.recording=e,this.cursor=0}next(e){let t=this.recording.frames[this.cursor];return t?(e.applyRecordedFrame(t),this.cursor++,!0):(e.reset(),!1)}isFinished(){return this.cursor>=this.recording.frames.length}rewind(){this.cursor=0}};function Vo(e=window,t=typeof navigator<`u`?navigator:{}){let n=No(),r=e=>{n.keyboard.add(e.code)},i=e=>{n.keyboard.delete(e.code)},a=e=>{n.mouse.add(`button:${e.button}`)},o=e=>{n.mouse.delete(`button:${e.button}`)},s=()=>{n.keyboard.clear(),n.mouse.clear()};return e.addEventListener(`keydown`,r),e.addEventListener(`keyup`,i),e.addEventListener(`mousedown`,a),e.addEventListener(`mouseup`,o),e.addEventListener(`blur`,s),{state:n,poll:()=>{let e=t.getGamepads?.();if(n.gamepad.clear(),e)for(let t=0;t<e.length;t++){let r=e[t];if(r){for(let e=0;e<r.buttons.length;e++){let t=r.buttons[e]?.value??0;t>0&&n.gamepad.set(`button:${e}`,Math.max(t,n.gamepad.get(`button:${e}`)??0))}for(let e=0;e<r.axes.length;e++){let t=r.axes[e]??0;t!==0&&!n.gamepad.has(`axis:${e}`)&&n.gamepad.set(`axis:${e}`,t)}}}},dispose:()=>{e.removeEventListener(`keydown`,r),e.removeEventListener(`keyup`,i),e.removeEventListener(`mousedown`,a),e.removeEventListener(`mouseup`,o),e.removeEventListener(`blur`,s),s(),n.gamepad.clear(),n.touch.clear()}}}function Ho({definitions:e,active:n=!0,onFrame:r}={}){let i=(0,J.useMemo)(()=>new Ro(e??L.s()),[e]),a=(0,J.useRef)(null),o=(0,J.useRef)(r);return o.current=r,(0,J.useEffect)(()=>{if(!n||typeof window>`u`)return;let e=Vo(window);return a.current=e,()=>{a.current=null,e.dispose(),i.reset()}},[n,i]),t.t(`input`,()=>{let e=a.current;e&&(e.poll(),i.evaluate(e.state),o.current?.(i))},{active:n,label:`input:actions`}),i}var Uo={fps:0,avgMs:0,p50Ms:0,p95Ms:0,maxMs:0};function Wo(e,t){if(!e.length||t<=0)return Uo;let n=[...e].sort((e,t)=>e-t),r=e=>n[Math.min(n.length-1,Math.floor(e*n.length))],i=n.reduce((e,t)=>e+t,0);return{fps:e.length*1e3/t,avgMs:i/n.length,p50Ms:r(.5),p95Ms:r(.95),maxMs:n[n.length-1]}}var Go=()=>{let e=globalThis.performance.memory;return e?{usedMB:e.usedJSHeapSize/1048576,limitMB:e.jsHeapSizeLimit/1048576}:null};function Ko(e=500){let t=s.n(),n=p.o(e=>e.retainPerformanceSampling),{render:r,engine:i}=p.o((0,ae.useShallow)(e=>e.performance)),a=p.o(e=>e.framePhases),o=p.o(e=>e.shadow),c=p.o(e=>e.resolution),l=p.o(e=>e.gpuMs),u=p.o(e=>e.cpuBound),d=B.a(e=>e.profile.tier),[f,m]=(0,J.useState)({frames:Uo,drawnFps:null,fixedTicksPerSecond:null,memory:null,nearOnlyCasters:0});(0,J.useEffect)(()=>n(),[n]),(0,J.useEffect)(()=>{let n=[],r=()=>t?.stats.snapshot(),i=r(),a=0,o=globalThis.performance.now(),s=requestAnimationFrame(function t(c){a&&n.push(c-a),a=c;let l=c-o;if(l>=e){let e=r(),t=t=>{let n=(e?.[t]??0)-(i?.[t]??0);return e&&n>=0?n*1e3/l:null};m({frames:Wo(n,l),drawnFps:t(`frames`),fixedTicksPerSecond:t(`fixedTicks`),memory:Go(),nearOnlyCasters:I.ot()}),i=e,n.length=0,o=c}s=requestAnimationFrame(t)});return()=>cancelAnimationFrame(s)},[e,t]);let{nearOnlyCasters:h,...g}=f;return{...g,render:r,engine:i,phases:a,tier:d,shadow:o?{...o,nearOnlyCasters:h}:null,resolution:c,gpuMs:l,cpuBound:u}}var qo=[`pointerdown`,`pointermove`,`wheel`,`keydown`,`keyup`,`touchstart`,`touchmove`];function Jo({fps:e=30,afterMs:t=2e3}={}){let n=900/e,r=-1/0,i=-1/0;return{activity(e){e>r&&(r=e)},shouldDraw(e){return e-r>=t&&e-i<n?!1:(i=e,!0)}}}function Yo({fps:e=30,after:n=2}){let r=(0,Y.useThree)(e=>e.get),i=t.i(),a=f.i(),o=(0,Y.useThree)(e=>e.frameloop),s=(0,J.useRef)(0),c=(0,J.useRef)(!1);return(0,J.useLayoutEffect)(()=>{if(o!==`always`)return;c.current=!0;let e=r();e.setFrameloop(`never`),e.internal.frames=0,e.clock.elapsedTime=s.current},[o,r]),(0,J.useEffect)(()=>()=>{c.current&&r().setFrameloop(`always`)},[r]),(0,J.useEffect)(()=>{let t=Jo({fps:e,afterMs:n*1e3}),o=()=>t.activity(performance.now());o();let l=performance.now(),u=new Float64Array(16),d=requestAnimationFrame(function e(n){d=requestAnimationFrame(e);let a=r();if(t.activity(i.getLastActivity()),!c.current||a.frameloop!==`never`||!t.shouldDraw(n))return;let o=a.camera.matrixWorld.elements;for(let e=0;e<16;e++)if(u[e]!==o[e]){u.set(o),t.activity(n);break}a.clock.elapsedTime=s.current,s.current+=Math.max(0,n-l)/1e3,l=n,(0,Y.flushGlobalEffects)(`before`,n),(0,Y.advance)(s.current,!1,a),(0,Y.flushGlobalEffects)(`after`,n)});for(let e of qo)window.addEventListener(e,o,{capture:!0,passive:!0});let f=a.subscribe?.(o);return()=>{cancelAnimationFrame(d);for(let e of qo)window.removeEventListener(e,o,{capture:!0});f?.()}},[n,e,r,a,i]),null}var Xo=400,Zo=1500;function Qo(){let{active:e,loaded:t,total:n,item:r}=(0,se.useProgress)(),i=(0,J.useSyncExternalStore)(N.l,N.o,N.o),[a,o]=(0,J.useState)(!1),s=(0,J.useRef)(0),c=(0,J.useRef)(0),l=(0,J.useRef)(0);s.current=Math.max(s.current,i);let u=e||i>0;if((0,J.useEffect)(()=>{if(l.current||=performance.now(),a||u)return;let e=n>0?Xo:Math.max(Xo,Zo-(performance.now()-l.current)),t=setTimeout(()=>o(!0),e);return()=>clearTimeout(t)},[u,a,n]),a)return{stage:`ready`,progress:1,loaded:t,total:n,item:r};let d=e||s.current===0?`assets`:`shaders`,f=n>0?t/n:0,p=d===`assets`?.8*f:.8+.2*(1-i/Math.max(1,s.current));return c.current=Math.max(c.current,p),{stage:d,progress:c.current,loaded:t,total:n,item:r}}var $o=1,Q={version:1,name:`Gaesup World`,physics:{enabled:!0,gravity:[0,-9.81,0],timeStep:1/60,maxSubSteps:4,solverIterations:8,collisionMatrix:{default:[`default`,`environment`,`interactable`],environment:[`default`,`player`,`npc`],player:[`environment`,`interactable`,`npc`],npc:[`environment`,`player`,`interactable`],interactable:[`default`,`player`,`npc`]}},rendering:{backend:`auto`,pixelRatio:1.5,shadows:!0,antialias:!0,toneMapping:`aces`,outputColorSpace:`srgb`,toon:{enabled:!0},postprocessing:{enabled:!1,bloom:!1,colorGrade:!1}},input:{pointerLock:!1,touchControls:!0,gamepad:!0,bindings:{moveForward:[{device:`keyboard`,code:`KeyW`}],moveBackward:[{device:`keyboard`,code:`KeyS`}],moveLeft:[{device:`keyboard`,code:`KeyA`}],moveRight:[{device:`keyboard`,code:`KeyD`}],run:[{device:`keyboard`,code:`ShiftLeft`}],jump:[{device:`keyboard`,code:`Space`}],interact:[{device:`keyboard`,code:`KeyE`}]}},build:{target:`web`,publicPath:`/`,assetBaseUrl:`/`,sourceMaps:!1,minify:!0,chunkStrategy:`domain-split`},editor:{autosave:!0,autosaveIntervalMs:3e4,gridSize:1,snapMove:.5,snapRotateDegrees:15,showGizmos:!0}},es=new Set([`auto`,`webgl`,`webgpu`]),ts=new Set([`none`,`aces`,`reinhard`]),ns=new Set([`srgb`,`linear`]),rs=new Set([`keyboard`,`mouse`,`gamepad`,`touch`]),is=new Set([`web`]),as=new Set([`single`,`vendor-split`,`domain-split`]);function os(e={}){return{version:1,name:e.name??Q.name,physics:{...Q.physics,...e.physics,gravity:e.physics?.gravity??Q.physics.gravity,collisionMatrix:{...Q.physics.collisionMatrix,...e.physics?.collisionMatrix}},rendering:{...Q.rendering,...e.rendering,toon:{...Q.rendering.toon,...e.rendering?.toon},postprocessing:{...Q.rendering.postprocessing,...e.rendering?.postprocessing}},input:{...Q.input,...e.input,bindings:{...Q.input.bindings,...e.input?.bindings}},build:{...Q.build,...e.build},editor:{...Q.editor,...e.editor}}}function ss(e){return JSON.parse(JSON.stringify(e))}function cs(e){return JSON.stringify(e)}function ls(e){let t=typeof e==`string`?ys(e):e;if(!S.r(t))return bs(`Project settings must be an object.`,`invalid-project-settings-version`,`version`);let n=t;if(n.version!==1)return bs(`Project settings version must be 1.`,`invalid-project-settings-version`,`version`);let r={};typeof n.name==`string`&&(r.name=n.name),S.r(n.physics)&&(r.physics=n.physics),S.r(n.rendering)&&(r.rendering=n.rendering),S.r(n.input)&&(r.input=n.input),S.r(n.build)&&(r.build=n.build),S.r(n.editor)&&(r.editor=n.editor);let i=os(r);return{...us(i),settings:i}}function us(e){let t=[];return e.version!==1&&t.push($(`invalid-project-settings-version`,`version`,`Version must be 1.`)),e.name.trim()||t.push($(`invalid-project-settings-version`,`name`,`Project name must not be empty.`)),ds(e,t),fs(e,t),ps(e,t),ms(e,t),hs(e,t),{valid:t.length===0,issues:t}}function ds(e,t){let n=e.physics;_s(n.gravity)||t.push($(`invalid-physics-settings`,`physics.gravity`,`Gravity must be a numeric vector3.`)),vs(n.timeStep)||t.push($(`invalid-physics-settings`,`physics.timeStep`,`Physics timeStep must be positive.`)),(!Number.isInteger(n.maxSubSteps)||n.maxSubSteps<1)&&t.push($(`invalid-physics-settings`,`physics.maxSubSteps`,`maxSubSteps must be a positive integer.`)),(!Number.isInteger(n.solverIterations)||n.solverIterations<1)&&t.push($(`invalid-physics-settings`,`physics.solverIterations`,`solverIterations must be a positive integer.`)),Object.entries(n.collisionMatrix).forEach(([e,n])=>{(!e.trim()||!Array.isArray(n)||n.some(e=>typeof e!=`string`||!e.trim()))&&t.push($(`invalid-physics-settings`,`physics.collisionMatrix.${e}`,`Collision matrix entries must be layer name arrays.`))})}function fs(e,t){let n=e.rendering;es.has(n.backend)||t.push($(`invalid-rendering-settings`,`rendering.backend`,`Rendering backend is not supported.`)),vs(n.pixelRatio)||t.push($(`invalid-rendering-settings`,`rendering.pixelRatio`,`Pixel ratio must be positive.`)),ts.has(n.toneMapping)||t.push($(`invalid-rendering-settings`,`rendering.toneMapping`,`Tone mapping is not supported.`)),ns.has(n.outputColorSpace)||t.push($(`invalid-rendering-settings`,`rendering.outputColorSpace`,`Output color space is not supported.`))}function ps(e,t){Object.entries(e.input.bindings).forEach(([e,n])=>{if(!e.trim()||!Array.isArray(n)){t.push($(`invalid-input-binding`,`input.bindings.${e}`,`Input action must map to binding arrays.`));return}n.forEach((n,r)=>{gs(n)||t.push($(`invalid-input-binding`,`input.bindings.${e}.${r}`,`Input binding has invalid device or code.`))})})}function ms(e,t){let n=e.build;is.has(n.target)||t.push($(`invalid-build-settings`,`build.target`,`Build target is not supported.`)),n.publicPath.trim()||t.push($(`invalid-build-settings`,`build.publicPath`,`publicPath must not be empty.`)),n.assetBaseUrl.trim()||t.push($(`invalid-build-settings`,`build.assetBaseUrl`,`assetBaseUrl must not be empty.`)),as.has(n.chunkStrategy)||t.push($(`invalid-build-settings`,`build.chunkStrategy`,`Chunk strategy is not supported.`))}function hs(e,t){let n=e.editor;(!Number.isInteger(n.autosaveIntervalMs)||n.autosaveIntervalMs<1e3)&&t.push($(`invalid-editor-settings`,`editor.autosaveIntervalMs`,`Autosave interval must be at least 1000ms.`)),vs(n.gridSize)||t.push($(`invalid-editor-settings`,`editor.gridSize`,`Grid size must be positive.`)),vs(n.snapMove)||t.push($(`invalid-editor-settings`,`editor.snapMove`,`Move snapping must be positive.`)),vs(n.snapRotateDegrees)||t.push($(`invalid-editor-settings`,`editor.snapRotateDegrees`,`Rotate snapping must be positive.`))}function gs(e){return S.r(e)&&rs.has(e.device)&&typeof e.code==`string`&&e.code.trim().length>0&&(e.scale===void 0||Number.isFinite(e.scale))}function _s(e){return Array.isArray(e)&&e.length===3&&e.every(e=>Number.isFinite(e))}function vs(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function ys(e){try{return JSON.parse(e)}catch{return null}}function bs(e,t,n){return{valid:!1,issues:[$(t,n,e)]}}function $(e,t,n){return{code:e,path:t,message:n}}var xs=1;function Ss(e){return{version:1,settings:os(e.settings),startScene:e.startScene,scenes:e.scenes.map(e=>({...e})),prefabs:(e.prefabs??[]).map(e=>({...e})),requiredScripts:[...e.requiredScripts??[]],...e.assetManifest===void 0?{}:{assetManifest:e.assetManifest}}}function Cs(e,t,n){let r=new Set;e.forEach((e,i)=>{e.id.trim()||n.push({path:`${t}[${i}].id`,message:`id가 비어 있습니다`}),e.path.trim()||n.push({path:`${t}[${i}].path`,message:`path가 비어 있습니다`}),r.has(e.id)&&n.push({path:`${t}[${i}].id`,message:`중복 id: ${e.id}`}),r.add(e.id)})}function ws(e,t={}){let n=[];return e.version!==1&&n.push({path:`version`,message:`지원하지 않는 프로젝트 버전: ${String(e.version)}`}),ls(e.settings).issues.forEach(e=>n.push({path:`settings.${e.path}`,message:e.message})),Cs(e.scenes,`scenes`,n),Cs(e.prefabs,`prefabs`,n),e.scenes.some(t=>t.id===e.startScene)||n.push({path:`startScene`,message:`시작 씬이 scenes에 없습니다: ${e.startScene}`}),t.isScriptRegistered&&e.requiredScripts.forEach((e,r)=>{t.isScriptRegistered?.(e)||n.push({path:`requiredScripts[${r}]`,message:`등록되지 않은 스크립트: ${e}`})}),n}function Ts(e){let t=e;if(typeof e==`string`)try{t=JSON.parse(e)}catch{return{issues:[{path:``,message:`JSON 형식이 아닙니다`}]}}if(!t||typeof t!=`object`||Array.isArray(t))return{issues:[{path:``,message:`프로젝트 파일은 객체여야 합니다`}]};let n=t,r=ls(n.settings??{});if(!r.settings)return{issues:r.issues.map(e=>({path:`settings.${e.path}`,message:e.message}))};let i=e=>Array.isArray(e)?e.filter(e=>!!e&&typeof e==`object`&&typeof e.id==`string`&&typeof e.path==`string`):[],a={version:1,settings:r.settings,startScene:typeof n.startScene==`string`?n.startScene:``,scenes:i(n.scenes),prefabs:i(n.prefabs),requiredScripts:Array.isArray(n.requiredScripts)?n.requiredScripts.filter(e=>typeof e==`string`):[],...typeof n.assetManifest==`string`?{assetManifest:n.assetManifest}:{}};return{file:a,issues:ws(n.version===1?a:{...a,version:n.version})}}var Es=`gaesup.scene`,Ds=`scene`,Os=`scene.store`;function ks(e=b.f){return e.getState().serialize()}function As(e,t=b.f){t.getState().hydrate(e)}function js(e={}){return a.t({id:e.id??Es,name:`GaeSup Scene`,saveExtensionId:e.saveExtensionId??Ds,storeServiceId:e.storeServiceId??Os,store:b.f,resolveStore:e=>e.services.get(b.u)??b.f,readyEvent:`scene:ready`,capabilities:[`scene`],serialize:ks,hydrate:As,prepareHydrate:(e,t)=>t.getState().prepareHydrate(e)})}var Ms=js();function Ns({zIndex:e=9999}={}){let t=b.f(e=>e.transition);return!t.active&&t.progress<=.001?null:(0,X.jsx)(`div`,{"aria-hidden":!0,style:{position:`fixed`,inset:0,background:t.color,opacity:t.progress,pointerEvents:t.progress>.5?`auto`:`none`,zIndex:e,transition:`background-color 80ms linear`}})}function Ps({scene:e,children:t}){let n=b.f(e=>e.registerScene),r=b.f(e=>e.unregisterScene),i=b.f(e=>e.current);return(0,J.useEffect)(()=>(n(e),()=>r(e.id)),[e,n,r]),i===e.id?(0,X.jsx)(X.Fragment,{children:t}):null}var Fs={phase:`postPhysics`,label:`scene:house-door`,order:10};function Is({position:e,sceneId:t,entry:n,exitOverride:r,radius:i=1.4,cooldownMs:a=800,color:o=`#5a8acf`,label:s}){let c=b.f(e=>e.goTo),l=b.f(e=>e.current),{teleport:u}=wn(),{position:d}=L.l({updateInterval:50,reactive:!1}),p=(0,J.useRef)(-1/0),m=(0,J.useMemo)(()=>new q.CylinderGeometry(i,i,.08,28),[i]);(0,J.useEffect)(()=>()=>m.dispose(),[m]),f.br(Fs,()=>{let n=performance.now();if(n-p.current<a)return;let r=d.x-e[0],o=d.z-e[2];r*r+o*o>i*i||(p.current=n,l!==t&&h())});async function h(){let i=r??{position:[e[0],e[1],e[2]]};await c(t,{entry:n,saveReturn:i,onEntered:()=>u(new q.Vector3(...n.position))})}return(0,X.jsxs)(`group`,{position:e,children:[(0,X.jsx)(`mesh`,{rotation:[0,0,0],geometry:m,children:(0,X.jsx)(`meshStandardMaterial`,{color:o,emissive:o,emissiveIntensity:.35,transparent:!0,opacity:.6})}),s&&(0,X.jsxs)(`mesh`,{position:[0,1.3,0],children:[(0,X.jsx)(`boxGeometry`,{args:[.04,.6,.04]}),(0,X.jsx)(`meshStandardMaterial`,{color:o,emissive:o,emissiveIntensity:.4})]})]})}function Ls({sceneId:e,roomId:t,bounds:n,children:r}){let i=b.f(e=>e.current),a=u.j(e=>e.registerRoom),o=u.j(e=>e.unregisterRoom),s=u.j(e=>e.initializedSceneId),c=u.j(e=>e.visibleRoomIds);return(0,J.useEffect)(()=>(a({id:t,sceneId:e,bounds:n}),()=>o(t)),[t,e,n,a,o]),i===e?s===e?c.has(t)?(0,X.jsx)(X.Fragment,{children:r}):null:(0,X.jsx)(X.Fragment,{children:r}):null}function Rs({id:e,sceneId:t,fromRoomId:n,toRoomId:r,position:i,radius:a,revealDistance:o}){let s=u.j(e=>e.registerPortal),c=u.j(e=>e.unregisterPortal);return(0,J.useEffect)(()=>(s({id:e,sceneId:t,fromRoomId:n,toRoomId:r,position:i,...a===void 0?{}:{radius:a},...o===void 0?{}:{revealDistance:o}}),()=>c(e)),[e,t,n,r,i,a,o,s,c]),null}function zs(e,t){return e.x>=t.min[0]&&e.x<=t.max[0]&&e.y>=t.min[1]&&e.y<=t.max[1]&&e.z>=t.min[2]&&e.z<=t.max[2]}function Bs(e,t,n){for(let r of t)if(r.sceneId===e&&zs(n,r.bounds))return r.id;return null}function Vs(e){let t=e.rooms.filter(t=>t.sceneId===e.sceneId);if(t.length===0)return new Set;let n=Bs(e.sceneId,t,e.position);if(!n)return new Set(t.map(e=>e.id));let r=new Set([n]),i=e.portals.filter(t=>t.sceneId===e.sceneId);for(let t of i){let i=t.revealDistance??3.8,a=e.position.x-t.position[0],o=e.position.y-t.position[1],s=e.position.z-t.position[2];a*a+o*o+s*s>i*i||(t.fromRoomId===n?r.add(t.toRoomId):t.toRoomId===n&&r.add(t.fromRoomId))}return r}function Hs(){let e=s.n(),n=b.f(e=>e.current),r=u.j(e=>e.rooms),i=u.j(e=>e.portals),a=(0,J.useMemo)(()=>Array.from(r.values()),[r]),o=(0,J.useMemo)(()=>Array.from(i.values()),[i]),c=u.j(e=>e.setVisibleRooms),l=u.j(e=>e.reset),{position:d}=L.l({updateInterval:50,reactive:!1}),f=(0,J.useRef)(0);return(0,J.useEffect)(()=>l,[l]),t.t(`postPhysics`,t=>{if(e&&!e.isActive()){f.current=0;return}if(f.current+=Math.max(0,t),f.current<.12)return;f.current=0;let r=Bs(n,a,d),i=Vs({sceneId:n,rooms:a,portals:o,position:d});c(n,r,i)},{order:10,label:`scene:room-visibility`}),null}var Us=100,Ws={get:()=>void 0};function Gs(e,t){e.x=t[0],e.y=t[1],e.z=t[2]}function Ks(e,t){return!(t.id!==void 0&&e.id!==t.id||t.name!==void 0&&e.name!==t.name||t.tag!==void 0&&!e.tags.includes(t.tag)||t.componentType!==void 0&&!e.components.some(e=>e.type===t.componentType))}var qs=class{constructor(e){this.instances=new Map,this.handles=new Map,this.listeners=new Map,this.errors=[],this.time={delta:0,elapsed:0,frame:0},this.updateList=[],this.fixedList=[],this.lateList=[],this.document=null,this.unsubscribe=null,this.controller=e.controller,this.services=e.services??Ws}start(){this.unsubscribe||=(this.sync(this.controller.getSnapshot()),this.controller.subscribe(e=>this.sync(e)))}stop(){this.unsubscribe?.(),this.unsubscribe=null,Array.from(this.instances.values()).forEach(e=>this.destroyInstance(e)),this.instances.clear(),this.handles.clear(),this.rebuildLists(),this.document=null,this.time.delta=0,this.time.elapsed=0,this.time.frame=0}isRunning(){return this.unsubscribe!==null}update(e){this.time.delta=e,this.time.elapsed+=e,this.time.frame++;let t=this.updateList;for(let n=0;n<t.length;n++){let r=t[n];if(!this.ensureStarted(r))continue;let i=r.hooks.onUpdate;i&&this.runHook(r,`onUpdate`,()=>i(e))}}fixedUpdate(e){let t=this.fixedList;for(let n=0;n<t.length;n++){let r=t[n];if(!this.ensureStarted(r))continue;let i=r.hooks.onFixedUpdate;i&&this.runHook(r,`onFixedUpdate`,()=>i(e))}}lateUpdate(e){let t=this.lateList;for(let n=0;n<t.length;n++){let r=t[n];if(!this.ensureStarted(r))continue;let i=r.hooks.onLateUpdate;i&&this.runHook(r,`onLateUpdate`,()=>i(e))}}dispatchInteract(e,t={}){let n=0;return this.instances.forEach(r=>{if(r.objectId!==e||!this.isLive(r))return;let i=r.hooks.onInteract;i&&(n++,this.runHook(r,`onInteract`,()=>i(t)))}),n}dispatchPhysicsEvent(e,t,n){this.instances.forEach(r=>{if(r.objectId!==t||!this.isLive(r))return;let i=e===`triggerEnter`?r.hooks.onTriggerEnter:e===`triggerExit`?r.hooks.onTriggerExit:e===`collisionEnter`?r.hooks.onCollisionEnter:r.hooks.onCollisionExit;i&&this.runHook(r,e,()=>i(n))})}on(e,t){let n=this.listeners.get(e)??new Set;return n.add(t),this.listeners.set(e,n),()=>{n.delete(t)}}emit(e,t={}){this.listeners.get(e)?.forEach(n=>{try{n(t)}catch(t){r.t.error(`[ScriptRuntime Error]: 이벤트 리스너 실패 ${e}`,t instanceof Error?t:String(t))}})}getObjectHandle(e){return this.handles.get(e)?.handle}getInstanceCount(){return this.instances.size}getErrors(){return this.errors}isLive(e){return e.enabled&&!e.failed}ensureStarted(e){if(!this.isLive(e))return!1;if(e.started)return!0;e.started=!0;let t=e.hooks.onStart;return t&&this.runHook(e,`onStart`,t),this.isLive(e)}runHook(e,t,n){try{n()}catch(n){e.failed=!0;let i=n instanceof Error?n.message:String(n);this.errors.length>=Us&&this.errors.shift(),this.errors.push({objectId:e.objectId,componentId:e.componentId,scriptId:e.definition.id,hook:t,message:i}),r.t.error(`[ScriptRuntime Error]: ${e.definition.id}.${t} 실패 (${e.objectId})`,i),this.rebuildLists()}}sync(e){this.document=e;let t=new Set,n=new Set;for(let r of e.objects){n.add(r.id),this.syncHandle(r);for(let e of r.components){if(e.type!==h.Et.script)continue;let n=`${r.id}/${e.id}`;t.add(n),this.syncInstance(n,r,e)}}this.instances.forEach((e,n)=>{t.has(n)||(this.destroyInstance(e),this.instances.delete(n))}),this.handles.forEach((e,t)=>{n.has(t)||this.handles.delete(t)}),this.rebuildLists()}syncHandle(e){let t=this.handles.get(e.id);if(t){t.object=e,t.sourceTransform!==e.transform&&(t.sourceTransform=e.transform,Gs(t.handle.position,e.transform.position),Gs(t.handle.rotation,e.transform.rotation),Gs(t.handle.scale,e.transform.scale));return}let n={object:e,sourceTransform:e.transform,handle:void 0},r={x:0,y:0,z:0},i={x:0,y:0,z:0},a={x:1,y:1,z:1};Gs(r,e.transform.position),Gs(i,e.transform.rotation),Gs(a,e.transform.scale),n.handle={id:e.id,get name(){return n.object.name},get tags(){return n.object.tags},position:r,rotation:i,scale:a,hasComponent:e=>n.object.components.some(t=>t.type===e),getComponentData:e=>n.object.components.find(t=>t.type===e)?.data},this.handles.set(e.id,n)}syncInstance(e,t,n){let i=n.data.scriptId,a=typeof i==`string`?h.z(i):void 0,o=this.instances.get(e);if(o&&(o.definition!==a||o.data!==n.data))this.destroyInstance(o),this.instances.delete(e);else if(o){this.setEnabled(o,n.enabled);return}if(!a){typeof i==`string`&&r.t.warn(`[ScriptRuntime] 등록되지 않은 스크립트: ${i} (${t.id})`);return}let s=this.createInstance(e,t.id,n,a);s&&this.instances.set(e,s)}createInstance(e,t,n,i){let a=n.data.props,o=a&&typeof a==`object`&&!Array.isArray(a)?a:void 0,{props:s,issues:c}=h.H(i.props,o);c.forEach(e=>r.t.warn(`[ScriptRuntime] ${i.id}.${e.prop}: ${e.message}`));let l={key:e,objectId:t,componentId:n.id,definition:i,data:n.data,hooks:{},enabled:!1,started:!1,failed:!1,subscriptions:[]};if(this.runHook(l,`create`,()=>{l.hooks=i.create(this.createContext(l),s)}),l.failed)return l;let u=l.hooks.onAwake;return u&&this.runHook(l,`onAwake`,u),this.setEnabled(l,n.enabled),l}setEnabled(e,t){if(e.enabled===t||e.failed)return;e.enabled=t;let n=t?e.hooks.onEnable:e.hooks.onDisable;n&&this.runHook(e,t?`onEnable`:`onDisable`,n)}destroyInstance(e){e.enabled&&!e.failed&&this.setEnabled(e,!1);let t=e.hooks.onDestroy;t&&!e.failed&&this.runHook(e,`onDestroy`,t),e.subscriptions.forEach(e=>e()),e.subscriptions.length=0,e.enabled=!1}rebuildLists(){let e=[],t=[],n=[];this.instances.forEach(r=>{r.failed||((r.hooks.onUpdate||r.hooks.onStart)&&e.push(r),r.hooks.onFixedUpdate&&t.push(r),r.hooks.onLateUpdate&&n.push(r))}),this.updateList=e,this.fixedList=t,this.lateList=n}find(e){let t=this.document?.objects??[],n=[];for(let r of t){if(!Ks(r,e))continue;let t=this.handles.get(r.id)?.handle;t&&n.push(t)}return n}createContext(e){let t=this.handles.get(e.objectId)?.handle;if(!t)throw Error(`[ScriptRuntime Error]: 객체 핸들이 없습니다 ${e.objectId}`);return{objectId:e.objectId,object:t,time:this.time,find:e=>this.find(e),findOne:e=>this.find(e)[0],emit:(e,t)=>this.emit(e,t),on:(t,n)=>{let r=this.on(t,n);return e.subscriptions.push(r),r},services:this.services,commit:e=>this.controller.dispatch(e)}}},Js={getState:()=>({mode:`play`}),subscribe:()=>()=>void 0};function Ys(e){return(0,J.useSyncExternalStore)(e.subscribe,()=>e.getState().mode,()=>e.getState().mode)}function Xs({controller:e,services:n,active:r=!0,playMode:i=Js,scheduler:a}){let o=(0,J.useMemo)(()=>new qs({controller:e,...n?{services:n}:{}}),[e,n]),s=Ys(i),c=r&&s!==`edit`,l=c&&s===`play`;(0,J.useEffect)(()=>{if(c)return o.start(),()=>o.stop()},[c,o]);let u={active:l,...a?{scheduler:a}:{}};return t.t(`script`,e=>o.update(e),{...u,label:`scripts:update`}),t.t(`prePhysics`,e=>o.fixedUpdate(e),{...u,label:`scripts:fixed`}),t.t(`lateUpdate`,e=>o.lateUpdate(e),{...u,label:`scripts:late`}),o}function Zs(e){return Xs(e),null}var Qs={phase:`lateUpdate`,label:`scripts:transform-projection`,order:1};function $s(e,t,n,r){let i=(0,J.useRef)(!1),a=(0,J.useRef)(r);a.current=r,f.br(Qs,()=>{let r=n.current;if(!r)return;let o=e?.getObjectHandle(t);if(o){r.position.set(o.position.x,o.position.y,o.position.z),r.rotation.set(o.rotation.x,o.rotation.y,o.rotation.z),r.scale.set(o.scale.x,o.scale.y,o.scale.z),i.current=!0;return}if(!i.current)return;let{position:s,rotation:c,scale:l}=a.current;r.position.set(s[0],s[1],s[2]),r.rotation.set(c[0],c[1],c[2]),r.scale.set(l[0],l[1],l[2]),i.current=!1},e!==null)}var ec=Math.PI/180,tc={rotator:`gaesup.rotator`,door:`gaesup.door`,triggerZone:`gaesup.triggerZone`,collectible:`gaesup.collectible`,dialogTrigger:`gaesup.dialogTrigger`};function nc(e,t,n){return Math.abs(t-e)<=n?t:e+Math.sign(t-e)*n}var rc=h.R({id:tc.rotator,name:`회전체`,props:{degreesPerSecond:h.U.number({default:45})},create:(e,t)=>({onUpdate:n=>{e.object.rotation.y+=t.degreesPerSecond*ec*n}})}),ic=h.R({id:tc.door,name:`문`,props:{openDegrees:h.U.number({default:90,min:-180,max:180}),degreesPerSecond:h.U.number({default:180,min:1}),requiredItemId:h.U.assetRef({assetKind:`item`,default:null})},create:(e,t)=>{let n=e.object.rotation.y,r=n;return{onInteract:()=>{if(t.requiredItemId&&!e.services.get(`inventory`)?.has(t.requiredItemId,1)){e.emit(`door:locked`,{objectId:e.objectId});return}let i=r!==n;r=i?n:n+t.openDegrees*ec,e.emit(i?`door:closing`:`door:opening`,{objectId:e.objectId})},onUpdate:n=>{let i=t.degreesPerSecond*ec*n;e.object.rotation.y=nc(e.object.rotation.y,r,i)}}}}),ac=h.R({id:tc.triggerZone,name:`트리거 존`,props:{enterEvent:h.U.string({default:`zone:enter`}),exitEvent:h.U.string({default:`zone:exit`}),requiredTag:h.U.string({default:``})},create:(e,t)=>{let n=n=>!t.requiredTag||!!e.findOne({id:n,tag:t.requiredTag});return{onTriggerEnter:r=>{n(r)&&e.emit(t.enterEvent,{zoneId:e.objectId,otherId:r})},onTriggerExit:r=>{n(r)&&e.emit(t.exitEvent,{zoneId:e.objectId,otherId:r})}}}}),oc=h.R({id:tc.collectible,name:`수집 아이템`,props:{itemId:h.U.string({default:``}),count:h.U.number({default:1,min:1}),collectorTag:h.U.string({default:`player`}),removeOnCollect:h.U.boolean({default:!0})},create:(e,t)=>{let n=!1;return{onTriggerEnter:r=>{if(n||!e.findOne({id:r,tag:t.collectorTag}))return;n=!0;let i=e.services.get(`inventory`);t.itemId&&i?.add(t.itemId,t.count),e.emit(`item:collected`,{objectId:e.objectId,itemId:t.itemId,count:t.count,collectorId:r}),t.removeOnCollect&&e.commit({type:`scene-object.delete`,objectId:e.objectId})}}}}),sc=h.R({id:tc.dialogTrigger,name:`대화 트리거`,props:{dialogTreeId:h.U.string({default:``}),npcId:h.U.string({default:``})},create:(e,t)=>({onInteract:()=>{if(!t.dialogTreeId)return;let n=e.services.get(`dialog`);if(n){n.start(t.dialogTreeId,t.npcId||void 0);return}e.emit(`dialog:request`,{dialogTreeId:t.dialogTreeId,npcId:t.npcId})}})});function cc(){let e=[h.V(rc),h.V(ic),h.V(ac),h.V(oc),h.V(sc)];return()=>e.forEach(e=>e())}var lc=[{hour:0,sunColor:`#1f2a48`,ambientColor:`#1a1f2e`,sunIntensity:.05,ambientIntensity:.18,azimuth:-Math.PI/2,elevation:-.3},{hour:5,sunColor:`#3b3a5a`,ambientColor:`#28304a`,sunIntensity:.15,ambientIntensity:.22,azimuth:-Math.PI/3,elevation:-.05},{hour:7,sunColor:`#ffb27a`,ambientColor:`#7a8aa6`,sunIntensity:.55,ambientIntensity:.3,azimuth:-Math.PI/4,elevation:.25},{hour:10,sunColor:`#fff1c8`,ambientColor:`#aab4c8`,sunIntensity:.85,ambientIntensity:.34,azimuth:-Math.PI/8,elevation:.7},{hour:13,sunColor:`#ffffff`,ambientColor:`#b6c2d8`,sunIntensity:1.05,ambientIntensity:.38,azimuth:0,elevation:1.05},{hour:16,sunColor:`#ffe0a8`,ambientColor:`#a8b4cc`,sunIntensity:.85,ambientIntensity:.34,azimuth:Math.PI/6,elevation:.65},{hour:18,sunColor:`#ff9a5a`,ambientColor:`#806a8a`,sunIntensity:.55,ambientIntensity:.28,azimuth:Math.PI/3,elevation:.18},{hour:20,sunColor:`#5a3f6a`,ambientColor:`#34304a`,sunIntensity:.18,ambientIntensity:.22,azimuth:Math.PI/2,elevation:-.05},{hour:24,sunColor:`#1f2a48`,ambientColor:`#1a1f2e`,sunIntensity:.05,ambientIntensity:.18,azimuth:3*Math.PI/4,elevation:-.3}],uc={spring:new q.Color(`#fff0f5`),summer:new q.Color(`#fff5d8`),autumn:new q.Color(`#ffd9b0`),winter:new q.Color(`#dfe8f5`)},dc={sunny:{sun:1,ambient:1,tint:new q.Color(`#ffffff`)},cloudy:{sun:.55,ambient:.95,tint:new q.Color(`#cfd6e2`)},rain:{sun:.3,ambient:.85,tint:new q.Color(`#90a0b8`)},snow:{sun:.65,ambient:1.1,tint:new q.Color(`#dfeaf5`)},storm:{sun:.2,ambient:.75,tint:new q.Color(`#5a6a82`)}};function fc(){return{sunColor:new q.Color,ambientColor:new q.Color,sunIntensity:0,ambientIntensity:0,azimuth:0,elevation:0}}function pc(e){let t=[...e].sort((e,t)=>e.hour-t.hour).map(e=>({...e,sunColor:new q.Color(e.sunColor),ambientColor:new q.Color(e.ambientColor)}));return(e,n)=>{let r=(e%24+24)%24,i=t[0],a=t[t.length-1];for(let e=0;e<t.length-1;e+=1){let n=t[e],o=t[e+1];if(r>=n.hour&&r<=o.hour){i=n,a=o;break}}let o=q.MathUtils.clamp((r-i.hour)/Math.max(1e-4,a.hour-i.hour),0,1);return n.sunColor.copy(i.sunColor).lerp(a.sunColor,o),n.ambientColor.copy(i.ambientColor).lerp(a.ambientColor,o),n.sunIntensity=q.MathUtils.lerp(i.sunIntensity,a.sunIntensity,o),n.ambientIntensity=q.MathUtils.lerp(i.ambientIntensity,a.ambientIntensity,o),n.azimuth=q.MathUtils.lerp(i.azimuth,a.azimuth,o),n.elevation=q.MathUtils.lerp(i.elevation,a.elevation,o),n}}var mc=new q.Vector3(0,1,0),hc=new q.Vector3,gc=new q.Vector3,_c=new q.Vector3,vc=new q.Vector3,yc=new q.Vector3;function bc(e,t,n){return e.getWorldDirection(vc),vc.y=0,vc.lengthSq()>1e-8&&vc.normalize().multiplyScalar(t*.4),n.set(e.position.x+vc.x,0,e.position.z+vc.z)}function xc(e,t){return Math.round(e/t)*t}function Sc(e,t,n,r){_c.copy(n).normalize(),hc.crossVectors(mc,_c),hc.lengthSq()<1e-8&&hc.set(1,0,0),hc.normalize(),gc.crossVectors(_c,hc),yc.copy(_c).multiplyScalar(xc(t.dot(_c),r)).addScaledVector(hc,xc(t.dot(hc),r)).addScaledVector(gc,xc(t.dot(gc),r)),e.target.position.copy(yc),e.target.updateMatrixWorld(),e.position.copy(yc).add(n)}var Cc=.0035;function wc({rigDistance:e=60,castShadow:n=!0,shadowMapSize:r,shadowRange:i=90,followCamera:a=!0,keyframes:o,damping:s=.12}={}){let c=B.i(),l=r??c?.shadowMapSize??1024,u=(0,Y.useThree)(e=>e.get),d=v.i(),f=j.i(),p=(0,J.useRef)(null),m=(0,J.useRef)(null),h=(0,J.useMemo)(()=>pc(o??lc),[o]),g=(0,J.useMemo)(()=>({sky:fc(),sunOffset:new q.Vector3,appliedOffset:new q.Vector3,focus:new q.Vector3}),[]);return t.t(`effects`,()=>{let t=p.current,n=m.current;if(!t||!n)return;let r=f.getState().time,o=d.getState().current,c=q.MathUtils.clamp(o?.intensity??.5,0,1),_=dc[o?.kind??`sunny`]??dc.sunny,v=uc[r.season]??uc.spring,y=h(r.hour+r.minute/60,g.sky),b=q.MathUtils.clamp(s,.01,1);y.sunColor.lerp(v,.18).lerp(_.tint,.35+.25*c),y.ambientColor.lerp(v,.2).lerp(_.tint,.3+.3*c),t.color.lerp(y.sunColor,b),n.color.lerp(y.ambientColor,b);let x=q.MathUtils.lerp(1,_.sun,.5+.5*c),S=q.MathUtils.lerp(1,_.ambient,.5+.5*c);t.intensity=q.MathUtils.lerp(t.intensity,y.sunIntensity*x,b),n.intensity=q.MathUtils.lerp(n.intensity,y.ambientIntensity*S,b);let C=Math.cos(y.elevation),{sunOffset:w,appliedOffset:T,focus:E}=g;w.set(Math.cos(y.azimuth)*C*e,Math.max(2,Math.sin(y.elevation)*e),Math.sin(y.azimuth)*C*e),(T.lengthSq()===0||T.angleTo(w)>Cc)&&T.copy(w),a?bc(u().camera,i,E):E.set(0,0,0),Sc(t,E,T,i*2/l)},{label:`rendering:dynamic-sky`}),(0,X.jsxs)(X.Fragment,{children:[(0,X.jsx)(`ambientLight`,{ref:m,intensity:.3,color:`#b6c2d8`}),(0,X.jsx)(`directionalLight`,{ref:p,castShadow:n,"shadow-mapSize":[l,l],"shadow-normalBias":.06,"shadow-camera-near":1,"shadow-camera-far":Math.max(120,e*2),"shadow-camera-top":i,"shadow-camera-right":i,"shadow-camera-bottom":-i,"shadow-camera-left":-i,intensity:.8,color:`#ffffff`,position:[20,30,10]})]})}var Tc=.9;function Ec(e,t){let n=Array(e).fill(1/0),r=Array(e).fill(!1),i=e=>e>0?Tc/e:1/0,a=!0;return{tick(o,s=!1){for(let t=0;t<e;t++)n[t]+=o;if(r.fill(!1),s||a)return a=!1,r.fill(!0),n.fill(0),r;e>0&&n[0]>=i(t.near)&&(r[0]=!0,n[0]=0);let c=-1,l=i(t.far);for(let t=1;t<e;t++)n[t]>=l&&(l=n[t],c=t);return c>0&&(r[c]=!0,n[c]=0),r}}}var Dc=70,Oc=6,kc=Math.cos(q.MathUtils.degToRad(.25)),Ac={low:{cascades:2,mapSize:512,maxFar:80,lightMargin:60,updateHz:{near:20,far:5}},medium:{cascades:3,mapSize:1024,maxFar:140,lightMargin:100,updateHz:{near:30,far:10}},high:{cascades:4,mapSize:2048,maxFar:220,lightMargin:140,updateHz:{near:30,far:15}}},jc={near:15,far:5};function Mc(e,t){return typeof e==`number`?{near:e,far:e}:{near:e?.near??t.near,far:e?.far??t.far}}async function Nc(e,t){let{CSMShadowNode:n}=await import(`three/addons/csm/CSMShadowNode.js`),r=new n(e,{cascades:t.cascades,maxFar:t.maxFar,mode:t.mode,lightMargin:t.lightMargin});r.fade=t.fade;let i=r,a=i._init;return typeof a==`function`&&(i._init=function(...e){a.apply(this,e),i._shadowNodes?.slice(1).forEach(I.st),i.lights?.forEach(({shadow:e})=>{e.autoUpdate=!1,e.needsUpdate=!0})}),r}function Pc({position:e=[28,36,18],color:n=`#ffffff`,intensity:i=1.8,quality:a,castShadow:o=!0,cascades:s,maxFar:c,mode:l=`practical`,lightMargin:u,fade:d=!0,shadowMapSize:f,shadowBias:m=-15e-5,shadowNormalBias:h=.04,shadowRadius:g=1,updateHz:_}){let v=B.i(),y=a??v?.tier??`medium`,b=(0,J.useRef)(null),x=(0,J.useMemo)(()=>new q.Vector3(...e),[e]),S=(0,J.useMemo)(()=>new q.Vector3,[]),C=(0,J.useRef)(null),w=(0,J.useMemo)(()=>new q.Vector3,[]),T=(0,J.useMemo)(()=>new q.Vector3(NaN,NaN,NaN),[]),[E,D]=(0,J.useState)(!1),O=(0,Y.useThree)(e=>e.gl),k=(0,Y.useThree)(e=>e.camera),A=(0,J.useMemo)(()=>new Float64Array(16),[]),j=(0,J.useRef)(!1),M=Ac[y],P=s??M.cascades,F=c??M.maxFar,ee=u??M.lightMargin,I=f??M.mapSize,L=Mc(_,M.updateHz),R=p.o(e=>e.cpuBound),z=R?Math.min(L.near,jc.near):L.near,V=R?Math.min(L.far,jc.far):L.far,H=N.h(O)===`webgpu`,U=H?P:1,te=(0,J.useMemo)(()=>Ec(U,{near:z,far:V}),[U,z,V]),W=p.o(e=>e.setShadow);return(0,J.useEffect)(()=>{if(o)return W({maps:U,mapSize:I,nearHz:z,farHz:V}),()=>W(null)},[o,V,U,z,I,W]),(0,J.useEffect)(()=>{let e=b.current;if(!e||(D(!1),e.shadow.radius=g,!o||N.h(O)!==`webgpu`))return;let t=!1,n=e.shadow;return Nc(e,{cascades:P,maxFar:F,mode:l,lightMargin:ee,fade:d}).then(e=>{if(t){e.dispose();return}n.shadowNode=e,C.current=e,D(!0);let r=k.projectionMatrix.elements;for(let e=0;e<16;e+=1)A[e]=r[e]??0;j.current=!0}).catch(e=>{t||(D(!0),r.t.error(`Cascaded sun shadow initialization failed`,e instanceof Error?e:String(e)))}),()=>{t=!0;let e=C.current;e&&(n.shadowNode===e&&delete n.shadowNode,C.current=null,j.current=!1,e.dispose())}},[k,o,d,l,A,O,P,ee,F,I,m,h,g]),t.t(`effects`,e=>{let t=b.current;if(!t||!o)return;H||(Sc(t,bc(k,Dc,S),x,140/I),t.shadow.autoUpdate=!1);let n=!1,r=S.copy(t.position).sub(t.target.position).normalize();r.dot(w)>=kc||(w.copy(r),n=!0);let i=k.getWorldPosition(S);i.distanceTo(T)<=Oc||(n=!0),T.copy(i);let a=C.current;if(a&&a.camera!==null&&j.current){let e=k.projectionMatrix.elements;for(let t=0;t<16;t+=1)if(A[t]!==e[t]){for(let t=0;t<16;t+=1)A[t]=e[t]??0;a.updateFrustums(),n=!0;break}}let s=te.tick(e,n);if(!H){s[0]&&(t.shadow.needsUpdate=!0);return}a?.lights?.forEach(({shadow:e},t)=>{s[t]&&(e.needsUpdate=!0)})},{label:`rendering:cascaded-sun`}),(0,X.jsx)(`directionalLight`,{ref:b,castShadow:o&&(N.h(O)!==`webgpu`||E),position:e,intensity:i,color:n,"shadow-mapSize":[I,I],"shadow-camera-near":1,"shadow-camera-far":F,"shadow-camera-top":Dc,"shadow-camera-right":Dc,"shadow-camera-bottom":-70,"shadow-camera-left":-70,"shadow-bias":m,"shadow-normalBias":h},`${k.uuid}:${P}:${I}:${F}:${ee}:${l}:${d}:${m}:${h}:${g}`)}var Fc=64,Ic=32;function Lc(e,t,n){let r=new q.Color(e),i=new q.Color(t),a=new q.Color(n),o=new q.Color,s=new Float32Array(8192);for(let e=0;e<Ic;e++){let t=Math.sin(((e+.5)/Ic-.5)*Math.PI);t>=0?o.copy(i).lerp(r,q.MathUtils.smoothstep(t,0,.7)):o.copy(i).lerp(a,q.MathUtils.smoothstep(-t,0,.25));for(let t=0;t<Fc;t++){let n=(e*Fc+t)*4;s[n]=o.r,s[n+1]=o.g,s[n+2]=o.b,s[n+3]=1}}let c=new q.DataTexture(s,Fc,Ic,q.RGBAFormat,q.FloatType);return c.mapping=q.EquirectangularReflectionMapping,c.colorSpace=q.LinearSRGBColorSpace,c.magFilter=q.LinearFilter,c.minFilter=q.LinearFilter,c.needsUpdate=!0,c}function Rc({sky:e=`#bfe2ff`,horizon:t=`#f3f9ff`,ground:n=`#6f8a57`,intensity:r=.35}){let i=(0,Y.useThree)(e=>e.scene),a=new q.Color(e).getHex(),o=new q.Color(t).getHex(),s=new q.Color(n).getHex(),c=(0,J.useMemo)(()=>Lc(a,o,s),[a,o,s]);return(0,J.useEffect)(()=>{let e=i.environment;return i.environment=c,()=>{i.environment===c&&(i.environment=e),c.dispose()}},[i,c]),(0,J.useEffect)(()=>{let e=i.environmentIntensity;return i.environmentIntensity=r,()=>{i.environmentIntensity=e}},[i,r]),null}var zc=([e,t,n],[r,i,a],{x:o,y:s,z:c})=>Math.abs(o-e)<=r/2&&Math.abs(s-t)<=i/2&&Math.abs(c-n)<=a/2;function Bc({center:e,size:n,profile:r,lamp:i,blendSeconds:a=.6}){let o=(0,Y.useThree)(e=>e.scene),c=s.n(),l=(0,J.useRef)(null),u=(0,J.useRef)({blend:0,profile:r}).current;if(u.profile=r,(0,J.useEffect)(()=>{let e=f.g(o);return e.zones.set(u,u),()=>{e.zones.delete(u),e.apply()}},[o,u]),t.t(`effects`,t=>{let r=c?.stateManager.getActiveState().position,s=r&&zc(e,n,r)?1:0;if(u.blend===s&&s===0)return;let d=t/Math.max(a,.001);u.blend=s>u.blend?Math.min(s,u.blend+d):Math.max(s,u.blend-d),f.g(o).apply(),l.current&&(l.current.intensity=(i?.intensity??0)*u.blend)},{label:`lighting:zone`}),!i)return null;let d=e[1]-n[1]/2;return(0,X.jsx)(`pointLight`,{ref:l,position:[e[0],d+(i.height??2.6),e[2]],color:i.color??`#ffd9a8`,intensity:0,distance:i.distance??10,decay:2})}function Vc(e=300){let[t,n]=(0,J.useState)(0);return(0,J.useEffect)(()=>{let t,r=()=>{clearTimeout(t),t=setTimeout(()=>n(e=>e+1),e)};return window.addEventListener(N.d,r),()=>{window.removeEventListener(N.d,r),clearTimeout(t)}},[e]),t}exports.ACTION_EQUIPMENT_PANEL_DEFAULT_CLASSES=Fa,exports.ACTION_EQUIPMENT_PANEL_DEFAULT_FACE_LABELS=Pa,exports.ACTION_EQUIPMENT_PANEL_DEFAULT_FACE_SEQUENCE=Aa,exports.ACTION_EQUIPMENT_PANEL_DEFAULT_FEATURES=Ma,exports.ACTION_EQUIPMENT_PANEL_DEFAULT_LABELS=Na,exports.ACTION_EQUIPMENT_PANEL_DEFAULT_SLOT_COUNT=ja,exports.AFTER_MOTION_FRAME_ORDER=t.h,exports.ANIMATION_PANEL_DEFAULT_CLASSES=h.en,exports.ANIMATION_PANEL_DEFAULT_LABELS=h.tn,exports.ANIMATION_PANEL_DEFAULT_TABS=h.nn,exports.ANIMATOR_ANY_STATE=n.a,exports.ANIMATOR_DEFAULT_TRANSITION_DURATION=n.r,exports.ActionEquipmentPanel=Za,exports.ActiveObjects=u.s,exports.Airplane=u.u,exports.AnimationBridge=f.pr,exports.AnimationClockLoop=f.et,exports.AnimationController=h.on,exports.AnimationDebugPanel=h.an,exports.AnimationPanel=h.rn,exports.AnimationPlayer=h.in,exports.AnimationSystem=n.t,exports.AnimatorRuntime=n.i,exports.AssetPreviewCanvas=ee.t,exports.AudioControls=Zr,exports.AutomationSystem=p.d,exports.BODY_REGIONS=f.x,exports.BUILDING_BASIC_OBJECT_OPTIONS=f.Yt,exports.BUILDING_FLAG_STYLE_OPTIONS=f.Xt,exports.BUILDING_PLACED_OBJECT_OPTIONS=f.Zt,exports.BUILDING_STORE_SERVICE=f.Vt,exports.BUILDING_TILE_GROUP_DRAG_TYPE=f.Qt,exports.BUILDING_TILE_OBJECT_OPTIONS=f.$t,exports.BUILDING_TILE_PRESETS=f.en,exports.BUILDING_TILE_PRESET_DRAG_TYPE=f.tn,exports.BUILDING_TILE_SHAPE_OPTIONS=f.nn,exports.BUILDING_TREE_COLOR_PRESETS=f.rn,exports.BUILDING_TREE_OPTIONS=f.in,exports.BUILDING_WALL_KIND_OPTIONS=f.an,exports.BUILDING_WALL_PRESETS=f.on,exports.BUILDING_WEATHER_EFFECT_OPTIONS=f.sn,exports.BUILDING_WORLD_SURFACE_OPTIONS=f.cn,exports.BUILTIN_SCRIPT_IDS=tc,exports.BaseCameraSystem=T._,exports.BaseController=T.p,exports.Billboard=I.U,exports.BlockSystem=I.K,exports.BrowserGamepadHub=u.V,exports.BuildingController=I.h,exports.BuildingGpuCullingDriver=I.f,exports.BuildingGpuMirrorDriver=I.m,exports.BuildingGpuUploadDriver=I.p,exports.BuildingIndirectArgsUploadDriver=I.u,exports.BuildingIndirectDrawDriver=I.d,exports.BuildingNavigationObstacleDriver=I.tt,exports.BuildingPanel=h.O,exports.BuildingRenderStateDriver=I._,exports.BuildingSystem=I.x,exports.BuildingUI=I.s,exports.BuildingVisibilityDriver=I.g,exports.BuoyancyComponent=ue,exports.CAMERA_COLLIDER_LAYER=T.g,exports.CAMERA_CONTROLLER_DEFAULT_CLASSES=g.t,exports.CAMERA_CONTROLLER_DEFAULT_LABELS=g.n,exports.CAMERA_CONTROLLER_DEFAULT_MODES=g.r,exports.CAMERA_CONTROLLER_MODE_OPTIONS=g.i,exports.CAMERA_DEBUG_PANEL_DEFAULT_CLASSES=h._n,exports.CAMERA_DEBUG_PANEL_DEFAULT_FIELDS=h.vn,exports.CAMERA_DEBUG_PANEL_DEFAULT_INTERVAL=h.yn,exports.CAMERA_DEBUG_PANEL_DEFAULT_LABELS=h.bn,exports.CAMERA_DEBUG_PANEL_DEFAULT_PRECISION=h.xn,exports.CAMERA_PANEL_DEFAULT_CLASSES=h.sn,exports.CAMERA_PANEL_DEFAULT_LABELS=h.cn,exports.CAMERA_PANEL_DEFAULT_TABS=h.ln,exports.CAMERA_PRESETS_DEFAULT_CLASSES=h.fn,exports.CAMERA_PRESETS_DEFAULT_LABELS=h.pn,exports.CAMERA_PRESETS_DEFAULT_PRESETS=h.mn,exports.CAMERA_PRESETS_DEFAULT_SMOOTHING=h.hn,exports.CAMERA_SETTINGS_DEFAULT_CLASSES=h.Tn,exports.CAMERA_SETTINGS_DEFAULT_LABELS=h.En,exports.CAMERA_SETTINGS_DEFAULT_SECTIONS=h.Dn,exports.CHARACTER_ANIMATOR_FRAME_PRIORITY=f.F,exports.CHARACTER_ANIMATOR_PARAMETERS=f.z,exports.CHARACTER_LOCOMOTION=f.B,exports.CHARACTER_MENU_DEFAULT_FEATURES=fi,exports.CHARACTER_MENU_DEFAULT_SECTIONS=ui,exports.CHARACTER_MENU_DEFAULT_SLOTS=di,exports.CHARACTER_SKIN_NODE_NAMES=f._,exports.CONTENT_SCHEMA_VERSION=W.o,exports.Camera=T.n,exports.CameraController=h.Cn,exports.CameraDebugPanel=h.gn,exports.CameraDebugger=Wt,exports.CameraPanel=h.un,exports.CameraPresets=h.dn,exports.CameraSettingsTab=h.wn,exports.CameraSystem=T.a,exports.CascadedSun=Pc,exports.Character=u.l,exports.CharacterCreator=_a,exports.CharacterMenu=ma,exports.ChaseController=T.u,exports.CinematicPanel=h.E,exports.CircularPluginDependencyError=D.r,exports.Clicker=L.i,exports.ColorGrade=re.r,exports.CommandPalette=h.On,exports.ConnectionForm=G.p,exports.ContactShadows=f.m,exports.ControllerWrapper=L.t,exports.GaesupController=L.t,exports.DEFAULT_APPEARANCE=b.w,exports.DEFAULT_ASSET_IMPORT_LIMITS=P.n,exports.DEFAULT_BUILDING_GRID_EXTENSION_ID=I.t,exports.DEFAULT_BUILDING_OBJECT_CATALOG=I.rt,exports.DEFAULT_BUILDING_PLACEMENT_EXTENSION_ID=I.n,exports.DEFAULT_BUILDING_SAVE_EXTENSION_ID=I.r,exports.DEFAULT_BUILDING_STORE_SERVICE_ID=I.i,exports.DEFAULT_CAMERA_SAVE_EXTENSION_ID=qt,exports.DEFAULT_CAMERA_STORE_SERVICE_ID=Jt,exports.DEFAULT_CAMERA_SYSTEM_EXTENSION_ID=Kt,exports.DEFAULT_CHARACTER_ANIMATOR_ID=f.V,exports.DEFAULT_CHARACTER_ATTACHMENT_SOCKETS=va,exports.DEFAULT_CHARACTER_EQUIPMENT_PRESETS=b.h,exports.DEFAULT_CHARACTER_ID=b.y,exports.DEFAULT_EDITOR_SHORTCUTS=h.An,exports.DEFAULT_FIGURE_LIMITS=P.r,exports.DEFAULT_INPUT_ACTIONS=L.o,exports.DEFAULT_INTERACTION_INPUT_EXTENSION_ID=p.f,exports.DEFAULT_INTERACTION_KEY=I.lt,exports.DEFAULT_INTERACTION_RANGE=I.ut,exports.DEFAULT_MOTIONS_INPUT_EXTENSION_ID=f.tt,exports.DEFAULT_MOTIONS_PHYSICS_EXTENSION_ID=f.nt,exports.DEFAULT_MOTIONS_RUNTIME_SERVICE_ID=f.rt,exports.DEFAULT_NETWORK_CONFIG=G.l,exports.DEFAULT_NPC_SCALE=y.s,exports.DEFAULT_PREFAB_METADATA=h.ot,exports.DEFAULT_PROJECT_SETTINGS=Q,exports.DEFAULT_RUNTIME_SAVE_DIAGNOSTICS_SERVICE_ID=u.Y,exports.DEFAULT_SCENE_ID=b.m,exports.DEFAULT_SCENE_LAYERS=Ve,exports.DEFAULT_SCENE_LAYER_TAG_REGISTRY=Ue,exports.DEFAULT_SCENE_TAGS=He,exports.DEFAULT_SCENE_TRANSFORM=h.Ft,exports.DEFAULT_SERVER_COMMAND_AUTHORITY_SERVICE_ID=te.t,exports.DEFAULT_SQUARE_GRID_SPEC=f.Zn,exports.DEFAULT_VISIT_DOMAINS=G.c,exports.DEFAULT_WORLD_SAVE_ENVIRONMENT=u.p,exports.DRAW_CLUSTER_BILLBOARD=y.rt,exports.DRAW_CLUSTER_BLOCK=y.it,exports.DRAW_CLUSTER_COUNT=y.at,exports.DRAW_CLUSTER_DESCRIPTORS=y.Z,exports.DRAW_CLUSTER_FIRE=y.ot,exports.DRAW_CLUSTER_FLAG=y.st,exports.DRAW_CLUSTER_GRASS=y.ct,exports.DRAW_CLUSTER_MODEL=y.lt,exports.DRAW_CLUSTER_SAKURA=y.ut,exports.DRAW_CLUSTER_SAND=y.dt,exports.DRAW_CLUSTER_SNOWFIELD=y.ft,exports.DRAW_CLUSTER_TILE=y.pt,exports.DRAW_CLUSTER_WALL=y.mt,exports.DRAW_CLUSTER_WATER=y.ht,exports.DialogBox=Cr,exports.DialogRunner=x.g,exports.DirectionComponent=f.mt,exports.DuplicateExtensionError=D.f,exports.DuplicatePluginError=D.i,exports.DuplicateSaveDomainBindingError=b.t,exports.DynamicFog=I.X,exports.DynamicSky=wc,exports.EDITOR_PANEL_COMPONENT_KIND=h.Wn,exports.EMPTY_EDITOR_SELECTION=h.u,exports.EMPTY_OUTFITS=b.b,exports.Editor=h.C,exports.EditorLayout=h.w,exports.Elr=f.gt,exports.EntityController=L.n,exports.EntityStateManager=f.pt,exports.FACE_STYLE_LABEL=b.T,exports.FLAG_STYLE_META=f.ln,exports.FRAME_PHASES=t.g,exports.FRAME_PRE_PHYSICS_PRIORITY=t.s,exports.FRAME_SCHEDULER_PRIORITY=t.c,exports.Fire=I.H,exports.FirstPersonController=T.d,exports.FixedController=T.o,exports.FixedStepClock=f.Q,exports.FocusableObject=On,exports.Footprints=io,exports.Footsteps=ti,exports.FrameScheduler=t.f,exports.FrameSchedulerHost=d.n,exports.FreePlacementAdapter=ce,exports.GAESUP_SKELETON_ID=f.S,exports.GAMEPLAY_EVENT_ACTION_TYPES=V.t,exports.GAMEPLAY_EVENT_CONDITION_TYPES=V.n,exports.GAMEPLAY_EVENT_TRIGGER_TYPES=V.r,exports.GLTFAssetCache=i.t,exports.GLTF_CONCURRENCY=i.n,exports.GLTF_RETAINED=i.r,exports.GLTF_RETRY_MS=i.i,exports.GPU_META_STRIDE=y.K,exports.GPU_SPATIAL_STRIDE=y.q,exports.GaeSupProps=y.t,exports.WorldProps=y.t,exports.GaesupErrorBoundary=G.b,exports.GaesupRuntimeProvider=A.i,exports.GaesupStoreProvider=p.r,exports.GaesupWorld=A.n,exports.World=A.n,exports.WorldConfigProvider=A.n,exports.GaesupWorldContent=A.t,exports.GamePad=ne.t,exports.Gamepad=ne.t,exports.GameplayArea=Tn,exports.GameplayEventEngine=x.t,exports.GameplayEventPanel=h.D,exports.GameplayEventRegistry=w.n,exports.GpuBatchBridge=I.J,exports.Grass=I.O,exports.GrassDriver=I.z,exports.GrassManagerProvider=I.B,exports.GravityComponent=f.zt,exports.GridHelper=I.W,exports.GroundClicker=L.r,exports.HAIR_STYLE_LABEL=b.E,exports.HierarchyPanel=h.Kt,exports.HouseDoor=Is,exports.HttpAssetSource=P.u,exports.HttpContentBundleSource=W.t,exports.INDIRECT_DRAW_STRIDE=y.Q,exports.IdleFrameRate=Yo,exports.ImpulseComponent=f.ft,exports.InMemoryEventBus=O.t,exports.InMemoryExtensionRegistry=D.p,exports.IndexedDBAdapter=b.s,exports.InnerGroupRef=f.v,exports.InputActionMap=Ro,exports.InputRecorder=zo,exports.InputReplay=Bo,exports.InspectorPanel=h.L,exports.Interactable=I.dt,exports.InteractionBridge=p.u,exports.InteractionPrompt=kn,exports.InteractionSystem=p.y,exports.InteractionTracker=Ht,exports.IsometricController=T.c,exports.LOCALE_LABEL=uo,Object.defineProperty(exports,"LegacyGrid",{enumerable:!0,get:function(){return se.Grid}}),exports.LightingZone=Bc,exports.LocalStorageAdapter=b.o,exports.LutOverlay=K.t,exports.MAX_QUALITY_PIXEL_RATIO=B.t,exports.MENU_PRESETS=yi,exports.MOTIONS_TELEPORT_EVENT=f.it,exports.MOTION_PANEL_DEFAULT_CLASSES=h.Jt,exports.MOTION_PANEL_DEFAULT_LABELS=h.Yt,exports.MOTION_PANEL_DEFAULT_TABS=h.Xt,exports.ManagedMotionEntity=Lt,exports.MaterialManager=I.q,exports.MathUtils=sr,exports.MemoizationManager=f.jt,exports.MiniMap=Kn,exports.MinimapObject=Yn,exports.MinimapPlatform=Jn,exports.MinimapSystem=y.n,exports.MissingExtensionError=D.m,exports.MissingPlacementEntryError=f.Wn,exports.MissingPluginDependencyError=D.a,exports.MockNetworkAdapter=H.l,exports.ModelRenderer=f.y,exports.MotionAnimationController=En,exports.MotionBridge=f.ur,exports.MotionController=h.$t,exports.MotionDebugPanel=h.Qt,exports.MotionPanel=h.Zt,exports.MotionService=f.fr,exports.MotionSystem=f.dr,exports.MotionUI=Pn,exports.MultiplayerCanvas=G.d,exports.NPCEventEditor=dn,exports.NPCInstance=I.at,exports.NPCPerceptionIndex=y.d,exports.NPCPreview=I.$,exports.NPCSimulation=y.l,exports.NPCSystem=I.et,exports.NPC_STORE_SERVICE=y.r,exports.Nameplates=z.n,exports.NamespacedSaveAdapter=b.a,exports.NavigationSystem=E.c,exports.OUTFIT_SLOT_LABEL=b.D,exports.OutfitAvatar=Oa,exports.Outlined=re.t,exports.PHYSICS_STEP_PRIORITY=t.l,exports.PLAYER_PROGRESS_DOMAINS=U.t,exports.PREFAB_DOCUMENT_VERSION=h.st,exports.PROJECT_ASSETS_PANEL_DEFAULT_CLASSES=h.N,exports.PROJECT_ASSETS_PANEL_DEFAULT_KIND_OPTIONS=h.P,exports.PROJECT_ASSETS_PANEL_DEFAULT_LABELS=h.F,exports.PROJECT_ASSETS_PANEL_DEFAULT_TABS=h.I,exports.PROJECT_FILE_VERSION=xs,exports.PROJECT_SETTINGS_VERSION=$o,exports.PartsGroupRef=f.b,exports.PassiveAirplane=u.a,exports.PassiveCharacter=u.i,exports.PassiveObjects=u.r,exports.PassiveVehicle=u.o,exports.PerformancePanel=h.qt,exports.PhysicsBridge=f.ut,exports.PhysicsEntity=f.n,exports.PhysicsSystem=f.dt,exports.PlacementEngine=f.Gn,exports.PlacementRejectedError=f.Kn,exports.PlayerInfoOverlay=G.f,exports.PlayerNetworkManager=G.y,exports.PlayerPositionTracker=G.v,exports.PluginManifestValidationError=D.o,exports.PluginRegistry=D.s,exports.PluginValidationAssertionError=k.t,exports.PluginVersionMismatchError=D.c,exports.ProjectAssetsPanel=h.M,exports.Qt=f._t,exports.QualityProfileProvider=B.n,exports.RENDERER_LOST_EVENT=N.d,exports.RUNTIME_GAESUP_STORE_SERVICE_ID=p.i,exports.RUNTIME_OWNED_MOTIONS_SERVICE_ID=f.at,exports.RUNTIME_SAVE_BINDING_REJECTED_EVENT=u.X,exports.RUNTIME_SAVE_DIAGNOSTIC_EVENT=u.Z,exports.RUNTIME_TIME_STORE_SERVICE_ID=f.X,exports.RemotePlayer=G.h,exports.RemotePlayers=G.m,exports.ResizablePanel=h.S,exports.Rideable=u.t,exports.RideableUI=u.n,exports.RoomPortal=Rs,exports.RoomRoot=Ls,exports.RoomVisibilityDriver=Hs,exports.RuntimeSaveDiagnosticsToaster=$n,exports.SCENE_COMPONENT_TYPES=h.Et,exports.SCENE_DOCUMENT_SAVE_KEY=gt,exports.SCENE_DOCUMENT_VERSION=h.It,exports.SCENE_OBJECT_BODY_ID_KEY=xt,exports.SEED_ASSETS=l.o,exports.SEED_GAMEPLAY_EVENTS=V.l,exports.SIMULATION_PHASES=f.$,exports.STANDARD_GAMEPAD_BUTTONS=u.R,exports.Sakura=I.L,exports.SakuraBatch=I.R,exports.Sand=I.E,exports.SandBatch=I.D,exports.SaveLoadManager=u.b,exports.SaveSystem=b.n,exports.SceneDocumentManager=bt,exports.SceneFader=Ns,exports.SceneObjectBody=kt,exports.SceneObjectTransformGizmo=h.v,exports.SceneRoot=Ps,exports.ScriptRuntime=qs,exports.ScriptRuntimeHost=Zs,exports.SideScrollController=T.s,exports.SkyEnvironment=Rc,exports.Snow=I.I,exports.Snowfield=I.w,exports.SnowfieldBatch=I.T,exports.SpeechBalloon=z.a,exports.SquareGridAdapter=f.Qn,exports.StudioPanel=h.T,exports.TIME_CONSTANTS=j.a,exports.Teleport=Fn,exports.TeleportDropEffect=lo,exports.TeleportMarker=Rn,exports.TeleportOnClick=Ln,exports.ThirdPersonController=T.f,exports.ThreeAnimatorBinding=n.n,exports.ThreeObjectPool=ir,exports.TileSystem=I.C,exports.TimeHUD=Sr,exports.TimeStoreProvider=j.t,exports.ToastHost=Zn,exports.ToonOutlines=re.n,exports.TopDownController=T.l,exports.TouchControls=ko,exports.UIBridge=tr,exports.UISystem=zn,exports.V3=f.vt,exports.V30=f.yt,exports.V31=f.bt,exports.ValidationUtils=or,exports.Vehicle=u.c,exports.VehiclePanel=h.j,exports.WORLD_SNAPSHOT_DOMAINS=U.n,exports.WallSystem=I.S,exports.Water=I.A,exports.WeatherEffect=I.Q,exports.WeatherHUD=Mr,exports.WindComponent=de,exports.WorldBridge=M.t,exports.WorldGamepadInput=u.z,exports.WorldInputActions=T.b,exports.WorldInputScope=f.hr,exports.WorldInputSurface=g.a,exports.WorldPhysics=d.t,exports.WorldSystem=M.n,exports.WorldViews=u.k,exports.addPrefabInstance=h.W,exports.applyAgentBehaviorBlueprint=y.x,exports.applyBuildingNavigationObstacles=I.nt,exports.applyCharacterEquipmentPreset=b.g,exports.applyGamepadDeadzone=u.B,exports.applyInstanceToPrefab=h.Z,exports.applyNPCBehaviorBlueprint=y.S,exports.applyPrefabOverrides=h.Q,exports.applySceneComponentUpdate=h.mt,exports.applySceneDocumentBatch=h.ht,exports.applySceneDocumentCommand=h.pt,exports.applySceneTransform=h.y,exports.applyToonToScene=f.c,exports.applyVisitSnapshot=G.i,exports.assertValidGaesupPlugin=k.n,exports.assetToMeshConfig=ee.n,exports.attachReinforcementAdapter=y._,exports.audioPlugin=Hr,exports.autoDetectProfile=B.o,exports.blockToPlacementEntry=f.un,exports.buildAssetDependencyGraph=P.s,exports.buildBuildingGpuMirror=y.J,exports.buildBuildingIndirectDrawMirror=y.$,exports.buildingCellToWorld=f.dn,exports.buildingGridAdapter=f.fn,exports.buildingGroupsToPlacementEntries=f.pn,exports.buildingPlacementAdapter=f.mn,exports.buildingPlugin=I.a,exports.cache=nr,exports.calcAngleByVector=f.xt,exports.calcNorm=f.St,exports.cameraPlugin=cn,exports.cameraUtils=T.m,exports.canSceneLayersCollide=Xe,exports.captureVisitRestorePoint=G.a,exports.cellToTilePosition=f.hn,exports.characterPlugin=ci,exports.classifyTier=B.s,exports.clearEditorSelection=h.d,exports.clearTrigCache=f.Mt,exports.cloneCameraSystemConfig=T.v,exports.clonePrefabDocument=jt,exports.cloneProjectSettings=ss,exports.cloneSceneDocument=h.St,exports.collectAssetReferences=P.c,exports.collectPrefabSubtreeIds=h.ct,exports.collectSaveDomains=U.r,exports.collectibleScript=oc,exports.commitGameplayEffect=w.o,exports.compareSkeletons=f.C,exports.compileNPCBrainBlueprint=y.C,exports.composeSceneTransforms=be,exports.computeGameTime=j.o,exports.computePrefabOverrides=h.$,exports.configureReinforcementAdapter=y.v,exports.convertElr=f.Ct,exports.convertN3=f.wt,exports.convertV3=f.Tt,exports.createAgentBehaviorBlueprintFromNPCBehaviorBlueprint=y.w,exports.createAnimationController=f.O,exports.createAnimationSlice=p.x,exports.createAnimatorComponent=h.Dt,exports.createAssetStore=l.t,exports.createAudioEngine=u.q,exports.createAudioPlugin=Vr,exports.createAudioStore=u.W,exports.createBlockFootprint=f.gn,exports.createBrowserInputDevices=Vo,exports.createBuildingCullingStore=y.Ct,exports.createBuildingGpuUploadPlan=y.Y,exports.createBuildingIndirectDrawUploadPlan=y.et,exports.createBuildingPieceComponent=h.Ot,exports.createBuildingPlacementEngine=f._n,exports.createBuildingPlugin=I.o,exports.createBuildingRenderStore=y.R,exports.createBuildingScopeId=I.l,exports.createBuildingStore=f.Ht,exports.createBuildingVisibilityStore=y.F,exports.createCameraCinematicPlayer=b.c,exports.createCameraCloseUpPreset=b.O,exports.createCameraOptionSlice=p.S,exports.createCameraPlugin=sn,exports.createCameraSaveDataFromDomain=u.m,exports.createCharacterPlugin=si,exports.createCharacterStore=b.x,exports.createClientGameplayEventServices=x.n,exports.createColliderComponent=h.kt,exports.createCommandAcceptedResult=H.n,exports.createCommandAuthorityRouter=H.r,exports.createCommandRejectedResult=H.i,exports.createContentBundleFromSaveSystem=W.a,exports.createCustomMeshId=I.c,exports.createDefaultCharacterAnimator=f.H,exports.createDefaultGameplayEventRegistry=x.r,exports.createDefaultInputActions=L.s,exports.createDefaultInteractionInputBackend=p.p,exports.createDefaultSaveSystem=b.r,exports.createDialogRegistry=x.m,exports.createDialogStore=x.u,exports.createEditorCommandStack=h.t,exports.createEditorPlayModeController=h.a,exports.createEditorSaveStatus=h.In,exports.createEditorSelectionState=h.f,exports.createEditorShell=h.n,exports.createEditorShortcutRegistry=h.jn,exports.createEditorSlice=h.c,exports.createEditorTransaction=h.r,exports.createEmptyBuildingGpuUploadResources=y.V,exports.createEmptyBuildingIndirectDrawMirror=y.tt,exports.createEmptyGpuMirror=y.X,exports.createFrameDriver=u.et,exports.createGaesupRuntime=u.C,exports.createGaesupStore=p.a,exports.createGameCommand=H.a,exports.createGameplayAreas=C.t,exports.createGameplayEventActionTemplate=V.i,exports.createGameplayEventConditionTemplate=V.a,exports.createGameplayEventTriggerTemplate=V.o,exports.createGrassManager=y.Et,exports.createI18nPlugin=So,exports.createIdleFrameGate=Jo,exports.createInitialCameraMetrics=h.Sn,exports.createInputDeviceState=No,exports.createInteractableComponent=h.At,exports.createInteractablesStore=y.M,exports.createInteractionInputAdapter=p.m,exports.createInteractionSlice=p.c,exports.createInteractionSliceWithServices=p.l,exports.createInteractionSystemInputBackend=p.h,exports.createLegacyRenderer=N.f,exports.createLocalVisitChannel=G.n,exports.createLutTexture=K.n,exports.createManualToastEventBlueprint=V.s,exports.createMemoryInputBackend=p.b,exports.createMeshRendererComponent=h.jt,exports.createMotionsPlugin=f.ot,exports.createMotionsRuntime=f.st,exports.createNPCBehaviorBlueprintFromAgentBehaviorBlueprint=y.T,exports.createNPCBehaviorBlueprintFromInstance=y.E,exports.createNPCBrainAdapterRegistry=y.f,exports.createNPCObservation=y.p,exports.createNPCPlugin=yn,exports.createNPCScheduler=u.F,exports.createNPCStore=y.i,exports.createNetworkEnvelope=H.t,exports.createNoOverlapRule=f.Jn,exports.createNpcComponent=h.Mt,exports.createNpcTalkEventBlueprint=V.c,exports.createPersistenceSlice=u.d,exports.createPersistenceSliceWithOptions=u.f,exports.createPlacementEngine=f.qn,exports.createPlayerProgress=U.i,exports.createPlayerProgressFromSaveSystem=U.a,exports.createPluginContext=D.u,exports.createPluginLogger=D.d,exports.createPluginRegistry=D.l,exports.createPrefabDocument=h.lt,exports.createPrefabFromSceneObjects=h.ut,exports.createPrefabInstance=h.et,exports.createPrefabVariant=h.tt,exports.createProjectFile=Ss,exports.createProjectSettings=os,exports.createReinforcementAdapter=y.y,exports.createRenderer=N.p,exports.createRigidBodyComponent=h.Nt,exports.createRoomVisibilityStore=u.A,exports.createRuntimeSaveDiagnostics=u.Q,exports.createSaveDataFromSaveSystem=u.h,exports.createSceneCollisionGroups=ot,exports.createSceneComponent=h.Lt,exports.createSceneDocument=h.Rt,exports.createSceneDocumentController=st,exports.createSceneDocumentSaveBinding=_t,exports.createSceneLayerDefinition=We,exports.createSceneLayerTagRegistry=Ke,exports.createSceneMigrationRegistry=Fe,exports.createSceneObject=h.zt,exports.createSceneObjectEditorCommands=h.i,exports.createScenePlugin=js,exports.createSceneStore=b.d,exports.createSceneTagDefinition=Ge,exports.createScopedAssetMeshConfig=ee.r,exports.createScopedBuildingMeshId=ee.i,exports.createScriptComponent=h.Pt,exports.createServerEvent=H.o,exports.createServerPluginHost=te.n,exports.createShoreField=I.M,exports.createSkyEnvironmentTexture=Lc,exports.createSnapshotAck=H.s,exports.createStateDelta=H.c,exports.createStoreDomainPlugin=a.t,exports.createTeleportDestination=jn,exports.createTerrainBlockMaterial=I.v,exports.createTileFootprint=f.vn,exports.createTileSampler=I.Z,exports.createTimePlugin=pr,exports.createTimeStore=j.n,exports.createToonMaterial=f.l,exports.createVectorCache=f.Nt,exports.createWeatherPlugin=kr,exports.createWeatherStore=v.n,exports.createWebSocketVisitChannel=G.r,exports.createWorldDataFromSaveDomains=u.g,exports.createWorldInputScope=f.gr,exports.createWorldObjectStore=u.w,exports.createWorldSlice=u.D,exports.createWorldSliceForBridge=u.O,exports.createWorldSnapshot=U.o,exports.createWorldSnapshotFromSaveSystem=U.s,exports.dayOfTotalMinutes=j.s,exports.defaultCharacterAnimator=f.U,exports.defaultMultiplayerConfig=G.u,exports.defineGaesupPlugin=k.i,exports.defineScript=h.R,exports.defineService=_.t,exports.destroyBuildingGpuUploadResources=y.H,exports.detectCapabilities=B.c,exports.dialogTriggerScript=sc,exports.disposeGLTFAsset=i.a,exports.disposeToonGradients=f.u,exports.doorScript=ic,exports.edgeKey=f.yn,exports.edgeSideToWallRotation=f.bn,exports.edgeToWallTransform=f.xn,exports.editorSlice=h.l,exports.exportUnityScene=Ce,exports.filterPluginsForRuntime=D.t,exports.findMissingAssetReferences=P.l,exports.findPrefabInstanceLink=h.G,exports.findSceneObject=De,exports.findSceneObjects=Ee,exports.findSceneObjectsByLayer=ke,exports.findSceneObjectsByTag=Oe,exports.findSceneObjectsWithComponent=Ae,exports.findTeleportDestination=Nn,exports.findTerrainBlockMaterial=I.y,exports.formatEditorShortcut=h.Mn,exports.formatRuntimeSaveDiagnostic=u.$,exports.formatRuntimeSaveDiagnosticToastMessage=Qn,exports.frameScheduler=t.m,exports.gamepadDefault=ne.n,exports.getActiveSceneObject=h.p,exports.getAnimatorController=h.Ut,exports.getAudioEngine=u.J,exports.getBindPoseHash=f.w,exports.getBlockSupportHeight=f.Sn,exports.getBrowserGamepadHub=u.H,exports.getBuildingSupportHeight=f.Cn,exports.getCachedTrig=f.Pt,exports.getDefaultBuildingObject=I.it,exports.getDefaultInteractionInputBackend=p.g,exports.getDefaultToonMode=f.d,exports.getDefaultWorldInputScope=f._r,exports.getDialogRegistry=x.h,exports.getDrawClusterForSnapshotEntry=y.gt,exports.getEditorSaveStatusLabel=h.Ln,exports.getGameplayEventRegistry=x.a,exports.getGlobalAnimationBridge=f.W,exports.getGlobalStateManager=f.q,exports.getGrassManager=y.Dt,exports.getIndirectInstanceCount=y.nt,exports.getNPCBrainBlueprint=y.D,exports.getNPCScheduler=u.I,exports.getNextAutosaveAt=h.Rn,exports.getPooledVector=f.Et,exports.getPrefabInstanceObjects=h.K,exports.getPrefabRootObjectIds=h.dt,exports.getReinforcementAdapterConfig=y.b,exports.getSaveSystem=b.i,exports.getSceneChildren=h.Bt,exports.getSceneLayersByPurpose=$e,exports.getSceneObjectComponent=je,exports.getSceneObjectComponents=Me,exports.getScript=h.z,exports.getSharedFrameEntryCount=f.yr,exports.getSkeletonBoneNames=f.T,exports.getTileSupportHeight=f.wn,exports.getTimeClock=f.Z,exports.getToonGradient=f.f,exports.getTrigCacheStats=f.Ft,exports.getWallMaterialKey=I.G,exports.getWebGPUDeviceFromRenderer=y.U,exports.gltfAssetCache=i.o,exports.hasSceneObjectComponent=Ne,exports.hasTileCollision=f.Tn,exports.hasWallCollision=f.En,exports.holdUnkeyedTracks=I.ft,exports.hydrateAudioState=Br,exports.hydrateCharacterState=oi,exports.hydrateI18nState=xo,exports.hydrateNPCState=vn,exports.hydrateSceneState=As,exports.hydrateTimeState=fr,exports.hydrateWeatherState=Or,exports.i18nPlugin=Co,exports.importUnityScene=Te,exports.indexAabb=f.Dn,exports.inputActionsFromProjectSettings=L.c,exports.inspectFigure=P.i,exports.inspectModel=P.a,exports.installClientGameplayEventServices=x.o,exports.instantiatePrefabObjects=h.at,exports.invalidateCollisionCache=T.h,exports.isAutoSaveSuspended=A.a,exports.isCanonicalSceneJsonObject=h.Vt,exports.isEditableInputEvent=f.vr,exports.isEditableShortcutTarget=h.Nn,exports.isEditorPanelComponentExtension=h.Gn,exports.isNewDay=j.c,exports.isNewHour=j.l,exports.isSceneLayerSelectable=Qe,exports.isSceneLayerVisible=Ze,exports.isSceneObjectSelected=h.m,exports.isValidOrOne=f.Dt,exports.isValidOrZero=f.Ot,exports.isVectorNonZero=f.kt,exports.isWebGPUAvailable=N.m,exports.listAnimatorControllers=h.Wt,exports.listScripts=h.B,exports.loadContentBundleFromManifest=W.n,exports.loadCoreWasm=E.u,exports.loadCubeLut=K.r,exports.loadCubeLutTexture=K.i,exports.loadSceneRuntime=ve,exports.logger=r.t,exports.makeClipInPlace=I.pt,exports.markEditorDirty=h.zn,exports.markEditorSaveError=h.Bn,exports.markEditorSaved=h.Vn,exports.markEditorSaving=h.Hn,exports.matchesEditorShortcut=h.Pn,exports.matchesSceneObjectQuery=Pe,exports.migrateSceneDocument=Ie,exports.motionsPlugin=f.ct,exports.multiplySceneMatrices=he,exports.normalizeAngle=f.It,exports.normalizeImportedMaterials=F.n,exports.normalizeQuarterTurnRotation=f.On,exports.normalizeSaveMetadata=u._,exports.notify=x.s,exports.npcPlugin=bn,exports.object3DToSceneTransform=h.b,exports.pair=f.kn,exports.parseBuildingGpuVisibilityFlags=y._t,exports.parseCubeLut=K.a,exports.parsePrefabDocument=Mt,exports.parseProjectFile=Ts,exports.parseProjectSettings=ls,exports.parseSceneDocument=h.Ct,exports.parseWorldSaveId=u.v,exports.parseWorldSaveTimestamp=u.y,exports.pickDomains=U.c,exports.placeNameplates=z.i,exports.placementOk=f.Yn,exports.placementRejected=f.Xn,exports.playCameraCinematic=b.l,exports.profileForTier=B.l,exports.propagatePrefabChanges=h.nt,exports.propagatePrefabToDocument=h.q,exports.queryAabbIds=f.An,exports.readPrefabInstanceLink=h.rt,exports.readRendererStats=A.r,exports.realMsToGameMinutes=j.u,exports.registerAnimatorController=h.Gt,exports.registerBuiltinScripts=cc,exports.registerDefaultReinforcementAdapter=y.m,exports.registerNPCBrainAdapter=y.h,exports.registerNPCBrainBlueprint=y.O,exports.registerSceneComponentSchema=h.yt,exports.registerScript=h.V,exports.releaseVector=f.At,exports.remapSkinnedGeometryJoints=f.E,exports.replaceWithPrefabInstance=h.J,exports.requestCameraCloseUp=b.k,exports.requestMotionsTeleport=f.lt,exports.resolveCharacterAttachment=wa,exports.resolveCharacterBaseNodeExclusions=ro,exports.resolveCharacterParts=to,exports.resolveDefaultInteractionSystem=p._,exports.resolveEditorPanelComponentExtensions=h.Kn,exports.resolveEquippedCharacterAttachments=Ta,exports.resolveNPCBrainDecision=y.g,exports.resolveQualityDpr=B.r,exports.resolveRuntimeInputBackend=f.r,exports.resolveSchedule=u.L,exports.resolveScriptProps=h.H,exports.resolveSharedSkeletonBinding=f.D,exports.restoreCameraCloseUp=b.A,exports.revertPrefabInstance=h.Y,exports.revertPrefabInstanceOverride=h.X,exports.revertPrefabOverride=h.it,exports.rideableDefault=u.x,exports.rotatorScript=rc,exports.runtimeStoreServiceKey=_.n,exports.sceneEulerToQuaternion=fe,exports.sceneMatrixToTransform=ge,exports.scenePlugin=Ms,exports.sceneQuaternionToEuler=pe,exports.sceneTransformToMatrix=me,exports.scriptProp=h.U,exports.selectAssetsByKind=l.n,exports.selectAssetsBySlot=l.r,exports.selectSceneObject=h.h,exports.selectSceneObjectRange=h.g,exports.serializeAudioState=zr,exports.serializeCharacterState=ai,exports.serializeI18nState=bo,exports.serializeNPCState=hn,exports.serializePrefabDocument=At,exports.serializeProjectSettings=cs,exports.serializeSceneDocument=h.wt,exports.serializeSceneState=ks,exports.serializeTimeState=dr,exports.serializeVisit=G.o,exports.serializeWeatherState=Dr,exports.setDefaultGameplayEventServices=w.a,exports.setDefaultInteractionSystemResolver=p.v,exports.setDefaultToonMode=f.p,exports.setSceneObjectHover=h._,exports.shouldRunEditorAutosave=h.Un,exports.shouldSetupPluginForRuntime=D.n,exports.shouldUpdate=f.Lt,exports.shouldUpdateVector3=f.Rt,exports.smoothSeamNormals=P.t,exports.snapBuildingPosition=f.jn,exports.snapSceneTransform=h.x,exports.steeringTickScale=f.ht,exports.subscribeSceneObjectDelta=ht,exports.summarizeFrameTimes=Wo,exports.supportsGpuInstanceBatches=I.Y,exports.suspendAutoSave=A.o,exports.syncBuildingGpuBuffers=y.W,exports.syncBuildingIndirectArgsBuffer=y.G,exports.t=go,exports.teleportDestinationToVector3=Mn,exports.threeObjectPool=ar,exports.tileFootprintKeys=f.Mn,exports.tileGroupToPlacementEntries=f.Nn,exports.tileHalfSize=f.Pn,exports.tileOverlaps=f.Fn,exports.tilePositionToCell=f.In,exports.tileToPlacementEntry=f.Ln,exports.timePlugin=mr,exports.toSceneObjectDelta=mt,exports.toggleCharacterWeapon=b._,exports.triggerZoneScript=ac,exports.unfocusCamera=Dn,exports.unindexId=f.Rn,exports.unregisterNPCBrainBlueprint=y.k,exports.updateInputState=f.j,exports.useAmbientBgm=Xr,exports.useAnimationBridge=f.G,exports.useAnimationPlayer=f.k,exports.useAnimatorEvent=Sn,exports.useAssetStore=l.i,exports.useAssetStoreApi=l.a,exports.useAudioStore=u.G,exports.useAudioStoreApi=u.K,exports.useAutoSave=u.N,exports.useBlueprintEntity=zt,exports.useBuildingEditor=I.b,exports.useBuildingGpuCullingStore=y.wt,exports.useBuildingGpuCullingStoreApi=y.Tt,exports.useBuildingRenderStateStore=y.z,exports.useBuildingRenderStateStoreApi=y.B,exports.useBuildingStore=f.Ut,exports.useBuildingStoreApi=f.Wt,exports.useBuildingVisibilityStore=y.I,exports.useBuildingVisibilityStoreApi=y.L,exports.useCamera=T.r,exports.useCameraBridge=T.i,exports.useCanvasFrameScheduler=t.i,exports.useCharacterAnimator=f.I,exports.useCharacterMenuController=sa,exports.useCharacterStore=b.S,exports.useCharacterStoreApi=b.C,exports.useClicker=f.t,exports.useClipTransition=I.ct,exports.useContactShadow=f.h,exports.useCurrentInteraction=Bt,exports.useDayChange=vr,exports.useDialogRegistry=x.d,exports.useDialogStore=x.f,exports.useDialogStoreApi=x.p,exports.useEditor=h.o,exports.useEditorAutosave=h.Fn,exports.useEditorShortcuts=h.kn,exports.useEditorStore=h.s,exports.useEngineFrame=t.t,exports.useFrameDriverItem=t.n,exports.useGLTFAsset=F.i,exports.useGaesupController=Cn,exports.useGaesupGltf=f.a,exports.useGaesupRuntime=s.n,exports.useGaesupRuntimeRevision=s.r,exports.useGaesupStore=p.o,exports.useGaesupStoreApi=p.s,exports.useGameClock=_r,exports.useGameTime=hr,exports.useGenericRefs=T.t,exports.useGltfAndSize=f.o,exports.useGrassManager=I.V,exports.useHourChange=yr,exports.useI18nStore=ho,exports.useImportedMaterials=F.r,exports.useInputActions=Ho,exports.useInputBackend=f.i,exports.useInteractablesStore=y.N,exports.useInteractablesStoreApi=y.P,exports.useInteractionKey=Vt,exports.useInteractionSystem=Ut,exports.useKeyboard=L.a,exports.useLoadOnMount=u.P,exports.useLocale=To,exports.useMinimap=Wn,exports.useMotion=Rt,exports.useMultiplayer=G.g,exports.useNPCStore=y.a,exports.useNPCStoreApi=y.o,exports.useNameplate=z.r,exports.useNpcSchedule=xn,exports.usePerfStore=B.a,exports.usePerformanceReport=Ko,exports.usePhysicsBridge=f.A,exports.usePlayerNetwork=G._,exports.usePlayerPosition=L.l,exports.usePlayerWorldPosition=L.u,exports.useQualityProfile=B.i,exports.useRendererRecovery=Vc,exports.useRideable=u.S,exports.useRoomVisibilityStore=u.j,exports.useRoomVisibilityStoreApi=u.M,exports.useSceneStore=b.f,exports.useSceneStoreApi=b.p,exports.useScriptObjectTransform=$s,exports.useScriptRuntime=Xs,exports.useSharedFrame=f.br,exports.useShoreField=I.j,exports.useSpeechBalloonPosition=z.s,exports.useStateSystem=f.Y,exports.useTeleport=wn,exports.useTimeOfDay=gr,exports.useTimeStore=j.r,exports.useTimeStoreApi=j.i,exports.useToastStore=x.c,exports.useTranslate=wo,exports.useUIConfigStore=z.o,exports.useVisitRoom=G.t,exports.useWeatherStore=v.r,exports.useWeatherStoreApi=v.i,exports.useWeatherTicker=Fr,exports.useWorldInputActions=T.y,exports.useWorldInputScope=f.mr,exports.useWorldLoadProgress=Qo,exports.useWorldObjectStore=u.T,exports.useWorldObjectStoreApi=u.E,exports.useWorldPhysicsInterpolation=f.N,exports.useWorldPhysicsStep=f.P,exports.validateAnimatorController=n.o,exports.validateContentBundle=W.r,exports.validateContentBundleManifest=W.i,exports.validateGaesupPlugin=k.r,exports.validateModelStats=P.o,exports.validatePrefabDocument=h.ft,exports.validateProjectCollisionLayers=Ye,exports.validateProjectFile=ws,exports.validateProjectSettings=us,exports.validateSceneComponentData=h.bt,exports.validateSceneDocument=h.Ht,exports.validateSceneLayerTagRegistry=qe,exports.validateSceneObjectLayersAndTags=Je,exports.validateSerializedPrefabDocument=Nt,exports.validateSerializedSceneDocument=h.Tt,exports.visitProviderFromSaveSystem=G.s,exports.wallGroupToPlacementEntries=f.zn,exports.wallToPlacementEntry=f.Bn,exports.wallTransformToEdge=f.Vn,exports.weatherPlugin=Ar,exports.worldToBuildingCell=f.Hn,exports.zigZag=f.Un;
|