gaesup-world 1.3.2 → 1.4.0
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/{ControllerWrapper-C6mzwejv.cjs → ControllerWrapper-DIZhLWzV.cjs} +1 -1
- package/dist/{ControllerWrapper-Bc_pRQSv.js → ControllerWrapper-guCfO0a-.js} +3 -3
- package/dist/{CoreBridge-DdJBUxmY.js → CoreBridge-CoU_vJOo.js} +1 -0
- package/dist/CoreBridge-L4l4UNtR.cjs +1 -0
- package/dist/{Gamepad-DpCgazVm.js → Gamepad-DuJ8qWlv.js} +4 -4
- package/dist/{Gamepad-BVhh5IfO.cjs → Gamepad-Xvf4z0S2.cjs} +1 -1
- package/dist/{NodeGpuSnow-lWPqrcUV.js → NodeGpuSnow-BvYQIWMj.js} +1 -1
- package/dist/{NodeGpuSnow-C3MwTvnW.cjs → NodeGpuSnow-By8_DPWF.cjs} +1 -1
- package/dist/{NodeGrassMaterial-BMwfsBMP.cjs → NodeGrassMaterial-CbcGJsx_.cjs} +1 -1
- package/dist/{NodeGrassMaterial-W9H9z72i.js → NodeGrassMaterial-DZSpsEzt.js} +1 -1
- package/dist/{NodeTreeParticles-DDpwPxpE.cjs → NodeTreeParticles-BbFBoQik.cjs} +1 -1
- package/dist/{NodeTreeParticles-DPjRQ0wj.js → NodeTreeParticles-CWqWgN2w.js} +1 -1
- package/dist/{NodeWaterMaterial-C5fHPHUG.cjs → NodeWaterMaterial-B1rA9DRv.cjs} +1 -1
- package/dist/{NodeWaterMaterial-Bc1nkYSw.js → NodeWaterMaterial-BKvyycqz.js} +2 -2
- package/dist/{Rideable-DTSh5xu3.js → Rideable-4ECPOR3x.js} +7 -7
- package/dist/{Rideable-CWddzOkn.cjs → Rideable-CNgjDUBh.cjs} +1 -1
- package/dist/{SaveSystem-DF5zSnEj.js → SaveSystem-B9TrEpWU.js} +2 -2
- package/dist/{SaveSystem-DwfckGGo.cjs → SaveSystem-Bj41IbmF.cjs} +1 -1
- package/dist/{WorldBridge-DmvFhm9b.cjs → WorldBridge-CBEkEehK.cjs} +1 -1
- package/dist/{WorldBridge-m64VREYb.js → WorldBridge-DtqzMddm.js} +1 -1
- package/dist/{WorldContainer-BjZj0uvZ.cjs → WorldContainer-CDC2nj9-.cjs} +1 -1
- package/dist/{WorldContainer-Ce5PVxSF.js → WorldContainer-DdHlM9IG.js} +7 -7
- package/dist/{WorldPhysics-CueqwH91.cjs → WorldPhysics-CQAfZYGi.cjs} +1 -1
- package/dist/{WorldPhysics-oZdWret8.js → WorldPhysics-Dry82NpQ.js} +1 -1
- package/dist/WorldPostProcessing-C40JqbKO.js +234 -0
- package/dist/WorldPostProcessing-C9qqKrpI.cjs +1 -0
- package/dist/{WorldProps-L3Izutxz.cjs → WorldProps-C0JF5fFD.cjs} +1 -1
- package/dist/{WorldProps-CQrtF4CO.js → WorldProps-Du0EDzmt.js} +6 -7
- package/dist/{blueprints-BHfyy363.cjs → blueprints-BRMf59iu.cjs} +1 -1
- package/dist/{blueprints-BlhgrXDo.js → blueprints-BzU37Tjs.js} +2 -2
- package/dist/blueprints-editor.cjs +1 -1
- package/dist/blueprints-editor.js +7 -7
- package/dist/blueprints.cjs +1 -1
- package/dist/blueprints.js +1 -1
- package/dist/building.cjs +1 -1
- package/dist/building.js +3 -3
- package/dist/core/building/components/mesh/model/merge.d.cts +2 -1
- package/dist/core/building/components/mesh/model/merge.d.ts +2 -1
- package/dist/core/camera/bridge/types.d.cts +3 -1
- package/dist/core/camera/bridge/types.d.ts +3 -1
- package/dist/core/camera/components/CameraController/defaults.d.cts +2 -1
- package/dist/core/camera/components/CameraController/defaults.d.ts +2 -1
- package/dist/core/camera/components/CameraController/index.d.cts +4 -4
- package/dist/core/camera/components/CameraController/index.d.ts +4 -4
- package/dist/core/camera/components/CameraController/types.d.cts +16 -1
- package/dist/core/camera/components/CameraController/types.d.ts +16 -1
- package/dist/core/camera/components/index.d.cts +2 -2
- package/dist/core/camera/components/index.d.ts +2 -2
- package/dist/core/camera/controllers/BaseController.d.cts +4 -0
- package/dist/core/camera/controllers/BaseController.d.ts +4 -0
- package/dist/core/camera/core/CameraOcclusion.d.cts +60 -0
- package/dist/core/camera/core/CameraOcclusion.d.ts +60 -0
- package/dist/core/camera/core/CameraSystem.d.cts +2 -0
- package/dist/core/camera/core/CameraSystem.d.ts +2 -0
- package/dist/core/camera/core/constants.d.cts +1 -0
- package/dist/core/camera/core/constants.d.ts +1 -0
- package/dist/core/camera/core/seeThrough.d.cts +64 -0
- package/dist/core/camera/core/seeThrough.d.ts +64 -0
- package/dist/core/camera/core/types.d.cts +17 -0
- package/dist/core/camera/core/types.d.ts +17 -0
- package/dist/core/camera/utils/camera.d.cts +6 -3
- package/dist/core/camera/utils/camera.d.ts +6 -3
- package/dist/core/camera/utils/sphereSweep.d.cts +8 -1
- package/dist/core/camera/utils/sphereSweep.d.ts +8 -1
- package/dist/core/editor/components/panels/CameraSettingsTab/types.d.cts +1 -1
- package/dist/core/editor/components/panels/CameraSettingsTab/types.d.ts +1 -1
- package/dist/core/rendering/postprocess/WorldPostProcessing.d.cts +26 -1
- package/dist/core/rendering/postprocess/WorldPostProcessing.d.ts +26 -1
- package/dist/core/rendering/postprocess/screenSpaceLighting.d.cts +51 -0
- package/dist/core/rendering/postprocess/screenSpaceLighting.d.ts +51 -0
- package/dist/core/rendering/webgpu.d.cts +2 -0
- package/dist/core/rendering/webgpu.d.ts +2 -0
- package/dist/core/world/components/WorldContainer/types.d.cts +1 -1
- package/dist/core/world/components/WorldContainer/types.d.ts +1 -1
- package/dist/{defaults-jVT3EUVe.js → defaults-BmnFvrSk.js} +13 -4
- package/dist/defaults-Y3XGbDmo.cjs +1 -0
- package/dist/editor.cjs +1 -1
- package/dist/editor.js +4 -4
- package/dist/{flow-DJRTbNvJ.js → flow-B_5Jtrhv.js} +1 -1
- package/dist/{flow-BnFTzumT.cjs → flow-CY0am38O.cjs} +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.css +1 -1
- package/dist/index.js +906 -904
- package/dist/network.cjs +1 -1
- package/dist/network.js +1 -1
- package/dist/{plugin-BUKo4q0N.cjs → plugin-BY3uYoSx.cjs} +32 -32
- package/dist/{plugin-Dsf9EwPP.js → plugin-uKCTitER.js} +907 -905
- package/dist/postprocessing.cjs +1 -1
- package/dist/postprocessing.js +1 -1
- package/dist/{quality-BLE1xXFm.js → quality--izFMxKn.js} +2 -2
- package/dist/{quality-0VukPLnv.cjs → quality-CxseVZ9x.cjs} +1 -1
- package/dist/runtime.cjs +1 -1
- package/dist/runtime.js +7 -7
- package/dist/sceneCompile-CWcdcntc.cjs +1 -0
- package/dist/{sceneCompile-BWpSal9S.js → sceneCompile-CuCsjsKm.js} +99 -91
- package/dist/{sfe-DnOKmvUM.cjs → sfe-BUv2sneT.cjs} +1 -1
- package/dist/{sfe-BAXSr5BB.js → sfe-DhJQcjMq.js} +1 -1
- package/dist/shell-C82J4LTq.cjs +1 -0
- package/dist/{shell-aiiC8SLL.js → shell-Ct-ZE2ZM.js} +2565 -2515
- package/dist/{useClicker-0Ln5ZSz0.cjs → useClicker-B-fGashd.cjs} +1 -1
- package/dist/{useClicker-DZrb1I0b.js → useClicker-ChI9FA0J.js} +1 -1
- package/dist/useGenericRefs-DzuTNaAX.cjs +1 -0
- package/dist/{useGenericRefs-D0cOKidj.js → useGenericRefs-PVX2F3On.js} +553 -270
- package/dist/{useVisitRoom-GXR8KyFN.cjs → useVisitRoom-BWf5YBiG.cjs} +1 -1
- package/dist/{useVisitRoom-C_UX2avV.js → useVisitRoom-qRZdBGlH.js} +6 -6
- package/package.json +3 -3
- package/dist/CoreBridge-CnLqWZNv.cjs +0 -1
- package/dist/WorldPostProcessing-C80qMk1k.cjs +0 -1
- package/dist/WorldPostProcessing-Dfq_RW-t.js +0 -158
- package/dist/defaults-BLDQhn77.cjs +0 -1
- package/dist/sceneCompile-D9xft0op.cjs +0 -1
- package/dist/shell-BRQStYy9.cjs +0 -1
- package/dist/useGenericRefs-CZ_HIQG_.cjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./useEngineFrame-ujTlLQfa.cjs"),t=require("./logger-B9OaKOPw.cjs"),n=require("./runtimeContext-zx_GnKx4.cjs"),r=require("./useClicker-
|
|
1
|
+
const e=require("./useEngineFrame-ujTlLQfa.cjs"),t=require("./logger-B9OaKOPw.cjs"),n=require("./runtimeContext-zx_GnKx4.cjs"),r=require("./useClicker-B-fGashd.cjs"),i=require("./timeStore-Be94nnui.cjs");let a=require("three"),o=require("react"),s=require("@react-three/fiber"),c=require("react/jsx-runtime"),l=require("@react-three/rapier");var u=new WeakSet;function d(e){t.r()||e.hostCount()<2||u.has(e)||(u.add(e),t.t.warn(`[FrameScheduler] More than one <FrameSchedulerHost /> is mounted for the same canvas. Only the first one ticks; remove the extra host.`))}var f=1;function p(e){return e>0?Math.min(e,f):0}function m(t,n,r,i,a,o){let s=p(a),c=n!==e.m&&e.m.isTickOwner(t),l=n.isTickOwner(t);for(let t=r;t<i;t++)c&&e.m.tickPhase(t,s,o),l&&n.tickPhase(t,s,o)}function h({scheduler:t,metrics:r=!1}){let i=e.i(),a=t??i,[c]=(0,o.useState)(()=>({})),l=n.n();return(0,o.useLayoutEffect)(()=>l?.stats.source(`frames`,()=>a.getFrame()),[l,a]),(0,o.useLayoutEffect)(()=>{let t=a.attachHost(c),n=a===e.m?void 0:e.m.attachHost(c);return d(a),()=>{n?.(),t()}},[a,c]),(0,o.useEffect)(()=>(a.setMetricsEnabled(r),()=>a.setMetricsEnabled(!1)),[r,a]),(0,s.useFrame)((t,n)=>{m(c,a,0,e.p,n,e.u(t))},e.s),(0,s.useFrame)((t,n)=>{m(c,a,e.p,e.g.length,n,e.u(t))},-1),null}var g=class{constructor(){this.poses=new Set,this.parentRotation=new a.Quaternion,this.parentPosition=new a.Vector3,this.parentScale=new a.Vector3}register(e,t,n){let r={body:e,visual:t,previous:new a.Vector3,current:new a.Vector3,previousRotation:new a.Quaternion,rotation:new a.Quaternion,ready:!1,world:new a.Vector3,target:n};return n&&e.isValid()&&r.world.copy(e.translation()),this.poses.add(r),n&&(n.presentedPosition=r.world),()=>{this.poses.delete(r),t.position.set(0,0,0),t.quaternion.identity(),n?.presentedPosition===r.world&&delete n.presentedPosition}}beforeStep(){for(let e of this.poses)e.body.isValid()&&(e.previous.copy(e.body.translation()),e.previousRotation.copy(e.body.rotation()))}afterStep(){for(let e of this.poses)e.body.isValid()&&(e.current.copy(e.body.translation()),e.rotation.copy(e.body.rotation()),e.ready=!0)}present(e){for(let t of this.poses){let n=t.visual.parent;t.ready&&n&&t.body.isValid()&&(n.updateWorldMatrix(!0,!1),t.world.copy(t.previous).lerp(t.current,e),n.worldToLocal(t.visual.position.copy(t.world)),n.matrixWorld.decompose(this.parentPosition,this.parentRotation,this.parentScale),this.parentRotation.invert(),t.visual.quaternion.copy(t.previousRotation).slerp(t.rotation,e).premultiply(this.parentRotation))}}};function _({children:t,paused:a=!1,interpolate:u=!0,...d}){let f=n.n(),p=n.r(),m=i.i(),h=f?.clockLoop??r.Z(m),_=(0,s.useThree)(e=>e.get),y=(0,s.useThree)(e=>e.frameloop),b=(0,o.useRef)(!1),x=(0,o.useRef)(null);b.current=!a&&(!f||f.isActive());let S=(0,o.useMemo)(()=>({clock:h.clock,getState:_,isRunning:()=>b.current&&(!f||f.isActive()),presentation:new g}),[h,_,f]);return(0,o.useEffect)(()=>{if(b.current)return h.acquire()},[h,a,f,p]),(0,o.useEffect)(()=>{if(y!==`always`)return;let e=h.attachDriver();return x.current=e,()=>{e.release(),x.current===e&&(x.current=null)}},[h,y]),e.t(`prePhysics`,e=>x.current?.advance(e),{order:2**53-1,label:`physics:advance`}),e.t(`postPhysics`,()=>S.presentation.present(u&&S.isRunning()?h.clock.interpolationAlpha:1),{order:-(2**53-1),label:`physics:present`}),(0,c.jsx)(r.M.Provider,{value:S,children:(0,c.jsxs)(l.Physics,{...d,paused:!0,timeStep:h.clock.deltaSeconds,interpolate:!1,children:[(0,c.jsx)(v,{context:S}),t]})})}function v({context:e}){let{step:t}=(0,l.useRapier)(),n=(0,o.useId)();return(0,o.useEffect)(()=>e.clock.addSystem({id:`rapier:${n}`,phase:`physics`,update:n=>{e.isRunning()&&(e.presentation.beforeStep(),t(n.deltaSeconds),e.presentation.afterStep())}}),[e,n,t]),null}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return _}});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { g as e, i as t, m as n, p as r, s as i, t as a, u as o } from "./useEngineFrame-DH3I5P9Z.js";
|
|
2
2
|
import { r as s, t as c } from "./logger-CIvdj60w.js";
|
|
3
3
|
import { n as l, r as u } from "./runtimeContext-IAbUva69.js";
|
|
4
|
-
import { M as d, Z as f } from "./useClicker-
|
|
4
|
+
import { M as d, Z as f } from "./useClicker-ChI9FA0J.js";
|
|
5
5
|
import { i as p } from "./timeStore-Ck5CxJuk.js";
|
|
6
6
|
import { Quaternion as m, Vector3 as h } from "three";
|
|
7
7
|
import { useEffect as g, useId as _, useLayoutEffect as v, useMemo as y, useRef as b, useState as x } from "react";
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { t as e } from "./logger-CIvdj60w.js";
|
|
2
|
+
import { c as t, g as n, m as r, r as i } from "./sceneCompile-CuCsjsKm.js";
|
|
3
|
+
import { n as a, r as o } from "./outline-CsIagFrc.js";
|
|
4
|
+
import { t as s } from "./renderHistory-DVcwcyBy.js";
|
|
5
|
+
import { Matrix4 as c, Quaternion as l, UnsignedByteType as u, Vector3 as d } from "three";
|
|
6
|
+
import { useEffect as f, useRef as p } from "react";
|
|
7
|
+
import { useFrame as m, useThree as h } from "@react-three/fiber";
|
|
8
|
+
import { jsx as g } from "react/jsx-runtime";
|
|
9
|
+
//#region \0rolldown/runtime.js
|
|
10
|
+
var _ = Object.defineProperty, v = (e, t) => {
|
|
11
|
+
let n = {};
|
|
12
|
+
for (var r in e) _(n, r, {
|
|
13
|
+
get: e[r],
|
|
14
|
+
enumerable: !0
|
|
15
|
+
});
|
|
16
|
+
return t || _(n, Symbol.toStringTag, { value: "Module" }), n;
|
|
17
|
+
}, y = 2, b = .5, x = 4, S = .35, C = [
|
|
18
|
+
"isMeshBasicMaterial",
|
|
19
|
+
"isLineBasicMaterial",
|
|
20
|
+
"isPointsMaterial",
|
|
21
|
+
"isSpriteMaterial"
|
|
22
|
+
], w = (e, t, n) => Math.min(n, Math.max(t, e)), T = (e, t) => e?.[t] === !0, E = (e) => T(e, "isMeshStandardMaterial"), D = (e) => !e || C.some((t) => T(e, t)) || T(e, "isNodeMaterial") && !T(e, "lights");
|
|
23
|
+
function O(e) {
|
|
24
|
+
let t = null;
|
|
25
|
+
for (let n of e) try {
|
|
26
|
+
n?.dispose();
|
|
27
|
+
} catch (e) {
|
|
28
|
+
t ??= e;
|
|
29
|
+
}
|
|
30
|
+
if (t !== null) throw t;
|
|
31
|
+
}
|
|
32
|
+
function k(e, t) {
|
|
33
|
+
return Promise.all([
|
|
34
|
+
e ? import("three/addons/tsl/display/SSGINode.js") : null,
|
|
35
|
+
t ? import("three/addons/tsl/display/SSRNode.js") : null,
|
|
36
|
+
e ? import("three/addons/tsl/display/DenoiseNode.js") : null
|
|
37
|
+
]).then(([e, t, n]) => ({
|
|
38
|
+
gi: e,
|
|
39
|
+
reflections: t,
|
|
40
|
+
denoise: n
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
function A(e) {
|
|
44
|
+
return {
|
|
45
|
+
normal: e.Fn(({ material: t }) => e.vec4(e.normalView, E(t) ? e.roughness : e.float(1)))(),
|
|
46
|
+
surface: e.Fn(({ material: t }) => E(t) ? e.vec4(e.diffuseColor.rgb, e.metalness) : e.vec4(D(t) ? e.vec3(0) : e.diffuseColor.rgb, 0))()
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function j(e, t) {
|
|
50
|
+
return e.sample((n) => {
|
|
51
|
+
let r = e.vec2(t.size(e.int(0))), i = n.mul(r).sub(.5), a = i.floor(), o = i.sub(a), s = t.gather().sample(a.add(1).div(r));
|
|
52
|
+
return e.vec4(e.mix(e.mix(s.w, s.z, o.x), e.mix(s.x, s.y, o.x), o.y));
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function M(e, { ssgi: t }, { denoise: n }, { color: r, depth: i, normal: a, surface: o }, s, c, l) {
|
|
56
|
+
let u = j(e, i), d = t(e.sample((t) => {
|
|
57
|
+
let n = r.sample(t);
|
|
58
|
+
return e.vec4(n.rgb.mul(e.float(x).div(e.luminance(n.rgb).max(x))), n.a);
|
|
59
|
+
}), u, a, s);
|
|
60
|
+
l.push(d), d.sliceCount.value = y, d.useScreenSpaceSampling.value = !1, d.useTemporalFiltering = c;
|
|
61
|
+
let f = 1, p = d, m = p.setSize.bind(d);
|
|
62
|
+
p.setSize = (e, t) => m(Math.max(1, Math.round(e * f)), Math.max(1, Math.round(t * f)));
|
|
63
|
+
let h = (e) => {
|
|
64
|
+
let t = n(e, u, a, s);
|
|
65
|
+
return t.depthPhi.value = b, l.push(t), t;
|
|
66
|
+
}, g = e.rtt(e.vec4(h(d.getGINode()).rgb, h(d.getAONode()).r));
|
|
67
|
+
return l.push(g), {
|
|
68
|
+
apply: (e) => e.mul(g.a).add(o.rgb.mul(o.a.oneMinus()).mul(g.rgb)),
|
|
69
|
+
update(e) {
|
|
70
|
+
d.radius.value = Math.max(.01, e.giRadius), d.stepCount.value = w(Math.round(e.giSteps), 1, 32), d.giIntensity.value = Math.max(0, e.giIntensity), f = w(e.giResolutionScale, .25, 1), g.setResolutionScale(f);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function N(e, { ssr: t }, { color: n, depth: r, normal: i, surface: a }, o, s) {
|
|
75
|
+
let c = e.uniform(1), l = o.isPerspectiveCamera ? e.getViewPosition(e.uv(), e.float(.5), e.uniform(o.projectionMatrixInverse)).normalize().negate() : e.vec3(0, 0, 1), u = e.float(1).sub(e.dot(i.rgb.normalize(), l).saturate()).pow(5).mul(.96).add(.04), d = e.float(1).sub(i.a.div(c)).saturate(), f = e.mix(u, e.float(1), a.a).mul(d), p = e.mix(e.vec3(1), a.rgb, a.a).mul(e.step(1e-4, d)), m = t(n, r, i, {
|
|
76
|
+
metalnessNode: f,
|
|
77
|
+
roughnessNode: i.a,
|
|
78
|
+
camera: o
|
|
79
|
+
});
|
|
80
|
+
return s.push(m), m.thickness.value = S, {
|
|
81
|
+
apply: (e) => e.add(m.rgb.mul(p)),
|
|
82
|
+
update(e) {
|
|
83
|
+
m.maxDistance.value = Math.max(.01, e.reflectionDistance), m.quality.value = w(e.reflectionQuality, .05, 1), m.intensity.value = Math.max(0, e.reflectionIntensity), m.resolutionScale = w(e.reflectionResolutionScale, .25, 1), c.value = w(e.reflectionMaxRoughness, .01, 1);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function P(e, t, n, r, i) {
|
|
88
|
+
n.getTexture("surface").type = u;
|
|
89
|
+
let a = {
|
|
90
|
+
color: n.getTextureNode("output"),
|
|
91
|
+
depth: n.getTextureNode("depth"),
|
|
92
|
+
normal: n.getTextureNode("normal"),
|
|
93
|
+
surface: n.getTextureNode("surface")
|
|
94
|
+
}, o = [], s = [];
|
|
95
|
+
t.gi && t.denoise && s.push(M(e, t.gi, t.denoise, a, r, i, o)), t.reflections && s.push(N(e, t.reflections, a, r, o));
|
|
96
|
+
let c = s.reduce((e, t) => t.apply(e), a.color.rgb), l = e.rtt(e.vec4(c, a.color.a));
|
|
97
|
+
return o.push(l), {
|
|
98
|
+
color: l,
|
|
99
|
+
update(e) {
|
|
100
|
+
for (let t of s) t.update(e);
|
|
101
|
+
},
|
|
102
|
+
dispose: () => O(o)
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
//#region src/core/rendering/postprocess/WorldPostProcessing.tsx
|
|
107
|
+
var F = /* @__PURE__ */ v({ WorldPostProcessing: () => z }), I = "rg11b10ufloat-renderable", L = (e) => e === "quality" || e === "cinematic";
|
|
108
|
+
function R({ quality: a = "balanced", antialias: o = a === "performance" ? "none" : "traa", ambientOcclusion: u = a !== "performance", aoRadius: g = 2, aoSamples: _ = L(a) ? 16 : 8, aoResolutionScale: v = L(a) ? 1 : .5, globalIllumination: y = a === "cinematic", giRadius: b = 4, giSteps: x = 8, giIntensity: S = 8, giResolutionScale: C = .5, reflections: w = a === "cinematic", reflectionDistance: T = 8, reflectionQuality: E = .5, reflectionIntensity: D = 1, reflectionResolutionScale: j = .5, reflectionMaxRoughness: M = .5, historyVersion: N = 0, bloomStrength: F = .18, bloomRadius: R = .4, bloomThreshold: z = 1, saturation: ee = 1.08 }) {
|
|
109
|
+
let B = h((e) => e.gl), V = h((e) => e.scene), H = h((e) => e.camera), U = y && H.isPerspectiveCamera === !0 && r(B, I), W = w && n(B) === "webgpu", G = u && !U, K = p(null), q = p(null), J = p({
|
|
110
|
+
position: new d(),
|
|
111
|
+
quaternion: new l(),
|
|
112
|
+
projection: new c(),
|
|
113
|
+
revision: -1,
|
|
114
|
+
initialized: !1
|
|
115
|
+
}), Y = p(new c()), X = p(new c()), Z = {
|
|
116
|
+
bloomStrength: F,
|
|
117
|
+
bloomRadius: R,
|
|
118
|
+
bloomThreshold: z,
|
|
119
|
+
saturation: ee,
|
|
120
|
+
aoRadius: g,
|
|
121
|
+
aoSamples: _,
|
|
122
|
+
aoResolutionScale: v,
|
|
123
|
+
giRadius: b,
|
|
124
|
+
giSteps: x,
|
|
125
|
+
giIntensity: S,
|
|
126
|
+
giResolutionScale: C,
|
|
127
|
+
reflectionDistance: T,
|
|
128
|
+
reflectionQuality: E,
|
|
129
|
+
reflectionIntensity: D,
|
|
130
|
+
reflectionResolutionScale: j,
|
|
131
|
+
reflectionMaxRoughness: M
|
|
132
|
+
}, Q = p(Z), $ = p(null);
|
|
133
|
+
return f(() => {
|
|
134
|
+
q.current?.setSize(1, 1), J.current.initialized = !1;
|
|
135
|
+
}, [N]), f(() => {
|
|
136
|
+
Q.current = Z, $.current?.();
|
|
137
|
+
}), f(() => {
|
|
138
|
+
let n = !1, r, a = o === "traa";
|
|
139
|
+
return Promise.all([
|
|
140
|
+
import("three/webgpu"),
|
|
141
|
+
import("three/tsl"),
|
|
142
|
+
import("three/addons/tsl/display/BloomNode.js"),
|
|
143
|
+
a ? import("three/addons/tsl/display/TRAANode.js") : null,
|
|
144
|
+
G ? import("three/addons/tsl/display/GTAONode.js") : null,
|
|
145
|
+
U || W ? k(U, W) : null
|
|
146
|
+
]).then(([e, o, s, c, l, u]) => {
|
|
147
|
+
if (n) return;
|
|
148
|
+
let d = o.pass(V, H), f, p, m, h, g, _ = [];
|
|
149
|
+
r = () => {
|
|
150
|
+
K.current === p && (t(B, null), K.current = null, $.current = null, q.current = null), O([
|
|
151
|
+
p,
|
|
152
|
+
f,
|
|
153
|
+
m,
|
|
154
|
+
h,
|
|
155
|
+
g,
|
|
156
|
+
..._,
|
|
157
|
+
d
|
|
158
|
+
]);
|
|
159
|
+
};
|
|
160
|
+
try {
|
|
161
|
+
(a || G || u) && (d.setMRT(o.mrt({
|
|
162
|
+
output: o.output,
|
|
163
|
+
...a ? { velocity: o.velocity } : {},
|
|
164
|
+
...u ? A(o) : G ? { normal: o.normalView } : {}
|
|
165
|
+
})), d.options.samples = 0);
|
|
166
|
+
let v = d.getTextureNode("output");
|
|
167
|
+
if (u && (g = P(o, u, d, H, a), v = g.color), c) {
|
|
168
|
+
m = c.traa(v, d.getTextureNode("depth"), d.getTextureNode("velocity"), H);
|
|
169
|
+
let e = m._previousDepthNode?.value;
|
|
170
|
+
e && _.push(e), v = m.getTextureNode();
|
|
171
|
+
}
|
|
172
|
+
let y = v.rgb;
|
|
173
|
+
if (l) {
|
|
174
|
+
h = l.ao(d.getTextureNode("depth"), d.getTextureNode("normal"), H);
|
|
175
|
+
let e = h._noiseNode?.value;
|
|
176
|
+
e && _.push(e), y = y.mul(h.getTextureNode().r);
|
|
177
|
+
}
|
|
178
|
+
if (n) {
|
|
179
|
+
r?.(), r = void 0;
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
let b = Q.current;
|
|
183
|
+
f = s.bloom(v, b.bloomStrength, b.bloomRadius, b.bloomThreshold);
|
|
184
|
+
let x = o.uniform(b.saturation), S = f;
|
|
185
|
+
p = new e.RenderPipeline(B), p.outputNode = o.vec4(o.saturation(y.add(f.rgb), x), v.a), t(B, {
|
|
186
|
+
renderTarget: d.renderTarget,
|
|
187
|
+
mrt: d.getMRT()
|
|
188
|
+
});
|
|
189
|
+
let C = p, w = i(B, V, H);
|
|
190
|
+
w ? w.catch(() => void 0).then(() => {
|
|
191
|
+
n || (K.current = C);
|
|
192
|
+
}) : K.current = p, q.current = m ?? null, $.current = () => {
|
|
193
|
+
let e = Q.current;
|
|
194
|
+
S.strength.value = e.bloomStrength, S.radius.value = e.bloomRadius, S.threshold.value = e.bloomThreshold, x.value = e.saturation, h && (h.radius.value = Math.max(.01, e.aoRadius), h.samples.value = Math.max(1, Math.round(e.aoSamples)), h.resolutionScale = Math.min(1, Math.max(.25, e.aoResolutionScale))), g?.update(e);
|
|
195
|
+
}, $.current();
|
|
196
|
+
} catch (e) {
|
|
197
|
+
let t = r;
|
|
198
|
+
throw r = void 0, t?.(), e;
|
|
199
|
+
}
|
|
200
|
+
}).catch((t) => {
|
|
201
|
+
e.error("WebGPU postprocessing initialization failed", t instanceof Error ? t : String(t));
|
|
202
|
+
}), () => {
|
|
203
|
+
n = !0, r?.();
|
|
204
|
+
};
|
|
205
|
+
}, [
|
|
206
|
+
B,
|
|
207
|
+
V,
|
|
208
|
+
H,
|
|
209
|
+
o,
|
|
210
|
+
G,
|
|
211
|
+
U,
|
|
212
|
+
W
|
|
213
|
+
]), m(() => {
|
|
214
|
+
let e = J.current, t = s(V);
|
|
215
|
+
if (e.initialized && (e.revision !== t || e.position.distanceToSquared(H.position) > 25 || Math.abs(e.quaternion.dot(H.quaternion)) < .8 || !e.projection.equals(H.projectionMatrix)) && q.current?.setSize(1, 1), e.position.copy(H.position), e.quaternion.copy(H.quaternion), e.projection.copy(H.projectionMatrix), e.revision = t, e.initialized = !0, K.current) {
|
|
216
|
+
Y.current.copy(H.projectionMatrix), X.current.copy(H.projectionMatrixInverse);
|
|
217
|
+
let e = "view" in H && H.view ? { ...H.view } : null;
|
|
218
|
+
try {
|
|
219
|
+
K.current.render();
|
|
220
|
+
} finally {
|
|
221
|
+
H.projectionMatrix.copy(Y.current), H.projectionMatrixInverse.copy(X.current), "view" in H && (H.view = e);
|
|
222
|
+
}
|
|
223
|
+
} else B.render(V, H);
|
|
224
|
+
}, 1), null;
|
|
225
|
+
}
|
|
226
|
+
function z(e = {}) {
|
|
227
|
+
return h((e) => n(e.gl) !== "webgl") ? /* @__PURE__ */ g(R, { ...e }) : /* @__PURE__ */ g(a, {
|
|
228
|
+
edgeStrength: 4,
|
|
229
|
+
extraEffects: /* @__PURE__ */ g(o, { intensity: .8 }),
|
|
230
|
+
children: /* @__PURE__ */ g("group", {})
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
//#endregion
|
|
234
|
+
export { F as n, z as t };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./rolldown-runtime-Chgba0Kb.cjs"),t=require("./logger-B9OaKOPw.cjs"),n=require("./sceneCompile-CWcdcntc.cjs"),r=require("./outline-DX9TqHot.cjs"),i=require("./renderHistory-BLXmtD6m.cjs");let a=require("three"),o=require("react"),s=require("@react-three/fiber"),c=require("react/jsx-runtime");var l=2,u=.5,d=4,f=.35,p=[`isMeshBasicMaterial`,`isLineBasicMaterial`,`isPointsMaterial`,`isSpriteMaterial`],m=(e,t,n)=>Math.min(n,Math.max(t,e)),h=(e,t)=>e?.[t]===!0,g=e=>h(e,`isMeshStandardMaterial`),_=e=>!e||p.some(t=>h(e,t))||h(e,`isNodeMaterial`)&&!h(e,`lights`);function v(e){let t=null;for(let n of e)try{n?.dispose()}catch(e){t??=e}if(t!==null)throw t}function y(e,t){return Promise.all([e?import(`three/addons/tsl/display/SSGINode.js`):null,t?import(`three/addons/tsl/display/SSRNode.js`):null,e?import(`three/addons/tsl/display/DenoiseNode.js`):null]).then(([e,t,n])=>({gi:e,reflections:t,denoise:n}))}function b(e){return{normal:e.Fn(({material:t})=>e.vec4(e.normalView,g(t)?e.roughness:e.float(1)))(),surface:e.Fn(({material:t})=>g(t)?e.vec4(e.diffuseColor.rgb,e.metalness):e.vec4(_(t)?e.vec3(0):e.diffuseColor.rgb,0))()}}function x(e,t){return e.sample(n=>{let r=e.vec2(t.size(e.int(0))),i=n.mul(r).sub(.5),a=i.floor(),o=i.sub(a),s=t.gather().sample(a.add(1).div(r));return e.vec4(e.mix(e.mix(s.w,s.z,o.x),e.mix(s.x,s.y,o.x),o.y))})}function S(e,{ssgi:t},{denoise:n},{color:r,depth:i,normal:a,surface:o},s,c,f){let p=x(e,i),h=t(e.sample(t=>{let n=r.sample(t);return e.vec4(n.rgb.mul(e.float(d).div(e.luminance(n.rgb).max(d))),n.a)}),p,a,s);f.push(h),h.sliceCount.value=l,h.useScreenSpaceSampling.value=!1,h.useTemporalFiltering=c;let g=1,_=h,v=_.setSize.bind(h);_.setSize=(e,t)=>v(Math.max(1,Math.round(e*g)),Math.max(1,Math.round(t*g)));let y=e=>{let t=n(e,p,a,s);return t.depthPhi.value=u,f.push(t),t},b=e.rtt(e.vec4(y(h.getGINode()).rgb,y(h.getAONode()).r));return f.push(b),{apply:e=>e.mul(b.a).add(o.rgb.mul(o.a.oneMinus()).mul(b.rgb)),update(e){h.radius.value=Math.max(.01,e.giRadius),h.stepCount.value=m(Math.round(e.giSteps),1,32),h.giIntensity.value=Math.max(0,e.giIntensity),g=m(e.giResolutionScale,.25,1),b.setResolutionScale(g)}}}function C(e,{ssr:t},{color:n,depth:r,normal:i,surface:a},o,s){let c=e.uniform(1),l=o.isPerspectiveCamera?e.getViewPosition(e.uv(),e.float(.5),e.uniform(o.projectionMatrixInverse)).normalize().negate():e.vec3(0,0,1),u=e.float(1).sub(e.dot(i.rgb.normalize(),l).saturate()).pow(5).mul(.96).add(.04),d=e.float(1).sub(i.a.div(c)).saturate(),p=e.mix(u,e.float(1),a.a).mul(d),h=e.mix(e.vec3(1),a.rgb,a.a).mul(e.step(1e-4,d)),g=t(n,r,i,{metalnessNode:p,roughnessNode:i.a,camera:o});return s.push(g),g.thickness.value=f,{apply:e=>e.add(g.rgb.mul(h)),update(e){g.maxDistance.value=Math.max(.01,e.reflectionDistance),g.quality.value=m(e.reflectionQuality,.05,1),g.intensity.value=Math.max(0,e.reflectionIntensity),g.resolutionScale=m(e.reflectionResolutionScale,.25,1),c.value=m(e.reflectionMaxRoughness,.01,1)}}}function w(e,t,n,r,i){n.getTexture(`surface`).type=a.UnsignedByteType;let o={color:n.getTextureNode(`output`),depth:n.getTextureNode(`depth`),normal:n.getTextureNode(`normal`),surface:n.getTextureNode(`surface`)},s=[],c=[];t.gi&&t.denoise&&c.push(S(e,t.gi,t.denoise,o,r,i,s)),t.reflections&&c.push(C(e,t.reflections,o,r,s));let l=c.reduce((e,t)=>t.apply(e),o.color.rgb),u=e.rtt(e.vec4(l,o.color.a));return s.push(u),{color:u,update(e){for(let t of c)t.update(e)},dispose:()=>v(s)}}var T=e.t({WorldPostProcessing:()=>k}),E=`rg11b10ufloat-renderable`,D=e=>e===`quality`||e===`cinematic`;function O({quality:e=`balanced`,antialias:r=e===`performance`?`none`:`traa`,ambientOcclusion:c=e!==`performance`,aoRadius:l=2,aoSamples:u=D(e)?16:8,aoResolutionScale:d=D(e)?1:.5,globalIllumination:f=e===`cinematic`,giRadius:p=4,giSteps:m=8,giIntensity:h=8,giResolutionScale:g=.5,reflections:_=e===`cinematic`,reflectionDistance:x=8,reflectionQuality:S=.5,reflectionIntensity:C=1,reflectionResolutionScale:T=.5,reflectionMaxRoughness:O=.5,historyVersion:k=0,bloomStrength:A=.18,bloomRadius:j=.4,bloomThreshold:M=1,saturation:N=1.08}){let P=(0,s.useThree)(e=>e.gl),F=(0,s.useThree)(e=>e.scene),I=(0,s.useThree)(e=>e.camera),L=f&&I.isPerspectiveCamera===!0&&n.m(P,E),R=_&&n.g(P)===`webgpu`,z=c&&!L,B=(0,o.useRef)(null),V=(0,o.useRef)(null),H=(0,o.useRef)({position:new a.Vector3,quaternion:new a.Quaternion,projection:new a.Matrix4,revision:-1,initialized:!1}),U=(0,o.useRef)(new a.Matrix4),W=(0,o.useRef)(new a.Matrix4),G={bloomStrength:A,bloomRadius:j,bloomThreshold:M,saturation:N,aoRadius:l,aoSamples:u,aoResolutionScale:d,giRadius:p,giSteps:m,giIntensity:h,giResolutionScale:g,reflectionDistance:x,reflectionQuality:S,reflectionIntensity:C,reflectionResolutionScale:T,reflectionMaxRoughness:O},K=(0,o.useRef)(G),q=(0,o.useRef)(null);return(0,o.useEffect)(()=>{V.current?.setSize(1,1),H.current.initialized=!1},[k]),(0,o.useEffect)(()=>{K.current=G,q.current?.()}),(0,o.useEffect)(()=>{let e=!1,i,a=r===`traa`;return Promise.all([import(`three/webgpu`),import(`three/tsl`),import(`three/addons/tsl/display/BloomNode.js`),a?import(`three/addons/tsl/display/TRAANode.js`):null,z?import(`three/addons/tsl/display/GTAONode.js`):null,L||R?y(L,R):null]).then(([t,r,o,s,c,l])=>{if(e)return;let u=r.pass(F,I),d,f,p,m,h,g=[];i=()=>{B.current===f&&(n.c(P,null),B.current=null,q.current=null,V.current=null),v([f,d,p,m,h,...g,u])};try{(a||z||l)&&(u.setMRT(r.mrt({output:r.output,...a?{velocity:r.velocity}:{},...l?b(r):z?{normal:r.normalView}:{}})),u.options.samples=0);let _=u.getTextureNode(`output`);if(l&&(h=w(r,l,u,I,a),_=h.color),s){p=s.traa(_,u.getTextureNode(`depth`),u.getTextureNode(`velocity`),I);let e=p._previousDepthNode?.value;e&&g.push(e),_=p.getTextureNode()}let v=_.rgb;if(c){m=c.ao(u.getTextureNode(`depth`),u.getTextureNode(`normal`),I);let e=m._noiseNode?.value;e&&g.push(e),v=v.mul(m.getTextureNode().r)}if(e){i?.(),i=void 0;return}let y=K.current;d=o.bloom(_,y.bloomStrength,y.bloomRadius,y.bloomThreshold);let x=r.uniform(y.saturation),S=d;f=new t.RenderPipeline(P),f.outputNode=r.vec4(r.saturation(v.add(d.rgb),x),_.a),n.c(P,{renderTarget:u.renderTarget,mrt:u.getMRT()});let C=f,T=n.r(P,F,I);T?T.catch(()=>void 0).then(()=>{e||(B.current=C)}):B.current=f,V.current=p??null,q.current=()=>{let e=K.current;S.strength.value=e.bloomStrength,S.radius.value=e.bloomRadius,S.threshold.value=e.bloomThreshold,x.value=e.saturation,m&&(m.radius.value=Math.max(.01,e.aoRadius),m.samples.value=Math.max(1,Math.round(e.aoSamples)),m.resolutionScale=Math.min(1,Math.max(.25,e.aoResolutionScale))),h?.update(e)},q.current()}catch(e){let t=i;throw i=void 0,t?.(),e}}).catch(e=>{t.t.error(`WebGPU postprocessing initialization failed`,e instanceof Error?e:String(e))}),()=>{e=!0,i?.()}},[P,F,I,r,z,L,R]),(0,s.useFrame)(()=>{let e=H.current,t=i.t(F);if(e.initialized&&(e.revision!==t||e.position.distanceToSquared(I.position)>25||Math.abs(e.quaternion.dot(I.quaternion))<.8||!e.projection.equals(I.projectionMatrix))&&V.current?.setSize(1,1),e.position.copy(I.position),e.quaternion.copy(I.quaternion),e.projection.copy(I.projectionMatrix),e.revision=t,e.initialized=!0,B.current){U.current.copy(I.projectionMatrix),W.current.copy(I.projectionMatrixInverse);let e=`view`in I&&I.view?{...I.view}:null;try{B.current.render()}finally{I.projectionMatrix.copy(U.current),I.projectionMatrixInverse.copy(W.current),`view`in I&&(I.view=e)}}else P.render(F,I)},1),null}function k(e={}){return(0,s.useThree)(e=>n.g(e.gl)!==`webgl`)?(0,c.jsx)(O,{...e}):(0,c.jsx)(r.n,{edgeStrength:4,extraEffects:(0,c.jsx)(r.r,{intensity:.8}),children:(0,c.jsx)(`group`,{})})}Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return k}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require("./rolldown-runtime-Chgba0Kb.cjs"),t=require("./useEngineFrame-ujTlLQfa.cjs"),n=require("./logger-B9OaKOPw.cjs"),r=require("./runtimeContext-zx_GnKx4.cjs"),i=require("./scopedStore-Px5jL718.cjs"),a=require("./useClicker-0Ln5ZSz0.cjs"),o=require("./CoreBridge-CnLqWZNv.cjs"),s=require("./id-DWiNl1ym.cjs"),c=require("./serviceKey-DwHFFFAA.cjs"),l=require("./weatherStore-DwLl0Jjo.cjs"),u=require("./SpatialGrid-DreiJto-.cjs"),d=require("./NPCNavigationAdapter-G-FbxRnv.cjs");let f=require("three");f=e.n(f,1);let p=require("react"),m=require("zustand"),h=require("react/jsx-runtime"),g=require("immer"),_=require("zustand/middleware/immer");var ee=2,v=null;function te(e){v=e}var ne={weather:()=>l.r.getState().current,trample:()=>{let e=o.n.getOrCreateFor(a.ur),t=e.getPlayerEntityId();return t?e.snapshot(t):null}},re=class{constructor(e=ne){this.sources=e,this.nextId=1,this.tiles=new Map,this.builds=new Set,this.orderedTiles=[],this.orderDirty=!0,this.enabled=!0,this.sphere=new f.Sphere,this.positions=new Float32Array,this.weights=new Float32Array,this.trampleWorld=new f.Vector3(0,-9999,0),this.trampleStrength=0,this.hasTrample=!1,this.lastCameraPosition=new f.Vector3,this.lastFrustum=new f.Frustum}suspend(){if(this.enabled){this.enabled=!1,this.lastElapsedTime=void 0,this.releaseBuffers(),this.positions=new Float32Array,this.weights=new Float32Array,this.trampleWorld.set(0,-9999,0),this.trampleStrength=0,this.hasTrample=!1;for(let e of this.tiles.values())this.hide(e)}}resume(){this.enabled=!0,this.lastElapsedTime=void 0}isEnabled(){return this.enabled}dispose(){this.suspend(),this.tiles.clear(),this.builds.clear(),this.orderedTiles=[],this.orderDirty=!0}schedule(e){return this.builds.add(e),()=>{this.builds.delete(e)}}runBuilds(e){let t=performance.now()+ee;do{let r,i=1/0;for(let t of this.builds){let n=t.center.distanceToSquared(e);n<i&&(i=n,r=t)}if(!r)return;let a=!0;try{a=r.step(t)}catch(e){n.t.error(`Grass build failed`,{error:e})}a&&this.builds.delete(r)}while(this.builds.size>0&&performance.now()<t)}hide(e){this.apply(e,{visible:!1,instanceCount:0,time:0,windScale:.85,trampleCenter:this.trampleWorld,trampleStrength:0})}apply(e,t){try{e.apply(t)}catch(t){n.t.error(`Grass tile update failed`,{id:e.id,error:t})}}register(e){this.tiles.size===0&&(this.lastElapsedTime=void 0);let t=this.nextId++,n={...e,id:t};return this.tiles.set(t,n),this.orderDirty=!0,this.enabled||this.hide(n),n}update(e,t){let n=this.tiles.get(e);n&&Object.assign(n,t)}unregister(e){this.tiles.delete(e)&&(this.orderDirty=!0,this.tiles.size===0&&(this.lastElapsedTime=void 0,this.orderedTiles=[],this.positions=new Float32Array,this.weights=new Float32Array,this.releaseBuffers()))}size(){return this.tiles.size}tick(e){if(!this.enabled||this.tiles.size===0||this.lastElapsedTime===e.elapsedTime&&this.lastCameraPosition.equals(e.cameraPosition)&&this.lastFrustum.planes.every((t,n)=>t.equals(e.frustum.planes[n])))return;this.lastElapsedTime=e.elapsedTime,this.lastCameraPosition.copy(e.cameraPosition),this.lastFrustum.copy(e.frustum),this.builds.size>0&&this.runBuilds(e.cameraPosition),this.refreshTrample(e.delta);let t=this.computeWindScale(),n=e.elapsedTime/4;this.ensureCapacity(this.tiles.size);let r=0;this.orderDirty&&=(this.orderedTiles=[...this.tiles.values()],!1);let i=this.orderedTiles;for(let e of i){let t=r*3;this.positions[t]=e.center.x,this.positions[t+1]=e.center.y,this.positions[t+2]=e.center.z,r+=1}this.computeWeights(i.length,e.cameraPosition);let a=0;for(let r of i){if(!this.enabled)break;if(!this.tiles.has(r.id)){a+=1;continue}let i=this.weights[a]??0;a+=1;let o=Math.hypot(r.width,r.width,r.height)*.5,s=this.sphere.set(r.center,o),c=e.frustum.intersectsSphere(s);r.lod&&(i=ie(r.center.distanceTo(e.cameraPosition),r.lod.near??24,r.lod.far??160,r.lod.strength??4));let l=Math.max(0,Math.floor(r.maxInstances*i)),u=c&&l>0;this.apply(r,{visible:u,instanceCount:u?l:0,time:n,windScale:t,trampleCenter:this.trampleWorld,trampleStrength:this.trampleStrength})}}ensureCapacity(e){if(this.positions.length<e*3){let t=Math.max(e,this.weights.length*2,8);this.positions=new Float32Array(t*3),this.weights=new Float32Array(t)}}releaseBuffers(){let e=this.wasmBuffers;if(this.wasmBuffers=void 0,e)try{e.module.dealloc_f32(e.input,e.capacity*3)}finally{e.module.dealloc_f32(e.output,e.capacity)}}computeWeights(e,t){let n=v;if(n)try{if(this.wasmBuffers?.module!==n||this.wasmBuffers.capacity<e){this.releaseBuffers();let e=this.weights.length,t=n.alloc_f32(e*3);try{this.wasmBuffers={module:n,input:t,output:n.alloc_f32(e),capacity:e}}catch(r){throw n.dealloc_f32(t,e*3),r}}let{input:r,output:i}=this.wasmBuffers;new Float32Array(n.memory.buffer,r,e*3).set(this.positions.subarray(0,e*3)),n.batch_sfe_weights(e,r,t.x,t.y,t.z,24,160,4,i),this.weights.set(new Float32Array(n.memory.buffer,i,e));return}catch{this.releaseBuffers()}else this.releaseBuffers();for(let n=0;n<e;n+=1){let e=n*3,r=(this.positions[e]??0)-t.x,i=(this.positions[e+1]??0)-t.y,a=(this.positions[e+2]??0)-t.z,o=Math.sqrt(r*r+i*i+a*a);this.weights[n]=ie(o,24,160,4)}}refreshTrample(e){let t=this.sources.trample(),n=1-Math.exp(-Math.max(0,e)*6);t&&(this.hasTrample||this.trampleWorld.set(t.position.x,t.position.y,t.position.z),this.hasTrample=!0,this.trampleWorld.x+=(t.position.x-this.trampleWorld.x)*n,this.trampleWorld.y=t.position.y,this.trampleWorld.z+=(t.position.z-this.trampleWorld.z)*n);let r=t?.isMoving&&t?.isGrounded?.85:.35;this.trampleStrength+=(r-this.trampleStrength)*n}computeWindScale(){let e=this.sources.weather(),t=e?.intensity??0;return(e?.kind===`storm`?2.6:e?.kind===`rain`?1.7:e?.kind===`snow`?1.3:e?.kind===`cloudy`?1.15:.85)+t*.9}};function ie(e,t,n,r){return e<=t?1:e>=n?0:(1-(e-t)/(n-t))**Math.max(1,r)}var ae=null;function oe(e){return new re(e)}function se(){return ae||=new re,ae}function y(e,t){if(e===t)return!0;if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function ce(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function le(){let e=new Set;return(0,m.create)(t=>({active:!1,version:0,camera:null,visibleTileGroupIds:e,visibleWallGroupIds:e,visibleBlockIds:e,visibleObjectIds:e,clusterCounts:new Uint32Array,setResult:({version:n,camera:r=null,tileIds:i,wallIds:a,blockIds:o,objectIds:s,clusterCounts:c})=>t(t=>{let l=o??e;return t.active&&t.version===n&&(t.camera===r||t.camera!==null&&r!==null&&t.camera.coordinateSystem===r.coordinateSystem&&t.camera.reversedDepth===r.reversedDepth&&t.camera.viewProjection.length===r.viewProjection.length&&t.camera.position.length===r.position.length&&t.camera.viewProjection.every((e,t)=>e===r.viewProjection[t])&&t.camera.position.every((e,t)=>e===r.position[t]))&&y(t.visibleTileGroupIds,i)&&y(t.visibleWallGroupIds,a)&&y(t.visibleBlockIds,l)&&y(t.visibleObjectIds,s)&&ce(t.clusterCounts,c)?t:{active:!0,version:n,camera:r,visibleTileGroupIds:i,visibleWallGroupIds:a,visibleBlockIds:l,visibleObjectIds:s,clusterCounts:c}}),reset:()=>t({active:!1,version:0,camera:null,visibleTileGroupIds:e,visibleWallGroupIds:e,visibleBlockIds:e,visibleObjectIds:e,clusterCounts:new Uint32Array})}))}var{useStore:ue,useStoreApi:de}=i.t(`useBuildingGpuCullingStore`,le,()=>r.n()?.buildingCullingStore),fe=.12,pe=[`tile`,`wall`,`block`,`object`];function b(e,t){return Math.floor(e/t)}var me=()=>({cells:new Map,cellsById:new Map,unbounded:new Set}),x=()=>({byId:new Map,buckets:me()});function he(){return{tile:x(),wall:x(),block:x(),object:x(),occluders:{byKey:new Map,buckets:me()}}}function ge(e,t,n){let{centerX:r,centerZ:i,radius:o}=n;try{a.Dn(e.cells,e.cellsById,t,r-o,r+o,i-o,i+o,18)}catch{e.unbounded.add(t)}}function _e(e,t){a.Rn(e.cells,e.cellsById,t),e.unbounded.delete(t)}function S(e,t,n,r,i,a,o,s){let c=(t+n)*.5,l=(r+i)*.5,u=(a+o)*.5,d=n-t,f=i-r,p=o-a;return{id:e,centerX:c,centerY:l,centerZ:u,radius:Math.max(1,Math.hypot(d,f,p)*.5),cellX:b(c,s),cellZ:b(u,s)}}function ve(e,t=18){if(e.tiles.length===0)return null;let n=1/0,r=-1/0,i=.2,o=1/0,s=-1/0;for(let t of e.tiles){let e=a.er(a.rr(t));n=Math.min(n,e.minX),r=Math.max(r,e.maxX),i=Math.max(i,Math.max(t.position.y,.2)+1.5),o=Math.min(o,e.minZ),s=Math.max(s,e.maxZ)}return S(e.id,n,r,0,i,o,s,t)}function ye(e,t=18){if(e.walls.length===0)return null;let n=1/0,r=-1/0,i=0,o=2.5,s=1/0,c=-1/0;for(let t of e.walls){let e=a.ar(t),l=a.er(e);n=Math.min(n,l.minX),r=Math.max(r,l.maxX),i=Math.min(i,e.center[1]-e.half[1]),o=Math.max(o,e.center[1]+e.half[1]),s=Math.min(s,l.minZ),c=Math.max(c,l.maxZ)}return S(e.id,n,r,i,o,s,c,t)}function be(e,t=18){let{center:n,half:r}=a.$n(e);return S(e.id,n[0]-r[0],n[0]+r[0],n[1]-r[1],n[1]+r[1],n[2]-r[2],n[2]+r[2],t)}function xe(e){let t=e.config?.size??1;switch(e.type){case`tree`:case`sakura`:return Math.max(2.2,t*.8);case`flag`:return Math.max(1.4,(e.config?.flagWidth??1.5)*.8);case`fire`:return Math.max(1.2,e.config?.fireWidth??1);case`billboard`:return 1.8;default:return 1.5}}function Se(e,t=18){let n=xe(e);return{id:e.id,centerX:e.position.x,centerY:e.position.y+n*.5,centerZ:e.position.z,radius:n,cellX:b(e.position.x,t),cellZ:b(e.position.z,t)}}function Ce(e,t,n,r=140){if(!Number.isFinite(t)||!Number.isFinite(n))return new Set;let i=a.An(e.cells,t-r,t+r,n-r,n+r,18);for(let t of e.unbounded)i.add(t);return i}function we(e,t,n,r,i){let a=new Set;for(let o of Ce(e.buckets,t,r,160)){let s=e.byId.get(o);if(!s)continue;let c=(i.has(o)?160:140)+s.radius,l=s.centerX-t,u=s.centerY-n,d=s.centerZ-r;l*l+u*u+d*d<=c*c&&a.add(o)}return a}function Te(){return{version:0,ids:[],kinds:new Uint8Array,subKinds:new Uint8Array,centerX:new Float32Array,centerY:new Float32Array,centerZ:new Float32Array,radius:new Float32Array,cellX:new Int16Array,cellZ:new Int16Array,memberCount:new Uint16Array}}function Ee(e){let t=ve(e);if(!t)return null;let n=e.tiles.find(e=>e.objectType&&e.objectType!==`none`)?.objectType??`none`,r=n===`grass`?1:n===`water`?2:n===`sand`?3:n===`snowfield`?4:0;return{id:e.id,kind:0,subKind:r,record:t,members:e.tiles.length}}function De(e){let t=ye(e);return t&&{id:e.id,kind:1,subKind:10,record:t,members:e.walls.length}}function Oe(e){return{id:e.id,kind:3,subKind:30,record:be(e),members:1}}function ke(e){let t=e.type===`tree`||e.type===`sakura`?20:e.type===`flag`?21:e.type===`fire`?22:e.type===`billboard`?23:e.type===`model`?24:22;return{id:e.id,kind:2,subKind:t,record:Se(e),members:1}}function Ae(e,t){let n=e.length,r={version:t,ids:Array(n),kinds:new Uint8Array(n),subKinds:new Uint8Array(n),centerX:new Float32Array(n),centerY:new Float32Array(n),centerZ:new Float32Array(n),radius:new Float32Array(n),cellX:new Int16Array(n),cellZ:new Int16Array(n),memberCount:new Uint16Array(n)};for(let t=0;t<n;t+=1){let{id:n,kind:i,subKind:a,record:o,members:s}=e[t];r.ids[t]=n,r.kinds[t]=i,r.subKinds[t]=a,r.centerX[t]=o.centerX,r.centerY[t]=o.centerY,r.centerZ[t]=o.centerZ,r.radius[t]=o.radius,r.cellX[t]=o.cellX,r.cellZ[t]=o.cellZ,r.memberCount[t]=s}return r}function je(){let e=new WeakMap,t=(t,n,r)=>{for(let i of t){let t=e.get(i);t===void 0&&(t=n(i),e.set(i,t)),t&&r.push(t)}};return(e,n)=>{let r=[];return t(e.tileGroups,Ee,r),t(e.wallGroups,De,r),t(e.blocks??[],Oe,r),t(e.objects,ke,r),Ae(r,n)}}var Me=[`tile`,`wall`,`object`,`block`];function Ne(e,t,n){return e===`tile`?t>=3.2?t:0:e===`wall`?t>=2.4||n>=4?t*1.15:0:e===`block`?t*1.1:0}function Pe(e,t,n){return e.centerX===t.centerX[n]&&e.centerY===t.centerY[n]&&e.centerZ===t.centerZ[n]&&e.radius===t.radius[n]&&e.cellX===t.cellX[n]&&e.cellZ===t.cellZ[n]&&e.members===t.memberCount[n]}function Fe(e,t,n){let r=e[t];r.byId.delete(n),_e(r.buckets,n);let i=`${t}:${n}`;e.occluders.byKey.delete(i)&&_e(e.occluders.buckets,i)}function Ie(e,t){let n=new Set;for(let r=0;r<t.ids.length;r+=1){let i=t.ids[r],a=Me[t.kinds[r]??-1];if(!i||!a)continue;let o=e[a],s=o.byId.get(i);if(s&&Pe(s,t,r)){n.add(s);continue}s&&Fe(e,a,i);let c={id:i,centerX:t.centerX[r],centerY:t.centerY[r],centerZ:t.centerZ[r],radius:t.radius[r],cellX:t.cellX[r],cellZ:t.cellZ[r],members:t.memberCount[r]};o.byId.set(i,c),ge(o.buckets,i,c),n.add(c);let l=Ne(a,c.radius,c.members);if(l>0){let t={...c,key:`${a}:${i}`,kind:a,strength:l};e.occluders.byKey.set(t.key,t),ge(e.occluders.buckets,t.key,t)}}for(let t of pe)for(let[r,i]of e[t].byId)n.has(i)||Fe(e,t,r)}var Le=0,Re=1,ze=2,Be=3,Ve=4,He=5,Ue=6,We=7,Ge=8,Ke=9,qe=10,Je=11,Ye=12;function Xe(e,t){let n=e.kinds[t],r=e.subKinds[t];if(n===0)return r===1?1:r===2?2:r===3?3:r===4?4:0;if(n===1)return 5;if(n===3)return 10;if(n===2){if(r===20)return 6;if(r===21)return 7;if(r===22)return 8;if(r===23)return 9;if(r===24)return 11}return 0}function Ze(e,t){let n=new Set,r=new Set,i=new Set,a=new Set,o=new Uint32Array(12),s=Math.min(e.ids.length,t.length);for(let c=0;c<s;c+=1){if((t[c]??0)===0)continue;let s=e.ids[c];if(!s)continue;let l=e.kinds[c];l===0?n.add(s):l===1?r.add(s):l===3?i.add(s):l===2&&a.add(s);let u=Xe(e,c);o[u]=(o[u]??0)+1}return{version:e.version,tileIds:n,wallIds:r,blockIds:i,objectIds:a,clusterCounts:o}}var Qe=4;function $e(e,t){let n=t*4;return e.args[n+1]??0}var et=[{id:0,label:`tile`,vertexCountHint:36},{id:1,label:`grass`,vertexCountHint:36},{id:2,label:`water`,vertexCountHint:36},{id:3,label:`sand`,vertexCountHint:36},{id:4,label:`snowfield`,vertexCountHint:36},{id:5,label:`wall`,vertexCountHint:36},{id:6,label:`sakura`,vertexCountHint:12},{id:7,label:`flag`,vertexCountHint:12},{id:8,label:`fire`,vertexCountHint:6},{id:9,label:`billboard`,vertexCountHint:6},{id:10,label:`block`,vertexCountHint:36},{id:11,label:`model`,vertexCountHint:36}];function C(){return{version:0,args:new Uint32Array(48),dirtyRanges:[]}}function tt(e,t){if(e.length!==t.length)return t.length>0?[{start:0,end:t.length/4}]:[];let n=[],r=-1,i=t.length/4;for(let a=0;a<i;a+=1){let i=a*4,o=!1;for(let n=0;n<4;n+=1)if((e[i+n]??0)!==(t[i+n]??0)){o=!0;break}if(o){r<0&&(r=a);continue}r>=0&&(n.push({start:r,end:a}),r=-1)}return r>=0&&n.push({start:r,end:i}),n}function nt(e,t,n){let r=new Uint32Array(48);for(let e of et){let n=e.id*4;r[n]=e.vertexCountHint,r[n+1]=t[e.id]??0,r[n+2]=0,r[n+3]=0}return{version:e,args:r,dirtyRanges:tt((n??C()).args,r)}}function rt(e){return{version:e.version,slices:e.dirtyRanges.map(t=>{let n=t.start*4,r=(t.end-t.start)*4;return{byteOffset:n*e.args.BYTES_PER_ELEMENT,elementOffset:n,elementCount:r,data:e.args.subarray(n,n+r)}})}}var it=4,at=5;function w(){return{version:0,count:0,spatial:new Float32Array,meta:new Int32Array,spatialDirty:[],metaDirty:[]}}function ot(e){let t=new Float32Array(e.ids.length*4);for(let n=0;n<e.ids.length;n+=1){let r=n*4;t[r]=e.centerX[n]??0,t[r+1]=e.centerY[n]??0,t[r+2]=e.centerZ[n]??0,t[r+3]=e.radius[n]??0}return t}function st(e){let t=new Int32Array(e.ids.length*5);for(let n=0;n<e.ids.length;n+=1){let r=n*5;t[r]=e.cellX[n]??0,t[r+1]=e.cellZ[n]??0,t[r+2]=e.kinds[n]??0,t[r+3]=e.subKinds[n]??0,t[r+4]=e.memberCount[n]??0}return t}function ct(e,t,n){if(e.length!==t.length)return t.length>0?[{start:0,end:Math.ceil(t.length/n)}]:[];let r=[],i=-1,a=Math.ceil(t.length/n);for(let o=0;o<a;o+=1){let a=o*n,s=!1;for(let r=0;r<n;r+=1)if((e[a+r]??0)!==(t[a+r]??0)){s=!0;break}if(s){i<0&&(i=o);continue}i>=0&&(r.push({start:i,end:o}),i=-1)}return i>=0&&r.push({start:i,end:a}),r}function lt(e,t){let n=ot(e),r=st(e),i=t??w();return{version:e.version,count:e.ids.length,spatial:n,meta:r,spatialDirty:ct(i.spatial,n,4),metaDirty:ct(i.meta,r,5)}}function ut(e,t,n){return n.map(n=>{let r=n.start*t,i=(n.end-n.start)*t;return{byteOffset:r*e.BYTES_PER_ELEMENT,elementOffset:r,elementCount:i,data:e.subarray(r,r+i)}})}function dt(e){return{version:e.version,count:e.count,spatial:ut(e.spatial,4,e.spatialDirty),meta:ut(e.meta,5,e.metaDirty)}}function T(){return{backend:`none`,uploadedVersion:0,spatialBuffer:null,metaBuffer:null,indirectArgsBuffer:null,spatialBytes:0,metaBytes:0,indirectArgsBytes:0}}function ft(e){if(typeof e!=`object`||!e)return null;let t=e,n=t.backend?.device??t.device??null;return!n||typeof n.createBuffer!=`function`||typeof n.queue?.writeBuffer!=`function`?null:n}function E(e){e?.destroy&&e.destroy()}function pt(e){E(e.spatialBuffer),E(e.metaBuffer),E(e.indirectArgsBuffer)}function mt(e,t,n,r,i,a=136){return r<=0?null:t&&n===r?t:e.createBuffer({label:i,size:r,usage:a})}function ht(e,t){e.spatialBuffer!==t.spatialBuffer&&E(e.spatialBuffer),e.metaBuffer!==t.metaBuffer&&E(e.metaBuffer),e.indirectArgsBuffer!==t.indirectArgsBuffer&&E(e.indirectArgsBuffer)}function gt(e,t,n){if(t.device===e&&t.uploadedSpatialVersion===n.version)return t;let r=t.device&&t.device!==e?T():t,i=dt(n),a=n.spatial.byteLength,o=n.meta.byteLength,s=null,c=null;try{if(s=mt(e,r.spatialBuffer,r.spatialBytes,a,`building-spatial`),c=mt(e,r.metaBuffer,r.metaBytes,o,`building-meta`),s){if(s!==r.spatialBuffer)e.queue.writeBuffer(s,0,n.spatial);else for(let t of i.spatial)e.queue.writeBuffer(s,t.byteOffset,t.data)}if(c){if(c!==r.metaBuffer)e.queue.writeBuffer(c,0,n.meta);else for(let t of i.meta)e.queue.writeBuffer(c,t.byteOffset,t.data)}}catch(e){throw s!==r.spatialBuffer&&E(s),c!==r.metaBuffer&&E(c),e}let l={...r,device:e,backend:`webgpu`,uploadedSpatialVersion:n.version,uploadedVersion:Math.max(r.uploadedVersion,n.version),spatialBuffer:s,metaBuffer:c,spatialBytes:a,metaBytes:o};return ht(t,l),l}function _t(e,t,n){if(t.device===e&&t.uploadedIndirectVersion===n.version)return t;let r=t.device&&t.device!==e?T():t,i=rt(n),a=n.args.byteLength,o=null;try{if(o=mt(e,r.indirectArgsBuffer,r.indirectArgsBytes,a,`building-indirect-args`,392),o){if(o!==r.indirectArgsBuffer)e.queue.writeBuffer(o,0,n.args);else for(let t of i.slices)e.queue.writeBuffer(o,t.byteOffset,t.data)}}catch(e){throw o!==r.indirectArgsBuffer&&E(o),e}let s={...r,device:e,backend:`webgpu`,uploadedIndirectVersion:n.version,uploadedVersion:Math.max(r.uploadedVersion,n.version),indirectArgsBuffer:o,indirectArgsBytes:a};return ht(t,s),s}function vt(){let e=Te(),t=w(),n=C();return(0,m.create)(r=>{let i=!1,a=()=>{if(i)throw Error(`Building GPU upload resource updates cannot be reentrant.`)};return{snapshot:e,gpuMirror:t,uploadResources:T(),drawMirror:n,setSnapshot:e=>r({snapshot:e}),setGpuMirror:e=>r({gpuMirror:e}),setUploadResources:e=>r(t=>{a(),i=!0;try{return{uploadResources:typeof e==`function`?e(t.uploadResources):e}}finally{i=!1}}),releaseUploadResources:()=>{a();let e=T();try{r(t=>(e=t.uploadResources,{uploadResources:T()}))}finally{pt(e)}},setDrawMirror:e=>r({drawMirror:e}),reset:()=>{a();let i=T();try{r(r=>(i=r.uploadResources,{snapshot:e,gpuMirror:t,uploadResources:T(),drawMirror:n}))}finally{pt(i)}}}})}var{useStore:yt,useStoreApi:bt}=i.t(`useBuildingRenderStateStore`,vt,()=>r.n()?.buildingRenderStore);function D(e,t){if(e===t)return!0;if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function xt(){let e=new Set;return(0,m.create)(t=>({initialized:!1,visibleTileGroupIds:e,visibleWallGroupIds:e,visibleBlockIds:e,visibleObjectIds:e,setVisible:({tileIds:n,wallIds:r,blockIds:i,objectIds:a})=>t(t=>{let o=!D(t.visibleTileGroupIds,n),s=!D(t.visibleWallGroupIds,r),c=i??e,l=!D(t.visibleBlockIds,c),u=!D(t.visibleObjectIds,a);return!o&&!s&&!l&&!u&&t.initialized?t:{initialized:!0,visibleTileGroupIds:o?n:t.visibleTileGroupIds,visibleWallGroupIds:s?r:t.visibleWallGroupIds,visibleBlockIds:l?c:t.visibleBlockIds,visibleObjectIds:u?a:t.visibleObjectIds}}),reset:()=>t({initialized:!1,visibleTileGroupIds:e,visibleWallGroupIds:e,visibleBlockIds:e,visibleObjectIds:e})}))}var{useStore:St,useStoreApi:Ct}=i.t(`useBuildingVisibilityStore`,xt,()=>r.n()?.buildingVisibilityStore);function wt(e=!0,t){let n=e,r=-1/0,i=0,a=0,o;return(0,m.create)((e,s)=>({entries:new Map,current:null,register:t=>{let n={...t,position:t.position.clone()},i=new Map(s().entries);i.set(t.id,n),r=-1/0;let a=s().current;return e({entries:i,...a?.id===t.id?{current:{...a,label:t.label,key:t.key}}:{}}),()=>{s().entries.get(t.id)===n&&s().unregister(t.id)}},unregister:t=>{let n=s().entries;if(!n.has(t))return;let i=new Map(n);i.delete(t),r=-1/0,e({entries:i,...s().current?.id===t?{current:null}:{}})},updatePosition:(e,t)=>{let n=s().entries.get(e);n&&n.position.copy(t)},getAll:()=>Array.from(s().entries.values()),setCurrent:t=>{(!n||t&&!s().entries.has(t.id))&&(t=null);let r=s().current;r!==t&&(r&&t&&r.id===t.id&&r.label===t.label&&r.key===t.key&&Math.round(r.distance*10)===Math.round(t.distance*10)||e({current:t}))},activateCurrent:()=>{if(!n)return!1;let e=s().current;if(!e)return!1;let r=s().entries.get(e.id);if(!r)return!1;let i=o?(r.getPosition?.()??r.position).distanceTo(o):e.distance;return!Number.isFinite(i)||i>r.range||r.range<0?(s().setCurrent(null),!1):(r.onActivate(),t?.(r),!0)},track:(e,t,c=80)=>{if(!n||!Number.isFinite(t)||((o??=new f.Vector3).copy(e),t>=r&&t-r<Math.max(.001,c)))return;r=t,i++;let l,u=1/0;for(let t of s().entries.values()){a++;let n=(t.getPosition?.()??t.position).distanceToSquared(e);Number.isFinite(n)&&t.range>=0&&n<=t.range*t.range&&n<u&&(l=t,u=n)}s().setCurrent(l?{id:l.id,label:l.label,key:l.key,distance:Math.sqrt(u)}:null)},suspend:()=>{n=!1,r=-1/0,o=void 0,s().current&&e({current:null})},resume:()=>{n||(n=!0,r=-1/0)},getStats:()=>({active:n,scans:i,visited:a})}))}var{useStore:Tt,useStoreApi:Et}=i.t(`useInteractablesStore`,()=>wt(),()=>r.n()?.interactablesStore);function O(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return t>>>0}function k(e){let t=e+1831565813>>>0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function A(e){return k(O(e))}function j(e,t,n=0){return k(O(e)^Math.imul(t+1,2654435761)^Math.imul(n+1,2246822507))}function Dt(e,t){let n=e.home??e.position,r=O(e.instanceId)^Math.round(e.timestamp*1e3),i=k(r)*Math.PI*2,a=Math.max(.5,t)*(.35+k(r^2654435769)*.65);return[n[0]+Math.cos(i)*a,n[1],n[2]+Math.sin(i)*a]}var Ot=32,M=new Map;function N(e){return M.set(e.id,e),()=>{M.delete(e.id)}}function kt(e){return M.get(e)}function At(e){M.delete(e)}var jt=e=>({...e,...e.waypoints?{waypoints:e.waypoints.map(e=>[...e])}:{}}),P=e=>({...e,...e.memory?{memory:{...e.memory}}:{}}),F=e=>({...e}),I=e=>e.map(e=>({...e,...e.payload?{payload:{...e.payload}}:{}}));function Mt(e,t={}){let n={mode:e.behavior?.mode??`idle`,speed:e.behavior?.speed??2.2,...e.behavior?.loop===void 0?{}:{loop:e.behavior.loop},...e.behavior?.waypoints?{waypoints:e.behavior.waypoints.map(e=>[...e])}:{},...e.behavior?.wanderRadius===void 0?{}:{wanderRadius:e.behavior.wanderRadius},...e.behavior?.waitSeconds===void 0?{}:{waitSeconds:e.behavior.waitSeconds},...e.behavior?.idleAnimation?{idleAnimation:e.behavior.idleAnimation}:{},...e.behavior?.moveAnimation?{moveAnimation:e.behavior.moveAnimation}:{},...e.behavior?.arriveAnimation?{arriveAnimation:e.behavior.arriveAnimation}:{}};return{id:t.id??`npc-behavior-${e.id}`,name:t.name??`${e.name} Behavior`,...t.description?{description:t.description}:{},...t.role?{role:t.role}:{},behavior:n,...e.brain?{brain:P(e.brain)}:{},...e.perception?{perception:F(e.perception)}:{},...e.events?{events:I(e.events)}:{},...t.tags?{tags:[...t.tags]}:{}}}function Nt(e,t){return{...e,behavior:jt(t.behavior),...t.brain?{brain:P(t.brain)}:{},...t.perception?{perception:F(t.perception)}:{},...t.events?{events:I(t.events)}:{}}}function Pt(e,t={}){return{id:t.id??e.id,name:t.name??e.name,ownerType:t.ownerType??`npc`,...t.description??e.description?{description:t.description??e.description}:{},...t.role??e.role?{role:t.role??e.role}:{},behavior:jt(e.behavior),...e.brain?{brain:P(e.brain)}:{},...e.perception?{perception:F(e.perception)}:{},...e.events?{events:I(e.events)}:{},...t.tags?{tags:[...t.tags]}:e.tags?{tags:[...e.tags]}:{}}}function Ft(e){return{id:e.id,name:e.name,...e.description?{description:e.description}:{},...e.role?{role:e.role}:{},behavior:jt(e.behavior),...e.brain?{brain:P(e.brain)}:{},...e.perception?{perception:F(e.perception)}:{},...e.events?{events:I(e.events)}:{},...e.tags?{tags:[...e.tags]}:{}}}function It(e,t){return Nt(e,Ft(t))}function Lt(e,t=!1){return e.perceived.find(n=>e.entered?.includes(n.instanceId)&&(!t||n.actor))}function Rt(e,t){switch(e.type){case`always`:return!0;case`navigationIdle`:return t.navigationState!==`moving`;case`perceivedAny`:return t.perceived.length>0;case`perceivedEntered`:return Lt(t,e.actorsOnly)!==void 0;case`memoryEquals`:return t.memory?.[e.key]===e.value}}function zt(e,t){switch(e.type){case`point`:return e.value;case`self`:return t.position;case`nearestPerceived`:return t.perceived[0]?.position;case`entered`:return Lt(t,e.actorsOnly)?.position}}function Bt(e,t){if(e.action.type===`wander`)return{type:`moveTo`,target:Dt(t,e.action.radius??4),...e.action.speed===void 0?{}:{speed:e.action.speed}};if(e.action.type===`lookAtTarget`){let n=zt(e.action.target,t);return n?{type:`lookAt`,target:n}:void 0}if(e.action.type!==`moveToTarget`)return e.action;let n=zt(e.action.target,t);if(n)return{type:`moveTo`,target:n,...e.action.speed===void 0?{}:{speed:e.action.speed},...e.action.animationId?{animationId:e.action.animationId}:{}}}function Vt(e,t,n=`next`){return e.find(e=>e.source===t&&e.branch===n)??e.find(e=>e.source===t&&e.branch===void 0)}function Ht(e,t){let n=new Map(e.nodes.map(e=>[e.id,e])),r=[],i=e.nodes.find(e=>e.type===`start`)??e.nodes[0],a=0;for(;i&&a<Ot;){if(a+=1,i.type===`condition`){let r=Rt(i.condition,t)?`true`:`false`;i=n.get(Vt(e.edges,i.id,r)?.target??``);continue}if(i.type===`action`){let e=Bt(i,t);e&&r.push(e)}i=n.get(Vt(e.edges,i.id)?.target??``)}return r}var L=e=>typeof e==`object`&&!!e&&!Array.isArray(e),R=e=>typeof e==`number`&&Number.isFinite(e),z=e=>R(e)&&e>=0,Ut=e=>Array.isArray(e)&&e.length===3&&e.every(R),B=(e,t)=>e===void 0||t(e),V=e=>typeof e==`string`,Wt=e=>typeof e==`boolean`;function H(e,t=0){return t>32?!1:e===null||V(e)||Wt(e)||R(e)?!0:Array.isArray(e)?e.every(e=>H(e,t+1)):L(e)&&Object.values(e).every(e=>H(e,t+1))}function Gt(e){if(!L(e)||!B(e.animationId,V)||!B(e.speed,z)||!B(e.loop,Wt))return!1;switch(e.type){case`idle`:return!0;case`moveTo`:case`lookAt`:return Ut(e.target);case`patrol`:return Array.isArray(e.waypoints)&&e.waypoints.every(Ut);case`wander`:return B(e.radius,z)&&B(e.waitSeconds,z);case`playAnimation`:return V(e.animationId);case`speak`:return V(e.text)&&B(e.duration,z);case`interact`:return V(e.targetId);case`remember`:return V(e.key)&&H(e.value);default:return!1}}function Kt(e){return L(e)&&B(e.reason,V)&&B(e.ttlMs,z)&&B(e.actions,e=>Array.isArray(e)&&e.every(Gt))}var qt={endpoint:``,timeoutMs:3e3,minRequestIntervalMs:700,headers:{},fallbackToScriptedBehavior:!0},Jt=1e3,Yt=6e4;function Xt(e,t){let n=e.behavior;if(n&&n.mode!==`idle`&&t.navigationState!==`moving`){if(n.mode===`patrol`&&n.waypoints?.length)return{source:`reinforcement`,reason:`fallback patrol`,actions:[{type:`patrol`,waypoints:n.waypoints,speed:n.speed,loop:n.loop??!0,...n.moveAnimation?{animationId:n.moveAnimation}:{}}]};if(n.mode===`wander`)return{source:`reinforcement`,reason:`fallback wander`,actions:[{type:`moveTo`,target:Dt(t,n.wanderRadius??4),speed:n.speed,...n.moveAnimation?{animationId:n.moveAnimation}:{}}]}}}function Zt(e={}){let t=new Map,n=e.now??(()=>performance.now()),r={...qt,headers:{}},i=e.active??!0,a=0,o=0,s=0,c=0,l=0,u=0,d=()=>{l++,u=n()+Math.min(Yt,Jt*2**(l-1))},f=()=>({...r,headers:{...r.headers}}),p=e=>{let t=e.controller;delete e.controller,e.timer!==void 0&&clearTimeout(e.timer),delete e.timer,delete e.queued,t?.abort()},m=e=>{if(e!==void 0){let n=t.get(e);t.delete(e),n&&p(n)}else{let e=[...t.values()];t.clear(),e.forEach(p)}},h=e=>{let t={...r,...e,headers:{...r.headers,...e.headers}};if(t.endpoint=typeof t.endpoint==`string`?t.endpoint.trim():``,!Number.isFinite(t.timeoutMs)||t.timeoutMs<=0||!Number.isFinite(t.minRequestIntervalMs)||t.minRequestIntervalMs<0)throw TypeError(`Invalid NPC policy endpoint or request timing`);return m(),r=t,l=0,u=0,f()};e.config&&h(e.config);let g=t=>e.isCurrent?.(t)??!0;async function _(r,m){let h=new AbortController;m.controller=h;let _=f(),ee=n(),v=()=>i&&t.get(r.instance.id)===m&&m.controller===h&&!h.signal.aborted&&g(r);m.timer=setTimeout(()=>{m.controller===h&&(c++,p(m))},_.timeoutMs),a++;try{let{instance:t,observation:i}=r,a=t.brain?.policyId??t.brain?.providerId,c=await(e.fetch??globalThis.fetch)(_.endpoint,{method:`POST`,signal:h.signal,headers:{"Content-Type":`application/json`,...a?{"X-Policy-Provider":a}:{},..._.apiKey?{Authorization:`Bearer ${_.apiKey}`}:{},..._.headers},body:JSON.stringify({...a?{provider:a}:{},instance:{id:t.id,templateId:t.templateId,name:t.name,brainMode:t.brain?.mode??`none`,behaviorMode:t.behavior?.mode??`idle`},observation:i})});if(!c.ok){d(),v()||o++;return}if(l=0,u=0,!v()){o++;return}let f=await c.json();if(!v()){o++;return}if(!Kt(f)){s++;return}let p=ee+Math.min(f.ttlMs??_.timeoutMs,_.timeoutMs);if(n()>=p){o++;return}f.actions?.length&&(m.queued={expiresAt:p,decision:{source:`reinforcement`,reason:f.reason??`policy@${i.timestamp.toFixed(2)}`,actions:f.actions}})}catch{h.signal.aborted||d()}finally{m.controller===h&&(m.timer!==void 0&&clearTimeout(m.timer),delete m.timer,delete m.controller)}}return{adapter:e=>{if(!i||!g(e))return;let{instance:a,observation:s}=e,c=t.get(a.id);c&&(c.brain!==a.brain||c.templateId!==a.templateId)&&(m(a.id),c=void 0),c||(c={brain:a.brain,templateId:a.templateId,lastRequestAtMs:-1/0},t.set(a.id,c));let l=n();if(c.queued){let e=c.queued;if(delete c.queued,l<e.expiresAt)return e.decision;o++}return r.endpoint&&!c.controller&&l>=u&&l-c.lastRequestAtMs>=r.minRequestIntervalMs&&(c.lastRequestAtMs=l,_(e,c)),r.fallbackToScriptedBehavior?Xt(a,s):void 0},configure:h,getConfig:f,release:m,suspend(){i=!1,m()},resume(){i=!0},dispose(){i=!1,m()},getStats(){let e=0,n=0;for(let r of t.values())e+=Number(!!r.controller),n+=Number(!!r.queued);return{active:i,instances:t.size,pending:e,queued:n,requests:a,discardedResponses:o,invalidResponses:s,timedOutRequests:c,failures:l}}}}function Qt(e,t){let n=[`default`,`openai`,`huggingface`].map(n=>e.register(`reinforcement`,n,t.adapter));return()=>n.forEach(e=>e())}var U=Zt(),$t=U.configure,en=U.getConfig;function tn(e,t){return`${e}:${t}`}function nn(e,t){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return n*n+r*r+i*i}function rn(){let e=new Map,t=!0;return{get isActive(){return t},register(t,n,r){let i=tn(t,n),a={adapter:r};return e.set(i,a),()=>{e.get(i)===a&&e.delete(i)}},resolve(n){if(t&&n)for(let t of[n.policyId,n.providerId,`default`]){let r=t?e.get(tn(n.mode,t)):void 0;if(r)return r.adapter}},suspend(){t=!1},resume(){t=!0},dispose(){t=!1,e.clear()}}}var W;function G(){return W||(W=rn(),Qt(W,U)),W}function an(){G()}function on(e,t,n){return G().register(e,t,n)}function K(e,t,n,r=t.values()){let i=e.perception,a=i?.enabled?i.sightRadius:0,o=a*a,s=[];if(a>0)for(let t of r){if(t.id===e.id)continue;let n=nn(e.position,t.position);if(n>o)continue;let r=Math.sqrt(n);s.push({instanceId:t.id,name:t.name,position:t.position,distance:r,brainMode:t.brain?.mode??`none`})}return s.sort((e,t)=>e.distance-t.distance),{instanceId:e.id,templateId:e.templateId,timestamp:n,position:e.position,rotation:e.rotation,currentAnimation:e.currentAnimation??e.behavior?.idleAnimation??`idle`,navigationState:e.navigation?.state??`none`,behaviorMode:e.behavior?.mode??`idle`,brainMode:e.brain?.mode??`none`,perceptionEnabled:i?.enabled??!1,perceived:s,...e.brain?.memory?{memory:e.brain.memory}:{}}}function sn(e,t,n){let r=e.brain?.blueprintId,i=r?n?n.get(r):kt(r):void 0;if(i){let e=Ht(i,t);if(e.length>0)return{source:`blueprint`,reason:i.name,actions:e}}let a=e.behavior;if(a&&a.mode!==`idle`&&t.navigationState!==`moving`){if(a.mode===`patrol`&&a.waypoints&&a.waypoints.length>0)return{source:`scripted`,reason:`patrol behavior`,actions:[{type:`patrol`,waypoints:a.waypoints,speed:a.speed,...a.loop===void 0?{}:{loop:a.loop},...a.moveAnimation?{animationId:a.moveAnimation}:{}}]};if(a.mode===`wander`)return{source:`scripted`,reason:`wander behavior`,actions:[{type:`moveTo`,target:Dt(t,a.wanderRadius??4),speed:a.speed,...a.moveAnimation?{animationId:a.moveAnimation}:{}}]}}}function cn(e,t,n,r=G()){let i=e.brain?.mode??`none`;if(i===`none`||!r.isActive)return;let a=r.resolve(e.brain);if(a)return a({instance:e,observation:t});if(i===`scripted`)return sn(e,t,n)}var ln=class{constructor(){this.grid=new u.t({cellSize:16}),this.instances=new Map,this.order=new Map,this.position=new f.Vector3,this.nearby=[]}refresh(e){for(let t of this.order.keys())e.has(t)||this.grid.remove(t);this.order.clear(),this.instances=e;let t=0;for(let n of e.values())this.order.set(n.id,t++),this.grid.update(n.id,this.position.set(...n.position))}observe(e,t){let n=e.perception;if(!n?.enabled||n.sightRadius<=0)return K(e,this.instances,t);let r=this.grid.getNearby(this.position.set(...e.position),n.sightRadius,this.nearby);return r.sort((e,t)=>this.order.get(e)-this.order.get(t)),K(e,this.instances,t,r.map(e=>this.instances.get(e)))}},un=3;function dn(e,t,n){if(e.isWalkable(t[0],t[2],n))return t;let[r,i]=e.worldToGrid(t[0],t[2]),a,o=1/0;for(let s=1;s<=un&&!a;s++)for(let c=-s;c<=s;c++)for(let l=-s;l<=s;l++){if(Math.max(Math.abs(l),Math.abs(c))!==s)continue;let[u,,d]=e.gridToWorld(r+l,i+c,t[1]),f=(u-t[0])**2+(d-t[2])**2;f<o&&e.isWalkable(u,d,n)&&(a=[u,t[1],d],o=f)}return a}function fn(e,t,n,r){if(!e?.isReady)return[[...r]];let i=t.volume?{agentRadius:t.volume.radius*Math.max(t.scale[0],t.scale[2])}:{},a=dn(e,n,i),o=dn(e,r,i),s=a&&o?d.n(e,{id:t.id,position:[...a],...i},o,{includeStart:!0}):[],c=s.slice(1).map(([e,t,n])=>[e,t,n]),l=c[c.length-1]??s[0];return a&&o&&l&&(Math.hypot(l[0]-o[0],l[2]-o[2])>1e-6&&c.push([...o]),a!==n&&c.unshift([...a])),c}var pn=3,mn=3,hn=Math.PI/.3,gn=.35,_n=.55,vn=1,yn=2;function bn(e,t){return Math.atan2(Math.sin(t-e),Math.cos(t-e))}var xn=new Set([`speak`,`lookAt`]);function Sn(e,t){let n=[];for(let e of t){let t=e.decision?.actions.filter(e=>!xn.has(e.type));t?.length&&n.push({...e,decision:{...e.decision,actions:t}})}if(!n.length)return;let r=e.getState();if(r.applyNPCDecisions){r.applyNPCDecisions(n);return}for(let{instanceId:e,decision:t}of n)r.executeInstanceActions(e,t.actions)}var q=new WeakMap;function Cn(e){return q.get(e)}var wn=class{get poseRevision(){return this.movedPoses}constructor(e,t,n={}){if(this.store=e,this.loop=t,this.options=n,this.poses=new Map,this.routes=new Map,this.bodies=new Map,this.dirty=!0,this.owners=0,this.active=!1,this.euler=new f.Euler,this.rotation=new f.Quaternion,this.translation={x:0,y:0,z:0},this.perception=new ln,this.views=new Map,this.records=new Map,this.recordListeners=new Set,this.speech=new Map,this.speechChanges=0,this.gestures=new Map,this.gestureChanges=0,this.now=0,this.actors=new Map,this.movedPoses=0,q.has(e))throw Error(`NPC store already has a simulation owner`);q.set(e,this),this.navigation=n.navigation}acquire(){++this.owners===1&&this.resume();let e=!1;return()=>{e||(e=!0,--this.owners===0&&this.suspend())}}resume(){this.active||(this.active=!0,this.dirty=!0,this.unsubscribe=this.store.subscribe(()=>{this.dirty=!0,this.syncClock()}),this.syncClock())}suspend(){this.active=!1,this.unsubscribe?.(),this.unsubscribe=void 0,this.releaseSystem?.(),this.releaseSystem=void 0,this.releaseClock?.(),this.releaseClock=void 0}syncClock(){if(this.active&&this.store.getState().instances.size>0){if(this.releaseSystem)return;this.releaseSystem=this.loop.clock.addSystem({id:`npc-simulation`,phase:`simulation`,priority:-10,update:e=>this.update(e)}),this.releaseClock=this.loop.acquire()}else this.releaseSystem?.(),this.releaseSystem=void 0,this.releaseClock?.(),this.releaseClock=void 0,this.store.getState().instances.size||(this.poses.clear(),this.views.clear(),this.records.clear(),this.speech.clear(),this.gestures.clear(),this.perception.refresh(new Map))}reconcile(){if(!this.dirty)return;this.dirty=!1;let e=this.store.getState().instances;for(let t of this.poses.keys())e.has(t)||(this.poses.delete(t),this.routes.delete(t),this.views.delete(t),this.records.delete(t),this.gestures.delete(t),this.speech.delete(t)&&this.speechChanges++);for(let t of e.values()){let e=this.poses.get(t.id);e||(e={position:[...t.position],rotation:[...t.rotation],sourcePosition:t.position,sourceRotation:t.rotation,home:[...t.position],nextDecision:-1,moved:!0,revision:0,heading:t.rotation[1],attentionUntil:-1/0,nextGesture:-1,gestures:0},this.poses.set(t.id,e)),e.sourcePosition!==t.position&&(e.position=[...t.position],e.home=[...t.position],e.sourcePosition=t.position,e.nextDecision=-1,e.moved=!0,this.routes.delete(t.id)),e.sourceRotation!==t.rotation&&(e.rotation=[...t.rotation],e.heading=t.rotation[1],e.sourceRotation=t.rotation,e.moved=!0)}}livePose(e){return this.active||(this.dirty=!0),this.reconcile(),this.poses.get(e)}getPose(e){return this.livePose(e)}getPoseRevision(e){return this.poses.get(e)?.revision??0}snapshotInstances(){return this.active||(this.dirty=!0),this.reconcile(),new Map(Array.from(this.store.getState().instances,([e,t])=>{let n=this.poses.get(e);return[e,n?{...t,position:[...n.position],rotation:[...n.rotation]}:t]}))}setNavigation(e){this.navigation=e,this.routes.clear()}nextEventAt(){let e=1/0;for(let t of this.store.getState().instances.values()){let n=this.poses.get(t.id);(t.brain?.mode??`none`)!==`none`&&(e=Math.min(e,n&&n.nextDecision>=0?n.nextDecision:this.now)),n&&(t.behavior?.gestures?.clips.length&&n.nextGesture>=0&&(e=Math.min(e,n.nextGesture)),n.attentionUntil>this.now&&(e=Math.min(e,n.attentionUntil)))}for(let t of this.speech.values())e=Math.min(e,t.until);return Number.isFinite(e)?e:void 0}setActor(e,t,n){let r=this.actors.get(e);r&&r.name===t&&r.position[0]===n[0]&&r.position[1]===n[1]&&r.position[2]===n[2]||this.actors.set(e,{id:e,templateId:`actor`,name:t,position:[n[0],n[1],n[2]],rotation:[0,0,0],scale:[1,1,1]})}removeActor(e){this.actors.delete(e)}getRecord(e){return this.records.get(e)}speak(e,t,n=pn){this.speech.set(e,{text:t,until:this.now+Math.max(0,n)}),this.speechChanges++}getSpeech(e){return this.speech.get(e)}get speechRevision(){return this.speechChanges}gesture(e,t,n=!1){this.gestures.set(e,{clip:t,at:this.now,greeting:n}),this.gestureChanges++}getGesture(e){return this.gestures.get(e)}get gestureRevision(){return this.gestureChanges}greet(e,t){let n=this.livePose(e),r=this.store.getState().instances.get(e)?.behavior;if(n){if(t&&r?.faceOnInteract!==!1){n.attentionUntil=Math.max(this.now+mn,this.speech.get(e)?.until??-1/0);let r=t[0]-n.position[0],i=t[2]-n.position[2];Math.hypot(r,i)>1e-9&&(n.heading=Math.atan2(r,i))}r?.greetAnimation&&this.gesture(e,r.greetAnimation,!0)}}isAttending(e){return(this.poses.get(e)?.attentionUntil??-1/0)>this.now}subscribeRecords(e){return this.recordListeners.add(e),()=>{this.recordListeners.delete(e)}}perceptionView(){let e=new Map;for(let t of this.store.getState().instances.values()){let n=this.poses.get(t.id);if(!n){e.set(t.id,t);continue}let r=this.views.get(t.id);(!r||r.source!==t||r.revision!==n.revision)&&(r={source:t,revision:n.revision,view:{...t,position:[...n.position],rotation:[...n.rotation]}},this.views.set(t.id,r)),e.set(t.id,r.view)}for(let t of this.actors.values())e.has(t.id)||e.set(t.id,t);return e}bindBody(e,t){let n=this.bodies.get(e);n||(n=new Set,this.bodies.set(e,n)),n.add(t);let r=this.getPose(e);return r&&t.isValid()&&(t.setTranslation(this.writeTranslation(r),!0),t.setRotation(this.writeRotation(r),!0)),()=>{n.delete(t),!n.size&&this.bodies.get(e)===n&&this.bodies.delete(e)}}writeTranslation(e){let[t,n,r]=e.position;return this.translation.x=t,this.translation.y=n,this.translation.z=r,this.translation}writeRotation(e){let[t,n,r]=e.rotation;return this.rotation.setFromEuler(this.euler.set(t,n,r))}update(e){if(!this.active)return;this.now=e.elapsedSeconds;for(let[e,t]of this.speech)t.until<=this.now&&(this.speech.delete(e),this.speechChanges++);this.reconcile();let t=this.store.getState().instances;for(let n of t.values()){let t=this.poses.get(n.id),r=t.attentionUntil>this.now;r||this.move(n,t,e.deltaSeconds);let i=this.store.getState().instances.get(n.id)??n,a=!r&&i.navigation?.state!==`moving`;this.turn(i,t,e.deltaSeconds,r,a),a&&this.idleGesture(i,t);let o=this.bodies.get(n.id);if(o){for(let e of o)if(e.isValid()){if(e.isKinematic()){if(!t.moved)continue;e.setNextKinematicTranslation(this.writeTranslation(t)),e.setNextKinematicRotation(this.writeRotation(t))}else e.setTranslation(this.writeTranslation(t),!0),e.setRotation(this.writeRotation(t),!0)}}t.moved&&(this.movedPoses++,t.revision++),t.moved=!1}let n,r=[];for(let t of this.store.getState().instances.values()){let i=this.poses.get(t.id);if(!i||(t.brain?.mode??`none`)===`none`)continue;let a=Math.max(.5,t.behavior?.waitSeconds??1);if(i.nextDecision<0&&(i.nextDecision=e.elapsedSeconds+a*A(t.id)),e.elapsedSeconds+1e-9<i.nextDecision)continue;i.nextDecision=e.elapsedSeconds+a,n||(n=this.perceptionView(),this.perception.refresh(n));let o=this.perception.observe(n.get(t.id),e.elapsedSeconds);o.home=t.behavior?.home??i.home;let s=this.records.get(t.id)?.observation.perceived;o.entered=[];for(let e of o.perceived)this.actors.has(e.instanceId)&&(e.actor=!0),s?.some(t=>t.instanceId===e.instanceId)||o.entered.push(e.instanceId);r.push({instanceId:t.id,observation:o})}if(n){for(let e of r){let t=n.get(e.instanceId),r=this.store.getState().instances.get(e.instanceId);if(!r||r.brain!==t.brain||r.templateId!==t.templateId)continue;let i=cn(t,e.observation,this.options.scoped?this.store.getState().brainBlueprints:void 0,this.options.adapters);if(!this.active)return;this.store.getState().instances.get(e.instanceId)===r&&i?.actions.length&&(e.decision=i)}for(let e of r){this.records.set(e.instanceId,e);for(let t of e.decision?.actions??[])t.type===`speak`?this.speak(e.instanceId,t.text,t.duration):t.type===`lookAt`&&this.face(e.instanceId,t.target)}Sn(this.store,r);for(let e of this.recordListeners)e()}}face(e,t){let n=this.poses.get(e);if(!n)return;let r=t[0]-n.position[0],i=t[2]-n.position[2];Math.hypot(r,i)<=1e-9||(n.heading=Math.atan2(r,i),this.store.getState().instances.get(e)?.behavior?.turnSpeed===void 0&&(n.rotation[1]=n.heading,n.moved=!0))}turn(e,t,n,r,i){let a=e.behavior,o=t.heading;if(i&&a?.glance){let t=Math.sin(this.now*gn+A(e.id)*Math.PI*2);o+=t>_n?a.glance:t<-.55?-a.glance:0}let s=bn(t.rotation[1],o);if(Math.abs(s)<1e-6)return;let c=a?.turnSpeed===void 0?1/0:r?Math.max(a.turnSpeed,hn):a.turnSpeed;t.rotation[1]=bn(0,t.rotation[1]+Math.sign(s)*Math.min(Math.abs(s),c*n)),t.moved=!0}idleGesture(e,t){let n=e.behavior?.gestures;if(!n?.clips.length)return;let r=Math.max(1,n.everySeconds??20);if(t.nextGesture<0){t.nextGesture=this.now+r*(.5+j(e.id,vn));return}if(this.now<t.nextGesture)return;let i=t.gestures++;this.gesture(e.id,n.clips[Math.floor(j(e.id,yn,i)*n.clips.length)]),t.nextGesture=this.now+r*(.75+.5*j(e.id,vn,t.gestures))}route(e,t,n,r){let i=this.routes.get(e.id);if(i&&i.waypoints===n&&i.index===r)return i.steps;let a=fn(this.navigation,e,t.position,n[r]);return this.routes.set(e.id,{waypoints:n,index:r,steps:a}),a}move(e,t,n){let r=e.navigation;if(r?.state!==`moving`||!Number.isFinite(r.speed)||r.speed<=0)return;let i=r.speed*n;for(let n=r.currentIndex;n<r.waypoints.length;n++){let a=this.route(e,t,r.waypoints,n);for(;a.length>0;){let e=a[0],n=e[0]-t.position[0],r=e[1]-t.position[1],o=e[2]-t.position[2],s=Math.hypot(n,r,o);if(s>0){let e=Math.min(1,i/s);t.position[0]+=n*e,t.position[1]+=r*e,t.position[2]+=o*e,Math.hypot(n,o)>1e-9&&(t.heading=Math.atan2(n,o)),t.moved=!0}if(s>i+1e-9||(i=Math.max(0,i-s),a.shift(),i===0&&a.length>0))return}this.routes.delete(e.id),this.store.getState().advanceNavigation(e.id,[...t.position]),t.sourcePosition=this.store.getState().instances.get(e.id).position;let o=e.behavior?.pauseSeconds;if(n===r.waypoints.length-1&&o!==void 0&&(t.nextDecision=this.now+Math.max(0,o)),i===0)break}}};function Tn(e,t,{legacyBlueprintRegistry:n}){return{addTemplate:t=>e(e=>{e.templates.set(t.id,t)}),updateTemplate:(t,n)=>e(e=>{let r=e.templates.get(t);r&&e.templates.set(t,{...r,...n})}),removeTemplate:t=>e(e=>{e.templates.delete(t)}),addCategory:t=>e(e=>{e.categories.set(t.id,t)}),updateCategory:(t,n)=>e(e=>{let r=e.categories.get(t);r&&e.categories.set(t,{...r,...n})}),removeCategory:t=>e(e=>{e.categories.delete(t)}),addClothingSet:t=>e(e=>{e.clothingSets.set(t.id,t)}),updateClothingSet:(t,n)=>e(e=>{let r=e.clothingSets.get(t);r&&e.clothingSets.set(t,{...r,...n})}),removeClothingSet:t=>e(e=>{e.clothingSets.delete(t)}),addClothingCategory:t=>e(e=>{e.clothingCategories.set(t.id,t)}),updateClothingCategory:(t,n)=>e(e=>{let r=e.clothingCategories.get(t);r&&e.clothingCategories.set(t,{...r,...n})}),removeClothingCategory:t=>e(e=>{e.clothingCategories.delete(t)}),addAnimation:t=>e(e=>{e.animations.set(t.id,t)}),updateAnimation:(t,n)=>e(e=>{let r=e.animations.get(t);r&&e.animations.set(t,{...r,...n})}),removeAnimation:t=>e(e=>{e.animations.delete(t)}),addBrainBlueprint:t=>e(e=>{e.brainBlueprints.set(t.id,t),n&&N(t)}),updateBrainBlueprint:(t,r)=>e(e=>{let i=e.brainBlueprints.get(t);if(!i)return;let a={...i,...r};e.brainBlueprints.set(t,a),n&&N(a)}),removeBrainBlueprint:t=>e(e=>{e.brainBlueprints.delete(t),n&&At(t)}),setSelectedTemplate:t=>e(e=>{e.selectedTemplateId=t}),setSelectedCategory:t=>e(e=>{e.selectedCategoryId=t;let n=e.categories.get(t);if(n&&n.templateIds.length>0){let t=n.templateIds[0];t&&(e.selectedTemplateId=t)}else delete e.selectedTemplateId}),setSelectedInstance:t=>e(e=>{e.selectedInstanceId=t}),setSelectedClothingSet:t=>e(e=>{e.selectedClothingSetId=t}),setSelectedClothingCategory:t=>e(e=>{e.selectedClothingCategoryId=t;let n=e.clothingCategories.get(t);if(n&&n.clothingSetIds.length>0){let t=n.clothingSetIds[0];t&&(e.selectedClothingSetId=t)}else delete e.selectedClothingSetId})}}var J=.75,En={height:1.8,radius:.32,interactionRadius:1.6},Y={mode:`reinforcement`,policyId:`openai`,autoRespond:!1,prompt:`Respond as an in-world NPC when a dialogue system is connected.`},Dn={enabled:!0,sightRadius:8,hearingRadius:4,fieldOfView:110},X={mode:`idle`,speed:2.2,loop:!0,wanderRadius:4,waitSeconds:1.5,idleAnimation:`idle`,moveAnimation:`walk`,arriveAnimation:`idle`},Z={green:`/gltf/trainer_green.glb`,red:`/gltf/trainer_red.glb`},Q=`trainer-green`,On=/(^|\/)gltf\/(ally[^/]*|formal|hat_[abc]|glass_a|super_glass)\.glb$/,kn=e=>e.filter(e=>!On.test(e.url));function An(e){e.templates.forEach(e=>{let t=kn(e.baseParts);t.length!==e.baseParts.length&&(e.baseParts=t,e.fullModelUrl??=e.id===`oneyee`?Z.red:Z.green)}),e.clothingSets.forEach((t,n)=>{t.parts=kn(t.parts),!t.parts.length&&(e.clothingSets.delete(n),e.clothingCategories.forEach(e=>{e.clothingSetIds=e.clothingSetIds.filter(e=>e!==n)}))}),e.instances.forEach(e=>{e.customParts&&=kn(e.customParts)})}function jn(e){e.instances.forEach((t,n)=>{t.brain||e.instances.set(n,{...t,brain:{...Y}})})}function Mn(e,t){if(e.initialized){An(e),jn(e);return}e.animations.set(`idle`,{id:`idle`,name:`대기`,loop:!0,speed:1}),e.animations.set(`walk`,{id:`walk`,name:`걷기`,loop:!0,speed:1}),e.animations.set(`run`,{id:`run`,name:`달리기`,loop:!0,speed:1.5});let n={id:`npc-blueprint-wander`,name:`주변 돌아다니기`,description:`이동을 쉬고 있을 때 주변의 새 목적지로 이동합니다.`,nodes:[{id:`start`,type:`start`,label:`시작`},{id:`idle-check`,type:`condition`,label:`이동 대기 중`,condition:{type:`navigationIdle`}},{id:`wander`,type:`action`,label:`돌아다니기`,action:{type:`wander`,radius:4,speed:2.2,waitSeconds:1.5}}],edges:[{id:`start-idle`,source:`start`,target:`idle-check`,branch:`next`},{id:`idle-wander`,source:`idle-check`,target:`wander`,branch:`true`}]},r={id:`npc-blueprint-greet-nearest`,name:`가까운 이웃에게 인사`,description:`발견한 NPC 중 가장 가까운 대상에게 다가가 인사합니다.`,nodes:[{id:`start`,type:`start`,label:`시작`},{id:`see-any`,type:`condition`,label:`발견한 대상 있음`,condition:{type:`perceivedAny`}},{id:`look`,type:`action`,label:`가까운 대상에게 이동`,action:{type:`moveToTarget`,target:{type:`nearestPerceived`},speed:1.2,animationId:`walk`}},{id:`speak`,type:`action`,label:`말하기`,action:{type:`speak`,text:`안녕?`,duration:2}}],edges:[{id:`start-see`,source:`start`,target:`see-any`,branch:`next`},{id:`see-look`,source:`see-any`,target:`look`,branch:`true`},{id:`look-speak`,source:`look`,target:`speak`,branch:`next`}]};e.brainBlueprints.set(n.id,n),e.brainBlueprints.set(r.id,r),t&&(N(n),N(r)),e.categories.set(`humanoid`,{id:`humanoid`,name:`캐릭터`,description:`사람 형태의 캐릭터`,templateIds:[Q,`trainer-red`]}),e.templates.set(Q,{id:Q,name:`초록 트레이너`,category:`humanoid`,fullModelUrl:Z.green,baseParts:[],clothingParts:[],defaultAnimation:`idle`}),e.templates.set(`trainer-red`,{id:`trainer-red`,name:`빨간 트레이너`,category:`humanoid`,fullModelUrl:Z.red,baseParts:[],clothingParts:[],defaultAnimation:`idle`}),e.selectedCategoryId=`humanoid`,e.selectedTemplateId=Q,jn(e),e.initialized=!0}function Nn(e){return e.behavior?.idleAnimation??e.behavior?.arriveAnimation??`idle`}function Pn(e,t){return e.behavior?.moveAnimation??(t>=3.8?`run`:`walk`)}function $(e,t){let n={...e.behavior??X,...t},r={...e,behavior:n};return n.mode===`idle`?(r.currentAnimation=n.idleAnimation??`idle`,delete r.navigation):t.moveAnimation!==void 0&&(r.currentAnimation=t.moveAnimation),r}function Fn(e,t,n){return{...e,navigation:{waypoints:t,currentIndex:0,speed:n,state:`moving`},currentAnimation:Pn(e,n)}}function In(e){let t={...e,currentAnimation:Nn(e)};return delete t.navigation,t}function Ln(e,t,n,r){let i=e.instances.get(t);if(!i)return;let a=n.type===`moveTo`||n.type===`patrol`||n.type===`wander`?n.speed??i.behavior?.speed??X.speed:0,o;switch(n.type){case`idle`:o=In($(i,{mode:`idle`,...n.animationId?{idleAnimation:n.animationId,arriveAnimation:n.animationId}:{}})),n.animationId&&(o.currentAnimation=n.animationId);break;case`moveTo`:o=Fn(n.animationId?$(i,{moveAnimation:n.animationId}):i,[n.target],a);break;case`patrol`:{let e=n.waypoints,t=n.loop??i.behavior?.loop??!0;if(e.length===0)return;let r=([e,,t])=>Math.hypot(i.position[0]-e,i.position[2]-t),s=!t&&e.length>1&&r(e[e.length-1])<r(e[0]);o=Fn($(i,{mode:`patrol`,waypoints:e,speed:a,loop:t,...n.animationId?{moveAnimation:n.animationId}:{}}),s?e.slice(0,-1).reverse():e,a);break}case`wander`:o=$(i,{mode:`wander`,speed:a,wanderRadius:n.radius??i.behavior?.wanderRadius??X.wanderRadius??4,waitSeconds:n.waitSeconds??i.behavior?.waitSeconds??X.waitSeconds??1.5});break;case`playAnimation`:o={...i,currentAnimation:n.animationId};break;case`lookAt`:o={...i,rotation:[i.rotation[0],Math.atan2(n.target[0]-i.position[0],n.target[2]-i.position[2]),i.rotation[2]]};break;case`speak`:return;case`interact`:o={...i,metadata:{...i.metadata,lastInteractionTargetId:n.targetId}};break;case`remember`:r(t),o={...i,brain:{...i.brain??Y,memory:{...i.brain?.memory??{},[n.key]:n.value}}};break;default:return}e.instances.set(t,o)}function Rn(e,t,{invalidateBrainRequests:n}){return{addInstance:t=>e(e=>{n(t.id),e.instances.set(t.id,t)}),updateInstance:(t,r)=>e(e=>{let i=e.instances.get(t);i&&((r.brain!==void 0||r.templateId!==void 0)&&n(t),e.instances.set(t,{...i,...r}))}),removeInstance:t=>e(e=>{n(t),e.instances.delete(t)}),createInstanceFromTemplate:(e,n)=>{let r=t().templates.get(e);if(!r)return;let i=s.t(`npc`),a=[...t().instances.values()].filter(t=>t.templateId===e).length,o=t().selectedClothingSetId||r.defaultClothingSet,c=[],l=t().previewAccessories.hat;if(l){let e=t().clothingSets.get(l)?.parts[0];e&&c.push(e)}let u=t().previewAccessories.glasses;if(u){let e=t().clothingSets.get(u)?.parts[0];e&&c.push(e)}let d={id:i,templateId:e,name:`${r.name} ${a+1}`,position:n,rotation:[0,0,0],scale:[J,J,J],...r.defaultAnimation?{currentAnimation:r.defaultAnimation}:{},...o?{currentClothingSetId:o}:{},...c.length>0?{customParts:c}:{},volume:{...En},brain:{...Y},perception:{...Dn},behavior:{...X},events:[]};t().addInstance(d),t().setSelectedInstance(i)},updateInstancePart:(t,n,r)=>e(e=>{let i=e.instances.get(t);if(!i)return;let a=i.customParts||[],o=a.findIndex(e=>e.id===n);if(o>=0){let e=a[o];a[o]={...e,...r,id:e.id,type:e.type,url:e.url}}else{let e=r.type??`accessory`,t=r.url??``;a.push({id:n,type:e,url:t,...r.category===void 0?{}:{category:r.category},...r.position===void 0?{}:{position:r.position},...r.rotation===void 0?{}:{rotation:r.rotation},...r.scale===void 0?{}:{scale:r.scale},...r.color===void 0?{}:{color:r.color},...r.metadata===void 0?{}:{metadata:r.metadata}})}e.instances.set(t,{...i,customParts:a})}),changeInstanceClothing:(t,n)=>e(e=>{let r=e.instances.get(t);r&&e.instances.set(t,{...r,currentClothingSetId:n})}),updateInstanceVolume:(t,n)=>e(e=>{let r=e.instances.get(t);r&&e.instances.set(t,{...r,volume:{...r.volume??En,...n}})}),updateInstanceBrain:(t,r)=>e(e=>{let i=e.instances.get(t);i&&(n(t),e.instances.set(t,{...i,brain:{...i.brain??Y,...r}}))}),updateInstancePerception:(t,n)=>e(e=>{let r=e.instances.get(t);r&&e.instances.set(t,{...r,perception:{...r.perception??Dn,...n}})}),updateInstanceBehavior:(t,n)=>e(e=>{let r=e.instances.get(t);r&&e.instances.set(t,$(r,n))}),applyNPCDecisions:t=>{t.some(e=>e.decision)&&e(e=>{for(let{instanceId:r,decision:i}of t)if(i)for(let t of i.actions)Ln(e,r,t,n)})},executeInstanceAction:(t,r)=>e(e=>{Ln(e,t,r,n)}),executeInstanceActions:(t,r)=>{r.length!==0&&e(e=>{for(let i of r)Ln(e,t,i,n)})},addInstanceEvent:(t,n)=>e(e=>{let r=e.instances.get(t);if(r){let i=r.events||[];i.push(n),e.instances.set(t,{...r,events:i})}}),removeInstanceEvent:(t,n)=>e(e=>{let r=e.instances.get(t);if(r&&r.events){let i=r.events.filter(e=>e.id!==n);e.instances.set(t,{...r,events:i})}}),setPreviewAccessory:(t,n)=>e(e=>{n?e.previewAccessories[t]=n:delete e.previewAccessories[t]}),setNavigation:(t,n,r=3)=>e(e=>{let i=e.instances.get(t);i&&n.length>0&&e.instances.set(t,Fn(i,n,r))}),advanceNavigation:(t,n)=>e(e=>{let r=e.instances.get(t);if(!r?.navigation||r.navigation.state!==`moving`)return;let i=n?{...r,position:n}:r,a=r.navigation,o=a.currentIndex+1;o>=a.waypoints.length?e.instances.set(t,{...i,navigation:{...a,state:`arrived`,currentIndex:o},currentAnimation:Nn(i)}):e.instances.set(t,{...i,navigation:{...a,currentIndex:o}})}),clearNavigation:t=>e(e=>{let n=e.instances.get(t);n&&e.instances.set(t,In(n))}),updateNavigationPosition:(t,n)=>e(e=>{let r=e.instances.get(t);r&&e.instances.set(t,{...r,position:n})})}}function zn(e=!1,t=()=>{}){(0,g.enableMapSet)();let n={legacyBlueprintRegistry:e,invalidateBrainRequests:t};return(0,m.create)()((0,_.immer)((t,r)=>({initialized:!1,templates:new Map,instances:new Map,categories:new Map,clothingSets:new Map,clothingCategories:new Map,animations:new Map,brainBlueprints:new Map,previewAccessories:{},initializeDefaults:()=>t(t=>Mn(t,e)),...Tn(t,r,n),...Rn(t,r,n)})))}function Bn(e={}){let t=zn(!1,e.onInvalidateBrain);if(e.onInvalidateBrain){let n=t.setState;t.setState=((...r)=>{e.onInvalidateBrain(),Reflect.apply(n,t,r)})}return t}var Vn=c.n(`npc`),{useStore:Hn,useStoreApi:Un}=i.t(`useNPCStore`,()=>zn(!0),()=>r.n()?.npcStore),Wn=1,Gn=class e extends t._{static{this.instance=null}constructor(){super({markers:new Map,canvas:null,ctx:null,isDirty:!0,lastPosition:null,lastRotation:null,gradientCache:{background:null,avatar:null},lastUpdate:Date.now()},{markerCount:0,renderTime:0,frameTime:0}),this.lastScale=null,this.lastSize=null,this.lastBlockRotate=!1,this.listeners=new Set}static getInstance(){return(!e.instance||e.instance.isDisposed)&&(e.instance=new e),e.instance}addMarker(e,t,n,r,i){let a={id:e,type:t,text:n,center:r,size:i};this.state.markers.set(e,a),this.updateMetrics(0),this.notifyListeners()}removeMarker(e){this.state.markers.delete(e),this.updateMetrics(0),this.notifyListeners()}updateMarker(e,t){let n=this.state.markers.get(e);n&&(this.state.markers.set(e,{...n,...t}),this.updateMetrics(0),this.notifyListeners())}getMarkers(){return new Map(this.state.markers)}getMarker(e){return this.state.markers.get(e)}clear(){this.state.markers.clear(),this.updateMetrics(0),this.notifyListeners()}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notifyListeners(){if(this.state.isDirty=!0,this.listeners.size===0)return;let e=this.getMarkers();this.listeners.forEach(t=>t(e))}setCanvas(e){this.lastTileGroups=void 0,this.lastSceneObjects=void 0,this.state.canvas=e,this.state.ctx=e?e.getContext(`2d`):null,this.state.isDirty=!0,this.state.gradientCache={background:null,avatar:null}}checkForUpdates(e,t,n=.1,r=.01){let i=this.state.lastPosition,a=this.state.lastRotation;if(!i||a===null){this.state.isDirty=!0,this.state.lastPosition={x:e.x,z:e.z},this.state.lastRotation=t;return}let o=Math.abs(e.x-i.x)>n||Math.abs(e.z-i.z)>n,s=Math.abs(t-a)>r;(o||s)&&(this.state.isDirty=!0,this.state.lastPosition={x:e.x,z:e.z},this.state.lastRotation=t)}render(e){if(e.size!==this.lastSize&&(this.state.isDirty=!0,this.state.gradientCache.background=null,this.state.gradientCache.avatar=null),(e.scale!==this.lastScale||!!e.blockRotate!==this.lastBlockRotate||e.tileGroups!==this.lastTileGroups||e.sceneObjects!==this.lastSceneObjects)&&(this.state.isDirty=!0),!this.state.canvas||!this.state.ctx||!this.state.isDirty)return;let t=performance.now(),{size:n,scale:r,position:i,rotation:a,blockRotate:o,tileGroups:s,sceneObjects:c}=e;this.lastSize=n,this.lastScale=r,this.lastBlockRotate=!!o,this.lastTileGroups=s,this.lastSceneObjects=c;let l=this.state.ctx;if(l.clearRect(0,0,n,n),l.save(),l.beginPath(),l.arc(n/2,n/2,n/2,0,Math.PI*2),l.clip(),!this.state.gradientCache.background){let e=l.createRadialGradient(n/2,n/2,0,n/2,n/2,n/2);e.addColorStop(0,`rgba(20, 30, 40, 0.9)`),e.addColorStop(1,`rgba(10, 20, 30, 0.95)`),this.state.gradientCache.background=e}l.fillStyle=this.state.gradientCache.background,l.fillRect(0,0,n,n);let u=o?0:a*180/Math.PI;l.translate(n/2,n/2),l.rotate(-u*Math.PI/180),l.translate(-n/2,-n/2),l.save(),l.strokeStyle=`rgba(255, 255, 255, 0.1)`,l.lineWidth=1;for(let e=0;e<n;e+=20)l.beginPath(),l.moveTo(e,0),l.lineTo(e,n),l.moveTo(0,e),l.lineTo(n,e),l.stroke();l.restore(),this.renderCompass(l,n,u),s&&s.size>0&&this.renderTiles(l,n,r,i,s),c&&c.size>0&&this.renderSceneObjects(l,n,r,i,c),this.renderMarkers(l,n,r,i,u),this.renderAvatar(l,n),l.restore(),this.state.isDirty=!1,this.metrics.renderTime=performance.now()-t}renderCompass(e,t,n){e.save(),e.fillStyle=`white`,e.font=`bold 16px sans-serif`,e.shadowColor=`rgba(0, 0, 0, 0.8)`,e.shadowBlur=3,[{text:`북`,x:t/2,y:25,color:`#ff6b6b`},{text:`남`,x:t/2,y:t-25,color:`#4ecdc4`},{text:`동`,x:t-25,y:t/2,color:`#45b7d1`},{text:`서`,x:25,y:t/2,color:`#f9ca24`}].forEach(({text:t,x:r,y:i,color:a})=>{e.save(),e.fillStyle=a,e.translate(r,i),e.rotate(n*Math.PI/180),e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(t,0,0),e.restore()}),e.restore()}renderTiles(e,t,n,r,i){let a=(t/2+Wn)**2;e.save(),e.strokeStyle=`rgba(255, 255, 255, 0.2)`,e.lineWidth=.5;for(let o of i.values())if(o&&o.tiles&&Array.isArray(o.tiles))for(let i of o.tiles){if(!i||!i.position)continue;let o=(i.position.x-r.x)*n,s=(i.position.z-r.z)*n,c=(i.size||1)*4*n,l=Math.abs(c)/2,u=Math.max(0,Math.abs(o)-l),d=Math.max(0,Math.abs(s)-l);if(u*u+d*d>a)continue;let f=t/2-o-c/2,p=t/2-s-c/2;e.fillStyle=i.objectType===`water`?`rgba(0, 150, 255, 0.6)`:i.objectType===`grass`?`rgba(50, 200, 50, 0.4)`:i.objectType===`sand`?`rgba(210, 180, 120, 0.45)`:i.objectType===`snowfield`?`rgba(225, 240, 255, 0.5)`:i.objectType===`dirt`?`rgba(205, 170, 120, 0.45)`:`rgba(150, 150, 150, 0.3)`,e.fillRect(f,p,c,c),e.strokeRect(f,p,c,c)}e.restore()}renderSceneObjects(e,t,n,r,i){i.forEach(i=>{if(!i?.position||!i?.size)return;let a=(i.position.x-r.x)*n,o=(i.position.z-r.z)*n,s=i.size.x*n,c=i.size.z*n;e.save();let l=t/2-a-s/2,u=t/2-o-c/2;e.fillStyle=`rgba(100, 150, 200, 0.4)`,e.fillRect(l,u,s,c),e.strokeStyle=`rgba(255, 255, 255, 0.4)`,e.lineWidth=1,e.strokeRect(l,u,s,c),e.restore()})}renderMarkers(e,t,n,r,i){this.state.markers.size!==0&&this.state.markers.forEach(a=>{if(!a?.center||!a?.size)return;let{center:o,size:s,text:c}=a,l=(o.x-r.x)*n,u=(o.z-r.z)*n;e.save();let d=s.x*n,f=s.z*n,p=t/2-l-d/2,m=t/2-u-f/2;e.shadowColor=`rgba(0, 0, 0, 0.6)`,e.shadowBlur=4,e.shadowOffsetX=2,e.shadowOffsetY=2,e.fillStyle=`rgba(0,0,0,0.3)`,e.fillRect(p,m,d,f),e.shadowColor=`transparent`,e.strokeStyle=`rgba(255, 255, 255, 0.3)`,e.lineWidth=1,e.strokeRect(p,m,d,f),c&&(e.save(),e.fillStyle=`white`,e.font=`bold 12px sans-serif`,e.shadowColor=`rgba(0, 0, 0, 0.8)`,e.shadowBlur=2,e.translate(p+d/2,m+f/2),e.rotate(i*Math.PI/180),e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(c,0,0),e.restore()),e.restore()})}renderAvatar(e,t){if(e.save(),!this.state.gradientCache.avatar){let n=e.createRadialGradient(t/2,t/2,0,t/2,t/2,12);n.addColorStop(0,`#01fff7`),n.addColorStop(.7,`#01fff7`),n.addColorStop(1,`transparent`),this.state.gradientCache.avatar=n}e.fillStyle=this.state.gradientCache.avatar,e.beginPath(),e.arc(t/2,t/2,12,0,Math.PI*2),e.fill(),e.fillStyle=`#01fff7`,e.shadowColor=`0 0 10px rgba(1,255,247,0.7)`,e.shadowBlur=8,e.beginPath(),e.arc(t/2,t/2,6,0,Math.PI*2),e.fill(),e.shadowColor=`transparent`,e.strokeStyle=`rgba(255, 255, 255, 0.8)`,e.lineWidth=2,e.beginPath(),e.moveTo(t/2,t/2),e.lineTo(t/2,t/2-12),e.stroke(),e.restore()}performUpdate(e){}createUpdateArgs(e){return e}updateMetrics(e){this.metrics.markerCount=this.state.markers.size,this.metrics.frameTime=e}onDispose(){this.clear(),this.listeners.clear(),this.setCanvas(null),e.instance===this&&(e.instance=null)}};function Kn({type:e=`normal`,text:t,position:n,children:r,interactive:i=!0,showMinimap:o=!0}){let c=(0,p.useRef)(null),l=a.t(),u=(0,p.useMemo)(()=>s.t(`world-prop`),[]),d=(0,p.useRef)({center:new f.Vector3,size:new f.Vector3,positionAdd:new f.Vector3});return(0,p.useEffect)(()=>{if(!o||!c.current)return;let r=Gn.getInstance(),i=setTimeout(()=>{let i=c.current;if(!i)return;let a=new f.Box3;if(a.setFromObject(i),!a.isEmpty()){let{center:i,size:o,positionAdd:s}=d.current;a.getCenter(i),a.getSize(o),n&&(s.set(n[0],n[1],n[2]),i.add(s)),r.addMarker(u,e,t||``,i.clone(),o.clone())}},100);return()=>{clearTimeout(i),r.removeMarker(u)}},[n,e,t,o,u]),(0,h.jsxs)(`group`,{ref:c,...n?{position:n}:{},onClick:e=>{i&&(e.stopPropagation(),l.onClick(e))},children:[r,t&&(0,h.jsx)(`group`,{position:[0,2,0],children:(0,h.jsx)(`sprite`,{scale:[2,.5,1],children:(0,h.jsx)(`spriteMaterial`,{color:`#ffffff`,transparent:!0,opacity:.8})})})]})}Object.defineProperty(exports,"$",{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return bt}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return Ht}}),Object.defineProperty(exports,"Ct",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return kt}}),Object.defineProperty(exports,"Dt",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(exports,"Et",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return xt}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return _t}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return pt}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return St}}),Object.defineProperty(exports,"J",{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return at}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return Ct}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return wt}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return Tt}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"Ot",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return Et}}),Object.defineProperty(exports,"Q",{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return vt}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return Nt}}),Object.defineProperty(exports,"St",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return Ft}}),Object.defineProperty(exports,"Tt",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return gt}}),Object.defineProperty(exports,"X",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"Y",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"Z",{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return Qt}}),Object.defineProperty(exports,"_t",{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Hn}}),Object.defineProperty(exports,"at",{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return en}}),Object.defineProperty(exports,"bt",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"ct",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return ln}}),Object.defineProperty(exports,"dt",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"et",{enumerable:!0,get:function(){return rt}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return rn}}),Object.defineProperty(exports,"ft",{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return cn}}),Object.defineProperty(exports,"gt",{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return on}}),Object.defineProperty(exports,"ht",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Bn}}),Object.defineProperty(exports,"it",{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return At}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return wn}}),Object.defineProperty(exports,"lt",{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return an}}),Object.defineProperty(exports,"mt",{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Gn}}),Object.defineProperty(exports,"nt",{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Un}}),Object.defineProperty(exports,"ot",{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"pt",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"q",{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Vn}}),Object.defineProperty(exports,"rt",{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"st",{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Kn}}),Object.defineProperty(exports,"tt",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Cn}}),Object.defineProperty(exports,"ut",{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return $t}}),Object.defineProperty(exports,"vt",{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return Pt}}),Object.defineProperty(exports,"wt",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return It}}),Object.defineProperty(exports,"xt",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return Zt}}),Object.defineProperty(exports,"yt",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return yt}});
|
|
1
|
+
const e=require("./rolldown-runtime-Chgba0Kb.cjs"),t=require("./useEngineFrame-ujTlLQfa.cjs"),n=require("./logger-B9OaKOPw.cjs"),r=require("./runtimeContext-zx_GnKx4.cjs"),i=require("./scopedStore-Px5jL718.cjs"),a=require("./useClicker-B-fGashd.cjs"),o=require("./CoreBridge-L4l4UNtR.cjs"),s=require("./id-DWiNl1ym.cjs"),c=require("./serviceKey-DwHFFFAA.cjs"),l=require("./weatherStore-DwLl0Jjo.cjs"),u=require("./SpatialGrid-DreiJto-.cjs"),d=require("./NPCNavigationAdapter-G-FbxRnv.cjs");let f=require("three");f=e.n(f,1);let p=require("react"),m=require("zustand"),h=require("react/jsx-runtime"),g=require("immer"),_=require("zustand/middleware/immer");var ee=2,v=null;function te(e){v=e}var ne={weather:()=>l.r.getState().current,trample:()=>{let e=o.n.getOrCreateFor(a.ur),t=e.getPlayerEntityId();return t?e.snapshot(t):null}},re=class{constructor(e=ne){this.sources=e,this.nextId=1,this.tiles=new Map,this.builds=new Set,this.orderedTiles=[],this.orderDirty=!0,this.enabled=!0,this.sphere=new f.Sphere,this.positions=new Float32Array,this.weights=new Float32Array,this.trampleWorld=new f.Vector3(0,-9999,0),this.trampleStrength=0,this.hasTrample=!1,this.lastCameraPosition=new f.Vector3,this.lastFrustum=new f.Frustum}suspend(){if(this.enabled){this.enabled=!1,this.lastElapsedTime=void 0,this.releaseBuffers(),this.positions=new Float32Array,this.weights=new Float32Array,this.trampleWorld.set(0,-9999,0),this.trampleStrength=0,this.hasTrample=!1;for(let e of this.tiles.values())this.hide(e)}}resume(){this.enabled=!0,this.lastElapsedTime=void 0}isEnabled(){return this.enabled}dispose(){this.suspend(),this.tiles.clear(),this.builds.clear(),this.orderedTiles=[],this.orderDirty=!0}schedule(e){return this.builds.add(e),()=>{this.builds.delete(e)}}runBuilds(e){let t=performance.now()+ee;do{let r,i=1/0;for(let t of this.builds){let n=t.center.distanceToSquared(e);n<i&&(i=n,r=t)}if(!r)return;let a=!0;try{a=r.step(t)}catch(e){n.t.error(`Grass build failed`,{error:e})}a&&this.builds.delete(r)}while(this.builds.size>0&&performance.now()<t)}hide(e){this.apply(e,{visible:!1,instanceCount:0,time:0,windScale:.85,trampleCenter:this.trampleWorld,trampleStrength:0})}apply(e,t){try{e.apply(t)}catch(t){n.t.error(`Grass tile update failed`,{id:e.id,error:t})}}register(e){this.tiles.size===0&&(this.lastElapsedTime=void 0);let t=this.nextId++,n={...e,id:t};return this.tiles.set(t,n),this.orderDirty=!0,this.enabled||this.hide(n),n}update(e,t){let n=this.tiles.get(e);n&&Object.assign(n,t)}unregister(e){this.tiles.delete(e)&&(this.orderDirty=!0,this.tiles.size===0&&(this.lastElapsedTime=void 0,this.orderedTiles=[],this.positions=new Float32Array,this.weights=new Float32Array,this.releaseBuffers()))}size(){return this.tiles.size}tick(e){if(!this.enabled||this.tiles.size===0||this.lastElapsedTime===e.elapsedTime&&this.lastCameraPosition.equals(e.cameraPosition)&&this.lastFrustum.planes.every((t,n)=>t.equals(e.frustum.planes[n])))return;this.lastElapsedTime=e.elapsedTime,this.lastCameraPosition.copy(e.cameraPosition),this.lastFrustum.copy(e.frustum),this.builds.size>0&&this.runBuilds(e.cameraPosition),this.refreshTrample(e.delta);let t=this.computeWindScale(),n=e.elapsedTime/4;this.ensureCapacity(this.tiles.size);let r=0;this.orderDirty&&=(this.orderedTiles=[...this.tiles.values()],!1);let i=this.orderedTiles;for(let e of i){let t=r*3;this.positions[t]=e.center.x,this.positions[t+1]=e.center.y,this.positions[t+2]=e.center.z,r+=1}this.computeWeights(i.length,e.cameraPosition);let a=0;for(let r of i){if(!this.enabled)break;if(!this.tiles.has(r.id)){a+=1;continue}let i=this.weights[a]??0;a+=1;let o=Math.hypot(r.width,r.width,r.height)*.5,s=this.sphere.set(r.center,o),c=e.frustum.intersectsSphere(s);r.lod&&(i=ie(r.center.distanceTo(e.cameraPosition),r.lod.near??24,r.lod.far??160,r.lod.strength??4));let l=Math.max(0,Math.floor(r.maxInstances*i)),u=c&&l>0;this.apply(r,{visible:u,instanceCount:u?l:0,time:n,windScale:t,trampleCenter:this.trampleWorld,trampleStrength:this.trampleStrength})}}ensureCapacity(e){if(this.positions.length<e*3){let t=Math.max(e,this.weights.length*2,8);this.positions=new Float32Array(t*3),this.weights=new Float32Array(t)}}releaseBuffers(){let e=this.wasmBuffers;if(this.wasmBuffers=void 0,e)try{e.module.dealloc_f32(e.input,e.capacity*3)}finally{e.module.dealloc_f32(e.output,e.capacity)}}computeWeights(e,t){let n=v;if(n)try{if(this.wasmBuffers?.module!==n||this.wasmBuffers.capacity<e){this.releaseBuffers();let e=this.weights.length,t=n.alloc_f32(e*3);try{this.wasmBuffers={module:n,input:t,output:n.alloc_f32(e),capacity:e}}catch(r){throw n.dealloc_f32(t,e*3),r}}let{input:r,output:i}=this.wasmBuffers;new Float32Array(n.memory.buffer,r,e*3).set(this.positions.subarray(0,e*3)),n.batch_sfe_weights(e,r,t.x,t.y,t.z,24,160,4,i),this.weights.set(new Float32Array(n.memory.buffer,i,e));return}catch{this.releaseBuffers()}else this.releaseBuffers();for(let n=0;n<e;n+=1){let e=n*3,r=(this.positions[e]??0)-t.x,i=(this.positions[e+1]??0)-t.y,a=(this.positions[e+2]??0)-t.z,o=Math.sqrt(r*r+i*i+a*a);this.weights[n]=ie(o,24,160,4)}}refreshTrample(e){let t=this.sources.trample(),n=1-Math.exp(-Math.max(0,e)*6);t&&(this.hasTrample||this.trampleWorld.set(t.position.x,t.position.y,t.position.z),this.hasTrample=!0,this.trampleWorld.x+=(t.position.x-this.trampleWorld.x)*n,this.trampleWorld.y=t.position.y,this.trampleWorld.z+=(t.position.z-this.trampleWorld.z)*n);let r=t?.isMoving&&t?.isGrounded?.85:.35;this.trampleStrength+=(r-this.trampleStrength)*n}computeWindScale(){let e=this.sources.weather(),t=e?.intensity??0;return(e?.kind===`storm`?2.6:e?.kind===`rain`?1.7:e?.kind===`snow`?1.3:e?.kind===`cloudy`?1.15:.85)+t*.9}};function ie(e,t,n,r){return e<=t?1:e>=n?0:(1-(e-t)/(n-t))**Math.max(1,r)}var ae=null;function oe(e){return new re(e)}function se(){return ae||=new re,ae}function y(e,t){if(e===t)return!0;if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function ce(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function le(){let e=new Set;return(0,m.create)(t=>({active:!1,version:0,camera:null,visibleTileGroupIds:e,visibleWallGroupIds:e,visibleBlockIds:e,visibleObjectIds:e,clusterCounts:new Uint32Array,setResult:({version:n,camera:r=null,tileIds:i,wallIds:a,blockIds:o,objectIds:s,clusterCounts:c})=>t(t=>{let l=o??e;return t.active&&t.version===n&&(t.camera===r||t.camera!==null&&r!==null&&t.camera.coordinateSystem===r.coordinateSystem&&t.camera.reversedDepth===r.reversedDepth&&t.camera.viewProjection.length===r.viewProjection.length&&t.camera.position.length===r.position.length&&t.camera.viewProjection.every((e,t)=>e===r.viewProjection[t])&&t.camera.position.every((e,t)=>e===r.position[t]))&&y(t.visibleTileGroupIds,i)&&y(t.visibleWallGroupIds,a)&&y(t.visibleBlockIds,l)&&y(t.visibleObjectIds,s)&&ce(t.clusterCounts,c)?t:{active:!0,version:n,camera:r,visibleTileGroupIds:i,visibleWallGroupIds:a,visibleBlockIds:l,visibleObjectIds:s,clusterCounts:c}}),reset:()=>t({active:!1,version:0,camera:null,visibleTileGroupIds:e,visibleWallGroupIds:e,visibleBlockIds:e,visibleObjectIds:e,clusterCounts:new Uint32Array})}))}var{useStore:ue,useStoreApi:de}=i.t(`useBuildingGpuCullingStore`,le,()=>r.n()?.buildingCullingStore),fe=.12,pe=[`tile`,`wall`,`block`,`object`];function b(e,t){return Math.floor(e/t)}var me=()=>({cells:new Map,cellsById:new Map,unbounded:new Set}),x=()=>({byId:new Map,buckets:me()});function he(){return{tile:x(),wall:x(),block:x(),object:x(),occluders:{byKey:new Map,buckets:me()}}}function ge(e,t,n){let{centerX:r,centerZ:i,radius:o}=n;try{a.Dn(e.cells,e.cellsById,t,r-o,r+o,i-o,i+o,18)}catch{e.unbounded.add(t)}}function _e(e,t){a.Rn(e.cells,e.cellsById,t),e.unbounded.delete(t)}function S(e,t,n,r,i,a,o,s){let c=(t+n)*.5,l=(r+i)*.5,u=(a+o)*.5,d=n-t,f=i-r,p=o-a;return{id:e,centerX:c,centerY:l,centerZ:u,radius:Math.max(1,Math.hypot(d,f,p)*.5),cellX:b(c,s),cellZ:b(u,s)}}function ve(e,t=18){if(e.tiles.length===0)return null;let n=1/0,r=-1/0,i=.2,o=1/0,s=-1/0;for(let t of e.tiles){let e=a.er(a.rr(t));n=Math.min(n,e.minX),r=Math.max(r,e.maxX),i=Math.max(i,Math.max(t.position.y,.2)+1.5),o=Math.min(o,e.minZ),s=Math.max(s,e.maxZ)}return S(e.id,n,r,0,i,o,s,t)}function ye(e,t=18){if(e.walls.length===0)return null;let n=1/0,r=-1/0,i=0,o=2.5,s=1/0,c=-1/0;for(let t of e.walls){let e=a.ar(t),l=a.er(e);n=Math.min(n,l.minX),r=Math.max(r,l.maxX),i=Math.min(i,e.center[1]-e.half[1]),o=Math.max(o,e.center[1]+e.half[1]),s=Math.min(s,l.minZ),c=Math.max(c,l.maxZ)}return S(e.id,n,r,i,o,s,c,t)}function be(e,t=18){let{center:n,half:r}=a.$n(e);return S(e.id,n[0]-r[0],n[0]+r[0],n[1]-r[1],n[1]+r[1],n[2]-r[2],n[2]+r[2],t)}function xe(e){let t=e.config?.size??1;switch(e.type){case`tree`:case`sakura`:return Math.max(2.2,t*.8);case`flag`:return Math.max(1.4,(e.config?.flagWidth??1.5)*.8);case`fire`:return Math.max(1.2,e.config?.fireWidth??1);case`billboard`:return 1.8;default:return 1.5}}function Se(e,t=18){let n=xe(e);return{id:e.id,centerX:e.position.x,centerY:e.position.y+n*.5,centerZ:e.position.z,radius:n,cellX:b(e.position.x,t),cellZ:b(e.position.z,t)}}function Ce(e,t,n,r=140){if(!Number.isFinite(t)||!Number.isFinite(n))return new Set;let i=a.An(e.cells,t-r,t+r,n-r,n+r,18);for(let t of e.unbounded)i.add(t);return i}function we(e,t,n,r,i){let a=new Set;for(let o of Ce(e.buckets,t,r,160)){let s=e.byId.get(o);if(!s)continue;let c=(i.has(o)?160:140)+s.radius,l=s.centerX-t,u=s.centerY-n,d=s.centerZ-r;l*l+u*u+d*d<=c*c&&a.add(o)}return a}function Te(){return{version:0,ids:[],kinds:new Uint8Array,subKinds:new Uint8Array,centerX:new Float32Array,centerY:new Float32Array,centerZ:new Float32Array,radius:new Float32Array,cellX:new Int16Array,cellZ:new Int16Array,memberCount:new Uint16Array}}function Ee(e){let t=ve(e);if(!t)return null;let n=e.tiles.find(e=>e.objectType&&e.objectType!==`none`)?.objectType??`none`,r=n===`grass`?1:n===`water`?2:n===`sand`?3:n===`snowfield`?4:0;return{id:e.id,kind:0,subKind:r,record:t,members:e.tiles.length}}function De(e){let t=ye(e);return t&&{id:e.id,kind:1,subKind:10,record:t,members:e.walls.length}}function Oe(e){return{id:e.id,kind:3,subKind:30,record:be(e),members:1}}function ke(e){let t=e.type===`tree`||e.type===`sakura`?20:e.type===`flag`?21:e.type===`fire`?22:e.type===`billboard`?23:e.type===`model`?24:22;return{id:e.id,kind:2,subKind:t,record:Se(e),members:1}}function Ae(e,t){let n=e.length,r={version:t,ids:Array(n),kinds:new Uint8Array(n),subKinds:new Uint8Array(n),centerX:new Float32Array(n),centerY:new Float32Array(n),centerZ:new Float32Array(n),radius:new Float32Array(n),cellX:new Int16Array(n),cellZ:new Int16Array(n),memberCount:new Uint16Array(n)};for(let t=0;t<n;t+=1){let{id:n,kind:i,subKind:a,record:o,members:s}=e[t];r.ids[t]=n,r.kinds[t]=i,r.subKinds[t]=a,r.centerX[t]=o.centerX,r.centerY[t]=o.centerY,r.centerZ[t]=o.centerZ,r.radius[t]=o.radius,r.cellX[t]=o.cellX,r.cellZ[t]=o.cellZ,r.memberCount[t]=s}return r}function je(){let e=new WeakMap,t=(t,n,r)=>{for(let i of t){let t=e.get(i);t===void 0&&(t=n(i),e.set(i,t)),t&&r.push(t)}};return(e,n)=>{let r=[];return t(e.tileGroups,Ee,r),t(e.wallGroups,De,r),t(e.blocks??[],Oe,r),t(e.objects,ke,r),Ae(r,n)}}var Me=[`tile`,`wall`,`object`,`block`];function Ne(e,t,n){return e===`tile`?t>=3.2?t:0:e===`wall`?t>=2.4||n>=4?t*1.15:0:e===`block`?t*1.1:0}function Pe(e,t,n){return e.centerX===t.centerX[n]&&e.centerY===t.centerY[n]&&e.centerZ===t.centerZ[n]&&e.radius===t.radius[n]&&e.cellX===t.cellX[n]&&e.cellZ===t.cellZ[n]&&e.members===t.memberCount[n]}function Fe(e,t,n){let r=e[t];r.byId.delete(n),_e(r.buckets,n);let i=`${t}:${n}`;e.occluders.byKey.delete(i)&&_e(e.occluders.buckets,i)}function Ie(e,t){let n=new Set;for(let r=0;r<t.ids.length;r+=1){let i=t.ids[r],a=Me[t.kinds[r]??-1];if(!i||!a)continue;let o=e[a],s=o.byId.get(i);if(s&&Pe(s,t,r)){n.add(s);continue}s&&Fe(e,a,i);let c={id:i,centerX:t.centerX[r],centerY:t.centerY[r],centerZ:t.centerZ[r],radius:t.radius[r],cellX:t.cellX[r],cellZ:t.cellZ[r],members:t.memberCount[r]};o.byId.set(i,c),ge(o.buckets,i,c),n.add(c);let l=Ne(a,c.radius,c.members);if(l>0){let t={...c,key:`${a}:${i}`,kind:a,strength:l};e.occluders.byKey.set(t.key,t),ge(e.occluders.buckets,t.key,t)}}for(let t of pe)for(let[r,i]of e[t].byId)n.has(i)||Fe(e,t,r)}var Le=0,Re=1,ze=2,Be=3,Ve=4,He=5,Ue=6,We=7,Ge=8,Ke=9,qe=10,Je=11,Ye=12;function Xe(e,t){let n=e.kinds[t],r=e.subKinds[t];if(n===0)return r===1?1:r===2?2:r===3?3:r===4?4:0;if(n===1)return 5;if(n===3)return 10;if(n===2){if(r===20)return 6;if(r===21)return 7;if(r===22)return 8;if(r===23)return 9;if(r===24)return 11}return 0}function Ze(e,t){let n=new Set,r=new Set,i=new Set,a=new Set,o=new Uint32Array(12),s=Math.min(e.ids.length,t.length);for(let c=0;c<s;c+=1){if((t[c]??0)===0)continue;let s=e.ids[c];if(!s)continue;let l=e.kinds[c];l===0?n.add(s):l===1?r.add(s):l===3?i.add(s):l===2&&a.add(s);let u=Xe(e,c);o[u]=(o[u]??0)+1}return{version:e.version,tileIds:n,wallIds:r,blockIds:i,objectIds:a,clusterCounts:o}}var Qe=4;function $e(e,t){let n=t*4;return e.args[n+1]??0}var et=[{id:0,label:`tile`,vertexCountHint:36},{id:1,label:`grass`,vertexCountHint:36},{id:2,label:`water`,vertexCountHint:36},{id:3,label:`sand`,vertexCountHint:36},{id:4,label:`snowfield`,vertexCountHint:36},{id:5,label:`wall`,vertexCountHint:36},{id:6,label:`sakura`,vertexCountHint:12},{id:7,label:`flag`,vertexCountHint:12},{id:8,label:`fire`,vertexCountHint:6},{id:9,label:`billboard`,vertexCountHint:6},{id:10,label:`block`,vertexCountHint:36},{id:11,label:`model`,vertexCountHint:36}];function C(){return{version:0,args:new Uint32Array(48),dirtyRanges:[]}}function tt(e,t){if(e.length!==t.length)return t.length>0?[{start:0,end:t.length/4}]:[];let n=[],r=-1,i=t.length/4;for(let a=0;a<i;a+=1){let i=a*4,o=!1;for(let n=0;n<4;n+=1)if((e[i+n]??0)!==(t[i+n]??0)){o=!0;break}if(o){r<0&&(r=a);continue}r>=0&&(n.push({start:r,end:a}),r=-1)}return r>=0&&n.push({start:r,end:i}),n}function nt(e,t,n){let r=new Uint32Array(48);for(let e of et){let n=e.id*4;r[n]=e.vertexCountHint,r[n+1]=t[e.id]??0,r[n+2]=0,r[n+3]=0}return{version:e,args:r,dirtyRanges:tt((n??C()).args,r)}}function rt(e){return{version:e.version,slices:e.dirtyRanges.map(t=>{let n=t.start*4,r=(t.end-t.start)*4;return{byteOffset:n*e.args.BYTES_PER_ELEMENT,elementOffset:n,elementCount:r,data:e.args.subarray(n,n+r)}})}}var it=4,at=5;function w(){return{version:0,count:0,spatial:new Float32Array,meta:new Int32Array,spatialDirty:[],metaDirty:[]}}function ot(e){let t=new Float32Array(e.ids.length*4);for(let n=0;n<e.ids.length;n+=1){let r=n*4;t[r]=e.centerX[n]??0,t[r+1]=e.centerY[n]??0,t[r+2]=e.centerZ[n]??0,t[r+3]=e.radius[n]??0}return t}function st(e){let t=new Int32Array(e.ids.length*5);for(let n=0;n<e.ids.length;n+=1){let r=n*5;t[r]=e.cellX[n]??0,t[r+1]=e.cellZ[n]??0,t[r+2]=e.kinds[n]??0,t[r+3]=e.subKinds[n]??0,t[r+4]=e.memberCount[n]??0}return t}function ct(e,t,n){if(e.length!==t.length)return t.length>0?[{start:0,end:Math.ceil(t.length/n)}]:[];let r=[],i=-1,a=Math.ceil(t.length/n);for(let o=0;o<a;o+=1){let a=o*n,s=!1;for(let r=0;r<n;r+=1)if((e[a+r]??0)!==(t[a+r]??0)){s=!0;break}if(s){i<0&&(i=o);continue}i>=0&&(r.push({start:i,end:o}),i=-1)}return i>=0&&r.push({start:i,end:a}),r}function lt(e,t){let n=ot(e),r=st(e),i=t??w();return{version:e.version,count:e.ids.length,spatial:n,meta:r,spatialDirty:ct(i.spatial,n,4),metaDirty:ct(i.meta,r,5)}}function ut(e,t,n){return n.map(n=>{let r=n.start*t,i=(n.end-n.start)*t;return{byteOffset:r*e.BYTES_PER_ELEMENT,elementOffset:r,elementCount:i,data:e.subarray(r,r+i)}})}function dt(e){return{version:e.version,count:e.count,spatial:ut(e.spatial,4,e.spatialDirty),meta:ut(e.meta,5,e.metaDirty)}}function T(){return{backend:`none`,uploadedVersion:0,spatialBuffer:null,metaBuffer:null,indirectArgsBuffer:null,spatialBytes:0,metaBytes:0,indirectArgsBytes:0}}function ft(e){if(typeof e!=`object`||!e)return null;let t=e,n=t.backend?.device??t.device??null;return!n||typeof n.createBuffer!=`function`||typeof n.queue?.writeBuffer!=`function`?null:n}function E(e){e?.destroy&&e.destroy()}function pt(e){E(e.spatialBuffer),E(e.metaBuffer),E(e.indirectArgsBuffer)}function mt(e,t,n,r,i,a=136){return r<=0?null:t&&n===r?t:e.createBuffer({label:i,size:r,usage:a})}function ht(e,t){e.spatialBuffer!==t.spatialBuffer&&E(e.spatialBuffer),e.metaBuffer!==t.metaBuffer&&E(e.metaBuffer),e.indirectArgsBuffer!==t.indirectArgsBuffer&&E(e.indirectArgsBuffer)}function gt(e,t,n){if(t.device===e&&t.uploadedSpatialVersion===n.version)return t;let r=t.device&&t.device!==e?T():t,i=dt(n),a=n.spatial.byteLength,o=n.meta.byteLength,s=null,c=null;try{if(s=mt(e,r.spatialBuffer,r.spatialBytes,a,`building-spatial`),c=mt(e,r.metaBuffer,r.metaBytes,o,`building-meta`),s){if(s!==r.spatialBuffer)e.queue.writeBuffer(s,0,n.spatial);else for(let t of i.spatial)e.queue.writeBuffer(s,t.byteOffset,t.data)}if(c){if(c!==r.metaBuffer)e.queue.writeBuffer(c,0,n.meta);else for(let t of i.meta)e.queue.writeBuffer(c,t.byteOffset,t.data)}}catch(e){throw s!==r.spatialBuffer&&E(s),c!==r.metaBuffer&&E(c),e}let l={...r,device:e,backend:`webgpu`,uploadedSpatialVersion:n.version,uploadedVersion:Math.max(r.uploadedVersion,n.version),spatialBuffer:s,metaBuffer:c,spatialBytes:a,metaBytes:o};return ht(t,l),l}function _t(e,t,n){if(t.device===e&&t.uploadedIndirectVersion===n.version)return t;let r=t.device&&t.device!==e?T():t,i=rt(n),a=n.args.byteLength,o=null;try{if(o=mt(e,r.indirectArgsBuffer,r.indirectArgsBytes,a,`building-indirect-args`,392),o){if(o!==r.indirectArgsBuffer)e.queue.writeBuffer(o,0,n.args);else for(let t of i.slices)e.queue.writeBuffer(o,t.byteOffset,t.data)}}catch(e){throw o!==r.indirectArgsBuffer&&E(o),e}let s={...r,device:e,backend:`webgpu`,uploadedIndirectVersion:n.version,uploadedVersion:Math.max(r.uploadedVersion,n.version),indirectArgsBuffer:o,indirectArgsBytes:a};return ht(t,s),s}function vt(){let e=Te(),t=w(),n=C();return(0,m.create)(r=>{let i=!1,a=()=>{if(i)throw Error(`Building GPU upload resource updates cannot be reentrant.`)};return{snapshot:e,gpuMirror:t,uploadResources:T(),drawMirror:n,setSnapshot:e=>r({snapshot:e}),setGpuMirror:e=>r({gpuMirror:e}),setUploadResources:e=>r(t=>{a(),i=!0;try{return{uploadResources:typeof e==`function`?e(t.uploadResources):e}}finally{i=!1}}),releaseUploadResources:()=>{a();let e=T();try{r(t=>(e=t.uploadResources,{uploadResources:T()}))}finally{pt(e)}},setDrawMirror:e=>r({drawMirror:e}),reset:()=>{a();let i=T();try{r(r=>(i=r.uploadResources,{snapshot:e,gpuMirror:t,uploadResources:T(),drawMirror:n}))}finally{pt(i)}}}})}var{useStore:yt,useStoreApi:bt}=i.t(`useBuildingRenderStateStore`,vt,()=>r.n()?.buildingRenderStore);function D(e,t){if(e===t)return!0;if(e.size!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function xt(){let e=new Set;return(0,m.create)(t=>({initialized:!1,visibleTileGroupIds:e,visibleWallGroupIds:e,visibleBlockIds:e,visibleObjectIds:e,setVisible:({tileIds:n,wallIds:r,blockIds:i,objectIds:a})=>t(t=>{let o=!D(t.visibleTileGroupIds,n),s=!D(t.visibleWallGroupIds,r),c=i??e,l=!D(t.visibleBlockIds,c),u=!D(t.visibleObjectIds,a);return!o&&!s&&!l&&!u&&t.initialized?t:{initialized:!0,visibleTileGroupIds:o?n:t.visibleTileGroupIds,visibleWallGroupIds:s?r:t.visibleWallGroupIds,visibleBlockIds:l?c:t.visibleBlockIds,visibleObjectIds:u?a:t.visibleObjectIds}}),reset:()=>t({initialized:!1,visibleTileGroupIds:e,visibleWallGroupIds:e,visibleBlockIds:e,visibleObjectIds:e})}))}var{useStore:St,useStoreApi:Ct}=i.t(`useBuildingVisibilityStore`,xt,()=>r.n()?.buildingVisibilityStore);function wt(e=!0,t){let n=e,r=-1/0,i=0,a=0,o;return(0,m.create)((e,s)=>({entries:new Map,current:null,register:t=>{let n={...t,position:t.position.clone()},i=new Map(s().entries);i.set(t.id,n),r=-1/0;let a=s().current;return e({entries:i,...a?.id===t.id?{current:{...a,label:t.label,key:t.key}}:{}}),()=>{s().entries.get(t.id)===n&&s().unregister(t.id)}},unregister:t=>{let n=s().entries;if(!n.has(t))return;let i=new Map(n);i.delete(t),r=-1/0,e({entries:i,...s().current?.id===t?{current:null}:{}})},updatePosition:(e,t)=>{let n=s().entries.get(e);n&&n.position.copy(t)},getAll:()=>Array.from(s().entries.values()),setCurrent:t=>{(!n||t&&!s().entries.has(t.id))&&(t=null);let r=s().current;r!==t&&(r&&t&&r.id===t.id&&r.label===t.label&&r.key===t.key&&Math.round(r.distance*10)===Math.round(t.distance*10)||e({current:t}))},activateCurrent:()=>{if(!n)return!1;let e=s().current;if(!e)return!1;let r=s().entries.get(e.id);if(!r)return!1;let i=o?(r.getPosition?.()??r.position).distanceTo(o):e.distance;return!Number.isFinite(i)||i>r.range||r.range<0?(s().setCurrent(null),!1):(r.onActivate(),t?.(r),!0)},track:(e,t,c=80)=>{if(!n||!Number.isFinite(t)||((o??=new f.Vector3).copy(e),t>=r&&t-r<Math.max(.001,c)))return;r=t,i++;let l,u=1/0;for(let t of s().entries.values()){a++;let n=(t.getPosition?.()??t.position).distanceToSquared(e);Number.isFinite(n)&&t.range>=0&&n<=t.range*t.range&&n<u&&(l=t,u=n)}s().setCurrent(l?{id:l.id,label:l.label,key:l.key,distance:Math.sqrt(u)}:null)},suspend:()=>{n=!1,r=-1/0,o=void 0,s().current&&e({current:null})},resume:()=>{n||(n=!0,r=-1/0)},getStats:()=>({active:n,scans:i,visited:a})}))}var{useStore:Tt,useStoreApi:Et}=i.t(`useInteractablesStore`,()=>wt(),()=>r.n()?.interactablesStore);function O(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619);return t>>>0}function k(e){let t=e+1831565813>>>0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function A(e){return k(O(e))}function j(e,t,n=0){return k(O(e)^Math.imul(t+1,2654435761)^Math.imul(n+1,2246822507))}function Dt(e,t){let n=e.home??e.position,r=O(e.instanceId)^Math.round(e.timestamp*1e3),i=k(r)*Math.PI*2,a=Math.max(.5,t)*(.35+k(r^2654435769)*.65);return[n[0]+Math.cos(i)*a,n[1],n[2]+Math.sin(i)*a]}var Ot=32,M=new Map;function N(e){return M.set(e.id,e),()=>{M.delete(e.id)}}function kt(e){return M.get(e)}function At(e){M.delete(e)}var jt=e=>({...e,...e.waypoints?{waypoints:e.waypoints.map(e=>[...e])}:{}}),P=e=>({...e,...e.memory?{memory:{...e.memory}}:{}}),F=e=>({...e}),I=e=>e.map(e=>({...e,...e.payload?{payload:{...e.payload}}:{}}));function Mt(e,t={}){let n={mode:e.behavior?.mode??`idle`,speed:e.behavior?.speed??2.2,...e.behavior?.loop===void 0?{}:{loop:e.behavior.loop},...e.behavior?.waypoints?{waypoints:e.behavior.waypoints.map(e=>[...e])}:{},...e.behavior?.wanderRadius===void 0?{}:{wanderRadius:e.behavior.wanderRadius},...e.behavior?.waitSeconds===void 0?{}:{waitSeconds:e.behavior.waitSeconds},...e.behavior?.idleAnimation?{idleAnimation:e.behavior.idleAnimation}:{},...e.behavior?.moveAnimation?{moveAnimation:e.behavior.moveAnimation}:{},...e.behavior?.arriveAnimation?{arriveAnimation:e.behavior.arriveAnimation}:{}};return{id:t.id??`npc-behavior-${e.id}`,name:t.name??`${e.name} Behavior`,...t.description?{description:t.description}:{},...t.role?{role:t.role}:{},behavior:n,...e.brain?{brain:P(e.brain)}:{},...e.perception?{perception:F(e.perception)}:{},...e.events?{events:I(e.events)}:{},...t.tags?{tags:[...t.tags]}:{}}}function Nt(e,t){return{...e,behavior:jt(t.behavior),...t.brain?{brain:P(t.brain)}:{},...t.perception?{perception:F(t.perception)}:{},...t.events?{events:I(t.events)}:{}}}function Pt(e,t={}){return{id:t.id??e.id,name:t.name??e.name,ownerType:t.ownerType??`npc`,...t.description??e.description?{description:t.description??e.description}:{},...t.role??e.role?{role:t.role??e.role}:{},behavior:jt(e.behavior),...e.brain?{brain:P(e.brain)}:{},...e.perception?{perception:F(e.perception)}:{},...e.events?{events:I(e.events)}:{},...t.tags?{tags:[...t.tags]}:e.tags?{tags:[...e.tags]}:{}}}function Ft(e){return{id:e.id,name:e.name,...e.description?{description:e.description}:{},...e.role?{role:e.role}:{},behavior:jt(e.behavior),...e.brain?{brain:P(e.brain)}:{},...e.perception?{perception:F(e.perception)}:{},...e.events?{events:I(e.events)}:{},...e.tags?{tags:[...e.tags]}:{}}}function It(e,t){return Nt(e,Ft(t))}function Lt(e,t=!1){return e.perceived.find(n=>e.entered?.includes(n.instanceId)&&(!t||n.actor))}function Rt(e,t){switch(e.type){case`always`:return!0;case`navigationIdle`:return t.navigationState!==`moving`;case`perceivedAny`:return t.perceived.length>0;case`perceivedEntered`:return Lt(t,e.actorsOnly)!==void 0;case`memoryEquals`:return t.memory?.[e.key]===e.value}}function zt(e,t){switch(e.type){case`point`:return e.value;case`self`:return t.position;case`nearestPerceived`:return t.perceived[0]?.position;case`entered`:return Lt(t,e.actorsOnly)?.position}}function Bt(e,t){if(e.action.type===`wander`)return{type:`moveTo`,target:Dt(t,e.action.radius??4),...e.action.speed===void 0?{}:{speed:e.action.speed}};if(e.action.type===`lookAtTarget`){let n=zt(e.action.target,t);return n?{type:`lookAt`,target:n}:void 0}if(e.action.type!==`moveToTarget`)return e.action;let n=zt(e.action.target,t);if(n)return{type:`moveTo`,target:n,...e.action.speed===void 0?{}:{speed:e.action.speed},...e.action.animationId?{animationId:e.action.animationId}:{}}}function Vt(e,t,n=`next`){return e.find(e=>e.source===t&&e.branch===n)??e.find(e=>e.source===t&&e.branch===void 0)}function Ht(e,t){let n=new Map(e.nodes.map(e=>[e.id,e])),r=[],i=e.nodes.find(e=>e.type===`start`)??e.nodes[0],a=0;for(;i&&a<Ot;){if(a+=1,i.type===`condition`){let r=Rt(i.condition,t)?`true`:`false`;i=n.get(Vt(e.edges,i.id,r)?.target??``);continue}if(i.type===`action`){let e=Bt(i,t);e&&r.push(e)}i=n.get(Vt(e.edges,i.id)?.target??``)}return r}var L=e=>typeof e==`object`&&!!e&&!Array.isArray(e),R=e=>typeof e==`number`&&Number.isFinite(e),z=e=>R(e)&&e>=0,Ut=e=>Array.isArray(e)&&e.length===3&&e.every(R),B=(e,t)=>e===void 0||t(e),V=e=>typeof e==`string`,Wt=e=>typeof e==`boolean`;function H(e,t=0){return t>32?!1:e===null||V(e)||Wt(e)||R(e)?!0:Array.isArray(e)?e.every(e=>H(e,t+1)):L(e)&&Object.values(e).every(e=>H(e,t+1))}function Gt(e){if(!L(e)||!B(e.animationId,V)||!B(e.speed,z)||!B(e.loop,Wt))return!1;switch(e.type){case`idle`:return!0;case`moveTo`:case`lookAt`:return Ut(e.target);case`patrol`:return Array.isArray(e.waypoints)&&e.waypoints.every(Ut);case`wander`:return B(e.radius,z)&&B(e.waitSeconds,z);case`playAnimation`:return V(e.animationId);case`speak`:return V(e.text)&&B(e.duration,z);case`interact`:return V(e.targetId);case`remember`:return V(e.key)&&H(e.value);default:return!1}}function Kt(e){return L(e)&&B(e.reason,V)&&B(e.ttlMs,z)&&B(e.actions,e=>Array.isArray(e)&&e.every(Gt))}var qt={endpoint:``,timeoutMs:3e3,minRequestIntervalMs:700,headers:{},fallbackToScriptedBehavior:!0},Jt=1e3,Yt=6e4;function Xt(e,t){let n=e.behavior;if(n&&n.mode!==`idle`&&t.navigationState!==`moving`){if(n.mode===`patrol`&&n.waypoints?.length)return{source:`reinforcement`,reason:`fallback patrol`,actions:[{type:`patrol`,waypoints:n.waypoints,speed:n.speed,loop:n.loop??!0,...n.moveAnimation?{animationId:n.moveAnimation}:{}}]};if(n.mode===`wander`)return{source:`reinforcement`,reason:`fallback wander`,actions:[{type:`moveTo`,target:Dt(t,n.wanderRadius??4),speed:n.speed,...n.moveAnimation?{animationId:n.moveAnimation}:{}}]}}}function Zt(e={}){let t=new Map,n=e.now??(()=>performance.now()),r={...qt,headers:{}},i=e.active??!0,a=0,o=0,s=0,c=0,l=0,u=0,d=()=>{l++,u=n()+Math.min(Yt,Jt*2**(l-1))},f=()=>({...r,headers:{...r.headers}}),p=e=>{let t=e.controller;delete e.controller,e.timer!==void 0&&clearTimeout(e.timer),delete e.timer,delete e.queued,t?.abort()},m=e=>{if(e!==void 0){let n=t.get(e);t.delete(e),n&&p(n)}else{let e=[...t.values()];t.clear(),e.forEach(p)}},h=e=>{let t={...r,...e,headers:{...r.headers,...e.headers}};if(t.endpoint=typeof t.endpoint==`string`?t.endpoint.trim():``,!Number.isFinite(t.timeoutMs)||t.timeoutMs<=0||!Number.isFinite(t.minRequestIntervalMs)||t.minRequestIntervalMs<0)throw TypeError(`Invalid NPC policy endpoint or request timing`);return m(),r=t,l=0,u=0,f()};e.config&&h(e.config);let g=t=>e.isCurrent?.(t)??!0;async function _(r,m){let h=new AbortController;m.controller=h;let _=f(),ee=n(),v=()=>i&&t.get(r.instance.id)===m&&m.controller===h&&!h.signal.aborted&&g(r);m.timer=setTimeout(()=>{m.controller===h&&(c++,p(m))},_.timeoutMs),a++;try{let{instance:t,observation:i}=r,a=t.brain?.policyId??t.brain?.providerId,c=await(e.fetch??globalThis.fetch)(_.endpoint,{method:`POST`,signal:h.signal,headers:{"Content-Type":`application/json`,...a?{"X-Policy-Provider":a}:{},..._.apiKey?{Authorization:`Bearer ${_.apiKey}`}:{},..._.headers},body:JSON.stringify({...a?{provider:a}:{},instance:{id:t.id,templateId:t.templateId,name:t.name,brainMode:t.brain?.mode??`none`,behaviorMode:t.behavior?.mode??`idle`},observation:i})});if(!c.ok){d(),v()||o++;return}if(l=0,u=0,!v()){o++;return}let f=await c.json();if(!v()){o++;return}if(!Kt(f)){s++;return}let p=ee+Math.min(f.ttlMs??_.timeoutMs,_.timeoutMs);if(n()>=p){o++;return}f.actions?.length&&(m.queued={expiresAt:p,decision:{source:`reinforcement`,reason:f.reason??`policy@${i.timestamp.toFixed(2)}`,actions:f.actions}})}catch{h.signal.aborted||d()}finally{m.controller===h&&(m.timer!==void 0&&clearTimeout(m.timer),delete m.timer,delete m.controller)}}return{adapter:e=>{if(!i||!g(e))return;let{instance:a,observation:s}=e,c=t.get(a.id);c&&(c.brain!==a.brain||c.templateId!==a.templateId)&&(m(a.id),c=void 0),c||(c={brain:a.brain,templateId:a.templateId,lastRequestAtMs:-1/0},t.set(a.id,c));let l=n();if(c.queued){let e=c.queued;if(delete c.queued,l<e.expiresAt)return e.decision;o++}return r.endpoint&&!c.controller&&l>=u&&l-c.lastRequestAtMs>=r.minRequestIntervalMs&&(c.lastRequestAtMs=l,_(e,c)),r.fallbackToScriptedBehavior?Xt(a,s):void 0},configure:h,getConfig:f,release:m,suspend(){i=!1,m()},resume(){i=!0},dispose(){i=!1,m()},getStats(){let e=0,n=0;for(let r of t.values())e+=Number(!!r.controller),n+=Number(!!r.queued);return{active:i,instances:t.size,pending:e,queued:n,requests:a,discardedResponses:o,invalidResponses:s,timedOutRequests:c,failures:l}}}}function Qt(e,t){let n=[`default`,`openai`,`huggingface`].map(n=>e.register(`reinforcement`,n,t.adapter));return()=>n.forEach(e=>e())}var U=Zt(),$t=U.configure,en=U.getConfig;function tn(e,t){return`${e}:${t}`}function nn(e,t){let n=e[0]-t[0],r=e[1]-t[1],i=e[2]-t[2];return n*n+r*r+i*i}function rn(){let e=new Map,t=!0;return{get isActive(){return t},register(t,n,r){let i=tn(t,n),a={adapter:r};return e.set(i,a),()=>{e.get(i)===a&&e.delete(i)}},resolve(n){if(t&&n)for(let t of[n.policyId,n.providerId,`default`]){let r=t?e.get(tn(n.mode,t)):void 0;if(r)return r.adapter}},suspend(){t=!1},resume(){t=!0},dispose(){t=!1,e.clear()}}}var W;function G(){return W||(W=rn(),Qt(W,U)),W}function an(){G()}function on(e,t,n){return G().register(e,t,n)}function K(e,t,n,r=t.values()){let i=e.perception,a=i?.enabled?i.sightRadius:0,o=a*a,s=[];if(a>0)for(let t of r){if(t.id===e.id)continue;let n=nn(e.position,t.position);if(n>o)continue;let r=Math.sqrt(n);s.push({instanceId:t.id,name:t.name,position:t.position,distance:r,brainMode:t.brain?.mode??`none`})}return s.sort((e,t)=>e.distance-t.distance),{instanceId:e.id,templateId:e.templateId,timestamp:n,position:e.position,rotation:e.rotation,currentAnimation:e.currentAnimation??e.behavior?.idleAnimation??`idle`,navigationState:e.navigation?.state??`none`,behaviorMode:e.behavior?.mode??`idle`,brainMode:e.brain?.mode??`none`,perceptionEnabled:i?.enabled??!1,perceived:s,...e.brain?.memory?{memory:e.brain.memory}:{}}}function sn(e,t,n){let r=e.brain?.blueprintId,i=r?n?n.get(r):kt(r):void 0;if(i){let e=Ht(i,t);if(e.length>0)return{source:`blueprint`,reason:i.name,actions:e}}let a=e.behavior;if(a&&a.mode!==`idle`&&t.navigationState!==`moving`){if(a.mode===`patrol`&&a.waypoints&&a.waypoints.length>0)return{source:`scripted`,reason:`patrol behavior`,actions:[{type:`patrol`,waypoints:a.waypoints,speed:a.speed,...a.loop===void 0?{}:{loop:a.loop},...a.moveAnimation?{animationId:a.moveAnimation}:{}}]};if(a.mode===`wander`)return{source:`scripted`,reason:`wander behavior`,actions:[{type:`moveTo`,target:Dt(t,a.wanderRadius??4),speed:a.speed,...a.moveAnimation?{animationId:a.moveAnimation}:{}}]}}}function cn(e,t,n,r=G()){let i=e.brain?.mode??`none`;if(i===`none`||!r.isActive)return;let a=r.resolve(e.brain);if(a)return a({instance:e,observation:t});if(i===`scripted`)return sn(e,t,n)}var ln=class{constructor(){this.grid=new u.t({cellSize:16}),this.instances=new Map,this.order=new Map,this.position=new f.Vector3,this.nearby=[]}refresh(e){for(let t of this.order.keys())e.has(t)||this.grid.remove(t);this.order.clear(),this.instances=e;let t=0;for(let n of e.values())this.order.set(n.id,t++),this.grid.update(n.id,this.position.set(...n.position))}observe(e,t){let n=e.perception;if(!n?.enabled||n.sightRadius<=0)return K(e,this.instances,t);let r=this.grid.getNearby(this.position.set(...e.position),n.sightRadius,this.nearby);return r.sort((e,t)=>this.order.get(e)-this.order.get(t)),K(e,this.instances,t,r.map(e=>this.instances.get(e)))}},un=3;function dn(e,t,n){if(e.isWalkable(t[0],t[2],n))return t;let[r,i]=e.worldToGrid(t[0],t[2]),a,o=1/0;for(let s=1;s<=un&&!a;s++)for(let c=-s;c<=s;c++)for(let l=-s;l<=s;l++){if(Math.max(Math.abs(l),Math.abs(c))!==s)continue;let[u,,d]=e.gridToWorld(r+l,i+c,t[1]),f=(u-t[0])**2+(d-t[2])**2;f<o&&e.isWalkable(u,d,n)&&(a=[u,t[1],d],o=f)}return a}function fn(e,t,n,r){if(!e?.isReady)return[[...r]];let i=t.volume?{agentRadius:t.volume.radius*Math.max(t.scale[0],t.scale[2])}:{},a=dn(e,n,i),o=dn(e,r,i),s=a&&o?d.n(e,{id:t.id,position:[...a],...i},o,{includeStart:!0}):[],c=s.slice(1).map(([e,t,n])=>[e,t,n]),l=c[c.length-1]??s[0];return a&&o&&l&&(Math.hypot(l[0]-o[0],l[2]-o[2])>1e-6&&c.push([...o]),a!==n&&c.unshift([...a])),c}var pn=3,mn=3,hn=Math.PI/.3,gn=.35,_n=.55,vn=1,yn=2;function bn(e,t){return Math.atan2(Math.sin(t-e),Math.cos(t-e))}var xn=new Set([`speak`,`lookAt`]);function Sn(e,t){let n=[];for(let e of t){let t=e.decision?.actions.filter(e=>!xn.has(e.type));t?.length&&n.push({...e,decision:{...e.decision,actions:t}})}if(!n.length)return;let r=e.getState();if(r.applyNPCDecisions){r.applyNPCDecisions(n);return}for(let{instanceId:e,decision:t}of n)r.executeInstanceActions(e,t.actions)}var q=new WeakMap;function Cn(e){return q.get(e)}var wn=class{get poseRevision(){return this.movedPoses}constructor(e,t,n={}){if(this.store=e,this.loop=t,this.options=n,this.poses=new Map,this.routes=new Map,this.bodies=new Map,this.dirty=!0,this.owners=0,this.active=!1,this.euler=new f.Euler,this.rotation=new f.Quaternion,this.translation={x:0,y:0,z:0},this.perception=new ln,this.views=new Map,this.records=new Map,this.recordListeners=new Set,this.speech=new Map,this.speechChanges=0,this.gestures=new Map,this.gestureChanges=0,this.now=0,this.actors=new Map,this.movedPoses=0,q.has(e))throw Error(`NPC store already has a simulation owner`);q.set(e,this),this.navigation=n.navigation}acquire(){++this.owners===1&&this.resume();let e=!1;return()=>{e||(e=!0,--this.owners===0&&this.suspend())}}resume(){this.active||(this.active=!0,this.dirty=!0,this.unsubscribe=this.store.subscribe(()=>{this.dirty=!0,this.syncClock()}),this.syncClock())}suspend(){this.active=!1,this.unsubscribe?.(),this.unsubscribe=void 0,this.releaseSystem?.(),this.releaseSystem=void 0,this.releaseClock?.(),this.releaseClock=void 0}syncClock(){if(this.active&&this.store.getState().instances.size>0){if(this.releaseSystem)return;this.releaseSystem=this.loop.clock.addSystem({id:`npc-simulation`,phase:`simulation`,priority:-10,update:e=>this.update(e)}),this.releaseClock=this.loop.acquire()}else this.releaseSystem?.(),this.releaseSystem=void 0,this.releaseClock?.(),this.releaseClock=void 0,this.store.getState().instances.size||(this.poses.clear(),this.views.clear(),this.records.clear(),this.speech.clear(),this.gestures.clear(),this.perception.refresh(new Map))}reconcile(){if(!this.dirty)return;this.dirty=!1;let e=this.store.getState().instances;for(let t of this.poses.keys())e.has(t)||(this.poses.delete(t),this.routes.delete(t),this.views.delete(t),this.records.delete(t),this.gestures.delete(t),this.speech.delete(t)&&this.speechChanges++);for(let t of e.values()){let e=this.poses.get(t.id);e||(e={position:[...t.position],rotation:[...t.rotation],sourcePosition:t.position,sourceRotation:t.rotation,home:[...t.position],nextDecision:-1,moved:!0,revision:0,heading:t.rotation[1],attentionUntil:-1/0,nextGesture:-1,gestures:0},this.poses.set(t.id,e)),e.sourcePosition!==t.position&&(e.position=[...t.position],e.home=[...t.position],e.sourcePosition=t.position,e.nextDecision=-1,e.moved=!0,this.routes.delete(t.id)),e.sourceRotation!==t.rotation&&(e.rotation=[...t.rotation],e.heading=t.rotation[1],e.sourceRotation=t.rotation,e.moved=!0)}}livePose(e){return this.active||(this.dirty=!0),this.reconcile(),this.poses.get(e)}getPose(e){return this.livePose(e)}getPoseRevision(e){return this.poses.get(e)?.revision??0}snapshotInstances(){return this.active||(this.dirty=!0),this.reconcile(),new Map(Array.from(this.store.getState().instances,([e,t])=>{let n=this.poses.get(e);return[e,n?{...t,position:[...n.position],rotation:[...n.rotation]}:t]}))}setNavigation(e){this.navigation=e,this.routes.clear()}nextEventAt(){let e=1/0;for(let t of this.store.getState().instances.values()){let n=this.poses.get(t.id);(t.brain?.mode??`none`)!==`none`&&(e=Math.min(e,n&&n.nextDecision>=0?n.nextDecision:this.now)),n&&(t.behavior?.gestures?.clips.length&&n.nextGesture>=0&&(e=Math.min(e,n.nextGesture)),n.attentionUntil>this.now&&(e=Math.min(e,n.attentionUntil)))}for(let t of this.speech.values())e=Math.min(e,t.until);return Number.isFinite(e)?e:void 0}setActor(e,t,n){let r=this.actors.get(e);r&&r.name===t&&r.position[0]===n[0]&&r.position[1]===n[1]&&r.position[2]===n[2]||this.actors.set(e,{id:e,templateId:`actor`,name:t,position:[n[0],n[1],n[2]],rotation:[0,0,0],scale:[1,1,1]})}removeActor(e){this.actors.delete(e)}getRecord(e){return this.records.get(e)}speak(e,t,n=pn){this.speech.set(e,{text:t,until:this.now+Math.max(0,n)}),this.speechChanges++}getSpeech(e){return this.speech.get(e)}get speechRevision(){return this.speechChanges}gesture(e,t,n=!1){this.gestures.set(e,{clip:t,at:this.now,greeting:n}),this.gestureChanges++}getGesture(e){return this.gestures.get(e)}get gestureRevision(){return this.gestureChanges}greet(e,t){let n=this.livePose(e),r=this.store.getState().instances.get(e)?.behavior;if(n){if(t&&r?.faceOnInteract!==!1){n.attentionUntil=Math.max(this.now+mn,this.speech.get(e)?.until??-1/0);let r=t[0]-n.position[0],i=t[2]-n.position[2];Math.hypot(r,i)>1e-9&&(n.heading=Math.atan2(r,i))}r?.greetAnimation&&this.gesture(e,r.greetAnimation,!0)}}isAttending(e){return(this.poses.get(e)?.attentionUntil??-1/0)>this.now}subscribeRecords(e){return this.recordListeners.add(e),()=>{this.recordListeners.delete(e)}}perceptionView(){let e=new Map;for(let t of this.store.getState().instances.values()){let n=this.poses.get(t.id);if(!n){e.set(t.id,t);continue}let r=this.views.get(t.id);(!r||r.source!==t||r.revision!==n.revision)&&(r={source:t,revision:n.revision,view:{...t,position:[...n.position],rotation:[...n.rotation]}},this.views.set(t.id,r)),e.set(t.id,r.view)}for(let t of this.actors.values())e.has(t.id)||e.set(t.id,t);return e}bindBody(e,t){let n=this.bodies.get(e);n||(n=new Set,this.bodies.set(e,n)),n.add(t);let r=this.getPose(e);return r&&t.isValid()&&(t.setTranslation(this.writeTranslation(r),!0),t.setRotation(this.writeRotation(r),!0)),()=>{n.delete(t),!n.size&&this.bodies.get(e)===n&&this.bodies.delete(e)}}writeTranslation(e){let[t,n,r]=e.position;return this.translation.x=t,this.translation.y=n,this.translation.z=r,this.translation}writeRotation(e){let[t,n,r]=e.rotation;return this.rotation.setFromEuler(this.euler.set(t,n,r))}update(e){if(!this.active)return;this.now=e.elapsedSeconds;for(let[e,t]of this.speech)t.until<=this.now&&(this.speech.delete(e),this.speechChanges++);this.reconcile();let t=this.store.getState().instances;for(let n of t.values()){let t=this.poses.get(n.id),r=t.attentionUntil>this.now;r||this.move(n,t,e.deltaSeconds);let i=this.store.getState().instances.get(n.id)??n,a=!r&&i.navigation?.state!==`moving`;this.turn(i,t,e.deltaSeconds,r,a),a&&this.idleGesture(i,t);let o=this.bodies.get(n.id);if(o){for(let e of o)if(e.isValid()){if(e.isKinematic()){if(!t.moved)continue;e.setNextKinematicTranslation(this.writeTranslation(t)),e.setNextKinematicRotation(this.writeRotation(t))}else e.setTranslation(this.writeTranslation(t),!0),e.setRotation(this.writeRotation(t),!0)}}t.moved&&(this.movedPoses++,t.revision++),t.moved=!1}let n,r=[];for(let t of this.store.getState().instances.values()){let i=this.poses.get(t.id);if(!i||(t.brain?.mode??`none`)===`none`)continue;let a=Math.max(.5,t.behavior?.waitSeconds??1);if(i.nextDecision<0&&(i.nextDecision=e.elapsedSeconds+a*A(t.id)),e.elapsedSeconds+1e-9<i.nextDecision)continue;i.nextDecision=e.elapsedSeconds+a,n||(n=this.perceptionView(),this.perception.refresh(n));let o=this.perception.observe(n.get(t.id),e.elapsedSeconds);o.home=t.behavior?.home??i.home;let s=this.records.get(t.id)?.observation.perceived;o.entered=[];for(let e of o.perceived)this.actors.has(e.instanceId)&&(e.actor=!0),s?.some(t=>t.instanceId===e.instanceId)||o.entered.push(e.instanceId);r.push({instanceId:t.id,observation:o})}if(n){for(let e of r){let t=n.get(e.instanceId),r=this.store.getState().instances.get(e.instanceId);if(!r||r.brain!==t.brain||r.templateId!==t.templateId)continue;let i=cn(t,e.observation,this.options.scoped?this.store.getState().brainBlueprints:void 0,this.options.adapters);if(!this.active)return;this.store.getState().instances.get(e.instanceId)===r&&i?.actions.length&&(e.decision=i)}for(let e of r){this.records.set(e.instanceId,e);for(let t of e.decision?.actions??[])t.type===`speak`?this.speak(e.instanceId,t.text,t.duration):t.type===`lookAt`&&this.face(e.instanceId,t.target)}Sn(this.store,r);for(let e of this.recordListeners)e()}}face(e,t){let n=this.poses.get(e);if(!n)return;let r=t[0]-n.position[0],i=t[2]-n.position[2];Math.hypot(r,i)<=1e-9||(n.heading=Math.atan2(r,i),this.store.getState().instances.get(e)?.behavior?.turnSpeed===void 0&&(n.rotation[1]=n.heading,n.moved=!0))}turn(e,t,n,r,i){let a=e.behavior,o=t.heading;if(i&&a?.glance){let t=Math.sin(this.now*gn+A(e.id)*Math.PI*2);o+=t>_n?a.glance:t<-.55?-a.glance:0}let s=bn(t.rotation[1],o);if(Math.abs(s)<1e-6)return;let c=a?.turnSpeed===void 0?1/0:r?Math.max(a.turnSpeed,hn):a.turnSpeed;t.rotation[1]=bn(0,t.rotation[1]+Math.sign(s)*Math.min(Math.abs(s),c*n)),t.moved=!0}idleGesture(e,t){let n=e.behavior?.gestures;if(!n?.clips.length)return;let r=Math.max(1,n.everySeconds??20);if(t.nextGesture<0){t.nextGesture=this.now+r*(.5+j(e.id,vn));return}if(this.now<t.nextGesture)return;let i=t.gestures++;this.gesture(e.id,n.clips[Math.floor(j(e.id,yn,i)*n.clips.length)]),t.nextGesture=this.now+r*(.75+.5*j(e.id,vn,t.gestures))}route(e,t,n,r){let i=this.routes.get(e.id);if(i&&i.waypoints===n&&i.index===r)return i.steps;let a=fn(this.navigation,e,t.position,n[r]);return this.routes.set(e.id,{waypoints:n,index:r,steps:a}),a}move(e,t,n){let r=e.navigation;if(r?.state!==`moving`||!Number.isFinite(r.speed)||r.speed<=0)return;let i=r.speed*n;for(let n=r.currentIndex;n<r.waypoints.length;n++){let a=this.route(e,t,r.waypoints,n);for(;a.length>0;){let e=a[0],n=e[0]-t.position[0],r=e[1]-t.position[1],o=e[2]-t.position[2],s=Math.hypot(n,r,o);if(s>0){let e=Math.min(1,i/s);t.position[0]+=n*e,t.position[1]+=r*e,t.position[2]+=o*e,Math.hypot(n,o)>1e-9&&(t.heading=Math.atan2(n,o)),t.moved=!0}if(s>i+1e-9||(i=Math.max(0,i-s),a.shift(),i===0&&a.length>0))return}this.routes.delete(e.id),this.store.getState().advanceNavigation(e.id,[...t.position]),t.sourcePosition=this.store.getState().instances.get(e.id).position;let o=e.behavior?.pauseSeconds;if(n===r.waypoints.length-1&&o!==void 0&&(t.nextDecision=this.now+Math.max(0,o)),i===0)break}}};function Tn(e,t,{legacyBlueprintRegistry:n}){return{addTemplate:t=>e(e=>{e.templates.set(t.id,t)}),updateTemplate:(t,n)=>e(e=>{let r=e.templates.get(t);r&&e.templates.set(t,{...r,...n})}),removeTemplate:t=>e(e=>{e.templates.delete(t)}),addCategory:t=>e(e=>{e.categories.set(t.id,t)}),updateCategory:(t,n)=>e(e=>{let r=e.categories.get(t);r&&e.categories.set(t,{...r,...n})}),removeCategory:t=>e(e=>{e.categories.delete(t)}),addClothingSet:t=>e(e=>{e.clothingSets.set(t.id,t)}),updateClothingSet:(t,n)=>e(e=>{let r=e.clothingSets.get(t);r&&e.clothingSets.set(t,{...r,...n})}),removeClothingSet:t=>e(e=>{e.clothingSets.delete(t)}),addClothingCategory:t=>e(e=>{e.clothingCategories.set(t.id,t)}),updateClothingCategory:(t,n)=>e(e=>{let r=e.clothingCategories.get(t);r&&e.clothingCategories.set(t,{...r,...n})}),removeClothingCategory:t=>e(e=>{e.clothingCategories.delete(t)}),addAnimation:t=>e(e=>{e.animations.set(t.id,t)}),updateAnimation:(t,n)=>e(e=>{let r=e.animations.get(t);r&&e.animations.set(t,{...r,...n})}),removeAnimation:t=>e(e=>{e.animations.delete(t)}),addBrainBlueprint:t=>e(e=>{e.brainBlueprints.set(t.id,t),n&&N(t)}),updateBrainBlueprint:(t,r)=>e(e=>{let i=e.brainBlueprints.get(t);if(!i)return;let a={...i,...r};e.brainBlueprints.set(t,a),n&&N(a)}),removeBrainBlueprint:t=>e(e=>{e.brainBlueprints.delete(t),n&&At(t)}),setSelectedTemplate:t=>e(e=>{e.selectedTemplateId=t}),setSelectedCategory:t=>e(e=>{e.selectedCategoryId=t;let n=e.categories.get(t);if(n&&n.templateIds.length>0){let t=n.templateIds[0];t&&(e.selectedTemplateId=t)}else delete e.selectedTemplateId}),setSelectedInstance:t=>e(e=>{e.selectedInstanceId=t}),setSelectedClothingSet:t=>e(e=>{e.selectedClothingSetId=t}),setSelectedClothingCategory:t=>e(e=>{e.selectedClothingCategoryId=t;let n=e.clothingCategories.get(t);if(n&&n.clothingSetIds.length>0){let t=n.clothingSetIds[0];t&&(e.selectedClothingSetId=t)}else delete e.selectedClothingSetId})}}var J=.75,En={height:1.8,radius:.32,interactionRadius:1.6},Y={mode:`reinforcement`,policyId:`openai`,autoRespond:!1,prompt:`Respond as an in-world NPC when a dialogue system is connected.`},Dn={enabled:!0,sightRadius:8,hearingRadius:4,fieldOfView:110},X={mode:`idle`,speed:2.2,loop:!0,wanderRadius:4,waitSeconds:1.5,idleAnimation:`idle`,moveAnimation:`walk`,arriveAnimation:`idle`},Z={green:`/gltf/trainer_green.glb`,red:`/gltf/trainer_red.glb`},Q=`trainer-green`,On=/(^|\/)gltf\/(ally[^/]*|formal|hat_[abc]|glass_a|super_glass)\.glb$/,kn=e=>e.filter(e=>!On.test(e.url));function An(e){e.templates.forEach(e=>{let t=kn(e.baseParts);t.length!==e.baseParts.length&&(e.baseParts=t,e.fullModelUrl??=e.id===`oneyee`?Z.red:Z.green)}),e.clothingSets.forEach((t,n)=>{t.parts=kn(t.parts),!t.parts.length&&(e.clothingSets.delete(n),e.clothingCategories.forEach(e=>{e.clothingSetIds=e.clothingSetIds.filter(e=>e!==n)}))}),e.instances.forEach(e=>{e.customParts&&=kn(e.customParts)})}function jn(e){e.instances.forEach((t,n)=>{t.brain||e.instances.set(n,{...t,brain:{...Y}})})}function Mn(e,t){if(e.initialized){An(e),jn(e);return}e.animations.set(`idle`,{id:`idle`,name:`대기`,loop:!0,speed:1}),e.animations.set(`walk`,{id:`walk`,name:`걷기`,loop:!0,speed:1}),e.animations.set(`run`,{id:`run`,name:`달리기`,loop:!0,speed:1.5});let n={id:`npc-blueprint-wander`,name:`주변 돌아다니기`,description:`이동을 쉬고 있을 때 주변의 새 목적지로 이동합니다.`,nodes:[{id:`start`,type:`start`,label:`시작`},{id:`idle-check`,type:`condition`,label:`이동 대기 중`,condition:{type:`navigationIdle`}},{id:`wander`,type:`action`,label:`돌아다니기`,action:{type:`wander`,radius:4,speed:2.2,waitSeconds:1.5}}],edges:[{id:`start-idle`,source:`start`,target:`idle-check`,branch:`next`},{id:`idle-wander`,source:`idle-check`,target:`wander`,branch:`true`}]},r={id:`npc-blueprint-greet-nearest`,name:`가까운 이웃에게 인사`,description:`발견한 NPC 중 가장 가까운 대상에게 다가가 인사합니다.`,nodes:[{id:`start`,type:`start`,label:`시작`},{id:`see-any`,type:`condition`,label:`발견한 대상 있음`,condition:{type:`perceivedAny`}},{id:`look`,type:`action`,label:`가까운 대상에게 이동`,action:{type:`moveToTarget`,target:{type:`nearestPerceived`},speed:1.2,animationId:`walk`}},{id:`speak`,type:`action`,label:`말하기`,action:{type:`speak`,text:`안녕?`,duration:2}}],edges:[{id:`start-see`,source:`start`,target:`see-any`,branch:`next`},{id:`see-look`,source:`see-any`,target:`look`,branch:`true`},{id:`look-speak`,source:`look`,target:`speak`,branch:`next`}]};e.brainBlueprints.set(n.id,n),e.brainBlueprints.set(r.id,r),t&&(N(n),N(r)),e.categories.set(`humanoid`,{id:`humanoid`,name:`캐릭터`,description:`사람 형태의 캐릭터`,templateIds:[Q,`trainer-red`]}),e.templates.set(Q,{id:Q,name:`초록 트레이너`,category:`humanoid`,fullModelUrl:Z.green,baseParts:[],clothingParts:[],defaultAnimation:`idle`}),e.templates.set(`trainer-red`,{id:`trainer-red`,name:`빨간 트레이너`,category:`humanoid`,fullModelUrl:Z.red,baseParts:[],clothingParts:[],defaultAnimation:`idle`}),e.selectedCategoryId=`humanoid`,e.selectedTemplateId=Q,jn(e),e.initialized=!0}function Nn(e){return e.behavior?.idleAnimation??e.behavior?.arriveAnimation??`idle`}function Pn(e,t){return e.behavior?.moveAnimation??(t>=3.8?`run`:`walk`)}function $(e,t){let n={...e.behavior??X,...t},r={...e,behavior:n};return n.mode===`idle`?(r.currentAnimation=n.idleAnimation??`idle`,delete r.navigation):t.moveAnimation!==void 0&&(r.currentAnimation=t.moveAnimation),r}function Fn(e,t,n){return{...e,navigation:{waypoints:t,currentIndex:0,speed:n,state:`moving`},currentAnimation:Pn(e,n)}}function In(e){let t={...e,currentAnimation:Nn(e)};return delete t.navigation,t}function Ln(e,t,n,r){let i=e.instances.get(t);if(!i)return;let a=n.type===`moveTo`||n.type===`patrol`||n.type===`wander`?n.speed??i.behavior?.speed??X.speed:0,o;switch(n.type){case`idle`:o=In($(i,{mode:`idle`,...n.animationId?{idleAnimation:n.animationId,arriveAnimation:n.animationId}:{}})),n.animationId&&(o.currentAnimation=n.animationId);break;case`moveTo`:o=Fn(n.animationId?$(i,{moveAnimation:n.animationId}):i,[n.target],a);break;case`patrol`:{let e=n.waypoints,t=n.loop??i.behavior?.loop??!0;if(e.length===0)return;let r=([e,,t])=>Math.hypot(i.position[0]-e,i.position[2]-t),s=!t&&e.length>1&&r(e[e.length-1])<r(e[0]);o=Fn($(i,{mode:`patrol`,waypoints:e,speed:a,loop:t,...n.animationId?{moveAnimation:n.animationId}:{}}),s?e.slice(0,-1).reverse():e,a);break}case`wander`:o=$(i,{mode:`wander`,speed:a,wanderRadius:n.radius??i.behavior?.wanderRadius??X.wanderRadius??4,waitSeconds:n.waitSeconds??i.behavior?.waitSeconds??X.waitSeconds??1.5});break;case`playAnimation`:o={...i,currentAnimation:n.animationId};break;case`lookAt`:o={...i,rotation:[i.rotation[0],Math.atan2(n.target[0]-i.position[0],n.target[2]-i.position[2]),i.rotation[2]]};break;case`speak`:return;case`interact`:o={...i,metadata:{...i.metadata,lastInteractionTargetId:n.targetId}};break;case`remember`:r(t),o={...i,brain:{...i.brain??Y,memory:{...i.brain?.memory??{},[n.key]:n.value}}};break;default:return}e.instances.set(t,o)}function Rn(e,t,{invalidateBrainRequests:n}){return{addInstance:t=>e(e=>{n(t.id),e.instances.set(t.id,t)}),updateInstance:(t,r)=>e(e=>{let i=e.instances.get(t);i&&((r.brain!==void 0||r.templateId!==void 0)&&n(t),e.instances.set(t,{...i,...r}))}),removeInstance:t=>e(e=>{n(t),e.instances.delete(t)}),createInstanceFromTemplate:(e,n)=>{let r=t().templates.get(e);if(!r)return;let i=s.t(`npc`),a=[...t().instances.values()].filter(t=>t.templateId===e).length,o=t().selectedClothingSetId||r.defaultClothingSet,c=[],l=t().previewAccessories.hat;if(l){let e=t().clothingSets.get(l)?.parts[0];e&&c.push(e)}let u=t().previewAccessories.glasses;if(u){let e=t().clothingSets.get(u)?.parts[0];e&&c.push(e)}let d={id:i,templateId:e,name:`${r.name} ${a+1}`,position:n,rotation:[0,0,0],scale:[J,J,J],...r.defaultAnimation?{currentAnimation:r.defaultAnimation}:{},...o?{currentClothingSetId:o}:{},...c.length>0?{customParts:c}:{},volume:{...En},brain:{...Y},perception:{...Dn},behavior:{...X},events:[]};t().addInstance(d),t().setSelectedInstance(i)},updateInstancePart:(t,n,r)=>e(e=>{let i=e.instances.get(t);if(!i)return;let a=i.customParts||[],o=a.findIndex(e=>e.id===n);if(o>=0){let e=a[o];a[o]={...e,...r,id:e.id,type:e.type,url:e.url}}else{let e=r.type??`accessory`,t=r.url??``;a.push({id:n,type:e,url:t,...r.category===void 0?{}:{category:r.category},...r.position===void 0?{}:{position:r.position},...r.rotation===void 0?{}:{rotation:r.rotation},...r.scale===void 0?{}:{scale:r.scale},...r.color===void 0?{}:{color:r.color},...r.metadata===void 0?{}:{metadata:r.metadata}})}e.instances.set(t,{...i,customParts:a})}),changeInstanceClothing:(t,n)=>e(e=>{let r=e.instances.get(t);r&&e.instances.set(t,{...r,currentClothingSetId:n})}),updateInstanceVolume:(t,n)=>e(e=>{let r=e.instances.get(t);r&&e.instances.set(t,{...r,volume:{...r.volume??En,...n}})}),updateInstanceBrain:(t,r)=>e(e=>{let i=e.instances.get(t);i&&(n(t),e.instances.set(t,{...i,brain:{...i.brain??Y,...r}}))}),updateInstancePerception:(t,n)=>e(e=>{let r=e.instances.get(t);r&&e.instances.set(t,{...r,perception:{...r.perception??Dn,...n}})}),updateInstanceBehavior:(t,n)=>e(e=>{let r=e.instances.get(t);r&&e.instances.set(t,$(r,n))}),applyNPCDecisions:t=>{t.some(e=>e.decision)&&e(e=>{for(let{instanceId:r,decision:i}of t)if(i)for(let t of i.actions)Ln(e,r,t,n)})},executeInstanceAction:(t,r)=>e(e=>{Ln(e,t,r,n)}),executeInstanceActions:(t,r)=>{r.length!==0&&e(e=>{for(let i of r)Ln(e,t,i,n)})},addInstanceEvent:(t,n)=>e(e=>{let r=e.instances.get(t);if(r){let i=r.events||[];i.push(n),e.instances.set(t,{...r,events:i})}}),removeInstanceEvent:(t,n)=>e(e=>{let r=e.instances.get(t);if(r&&r.events){let i=r.events.filter(e=>e.id!==n);e.instances.set(t,{...r,events:i})}}),setPreviewAccessory:(t,n)=>e(e=>{n?e.previewAccessories[t]=n:delete e.previewAccessories[t]}),setNavigation:(t,n,r=3)=>e(e=>{let i=e.instances.get(t);i&&n.length>0&&e.instances.set(t,Fn(i,n,r))}),advanceNavigation:(t,n)=>e(e=>{let r=e.instances.get(t);if(!r?.navigation||r.navigation.state!==`moving`)return;let i=n?{...r,position:n}:r,a=r.navigation,o=a.currentIndex+1;o>=a.waypoints.length?e.instances.set(t,{...i,navigation:{...a,state:`arrived`,currentIndex:o},currentAnimation:Nn(i)}):e.instances.set(t,{...i,navigation:{...a,currentIndex:o}})}),clearNavigation:t=>e(e=>{let n=e.instances.get(t);n&&e.instances.set(t,In(n))}),updateNavigationPosition:(t,n)=>e(e=>{let r=e.instances.get(t);r&&e.instances.set(t,{...r,position:n})})}}function zn(e=!1,t=()=>{}){(0,g.enableMapSet)();let n={legacyBlueprintRegistry:e,invalidateBrainRequests:t};return(0,m.create)()((0,_.immer)((t,r)=>({initialized:!1,templates:new Map,instances:new Map,categories:new Map,clothingSets:new Map,clothingCategories:new Map,animations:new Map,brainBlueprints:new Map,previewAccessories:{},initializeDefaults:()=>t(t=>Mn(t,e)),...Tn(t,r,n),...Rn(t,r,n)})))}function Bn(e={}){let t=zn(!1,e.onInvalidateBrain);if(e.onInvalidateBrain){let n=t.setState;t.setState=((...r)=>{e.onInvalidateBrain(),Reflect.apply(n,t,r)})}return t}var Vn=c.n(`npc`),{useStore:Hn,useStoreApi:Un}=i.t(`useNPCStore`,()=>zn(!0),()=>r.n()?.npcStore),Wn=1,Gn=class e extends t._{static{this.instance=null}constructor(){super({markers:new Map,canvas:null,ctx:null,isDirty:!0,lastPosition:null,lastRotation:null,gradientCache:{background:null,avatar:null},lastUpdate:Date.now()},{markerCount:0,renderTime:0,frameTime:0}),this.lastScale=null,this.lastSize=null,this.lastBlockRotate=!1,this.listeners=new Set}static getInstance(){return(!e.instance||e.instance.isDisposed)&&(e.instance=new e),e.instance}addMarker(e,t,n,r,i){let a={id:e,type:t,text:n,center:r,size:i};this.state.markers.set(e,a),this.updateMetrics(0),this.notifyListeners()}removeMarker(e){this.state.markers.delete(e),this.updateMetrics(0),this.notifyListeners()}updateMarker(e,t){let n=this.state.markers.get(e);n&&(this.state.markers.set(e,{...n,...t}),this.updateMetrics(0),this.notifyListeners())}getMarkers(){return new Map(this.state.markers)}getMarker(e){return this.state.markers.get(e)}clear(){this.state.markers.clear(),this.updateMetrics(0),this.notifyListeners()}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notifyListeners(){if(this.state.isDirty=!0,this.listeners.size===0)return;let e=this.getMarkers();this.listeners.forEach(t=>t(e))}setCanvas(e){this.lastTileGroups=void 0,this.lastSceneObjects=void 0,this.state.canvas=e,this.state.ctx=e?e.getContext(`2d`):null,this.state.isDirty=!0,this.state.gradientCache={background:null,avatar:null}}checkForUpdates(e,t,n=.1,r=.01){let i=this.state.lastPosition,a=this.state.lastRotation;if(!i||a===null){this.state.isDirty=!0,this.state.lastPosition={x:e.x,z:e.z},this.state.lastRotation=t;return}let o=Math.abs(e.x-i.x)>n||Math.abs(e.z-i.z)>n,s=Math.abs(t-a)>r;(o||s)&&(this.state.isDirty=!0,this.state.lastPosition={x:e.x,z:e.z},this.state.lastRotation=t)}render(e){if(e.size!==this.lastSize&&(this.state.isDirty=!0,this.state.gradientCache.background=null,this.state.gradientCache.avatar=null),(e.scale!==this.lastScale||!!e.blockRotate!==this.lastBlockRotate||e.tileGroups!==this.lastTileGroups||e.sceneObjects!==this.lastSceneObjects)&&(this.state.isDirty=!0),!this.state.canvas||!this.state.ctx||!this.state.isDirty)return;let t=performance.now(),{size:n,scale:r,position:i,rotation:a,blockRotate:o,tileGroups:s,sceneObjects:c}=e;this.lastSize=n,this.lastScale=r,this.lastBlockRotate=!!o,this.lastTileGroups=s,this.lastSceneObjects=c;let l=this.state.ctx;if(l.clearRect(0,0,n,n),l.save(),l.beginPath(),l.arc(n/2,n/2,n/2,0,Math.PI*2),l.clip(),!this.state.gradientCache.background){let e=l.createRadialGradient(n/2,n/2,0,n/2,n/2,n/2);e.addColorStop(0,`rgba(20, 30, 40, 0.9)`),e.addColorStop(1,`rgba(10, 20, 30, 0.95)`),this.state.gradientCache.background=e}l.fillStyle=this.state.gradientCache.background,l.fillRect(0,0,n,n);let u=o?0:a*180/Math.PI;l.translate(n/2,n/2),l.rotate(-u*Math.PI/180),l.translate(-n/2,-n/2),l.save(),l.strokeStyle=`rgba(255, 255, 255, 0.1)`,l.lineWidth=1;for(let e=0;e<n;e+=20)l.beginPath(),l.moveTo(e,0),l.lineTo(e,n),l.moveTo(0,e),l.lineTo(n,e),l.stroke();l.restore(),this.renderCompass(l,n,u),s&&s.size>0&&this.renderTiles(l,n,r,i,s),c&&c.size>0&&this.renderSceneObjects(l,n,r,i,c),this.renderMarkers(l,n,r,i,u),this.renderAvatar(l,n),l.restore(),this.state.isDirty=!1,this.metrics.renderTime=performance.now()-t}renderCompass(e,t,n){e.save(),e.fillStyle=`white`,e.font=`bold 16px sans-serif`,e.shadowColor=`rgba(0, 0, 0, 0.8)`,e.shadowBlur=3,[{text:`북`,x:t/2,y:25,color:`#ff6b6b`},{text:`남`,x:t/2,y:t-25,color:`#4ecdc4`},{text:`동`,x:t-25,y:t/2,color:`#45b7d1`},{text:`서`,x:25,y:t/2,color:`#f9ca24`}].forEach(({text:t,x:r,y:i,color:a})=>{e.save(),e.fillStyle=a,e.translate(r,i),e.rotate(n*Math.PI/180),e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(t,0,0),e.restore()}),e.restore()}renderTiles(e,t,n,r,i){let a=(t/2+Wn)**2;e.save(),e.strokeStyle=`rgba(255, 255, 255, 0.2)`,e.lineWidth=.5;for(let o of i.values())if(o&&o.tiles&&Array.isArray(o.tiles))for(let i of o.tiles){if(!i||!i.position)continue;let o=(i.position.x-r.x)*n,s=(i.position.z-r.z)*n,c=(i.size||1)*4*n,l=Math.abs(c)/2,u=Math.max(0,Math.abs(o)-l),d=Math.max(0,Math.abs(s)-l);if(u*u+d*d>a)continue;let f=t/2-o-c/2,p=t/2-s-c/2;e.fillStyle=i.objectType===`water`?`rgba(0, 150, 255, 0.6)`:i.objectType===`grass`?`rgba(50, 200, 50, 0.4)`:i.objectType===`sand`?`rgba(210, 180, 120, 0.45)`:i.objectType===`snowfield`?`rgba(225, 240, 255, 0.5)`:i.objectType===`dirt`?`rgba(205, 170, 120, 0.45)`:`rgba(150, 150, 150, 0.3)`,e.fillRect(f,p,c,c),e.strokeRect(f,p,c,c)}e.restore()}renderSceneObjects(e,t,n,r,i){i.forEach(i=>{if(!i?.position||!i?.size)return;let a=(i.position.x-r.x)*n,o=(i.position.z-r.z)*n,s=i.size.x*n,c=i.size.z*n;e.save();let l=t/2-a-s/2,u=t/2-o-c/2;e.fillStyle=`rgba(100, 150, 200, 0.4)`,e.fillRect(l,u,s,c),e.strokeStyle=`rgba(255, 255, 255, 0.4)`,e.lineWidth=1,e.strokeRect(l,u,s,c),e.restore()})}renderMarkers(e,t,n,r,i){this.state.markers.size!==0&&this.state.markers.forEach(a=>{if(!a?.center||!a?.size)return;let{center:o,size:s,text:c}=a,l=(o.x-r.x)*n,u=(o.z-r.z)*n;e.save();let d=s.x*n,f=s.z*n,p=t/2-l-d/2,m=t/2-u-f/2;e.shadowColor=`rgba(0, 0, 0, 0.6)`,e.shadowBlur=4,e.shadowOffsetX=2,e.shadowOffsetY=2,e.fillStyle=`rgba(0,0,0,0.3)`,e.fillRect(p,m,d,f),e.shadowColor=`transparent`,e.strokeStyle=`rgba(255, 255, 255, 0.3)`,e.lineWidth=1,e.strokeRect(p,m,d,f),c&&(e.save(),e.fillStyle=`white`,e.font=`bold 12px sans-serif`,e.shadowColor=`rgba(0, 0, 0, 0.8)`,e.shadowBlur=2,e.translate(p+d/2,m+f/2),e.rotate(i*Math.PI/180),e.textAlign=`center`,e.textBaseline=`middle`,e.fillText(c,0,0),e.restore()),e.restore()})}renderAvatar(e,t){if(e.save(),!this.state.gradientCache.avatar){let n=e.createRadialGradient(t/2,t/2,0,t/2,t/2,12);n.addColorStop(0,`#01fff7`),n.addColorStop(.7,`#01fff7`),n.addColorStop(1,`transparent`),this.state.gradientCache.avatar=n}e.fillStyle=this.state.gradientCache.avatar,e.beginPath(),e.arc(t/2,t/2,12,0,Math.PI*2),e.fill(),e.fillStyle=`#01fff7`,e.shadowColor=`0 0 10px rgba(1,255,247,0.7)`,e.shadowBlur=8,e.beginPath(),e.arc(t/2,t/2,6,0,Math.PI*2),e.fill(),e.shadowColor=`transparent`,e.strokeStyle=`rgba(255, 255, 255, 0.8)`,e.lineWidth=2,e.beginPath(),e.moveTo(t/2,t/2),e.lineTo(t/2,t/2-12),e.stroke(),e.restore()}performUpdate(e){}createUpdateArgs(e){return e}updateMetrics(e){this.metrics.markerCount=this.state.markers.size,this.metrics.frameTime=e}onDispose(){this.clear(),this.listeners.clear(),this.setCanvas(null),e.instance===this&&(e.instance=null)}},Kn={cameraCollisionMode:`push`};function qn({type:e=`normal`,text:t,position:n,children:r,interactive:i=!0,showMinimap:o=!0}){let c=(0,p.useRef)(null),l=a.t(),u=(0,p.useMemo)(()=>s.t(`world-prop`),[]),d=(0,p.useRef)({center:new f.Vector3,size:new f.Vector3,positionAdd:new f.Vector3});return(0,p.useEffect)(()=>{if(!o||!c.current)return;let r=Gn.getInstance(),i=setTimeout(()=>{let i=c.current;if(!i)return;let a=new f.Box3;if(a.setFromObject(i),!a.isEmpty()){let{center:i,size:o,positionAdd:s}=d.current;a.getCenter(i),a.getSize(o),n&&(s.set(n[0],n[1],n[2]),i.add(s)),r.addMarker(u,e,t||``,i.clone(),o.clone())}},100);return()=>{clearTimeout(i),r.removeMarker(u)}},[n,e,t,o,u]),(0,h.jsxs)(`group`,{ref:c,...n?{position:n}:{},...e===`ground`?{userData:Kn}:{},onClick:e=>{i&&(e.stopPropagation(),l.onClick(e))},children:[r,t&&(0,h.jsx)(`group`,{position:[0,2,0],children:(0,h.jsx)(`sprite`,{scale:[2,.5,1],children:(0,h.jsx)(`spriteMaterial`,{color:`#ffffff`,transparent:!0,opacity:.8})})})]})}Object.defineProperty(exports,"$",{enumerable:!0,get:function(){return nt}}),Object.defineProperty(exports,"A",{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,"B",{enumerable:!0,get:function(){return bt}}),Object.defineProperty(exports,"C",{enumerable:!0,get:function(){return Ht}}),Object.defineProperty(exports,"Ct",{enumerable:!0,get:function(){return le}}),Object.defineProperty(exports,"D",{enumerable:!0,get:function(){return kt}}),Object.defineProperty(exports,"Dt",{enumerable:!0,get:function(){return se}}),Object.defineProperty(exports,"E",{enumerable:!0,get:function(){return Mt}}),Object.defineProperty(exports,"Et",{enumerable:!0,get:function(){return oe}}),Object.defineProperty(exports,"F",{enumerable:!0,get:function(){return xt}}),Object.defineProperty(exports,"G",{enumerable:!0,get:function(){return _t}}),Object.defineProperty(exports,"H",{enumerable:!0,get:function(){return pt}}),Object.defineProperty(exports,"I",{enumerable:!0,get:function(){return St}}),Object.defineProperty(exports,"J",{enumerable:!0,get:function(){return lt}}),Object.defineProperty(exports,"K",{enumerable:!0,get:function(){return at}}),Object.defineProperty(exports,"L",{enumerable:!0,get:function(){return Ct}}),Object.defineProperty(exports,"M",{enumerable:!0,get:function(){return wt}}),Object.defineProperty(exports,"N",{enumerable:!0,get:function(){return Tt}}),Object.defineProperty(exports,"O",{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,"Ot",{enumerable:!0,get:function(){return te}}),Object.defineProperty(exports,"P",{enumerable:!0,get:function(){return Et}}),Object.defineProperty(exports,"Q",{enumerable:!0,get:function(){return Qe}}),Object.defineProperty(exports,"R",{enumerable:!0,get:function(){return vt}}),Object.defineProperty(exports,"S",{enumerable:!0,get:function(){return Nt}}),Object.defineProperty(exports,"St",{enumerable:!0,get:function(){return he}}),Object.defineProperty(exports,"T",{enumerable:!0,get:function(){return Ft}}),Object.defineProperty(exports,"Tt",{enumerable:!0,get:function(){return de}}),Object.defineProperty(exports,"U",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(exports,"V",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"W",{enumerable:!0,get:function(){return gt}}),Object.defineProperty(exports,"X",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"Y",{enumerable:!0,get:function(){return dt}}),Object.defineProperty(exports,"Z",{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return Qt}}),Object.defineProperty(exports,"_t",{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Hn}}),Object.defineProperty(exports,"at",{enumerable:!0,get:function(){return Ye}}),Object.defineProperty(exports,"b",{enumerable:!0,get:function(){return en}}),Object.defineProperty(exports,"bt",{enumerable:!0,get:function(){return fe}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return Q}}),Object.defineProperty(exports,"ct",{enumerable:!0,get:function(){return Re}}),Object.defineProperty(exports,"d",{enumerable:!0,get:function(){return ln}}),Object.defineProperty(exports,"dt",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"et",{enumerable:!0,get:function(){return rt}}),Object.defineProperty(exports,"f",{enumerable:!0,get:function(){return rn}}),Object.defineProperty(exports,"ft",{enumerable:!0,get:function(){return Ve}}),Object.defineProperty(exports,"g",{enumerable:!0,get:function(){return cn}}),Object.defineProperty(exports,"gt",{enumerable:!0,get:function(){return Xe}}),Object.defineProperty(exports,"h",{enumerable:!0,get:function(){return on}}),Object.defineProperty(exports,"ht",{enumerable:!0,get:function(){return ze}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return Bn}}),Object.defineProperty(exports,"it",{enumerable:!0,get:function(){return qe}}),Object.defineProperty(exports,"j",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"k",{enumerable:!0,get:function(){return At}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return wn}}),Object.defineProperty(exports,"lt",{enumerable:!0,get:function(){return Je}}),Object.defineProperty(exports,"m",{enumerable:!0,get:function(){return an}}),Object.defineProperty(exports,"mt",{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return Gn}}),Object.defineProperty(exports,"nt",{enumerable:!0,get:function(){return $e}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return Un}}),Object.defineProperty(exports,"ot",{enumerable:!0,get:function(){return Ge}}),Object.defineProperty(exports,"p",{enumerable:!0,get:function(){return K}}),Object.defineProperty(exports,"pt",{enumerable:!0,get:function(){return Le}}),Object.defineProperty(exports,"q",{enumerable:!0,get:function(){return it}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return Vn}}),Object.defineProperty(exports,"rt",{enumerable:!0,get:function(){return Ke}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return J}}),Object.defineProperty(exports,"st",{enumerable:!0,get:function(){return We}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return qn}}),Object.defineProperty(exports,"tt",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return Cn}}),Object.defineProperty(exports,"ut",{enumerable:!0,get:function(){return Ue}}),Object.defineProperty(exports,"v",{enumerable:!0,get:function(){return $t}}),Object.defineProperty(exports,"vt",{enumerable:!0,get:function(){return je}}),Object.defineProperty(exports,"w",{enumerable:!0,get:function(){return Pt}}),Object.defineProperty(exports,"wt",{enumerable:!0,get:function(){return ue}}),Object.defineProperty(exports,"x",{enumerable:!0,get:function(){return It}}),Object.defineProperty(exports,"xt",{enumerable:!0,get:function(){return we}}),Object.defineProperty(exports,"y",{enumerable:!0,get:function(){return Zt}}),Object.defineProperty(exports,"yt",{enumerable:!0,get:function(){return Ie}}),Object.defineProperty(exports,"z",{enumerable:!0,get:function(){return yt}});
|