octiqflow-linux-x64 0.3.27 → 0.3.28
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/bin/octiq-server +0 -0
- package/bin/v2/assets/{IslandPage-DCqVX6Ie.js → IslandPage-Cvcho1fQ.js} +1 -1
- package/bin/v2/assets/IslandPage-Cvcho1fQ.js.br +0 -0
- package/bin/v2/assets/IslandPage-Cvcho1fQ.js.gz +0 -0
- package/bin/v2/assets/{index-6cgtkYJp.js → index-B7UxlWSj.js} +1 -1
- package/bin/v2/assets/index-B7UxlWSj.js.br +0 -0
- package/bin/v2/assets/index-B7UxlWSj.js.gz +0 -0
- package/bin/v2/assets/{index-D_SM02cS.js → index-BTcEhwL0.js} +1 -1
- package/bin/v2/assets/index-BTcEhwL0.js.br +0 -0
- package/bin/v2/assets/index-BTcEhwL0.js.gz +0 -0
- package/bin/v2/assets/{index-B-64OmSq.js → index-Bgpcl8no.js} +1 -1
- package/bin/v2/assets/index-Bgpcl8no.js.br +0 -0
- package/bin/v2/assets/index-Bgpcl8no.js.gz +0 -0
- package/bin/v2/assets/{index-CZVWKToX.js → index-BvuLK453.js} +1 -1
- package/bin/v2/assets/index-BvuLK453.js.br +0 -0
- package/bin/v2/assets/index-BvuLK453.js.gz +0 -0
- package/bin/v2/assets/{index-Dh8kjLOV.js → index-CL_gihHg.js} +1 -1
- package/bin/v2/assets/index-CL_gihHg.js.br +0 -0
- package/bin/v2/assets/index-CL_gihHg.js.gz +0 -0
- package/bin/v2/assets/{index-BcewmDju.js → index-CPtE-P3-.js} +1 -1
- package/bin/v2/assets/index-CPtE-P3-.js.br +0 -0
- package/bin/v2/assets/index-CPtE-P3-.js.gz +0 -0
- package/bin/v2/assets/{index-Cd_OU6-z.js → index-CS2AxWn8.js} +149 -149
- package/bin/v2/assets/index-CS2AxWn8.js.br +0 -0
- package/bin/v2/assets/index-CS2AxWn8.js.gz +0 -0
- package/bin/v2/assets/{index-BhmKJXr9.js → index-Co0vjxPD.js} +1 -1
- package/bin/v2/assets/index-Co0vjxPD.js.br +0 -0
- package/bin/v2/assets/index-Co0vjxPD.js.gz +0 -0
- package/bin/v2/assets/index-DpGkwj-g.css +1 -0
- package/bin/v2/assets/index-DpGkwj-g.css.br +0 -0
- package/bin/v2/assets/index-DpGkwj-g.css.gz +0 -0
- package/bin/v2/assets/{index-B5iPt1P7.js → index-DpkB3iQf.js} +1 -1
- package/bin/v2/assets/index-DpkB3iQf.js.br +0 -0
- package/bin/v2/assets/index-DpkB3iQf.js.gz +0 -0
- package/bin/v2/assets/{index-CgsVoUQP.js → index-T8sCdMRf.js} +1 -1
- package/bin/v2/assets/index-T8sCdMRf.js.br +0 -0
- package/bin/v2/assets/index-T8sCdMRf.js.gz +0 -0
- package/bin/v2/assets/{index-BAEHSNys.js → index-pwKWZXjk.js} +1 -1
- package/bin/v2/assets/index-pwKWZXjk.js.br +0 -0
- package/bin/v2/assets/index-pwKWZXjk.js.gz +0 -0
- package/bin/v2/assets/{index-VVFhyHzQ.js → index-s590-ZtY.js} +1 -1
- package/bin/v2/assets/index-s590-ZtY.js.br +0 -0
- package/bin/v2/assets/index-s590-ZtY.js.gz +0 -0
- package/bin/v2/assets/{portrait-eE0s2m_G.js → portrait-CfI5HYbj.js} +1 -1
- package/bin/v2/assets/portrait-CfI5HYbj.js.br +0 -0
- package/bin/v2/assets/portrait-CfI5HYbj.js.gz +0 -0
- package/bin/v2/index.html +2 -2
- package/package.json +1 -1
- package/bin/v2/assets/IslandPage-DCqVX6Ie.js.br +0 -0
- package/bin/v2/assets/IslandPage-DCqVX6Ie.js.gz +0 -0
- package/bin/v2/assets/index-6cgtkYJp.js.br +0 -0
- package/bin/v2/assets/index-6cgtkYJp.js.gz +0 -0
- package/bin/v2/assets/index-B-64OmSq.js.br +0 -0
- package/bin/v2/assets/index-B-64OmSq.js.gz +0 -0
- package/bin/v2/assets/index-B5iPt1P7.js.br +0 -0
- package/bin/v2/assets/index-B5iPt1P7.js.gz +0 -0
- package/bin/v2/assets/index-BAEHSNys.js.br +0 -0
- package/bin/v2/assets/index-BAEHSNys.js.gz +0 -0
- package/bin/v2/assets/index-BN4tJeS6.css +0 -1
- package/bin/v2/assets/index-BN4tJeS6.css.br +0 -0
- package/bin/v2/assets/index-BN4tJeS6.css.gz +0 -0
- package/bin/v2/assets/index-BcewmDju.js.br +0 -0
- package/bin/v2/assets/index-BcewmDju.js.gz +0 -0
- package/bin/v2/assets/index-BhmKJXr9.js.br +0 -0
- package/bin/v2/assets/index-BhmKJXr9.js.gz +0 -0
- package/bin/v2/assets/index-CZVWKToX.js.br +0 -0
- package/bin/v2/assets/index-CZVWKToX.js.gz +0 -0
- package/bin/v2/assets/index-Cd_OU6-z.js.br +0 -0
- package/bin/v2/assets/index-Cd_OU6-z.js.gz +0 -0
- package/bin/v2/assets/index-CgsVoUQP.js.br +0 -0
- package/bin/v2/assets/index-CgsVoUQP.js.gz +0 -0
- package/bin/v2/assets/index-D_SM02cS.js.br +0 -0
- package/bin/v2/assets/index-D_SM02cS.js.gz +0 -0
- package/bin/v2/assets/index-Dh8kjLOV.js.br +0 -0
- package/bin/v2/assets/index-Dh8kjLOV.js.gz +0 -0
- package/bin/v2/assets/index-VVFhyHzQ.js.br +0 -0
- package/bin/v2/assets/index-VVFhyHzQ.js.gz +0 -0
- package/bin/v2/assets/portrait-eE0s2m_G.js.br +0 -0
- package/bin/v2/assets/portrait-eE0s2m_G.js.gz +0 -0
package/bin/octiq-server
CHANGED
|
Binary file
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as I,b as qe,a as Mt,T as Re,c as Ve,d as Is,p as Ce,e as ce,C as Pe,o as Lt,f as gs,P as wt,g as Os,S as Ht,h as Ws,u as $s,i as Us,j as Bs,k as Fs,w as Et,l as x,W as Gs,A as Ks}from"./index-Cd_OU6-z.js";import{G as he,B as ht,M as ze,a as O,c as ys,p as xs,C as Nt,b as ee,d as ct,A as It,S as lt,e as ws,R as zt,f as Ys,V as oe,g as Je,T as Ze,Q as qt,h as Zt,i as Me,j as Hs,P as qs,k as Zs,l as bs,m as H,N as Xs,n as Ot,o as Wt,q as Qs,r as Dt,s as Xe,t as Xt,I as Vs,u as Qt,D as Rt,v as ks,w as bt,x as Js,y as Ms,F as ei,z as ti,E as si,W as ii,H as ni,J as ai,K as oi,L as ri,O as ci,U as li,X as hi,Y as di,Z as ui,_ as Vt,$ as pi,a0 as fi,a1 as Jt,a2 as At,a3 as mi}from"./robot-CzDIvswk.js";const gi=o=>String(o?.message??o);function yi(o){const[e,t]=I.useState(null),[s,i]=I.useState(null),[n,a]=I.useState(null),r=I.useRef(null),l=I.useRef(0),h=I.useCallback(()=>{const p=++l.current;qe.invoke("island_get").then(c=>{if(p!==l.current||!c?.island)return;const d=c.island;r.current&&r.current.rev>d.rev||(r.current=d,t(d),i(null))}).catch(c=>{p===l.current&&i(gi(c))})},[]);I.useEffect(()=>{if(!o)return;h();const p=qe.on("island-changed",d=>{d&&(r.current&&d.rev<=r.current.rev||(a(d),h()))}),c=qe.on("chat-status",d=>{d?.key.startsWith("chat:island-wish-")&&h()});return()=>{p(),c()}},[o,h]);const m=I.useCallback(async(p,c={})=>{await qe.invoke(p,c),h()},[h]);return{island:e,error:s,change:n,reload:h,dismissWish:p=>m("island_wish_dismiss",{id:p}),grantWish:p=>m("island_wish_start",{id:p}),rollWish:()=>m("island_wish_roll"),inviteBot:()=>m("island_bot_invite"),farewell:p=>m("island_bot_farewell",{id:p}),setPace:p=>m("island_settings_set",{wishPace:p}),setBuildPace:p=>m("island_build_pace",{pace:p})}}function xi(o,e=Date.now()){const t=new Map;for(const s of o){const i=a=>s.activities.find(r=>r.state===a)?.title,n=s.state==="working"?{state:"working",label:i("working")}:s.state==="needs_you"?{state:"needs_you",label:i("needs_you")}:s.state==="failed"?{state:"failed",label:i("failed")}:{state:"free",...s.recent?{idleFor:Math.max(0,Math.round((e-s.recent.at)/6e4))}:{}};t.set(`agent:${s.id}`,n)}return t}function wi(o,e=Date.now()){const t=Math.max(0,Math.round((e-o)/6e4));if(t<1)return"just now";if(t<60)return`${t} min ago`;const s=Math.round(t/60);return s<24?`${s} h ago`:`${Math.round(s/24)} d ago`}function zs(o,e){const t=new Map;for(const c of[...e].sort((d,g)=>d.key.localeCompare(g.key))){const d=c.agent?.teamId?`team:${c.agent.teamId}`:"general";t.set(d,[...t.get(d)??[],c])}t.has("general")||t.set("general",[]);const s=[],i=o.assets.filter(c=>c.kind==="accessory"),n=[],a=[],r=new Map,l=o.plots.filter(c=>c.owner.kind==="home"&&c.owner.id.startsWith("public:")||o.placed.some(d=>d.plot===c.id&&o.assets.some(g=>g.id===d.asset&&g.kind==="building"&&g.name!=="Workshop"))),h=[];for(let c=1;h.length<t.size+l.length;c++)h.push(...Mt(c).filter(([d,g])=>(d!==-1||g!==0)&&(d!==0||g!==-1)));const m=(c,d,g)=>({shape:"box",size:c,at:d,color:g});for(const[c,[d,g]]of[...t].sort(([j],[b])=>j.localeCompare(b)).entries()){const[j,b]=h[c],k=Ve(j,b),f=`office:${d}`,E=d==="general"?"Agent Tower":`${g[0].agent?.teamName??"Team"} Office`,z={id:f,owner:{kind:"home",id:d},ring:Math.max(Math.abs(j),Math.abs(b),Math.abs(j+b)),slot:c,q:j,r:b,...k,facing:Math.atan2(-k.x,-k.z)*180/Math.PI,radius:Re,claimedAt:0,members:g.map(A=>A.owner.id),officeName:E};s.push(z);const _=Math.max(d==="general"?3:1,Math.ceil(g.length/6)),L=[];for(let A=0;A<_;A++){const S=A*2.3;L.push(m([8,.08,6],[0,S+.04,-.7],"#d6dce5")),L.push({...m([8,2,.14],[0,S+1,-3.6],"#b6c9dd"),finish:"glass"}),L.push({...m([.16,2.3,6],[-3.95,S+1.15,-.7],"#7a94b1"),finish:"glass"}),L.push({...m([.16,2.3,6],[3.95,S+1.15,-.7],"#7a94b1"),finish:"glass"});for(const N of[-2.7,0,2.7])L.push({...m([1.5,1,.025],[N,S+1.2,-3.51],"#b5e5fa"),finish:"glass"})}i.push({id:f,rev:_,name:E,kind:"building",parts:L,by:{name:"Island offices"},madeAt:0,updatedAt:0}),n.push({id:f,asset:f,plot:f,x:0,z:0,y:0,turn:0});for(const[A,S]of g.entries()){a.push({...S,plot:z});const N=`office-desk:${S.key}`,$=(A%3-1)*2.4,W=Math.floor(A%6/3)*2.5-2.4,X=Math.floor(A/6)*2.3;i.push({id:N,rev:Number.parseInt(S.look.trim.slice(1)+S.look.glow.slice(1),16),name:`${S.name}'s desk`,kind:"furniture",use:"desk",spot:{at:[0,0,.65],face:180},parts:[m([1.3,.08,.7],[0,.6,0],"#cfa783"),m([.12,.6,.12],[-.5,.3,0],S.look.trim),m([.12,.6,.12],[.5,.3,0],S.look.trim),m([.65,.42,.08],[0,.88,-.18],"#26354a"),{...m([.55,.32,.02],[0,.88,-.13],S.look.glow),finish:"glow"}],by:{name:S.name,agentId:S.owner.id},madeAt:0,updatedAt:0}),n.push({id:N,asset:N,plot:f,x:$,z:W,y:X,turn:0}),r.set(N,S.key);const Y=o.placed.filter(F=>F.plot===S.plot?.id).filter(F=>{const V=o.assets.find(ve=>ve.id===F.asset);return V&&V.kind!=="building"&&V.name!=="Workshop"&&V.name!=="Desk"&&V.use!=="bed"});for(const[F,V]of Y.entries()){const ve=o.assets.find(fe=>fe.id===V.asset);i.some(fe=>fe.id===ve.id)||i.push(ve);const ne=(A+F/Math.max(1,Y.length))/g.length*Math.PI*2;n.push({...V,plot:f,x:Math.sin(ne)*4.8,z:Math.cos(ne)*4.8,y:0})}}}for(const[c,d]of l.entries()){const[g,j]=h[t.size+c],b=Ve(g,j),k=o.placed.filter(z=>z.plot===d.id&&o.assets.some(_=>_.id===z.asset&&(d.owner.kind==="home"||_.kind==="building"&&_.name!=="Workshop"))),f=o.assets.find(z=>k.some(_=>_.asset===z.id)&&z.kind==="building"),E={...d,q:g,r:j,...b,ring:Math.max(Math.abs(g),Math.abs(j),Math.abs(g+j)),facing:Math.atan2(-b.x,-b.z)*180/Math.PI,officeName:f?.name??"Public project"};s.push(E),n.push(...k);for(const z of k){const _=o.assets.find(L=>L.id===z.asset);_&&!i.some(L=>L.id===_.id)&&i.push(_)}}const p=Math.max(30,o.radius,...s.map(c=>Math.hypot(c.x,c.z)+Re+4));return{island:{...o,plots:s,assets:i,placed:n,radius:p},residents:a,deskOwners:r}}function bi(){const o=new he;o.name="planted-seedlings";const e=new he;o.add(e);const t=new ht(1,1,1),s=new ze({color:"#88674b"}),i=new ze({color:"#64a856"}),n=new O(t,s);n.scale.set(.8,.035,.45),n.position.y=.02,o.add(n);for(const r of[-.26,0,.26]){const l=new O(t,i);l.scale.set(.025,.3,.025),l.position.set(r,.17,0),e.add(l);for(const h of[-1,1]){const m=new O(t,i);m.scale.set(.17,.045,.08),m.position.set(r+h*.07,.23,0),m.rotation.z=h*.4,e.add(m)}}let a=0;return{root:o,update(r,l){l&&(a=Math.min(1,a+r/12)),e.scale.setScalar(.12+a*.88),o.visible=a>0},dispose(){t.dispose(),s.dispose(),i.dispose()}}}const we=Ve(0,-1),ki={x:we.x,z:we.z-.8};function Mi(o){return{x:we.x+(o%4-1.5)*1.6,z:we.z+.6+Math.floor(o/4)*1}}function zi(){const o=new he;o.name="bot-society",o.position.set(we.x,.05,we.z);const e=new ht(1,1,1),t=new ze({color:"#ded8c9",roughness:.8}),s=new ze({color:"#caa45c",metalness:.5,roughness:.3}),i=new ze({color:"#b8e5f0",transparent:!0,opacity:.22,depthWrite:!1}),n=(c,d,g,j,b,k,f=t)=>{const E=new O(e,f);E.position.set(c,d,g),E.scale.set(j,b,k),o.add(E)};n(0,.05,0,8,.1,7),n(-3.9,1.2,0,.15,2.4,7,i),n(3.9,1.2,0,.15,2.4,7,i);for(const c of[-3.2,3.2])n(c,1.5,2.8,.45,3,.45),n(c,3.1,2.8,.75,.2,.75,s);n(0,3.15,2.8,6.8,.25,.35,s),n(0,.45,-1.6,3.2,.9,.65),n(0,.94,-1.6,3.5,.1,.9,s),n(0,.5,-3.7,2.4,1,1.8),n(0,1.07,-3.7,2.7,.15,2,s);const a=Is({id:"bot-society-statue",agent:"codex",model:"sol"}),r=ys({...a,shell:"#d7c592",trim:"#a98642",glow:"#fff2af",antenna:"crown"});xs(r,"raise",0,{calm:!0}),r.root.scale.setScalar(4.5),r.root.position.set(0,1.15,-3.7),o.add(r.root);const l=document.createElement("canvas");l.width=768,l.height=128;const h=l.getContext("2d");h.fillStyle="#f7e8bd",h.fillRect(0,0,768,128),h.fillStyle="#5d4828",h.font="bold 56px sans-serif",h.textAlign="center",h.fillText("BOT SOCIETY",384,80);const m=new Nt(l),p=new ee({map:m});return n(0,3.15,3.02,4.8,.8,.04,p),{root:o,solids:[{cx:we.x-3.9,cz:we.z,hx:.08,hz:3.5,yaw:0},{cx:we.x+3.9,cz:we.z,hx:.08,hz:3.5,yaw:0},{cx:we.x,cz:we.z-1.6,hx:1.7,hz:.45,yaw:0},{cx:we.x,cz:we.z-3.7,hx:1.4,hz:1.1,yaw:0}],dispose(){r.dispose(),e.dispose(),t.dispose(),s.dispose(),i.dispose(),m.dispose(),p.dispose()}}}function vi(o){if(o.kind==="accessory"||o.use==="none")return null;if(["read","paint","garden","perform","play","observe"].includes(o.use??""))return o.use;const e=o.name.toLowerCase();for(const[t,s]of[["garden",/garden|planter|greenhouse|seedling|herb|mint|花|种植|种子|盆栽|薄荷|温室|苗/],["paint",/easel|paint|画架|绘画|畫架/],["read",/library|bookshelf|bookcase|café|cafe|reading|书架|图书|書架|咖啡/],["perform",/music|concert|stage|piano|音乐|合奏|舞台|钢琴/],["play",/arcade|game|toy|游戏|玩具|游乐/],["observe",/lamp|light|灯|燈/]])if(s.test(e))return t;return/\b(chair|bench|stool|bed)\b|椅|凳|床/.test(e)&&!o.use?null:!o.use&&/\b(table|desk|workbench)\b|桌|工作台/.test(e)?/workbench|工作台/.test(e)?"play":"read":o.use==="desk"?/workbench|工作台/.test(e)?"play":"read":o.use==="seat"||o.use==="bed"?null:o.kind==="building"||o.kind==="furniture"||o.kind==="decor"?"observe":null}function _i(o,e,t){if(t.id.startsWith("office-desk:"))return null;const s=vi(o);if(!s||!o.parts.length)return null;const i=Math.max(...o.parts.map(c=>ct(c).max[2])),n=Math.max(0,...o.parts.map(c=>ct(c)).filter(c=>c.max[1]<=.35&&c.max[1]-c.min[1]<=.16).map(c=>c.max[1])),a=o.spot??(o.kind==="building"&&s!=="observe"?{at:[0,n,0],face:180}:{at:[0,0,i+.85],face:180}),r=t.turn*Math.PI/180,[l,h,m]=a.at,p=Ce(e,t.x+l*Math.cos(r)+m*Math.sin(r),t.z-l*Math.sin(r)+m*Math.cos(r));return{key:t.id,name:o.name,activity:s,...p,y:ce+t.y+h,face:(e.facing+t.turn+a.face)*Math.PI/180}}function es(o,e){const t={garden:"gardening",read:"reading",paint:"painting",perform:"music",play:"games"};return e==="observe"||!!o?.includes(t[e])}function Si(){const o=new he,e=new ht(1,1,1),t=["#f1e7cb","#6b86b6","#f5a14a","#76b9a5","#71c7ff"].map(m=>new ee({color:m})),s=(m,p,c)=>{const d=new he;d.name=m;const g=new O(e,t[c]);return g.scale.set(...p),d.add(g),o.add(d),d.visible=!1,d},i=s("read",[.32,.24,.05],1),n=s("paint",[.035,.32,.035],2),a=s("garden",[.22,.16,.17],3),r=s("register",[.24,.3,.02],0),l=s("play",[.25,.1,.1],1),h=new O(e,t[4]);return h.scale.set(.18,.035,.035),h.position.x=.16,a.add(h),{root:o,show(m){for(const p of[i,n,a,r,l])p.visible=p.name===m},dispose(){e.dispose(),t.forEach(m=>m.dispose())}}}function Pi(){const o=new he;o.name="concert-stage";const e=new ee({color:"#253044"}),t=new ee({color:"#9d8dff"}),s=new ee({color:"#c2a1ff",transparent:!0,opacity:.32,depthWrite:!1}),i=new ee({color:"#b997ff",transparent:!0,opacity:.13,depthWrite:!1,blending:It}),n=new lt(.75,20,12),a=new O(n,i);a.position.y=.65,o.add(a);const r=new ht(.5,.8,.4),l=new ws(.16,20),h=new zt(.7,1.25,40),m=new O(h,s);m.rotation.x=-Math.PI/2,m.position.y=.05,o.add(m);const p=[];for(const d of[-1,1]){const g=new he;g.position.set(d*1.2,.4,0),g.add(new O(r,e));for(const j of[-.19,.19]){const b=new O(l,t);b.position.set(0,j,.205),g.add(b)}o.add(g),p.push(g)}o.visible=!1;let c=0;return{root:o,update(d,g,j,b){c=Math.max(0,Math.min(1,c+(d?1:-1)*g*3)),o.visible=c>0;const k=b?1:1+Math.sin(j*8)*.09;o.scale.setScalar(Math.max(.001,c)),m.scale.setScalar(k),a.scale.setScalar(k),s.opacity=.24+(b?0:(Math.sin(j*8)+1)*.1),p.forEach(f=>f.scale.set(1,k,k))},dispose(){n.dispose(),i.dispose(),r.dispose(),l.dispose(),h.dispose(),e.dispose(),t.dispose(),s.dispose()}}}const ts={type:"change"},$t={type:"start"},vs={type:"end"},gt=new Hs,ss=new qs,ji=Math.cos(70*Zs.DEG2RAD),ae=new oe,xe=2*Math.PI,K={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},Tt=1e-6;class Ei extends Ys{constructor(e,t=null){super(e,t),this.state=K.NONE,this.target=new oe,this.cursor=new oe,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:Je.ROTATE,MIDDLE:Je.DOLLY,RIGHT:Je.PAN},this.touches={ONE:Ze.ROTATE,TWO:Ze.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle="auto",this._domElementKeyEvents=null,this._lastPosition=new oe,this._lastQuaternion=new qt,this._lastTargetPosition=new oe,this._quat=new qt().setFromUnitVectors(e.up,new oe(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new Zt,this._sphericalDelta=new Zt,this._scale=1,this._panOffset=new oe,this._rotateStart=new Me,this._rotateEnd=new Me,this._rotateDelta=new Me,this._panStart=new Me,this._panEnd=new Me,this._panDelta=new Me,this._dollyStart=new Me,this._dollyEnd=new Me,this._dollyDelta=new Me,this._dollyDirection=new oe,this._mouse=new Me,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Ti.bind(this),this._onPointerDown=Ai.bind(this),this._onPointerUp=Li.bind(this),this._onContextMenu=Wi.bind(this),this._onMouseWheel=Ci.bind(this),this._onKeyDown=Ni.bind(this),this._onTouchStart=Ii.bind(this),this._onTouchMove=Oi.bind(this),this._onMouseDown=Di.bind(this),this._onMouseMove=Ri.bind(this),this._interceptControlDown=$i.bind(this),this._interceptControlUp=Ui.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e==="grab"?this.domElement.style.cursor="grab":this.domElement.style.cursor="auto"}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction=""}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(ts),this.update(),this.state=K.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){const t=this.object.position;ae.copy(t).sub(this.target),ae.applyQuaternion(this._quat),this._spherical.setFromVector3(ae),this.autoRotate&&this.state===K.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let s=this.minAzimuthAngle,i=this.maxAzimuthAngle;isFinite(s)&&isFinite(i)&&(s<-Math.PI?s+=xe:s>Math.PI&&(s-=xe),i<-Math.PI?i+=xe:i>Math.PI&&(i-=xe),s<=i?this._spherical.theta=Math.max(s,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(s+i)/2?Math.max(s,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let n=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),n=a!=this._spherical.radius}if(ae.setFromSpherical(this._spherical),ae.applyQuaternion(this._quatInverse),t.copy(this.target).add(ae),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let a=null;if(this.object.isPerspectiveCamera){const r=ae.length();a=this._clampDistance(r*this._scale);const l=r-a;this.object.position.addScaledVector(this._dollyDirection,l),this.object.updateMatrixWorld(),n=!!l}else if(this.object.isOrthographicCamera){const r=new oe(this._mouse.x,this._mouse.y,0);r.unproject(this.object);const l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),n=l!==this.object.zoom;const h=new oe(this._mouse.x,this._mouse.y,0);h.unproject(this.object),this.object.position.sub(h).add(r),this.object.updateMatrixWorld(),a=ae.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;a!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position):(gt.origin.copy(this.object.position),gt.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(gt.direction))<ji?this.object.lookAt(this.target):(ss.setFromNormalAndCoplanarPoint(this.object.up,this.target),gt.intersectPlane(ss,this.target))))}else if(this.object.isOrthographicCamera){const a=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),a!==this.object.zoom&&(this.object.updateProjectionMatrix(),n=!0)}return this._scale=1,this._performCursorZoom=!1,n||this._lastPosition.distanceToSquared(this.object.position)>Tt||8*(1-this._lastQuaternion.dot(this.object.quaternion))>Tt||this._lastTargetPosition.distanceToSquared(this.target)>Tt?(this.dispatchEvent(ts),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?xe/60*this.autoRotateSpeed*e:xe/60/60*this.autoRotateSpeed}_getZoomScale(e){const t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){ae.setFromMatrixColumn(t,0),ae.multiplyScalar(-e),this._panOffset.add(ae)}_panUp(e,t){this.screenSpacePanning===!0?ae.setFromMatrixColumn(t,1):(ae.setFromMatrixColumn(t,0),ae.crossVectors(this.object.up,ae)),ae.multiplyScalar(e),this._panOffset.add(ae)}_pan(e,t){const s=this.domElement;if(this.object.isPerspectiveCamera){const i=this.object.position;ae.copy(i).sub(this.target);let n=ae.length();n*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*n/s.clientHeight,this.object.matrix),this._panUp(2*t*n/s.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/s.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/s.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const s=this.domElement.getBoundingClientRect(),i=e-s.left,n=t-s.top,a=s.width,r=s.height;this._mouse.x=i/a*2-1,this._mouse.y=-(n/r)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(xe*this._rotateDelta.x/t.clientHeight),this._rotateUp(xe*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(xe*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-xe*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(xe*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-xe*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),s=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._rotateStart.set(s,i)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),s=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._panStart.set(s,i)}}_handleTouchStartDolly(e){const t=this._getSecondPointerPosition(e),s=e.pageX-t.x,i=e.pageY-t.y,n=Math.sqrt(s*s+i*i);this._dollyStart.set(0,n)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{const s=this._getSecondPointerPosition(e),i=.5*(e.pageX+s.x),n=.5*(e.pageY+s.y);this._rotateEnd.set(i,n)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(xe*this._rotateDelta.x/t.clientHeight),this._rotateUp(xe*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),s=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._panEnd.set(s,i)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){const t=this._getSecondPointerPosition(e),s=e.pageX-t.x,i=e.pageY-t.y,n=Math.sqrt(s*s+i*i);this._dollyEnd.set(0,n),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const a=(e.pageX+t.x)*.5,r=(e.pageY+t.y)*.5;this._updateZoomParameters(a,r)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(e){let t=this._pointerPositions[e.pointerId];t===void 0&&(t=new Me,this._pointerPositions[e.pointerId]=t),t.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){const t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){const t=e.deltaMode,s={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:s.deltaY*=16;break;case 2:s.deltaY*=100;break}return e.ctrlKey&&!this._controlActive&&(s.deltaY*=10),s}}function Ai(o){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(o.pointerId),this.domElement.ownerDocument.addEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(o)&&(this._addPointer(o),o.pointerType==="touch"?this._onTouchStart(o):this._onMouseDown(o),this._cursorStyle==="grab"&&(this.domElement.style.cursor="grabbing")))}function Ti(o){this.enabled!==!1&&(o.pointerType==="touch"?this._onTouchMove(o):this._onMouseMove(o))}function Li(o){switch(this._removePointer(o),this._pointers.length){case 0:this.domElement.releasePointerCapture(o.pointerId),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(vs),this.state=K.NONE,this._cursorStyle==="grab"&&(this.domElement.style.cursor="grab");break;case 1:const e=this._pointers[0],t=this._pointerPositions[e];this._onTouchStart({pointerId:e,pageX:t.x,pageY:t.y});break}}function Di(o){let e;switch(o.button){case 0:e=this.mouseButtons.LEFT;break;case 1:e=this.mouseButtons.MIDDLE;break;case 2:e=this.mouseButtons.RIGHT;break;default:e=-1}switch(e){case Je.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(o),this.state=K.DOLLY;break;case Je.ROTATE:if(o.ctrlKey||o.metaKey||o.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(o),this.state=K.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(o),this.state=K.ROTATE}break;case Je.PAN:if(o.ctrlKey||o.metaKey||o.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(o),this.state=K.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(o),this.state=K.PAN}break;default:this.state=K.NONE}this.state!==K.NONE&&this.dispatchEvent($t)}function Ri(o){switch(this.state){case K.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(o);break;case K.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(o);break;case K.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(o);break}}function Ci(o){this.enabled===!1||this.enableZoom===!1||this.state!==K.NONE||(o.preventDefault(),this.dispatchEvent($t),this._handleMouseWheel(this._customWheelEvent(o)),this.dispatchEvent(vs))}function Ni(o){this.enabled!==!1&&this._handleKeyDown(o)}function Ii(o){switch(this._trackPointer(o),this._pointers.length){case 1:switch(this.touches.ONE){case Ze.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(o),this.state=K.TOUCH_ROTATE;break;case Ze.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(o),this.state=K.TOUCH_PAN;break;default:this.state=K.NONE}break;case 2:switch(this.touches.TWO){case Ze.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(o),this.state=K.TOUCH_DOLLY_PAN;break;case Ze.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(o),this.state=K.TOUCH_DOLLY_ROTATE;break;default:this.state=K.NONE}break;default:this.state=K.NONE}this.state!==K.NONE&&this.dispatchEvent($t)}function Oi(o){switch(this._trackPointer(o),this.state){case K.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(o),this.update();break;case K.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(o),this.update();break;case K.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(o),this.update();break;case K.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(o),this.update();break;default:this.state=K.NONE}}function Wi(o){this.enabled!==!1&&o.preventDefault()}function $i(o){o.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function Ui(o){o.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function Bi(o){if(o.kind!=="building"||!o.parts.length)return[];const e=o.parts.map(ct).filter(({min:t,max:s})=>(s[1]<=1.2+1e-6||s[1]-t[1]<.3)&&s[0]-t[0]>1&&s[2]-t[2]>1);if(!e.length){const t=Qs(o);e.push({min:[t.min[0],0,t.min[2]],max:[t.max[0],0,t.max[2]]})}return e.map(({min:t,max:s})=>({x:(t[0]+s[0])/2,y:s[1]+.012,z:(t[2]+s[2])/2,width:(s[0]-t[0])*.96,depth:(s[2]-t[2])*.96}))}class _s{group=new he;material=new bs({uniforms:{night:{value:0},warmth:{value:new H("#ffb24d")},strength:{value:.34}},vertexShader:`varying vec2 lightUv;
|
|
1
|
+
import{r as I,b as qe,a as Mt,T as Re,c as Ve,d as Is,p as Ce,e as ce,C as Pe,o as Lt,f as gs,P as wt,g as Os,S as Ht,h as Ws,u as $s,i as Us,j as Bs,k as Fs,w as Et,l as x,W as Gs,A as Ks}from"./index-CS2AxWn8.js";import{G as he,B as ht,M as ze,a as O,c as ys,p as xs,C as Nt,b as ee,d as ct,A as It,S as lt,e as ws,R as zt,f as Ys,V as oe,g as Je,T as Ze,Q as qt,h as Zt,i as Me,j as Hs,P as qs,k as Zs,l as bs,m as H,N as Xs,n as Ot,o as Wt,q as Qs,r as Dt,s as Xe,t as Xt,I as Vs,u as Qt,D as Rt,v as ks,w as bt,x as Js,y as Ms,F as ei,z as ti,E as si,W as ii,H as ni,J as ai,K as oi,L as ri,O as ci,U as li,X as hi,Y as di,Z as ui,_ as Vt,$ as pi,a0 as fi,a1 as Jt,a2 as At,a3 as mi}from"./robot-CzDIvswk.js";const gi=o=>String(o?.message??o);function yi(o){const[e,t]=I.useState(null),[s,i]=I.useState(null),[n,a]=I.useState(null),r=I.useRef(null),l=I.useRef(0),h=I.useCallback(()=>{const p=++l.current;qe.invoke("island_get").then(c=>{if(p!==l.current||!c?.island)return;const d=c.island;r.current&&r.current.rev>d.rev||(r.current=d,t(d),i(null))}).catch(c=>{p===l.current&&i(gi(c))})},[]);I.useEffect(()=>{if(!o)return;h();const p=qe.on("island-changed",d=>{d&&(r.current&&d.rev<=r.current.rev||(a(d),h()))}),c=qe.on("chat-status",d=>{d?.key.startsWith("chat:island-wish-")&&h()});return()=>{p(),c()}},[o,h]);const m=I.useCallback(async(p,c={})=>{await qe.invoke(p,c),h()},[h]);return{island:e,error:s,change:n,reload:h,dismissWish:p=>m("island_wish_dismiss",{id:p}),grantWish:p=>m("island_wish_start",{id:p}),rollWish:()=>m("island_wish_roll"),inviteBot:()=>m("island_bot_invite"),farewell:p=>m("island_bot_farewell",{id:p}),setPace:p=>m("island_settings_set",{wishPace:p}),setBuildPace:p=>m("island_build_pace",{pace:p})}}function xi(o,e=Date.now()){const t=new Map;for(const s of o){const i=a=>s.activities.find(r=>r.state===a)?.title,n=s.state==="working"?{state:"working",label:i("working")}:s.state==="needs_you"?{state:"needs_you",label:i("needs_you")}:s.state==="failed"?{state:"failed",label:i("failed")}:{state:"free",...s.recent?{idleFor:Math.max(0,Math.round((e-s.recent.at)/6e4))}:{}};t.set(`agent:${s.id}`,n)}return t}function wi(o,e=Date.now()){const t=Math.max(0,Math.round((e-o)/6e4));if(t<1)return"just now";if(t<60)return`${t} min ago`;const s=Math.round(t/60);return s<24?`${s} h ago`:`${Math.round(s/24)} d ago`}function zs(o,e){const t=new Map;for(const c of[...e].sort((d,g)=>d.key.localeCompare(g.key))){const d=c.agent?.teamId?`team:${c.agent.teamId}`:"general";t.set(d,[...t.get(d)??[],c])}t.has("general")||t.set("general",[]);const s=[],i=o.assets.filter(c=>c.kind==="accessory"),n=[],a=[],r=new Map,l=o.plots.filter(c=>c.owner.kind==="home"&&c.owner.id.startsWith("public:")||o.placed.some(d=>d.plot===c.id&&o.assets.some(g=>g.id===d.asset&&g.kind==="building"&&g.name!=="Workshop"))),h=[];for(let c=1;h.length<t.size+l.length;c++)h.push(...Mt(c).filter(([d,g])=>(d!==-1||g!==0)&&(d!==0||g!==-1)));const m=(c,d,g)=>({shape:"box",size:c,at:d,color:g});for(const[c,[d,g]]of[...t].sort(([j],[b])=>j.localeCompare(b)).entries()){const[j,b]=h[c],k=Ve(j,b),f=`office:${d}`,E=d==="general"?"Agent Tower":`${g[0].agent?.teamName??"Team"} Office`,z={id:f,owner:{kind:"home",id:d},ring:Math.max(Math.abs(j),Math.abs(b),Math.abs(j+b)),slot:c,q:j,r:b,...k,facing:Math.atan2(-k.x,-k.z)*180/Math.PI,radius:Re,claimedAt:0,members:g.map(A=>A.owner.id),officeName:E};s.push(z);const _=Math.max(d==="general"?3:1,Math.ceil(g.length/6)),L=[];for(let A=0;A<_;A++){const S=A*2.3;L.push(m([8,.08,6],[0,S+.04,-.7],"#d6dce5")),L.push({...m([8,2,.14],[0,S+1,-3.6],"#b6c9dd"),finish:"glass"}),L.push({...m([.16,2.3,6],[-3.95,S+1.15,-.7],"#7a94b1"),finish:"glass"}),L.push({...m([.16,2.3,6],[3.95,S+1.15,-.7],"#7a94b1"),finish:"glass"});for(const N of[-2.7,0,2.7])L.push({...m([1.5,1,.025],[N,S+1.2,-3.51],"#b5e5fa"),finish:"glass"})}i.push({id:f,rev:_,name:E,kind:"building",parts:L,by:{name:"Island offices"},madeAt:0,updatedAt:0}),n.push({id:f,asset:f,plot:f,x:0,z:0,y:0,turn:0});for(const[A,S]of g.entries()){a.push({...S,plot:z});const N=`office-desk:${S.key}`,$=(A%3-1)*2.4,W=Math.floor(A%6/3)*2.5-2.4,X=Math.floor(A/6)*2.3;i.push({id:N,rev:Number.parseInt(S.look.trim.slice(1)+S.look.glow.slice(1),16),name:`${S.name}'s desk`,kind:"furniture",use:"desk",spot:{at:[0,0,.65],face:180},parts:[m([1.3,.08,.7],[0,.6,0],"#cfa783"),m([.12,.6,.12],[-.5,.3,0],S.look.trim),m([.12,.6,.12],[.5,.3,0],S.look.trim),m([.65,.42,.08],[0,.88,-.18],"#26354a"),{...m([.55,.32,.02],[0,.88,-.13],S.look.glow),finish:"glow"}],by:{name:S.name,agentId:S.owner.id},madeAt:0,updatedAt:0}),n.push({id:N,asset:N,plot:f,x:$,z:W,y:X,turn:0}),r.set(N,S.key);const Y=o.placed.filter(F=>F.plot===S.plot?.id).filter(F=>{const V=o.assets.find(ve=>ve.id===F.asset);return V&&V.kind!=="building"&&V.name!=="Workshop"&&V.name!=="Desk"&&V.use!=="bed"});for(const[F,V]of Y.entries()){const ve=o.assets.find(fe=>fe.id===V.asset);i.some(fe=>fe.id===ve.id)||i.push(ve);const ne=(A+F/Math.max(1,Y.length))/g.length*Math.PI*2;n.push({...V,plot:f,x:Math.sin(ne)*4.8,z:Math.cos(ne)*4.8,y:0})}}}for(const[c,d]of l.entries()){const[g,j]=h[t.size+c],b=Ve(g,j),k=o.placed.filter(z=>z.plot===d.id&&o.assets.some(_=>_.id===z.asset&&(d.owner.kind==="home"||_.kind==="building"&&_.name!=="Workshop"))),f=o.assets.find(z=>k.some(_=>_.asset===z.id)&&z.kind==="building"),E={...d,q:g,r:j,...b,ring:Math.max(Math.abs(g),Math.abs(j),Math.abs(g+j)),facing:Math.atan2(-b.x,-b.z)*180/Math.PI,officeName:f?.name??"Public project"};s.push(E),n.push(...k);for(const z of k){const _=o.assets.find(L=>L.id===z.asset);_&&!i.some(L=>L.id===_.id)&&i.push(_)}}const p=Math.max(30,o.radius,...s.map(c=>Math.hypot(c.x,c.z)+Re+4));return{island:{...o,plots:s,assets:i,placed:n,radius:p},residents:a,deskOwners:r}}function bi(){const o=new he;o.name="planted-seedlings";const e=new he;o.add(e);const t=new ht(1,1,1),s=new ze({color:"#88674b"}),i=new ze({color:"#64a856"}),n=new O(t,s);n.scale.set(.8,.035,.45),n.position.y=.02,o.add(n);for(const r of[-.26,0,.26]){const l=new O(t,i);l.scale.set(.025,.3,.025),l.position.set(r,.17,0),e.add(l);for(const h of[-1,1]){const m=new O(t,i);m.scale.set(.17,.045,.08),m.position.set(r+h*.07,.23,0),m.rotation.z=h*.4,e.add(m)}}let a=0;return{root:o,update(r,l){l&&(a=Math.min(1,a+r/12)),e.scale.setScalar(.12+a*.88),o.visible=a>0},dispose(){t.dispose(),s.dispose(),i.dispose()}}}const we=Ve(0,-1),ki={x:we.x,z:we.z-.8};function Mi(o){return{x:we.x+(o%4-1.5)*1.6,z:we.z+.6+Math.floor(o/4)*1}}function zi(){const o=new he;o.name="bot-society",o.position.set(we.x,.05,we.z);const e=new ht(1,1,1),t=new ze({color:"#ded8c9",roughness:.8}),s=new ze({color:"#caa45c",metalness:.5,roughness:.3}),i=new ze({color:"#b8e5f0",transparent:!0,opacity:.22,depthWrite:!1}),n=(c,d,g,j,b,k,f=t)=>{const E=new O(e,f);E.position.set(c,d,g),E.scale.set(j,b,k),o.add(E)};n(0,.05,0,8,.1,7),n(-3.9,1.2,0,.15,2.4,7,i),n(3.9,1.2,0,.15,2.4,7,i);for(const c of[-3.2,3.2])n(c,1.5,2.8,.45,3,.45),n(c,3.1,2.8,.75,.2,.75,s);n(0,3.15,2.8,6.8,.25,.35,s),n(0,.45,-1.6,3.2,.9,.65),n(0,.94,-1.6,3.5,.1,.9,s),n(0,.5,-3.7,2.4,1,1.8),n(0,1.07,-3.7,2.7,.15,2,s);const a=Is({id:"bot-society-statue",agent:"codex",model:"sol"}),r=ys({...a,shell:"#d7c592",trim:"#a98642",glow:"#fff2af",antenna:"crown"});xs(r,"raise",0,{calm:!0}),r.root.scale.setScalar(4.5),r.root.position.set(0,1.15,-3.7),o.add(r.root);const l=document.createElement("canvas");l.width=768,l.height=128;const h=l.getContext("2d");h.fillStyle="#f7e8bd",h.fillRect(0,0,768,128),h.fillStyle="#5d4828",h.font="bold 56px sans-serif",h.textAlign="center",h.fillText("BOT SOCIETY",384,80);const m=new Nt(l),p=new ee({map:m});return n(0,3.15,3.02,4.8,.8,.04,p),{root:o,solids:[{cx:we.x-3.9,cz:we.z,hx:.08,hz:3.5,yaw:0},{cx:we.x+3.9,cz:we.z,hx:.08,hz:3.5,yaw:0},{cx:we.x,cz:we.z-1.6,hx:1.7,hz:.45,yaw:0},{cx:we.x,cz:we.z-3.7,hx:1.4,hz:1.1,yaw:0}],dispose(){r.dispose(),e.dispose(),t.dispose(),s.dispose(),i.dispose(),m.dispose(),p.dispose()}}}function vi(o){if(o.kind==="accessory"||o.use==="none")return null;if(["read","paint","garden","perform","play","observe"].includes(o.use??""))return o.use;const e=o.name.toLowerCase();for(const[t,s]of[["garden",/garden|planter|greenhouse|seedling|herb|mint|花|种植|种子|盆栽|薄荷|温室|苗/],["paint",/easel|paint|画架|绘画|畫架/],["read",/library|bookshelf|bookcase|café|cafe|reading|书架|图书|書架|咖啡/],["perform",/music|concert|stage|piano|音乐|合奏|舞台|钢琴/],["play",/arcade|game|toy|游戏|玩具|游乐/],["observe",/lamp|light|灯|燈/]])if(s.test(e))return t;return/\b(chair|bench|stool|bed)\b|椅|凳|床/.test(e)&&!o.use?null:!o.use&&/\b(table|desk|workbench)\b|桌|工作台/.test(e)?/workbench|工作台/.test(e)?"play":"read":o.use==="desk"?/workbench|工作台/.test(e)?"play":"read":o.use==="seat"||o.use==="bed"?null:o.kind==="building"||o.kind==="furniture"||o.kind==="decor"?"observe":null}function _i(o,e,t){if(t.id.startsWith("office-desk:"))return null;const s=vi(o);if(!s||!o.parts.length)return null;const i=Math.max(...o.parts.map(c=>ct(c).max[2])),n=Math.max(0,...o.parts.map(c=>ct(c)).filter(c=>c.max[1]<=.35&&c.max[1]-c.min[1]<=.16).map(c=>c.max[1])),a=o.spot??(o.kind==="building"&&s!=="observe"?{at:[0,n,0],face:180}:{at:[0,0,i+.85],face:180}),r=t.turn*Math.PI/180,[l,h,m]=a.at,p=Ce(e,t.x+l*Math.cos(r)+m*Math.sin(r),t.z-l*Math.sin(r)+m*Math.cos(r));return{key:t.id,name:o.name,activity:s,...p,y:ce+t.y+h,face:(e.facing+t.turn+a.face)*Math.PI/180}}function es(o,e){const t={garden:"gardening",read:"reading",paint:"painting",perform:"music",play:"games"};return e==="observe"||!!o?.includes(t[e])}function Si(){const o=new he,e=new ht(1,1,1),t=["#f1e7cb","#6b86b6","#f5a14a","#76b9a5","#71c7ff"].map(m=>new ee({color:m})),s=(m,p,c)=>{const d=new he;d.name=m;const g=new O(e,t[c]);return g.scale.set(...p),d.add(g),o.add(d),d.visible=!1,d},i=s("read",[.32,.24,.05],1),n=s("paint",[.035,.32,.035],2),a=s("garden",[.22,.16,.17],3),r=s("register",[.24,.3,.02],0),l=s("play",[.25,.1,.1],1),h=new O(e,t[4]);return h.scale.set(.18,.035,.035),h.position.x=.16,a.add(h),{root:o,show(m){for(const p of[i,n,a,r,l])p.visible=p.name===m},dispose(){e.dispose(),t.forEach(m=>m.dispose())}}}function Pi(){const o=new he;o.name="concert-stage";const e=new ee({color:"#253044"}),t=new ee({color:"#9d8dff"}),s=new ee({color:"#c2a1ff",transparent:!0,opacity:.32,depthWrite:!1}),i=new ee({color:"#b997ff",transparent:!0,opacity:.13,depthWrite:!1,blending:It}),n=new lt(.75,20,12),a=new O(n,i);a.position.y=.65,o.add(a);const r=new ht(.5,.8,.4),l=new ws(.16,20),h=new zt(.7,1.25,40),m=new O(h,s);m.rotation.x=-Math.PI/2,m.position.y=.05,o.add(m);const p=[];for(const d of[-1,1]){const g=new he;g.position.set(d*1.2,.4,0),g.add(new O(r,e));for(const j of[-.19,.19]){const b=new O(l,t);b.position.set(0,j,.205),g.add(b)}o.add(g),p.push(g)}o.visible=!1;let c=0;return{root:o,update(d,g,j,b){c=Math.max(0,Math.min(1,c+(d?1:-1)*g*3)),o.visible=c>0;const k=b?1:1+Math.sin(j*8)*.09;o.scale.setScalar(Math.max(.001,c)),m.scale.setScalar(k),a.scale.setScalar(k),s.opacity=.24+(b?0:(Math.sin(j*8)+1)*.1),p.forEach(f=>f.scale.set(1,k,k))},dispose(){n.dispose(),i.dispose(),r.dispose(),l.dispose(),h.dispose(),e.dispose(),t.dispose(),s.dispose()}}}const ts={type:"change"},$t={type:"start"},vs={type:"end"},gt=new Hs,ss=new qs,ji=Math.cos(70*Zs.DEG2RAD),ae=new oe,xe=2*Math.PI,K={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6},Tt=1e-6;class Ei extends Ys{constructor(e,t=null){super(e,t),this.state=K.NONE,this.target=new oe,this.cursor=new oe,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minTargetRadius=0,this.maxTargetRadius=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.05,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.keyRotateSpeed=1,this.enablePan=!0,this.panSpeed=1,this.screenSpacePanning=!0,this.keyPanSpeed=7,this.zoomToCursor=!1,this.autoRotate=!1,this.autoRotateSpeed=2,this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"},this.mouseButtons={LEFT:Je.ROTATE,MIDDLE:Je.DOLLY,RIGHT:Je.PAN},this.touches={ONE:Ze.ROTATE,TWO:Ze.DOLLY_PAN},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this._cursorStyle="auto",this._domElementKeyEvents=null,this._lastPosition=new oe,this._lastQuaternion=new qt,this._lastTargetPosition=new oe,this._quat=new qt().setFromUnitVectors(e.up,new oe(0,1,0)),this._quatInverse=this._quat.clone().invert(),this._spherical=new Zt,this._sphericalDelta=new Zt,this._scale=1,this._panOffset=new oe,this._rotateStart=new Me,this._rotateEnd=new Me,this._rotateDelta=new Me,this._panStart=new Me,this._panEnd=new Me,this._panDelta=new Me,this._dollyStart=new Me,this._dollyEnd=new Me,this._dollyDelta=new Me,this._dollyDirection=new oe,this._mouse=new Me,this._performCursorZoom=!1,this._pointers=[],this._pointerPositions={},this._controlActive=!1,this._onPointerMove=Ti.bind(this),this._onPointerDown=Ai.bind(this),this._onPointerUp=Li.bind(this),this._onContextMenu=Wi.bind(this),this._onMouseWheel=Ci.bind(this),this._onKeyDown=Ni.bind(this),this._onTouchStart=Ii.bind(this),this._onTouchMove=Oi.bind(this),this._onMouseDown=Di.bind(this),this._onMouseMove=Ri.bind(this),this._interceptControlDown=$i.bind(this),this._interceptControlUp=Ui.bind(this),this.domElement!==null&&this.connect(this.domElement),this.update()}set cursorStyle(e){this._cursorStyle=e,e==="grab"?this.domElement.style.cursor="grab":this.domElement.style.cursor="auto"}get cursorStyle(){return this._cursorStyle}connect(e){super.connect(e),this.domElement.addEventListener("pointerdown",this._onPointerDown),this.domElement.addEventListener("pointercancel",this._onPointerUp),this.domElement.addEventListener("contextmenu",this._onContextMenu),this.domElement.addEventListener("wheel",this._onMouseWheel,{passive:!1}),this.domElement.getRootNode().addEventListener("keydown",this._interceptControlDown,{passive:!0,capture:!0}),this.domElement.style.touchAction="none"}disconnect(){this.domElement.removeEventListener("pointerdown",this._onPointerDown),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.domElement.removeEventListener("pointercancel",this._onPointerUp),this.domElement.removeEventListener("wheel",this._onMouseWheel),this.domElement.removeEventListener("contextmenu",this._onContextMenu),this.stopListenToKeyEvents(),this.domElement.getRootNode().removeEventListener("keydown",this._interceptControlDown,{capture:!0}),this.domElement.style.touchAction=""}dispose(){this.disconnect()}getPolarAngle(){return this._spherical.phi}getAzimuthalAngle(){return this._spherical.theta}getDistance(){return this.object.position.distanceTo(this.target)}listenToKeyEvents(e){e.addEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=e}stopListenToKeyEvents(){this._domElementKeyEvents!==null&&(this._domElementKeyEvents.removeEventListener("keydown",this._onKeyDown),this._domElementKeyEvents=null)}saveState(){this.target0.copy(this.target),this.position0.copy(this.object.position),this.zoom0=this.object.zoom}reset(){this.target.copy(this.target0),this.object.position.copy(this.position0),this.object.zoom=this.zoom0,this.object.updateProjectionMatrix(),this.dispatchEvent(ts),this.update(),this.state=K.NONE}pan(e,t){this._pan(e,t),this.update()}dollyIn(e){this._dollyIn(e),this.update()}dollyOut(e){this._dollyOut(e),this.update()}rotateLeft(e){this._rotateLeft(e),this.update()}rotateUp(e){this._rotateUp(e),this.update()}update(e=null){const t=this.object.position;ae.copy(t).sub(this.target),ae.applyQuaternion(this._quat),this._spherical.setFromVector3(ae),this.autoRotate&&this.state===K.NONE&&this._rotateLeft(this._getAutoRotationAngle(e)),this.enableDamping?(this._spherical.theta+=this._sphericalDelta.theta*this.dampingFactor,this._spherical.phi+=this._sphericalDelta.phi*this.dampingFactor):(this._spherical.theta+=this._sphericalDelta.theta,this._spherical.phi+=this._sphericalDelta.phi);let s=this.minAzimuthAngle,i=this.maxAzimuthAngle;isFinite(s)&&isFinite(i)&&(s<-Math.PI?s+=xe:s>Math.PI&&(s-=xe),i<-Math.PI?i+=xe:i>Math.PI&&(i-=xe),s<=i?this._spherical.theta=Math.max(s,Math.min(i,this._spherical.theta)):this._spherical.theta=this._spherical.theta>(s+i)/2?Math.max(s,this._spherical.theta):Math.min(i,this._spherical.theta)),this._spherical.phi=Math.max(this.minPolarAngle,Math.min(this.maxPolarAngle,this._spherical.phi)),this._spherical.makeSafe(),this.enableDamping===!0?this.target.addScaledVector(this._panOffset,this.dampingFactor):this.target.add(this._panOffset),this.target.sub(this.cursor),this.target.clampLength(this.minTargetRadius,this.maxTargetRadius),this.target.add(this.cursor);let n=!1;if(this.zoomToCursor&&this._performCursorZoom||this.object.isOrthographicCamera)this._spherical.radius=this._clampDistance(this._spherical.radius);else{const a=this._spherical.radius;this._spherical.radius=this._clampDistance(this._spherical.radius*this._scale),n=a!=this._spherical.radius}if(ae.setFromSpherical(this._spherical),ae.applyQuaternion(this._quatInverse),t.copy(this.target).add(ae),this.object.lookAt(this.target),this.enableDamping===!0?(this._sphericalDelta.theta*=1-this.dampingFactor,this._sphericalDelta.phi*=1-this.dampingFactor,this._panOffset.multiplyScalar(1-this.dampingFactor)):(this._sphericalDelta.set(0,0,0),this._panOffset.set(0,0,0)),this.zoomToCursor&&this._performCursorZoom){let a=null;if(this.object.isPerspectiveCamera){const r=ae.length();a=this._clampDistance(r*this._scale);const l=r-a;this.object.position.addScaledVector(this._dollyDirection,l),this.object.updateMatrixWorld(),n=!!l}else if(this.object.isOrthographicCamera){const r=new oe(this._mouse.x,this._mouse.y,0);r.unproject(this.object);const l=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),this.object.updateProjectionMatrix(),n=l!==this.object.zoom;const h=new oe(this._mouse.x,this._mouse.y,0);h.unproject(this.object),this.object.position.sub(h).add(r),this.object.updateMatrixWorld(),a=ae.length()}else console.warn("WARNING: OrbitControls.js encountered an unknown camera type - zoom to cursor disabled."),this.zoomToCursor=!1;a!==null&&(this.screenSpacePanning?this.target.set(0,0,-1).transformDirection(this.object.matrix).multiplyScalar(a).add(this.object.position):(gt.origin.copy(this.object.position),gt.direction.set(0,0,-1).transformDirection(this.object.matrix),Math.abs(this.object.up.dot(gt.direction))<ji?this.object.lookAt(this.target):(ss.setFromNormalAndCoplanarPoint(this.object.up,this.target),gt.intersectPlane(ss,this.target))))}else if(this.object.isOrthographicCamera){const a=this.object.zoom;this.object.zoom=Math.max(this.minZoom,Math.min(this.maxZoom,this.object.zoom/this._scale)),a!==this.object.zoom&&(this.object.updateProjectionMatrix(),n=!0)}return this._scale=1,this._performCursorZoom=!1,n||this._lastPosition.distanceToSquared(this.object.position)>Tt||8*(1-this._lastQuaternion.dot(this.object.quaternion))>Tt||this._lastTargetPosition.distanceToSquared(this.target)>Tt?(this.dispatchEvent(ts),this._lastPosition.copy(this.object.position),this._lastQuaternion.copy(this.object.quaternion),this._lastTargetPosition.copy(this.target),!0):!1}_getAutoRotationAngle(e){return e!==null?xe/60*this.autoRotateSpeed*e:xe/60/60*this.autoRotateSpeed}_getZoomScale(e){const t=Math.abs(e*.01);return Math.pow(.95,this.zoomSpeed*t)}_rotateLeft(e){this._sphericalDelta.theta-=e}_rotateUp(e){this._sphericalDelta.phi-=e}_panLeft(e,t){ae.setFromMatrixColumn(t,0),ae.multiplyScalar(-e),this._panOffset.add(ae)}_panUp(e,t){this.screenSpacePanning===!0?ae.setFromMatrixColumn(t,1):(ae.setFromMatrixColumn(t,0),ae.crossVectors(this.object.up,ae)),ae.multiplyScalar(e),this._panOffset.add(ae)}_pan(e,t){const s=this.domElement;if(this.object.isPerspectiveCamera){const i=this.object.position;ae.copy(i).sub(this.target);let n=ae.length();n*=Math.tan(this.object.fov/2*Math.PI/180),this._panLeft(2*e*n/s.clientHeight,this.object.matrix),this._panUp(2*t*n/s.clientHeight,this.object.matrix)}else this.object.isOrthographicCamera?(this._panLeft(e*(this.object.right-this.object.left)/this.object.zoom/s.clientWidth,this.object.matrix),this._panUp(t*(this.object.top-this.object.bottom)/this.object.zoom/s.clientHeight,this.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),this.enablePan=!1)}_dollyOut(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale/=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_dollyIn(e){this.object.isPerspectiveCamera||this.object.isOrthographicCamera?this._scale*=e:(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}_updateZoomParameters(e,t){if(!this.zoomToCursor)return;this._performCursorZoom=!0;const s=this.domElement.getBoundingClientRect(),i=e-s.left,n=t-s.top,a=s.width,r=s.height;this._mouse.x=i/a*2-1,this._mouse.y=-(n/r)*2+1,this._dollyDirection.set(this._mouse.x,this._mouse.y,1).unproject(this.object).sub(this.object.position).normalize()}_clampDistance(e){return Math.max(this.minDistance,Math.min(this.maxDistance,e))}_handleMouseDownRotate(e){this._rotateStart.set(e.clientX,e.clientY)}_handleMouseDownDolly(e){this._updateZoomParameters(e.clientX,e.clientX),this._dollyStart.set(e.clientX,e.clientY)}_handleMouseDownPan(e){this._panStart.set(e.clientX,e.clientY)}_handleMouseMoveRotate(e){this._rotateEnd.set(e.clientX,e.clientY),this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(xe*this._rotateDelta.x/t.clientHeight),this._rotateUp(xe*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd),this.update()}_handleMouseMoveDolly(e){this._dollyEnd.set(e.clientX,e.clientY),this._dollyDelta.subVectors(this._dollyEnd,this._dollyStart),this._dollyDelta.y>0?this._dollyOut(this._getZoomScale(this._dollyDelta.y)):this._dollyDelta.y<0&&this._dollyIn(this._getZoomScale(this._dollyDelta.y)),this._dollyStart.copy(this._dollyEnd),this.update()}_handleMouseMovePan(e){this._panEnd.set(e.clientX,e.clientY),this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd),this.update()}_handleMouseWheel(e){this._updateZoomParameters(e.clientX,e.clientY),e.deltaY<0?this._dollyIn(this._getZoomScale(e.deltaY)):e.deltaY>0&&this._dollyOut(this._getZoomScale(e.deltaY)),this.update()}_handleKeyDown(e){let t=!1;switch(e.code){case this.keys.UP:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(xe*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,this.keyPanSpeed),t=!0;break;case this.keys.BOTTOM:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateUp(-xe*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(0,-this.keyPanSpeed),t=!0;break;case this.keys.LEFT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(xe*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(this.keyPanSpeed,0),t=!0;break;case this.keys.RIGHT:e.ctrlKey||e.metaKey||e.shiftKey?this.enableRotate&&this._rotateLeft(-xe*this.keyRotateSpeed/this.domElement.clientHeight):this.enablePan&&this._pan(-this.keyPanSpeed,0),t=!0;break}t&&(e.preventDefault(),this.update())}_handleTouchStartRotate(e){if(this._pointers.length===1)this._rotateStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),s=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._rotateStart.set(s,i)}}_handleTouchStartPan(e){if(this._pointers.length===1)this._panStart.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),s=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._panStart.set(s,i)}}_handleTouchStartDolly(e){const t=this._getSecondPointerPosition(e),s=e.pageX-t.x,i=e.pageY-t.y,n=Math.sqrt(s*s+i*i);this._dollyStart.set(0,n)}_handleTouchStartDollyPan(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enablePan&&this._handleTouchStartPan(e)}_handleTouchStartDollyRotate(e){this.enableZoom&&this._handleTouchStartDolly(e),this.enableRotate&&this._handleTouchStartRotate(e)}_handleTouchMoveRotate(e){if(this._pointers.length==1)this._rotateEnd.set(e.pageX,e.pageY);else{const s=this._getSecondPointerPosition(e),i=.5*(e.pageX+s.x),n=.5*(e.pageY+s.y);this._rotateEnd.set(i,n)}this._rotateDelta.subVectors(this._rotateEnd,this._rotateStart).multiplyScalar(this.rotateSpeed);const t=this.domElement;this._rotateLeft(xe*this._rotateDelta.x/t.clientHeight),this._rotateUp(xe*this._rotateDelta.y/t.clientHeight),this._rotateStart.copy(this._rotateEnd)}_handleTouchMovePan(e){if(this._pointers.length===1)this._panEnd.set(e.pageX,e.pageY);else{const t=this._getSecondPointerPosition(e),s=.5*(e.pageX+t.x),i=.5*(e.pageY+t.y);this._panEnd.set(s,i)}this._panDelta.subVectors(this._panEnd,this._panStart).multiplyScalar(this.panSpeed),this._pan(this._panDelta.x,this._panDelta.y),this._panStart.copy(this._panEnd)}_handleTouchMoveDolly(e){const t=this._getSecondPointerPosition(e),s=e.pageX-t.x,i=e.pageY-t.y,n=Math.sqrt(s*s+i*i);this._dollyEnd.set(0,n),this._dollyDelta.set(0,Math.pow(this._dollyEnd.y/this._dollyStart.y,this.zoomSpeed)),this._dollyOut(this._dollyDelta.y),this._dollyStart.copy(this._dollyEnd);const a=(e.pageX+t.x)*.5,r=(e.pageY+t.y)*.5;this._updateZoomParameters(a,r)}_handleTouchMoveDollyPan(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enablePan&&this._handleTouchMovePan(e)}_handleTouchMoveDollyRotate(e){this.enableZoom&&this._handleTouchMoveDolly(e),this.enableRotate&&this._handleTouchMoveRotate(e)}_addPointer(e){this._pointers.push(e.pointerId)}_removePointer(e){delete this._pointerPositions[e.pointerId];for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId){this._pointers.splice(t,1);return}}_isTrackingPointer(e){for(let t=0;t<this._pointers.length;t++)if(this._pointers[t]==e.pointerId)return!0;return!1}_trackPointer(e){let t=this._pointerPositions[e.pointerId];t===void 0&&(t=new Me,this._pointerPositions[e.pointerId]=t),t.set(e.pageX,e.pageY)}_getSecondPointerPosition(e){const t=e.pointerId===this._pointers[0]?this._pointers[1]:this._pointers[0];return this._pointerPositions[t]}_customWheelEvent(e){const t=e.deltaMode,s={clientX:e.clientX,clientY:e.clientY,deltaY:e.deltaY};switch(t){case 1:s.deltaY*=16;break;case 2:s.deltaY*=100;break}return e.ctrlKey&&!this._controlActive&&(s.deltaY*=10),s}}function Ai(o){this.enabled!==!1&&(this._pointers.length===0&&(this.domElement.setPointerCapture(o.pointerId),this.domElement.ownerDocument.addEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.addEventListener("pointerup",this._onPointerUp)),!this._isTrackingPointer(o)&&(this._addPointer(o),o.pointerType==="touch"?this._onTouchStart(o):this._onMouseDown(o),this._cursorStyle==="grab"&&(this.domElement.style.cursor="grabbing")))}function Ti(o){this.enabled!==!1&&(o.pointerType==="touch"?this._onTouchMove(o):this._onMouseMove(o))}function Li(o){switch(this._removePointer(o),this._pointers.length){case 0:this.domElement.releasePointerCapture(o.pointerId),this.domElement.ownerDocument.removeEventListener("pointermove",this._onPointerMove),this.domElement.ownerDocument.removeEventListener("pointerup",this._onPointerUp),this.dispatchEvent(vs),this.state=K.NONE,this._cursorStyle==="grab"&&(this.domElement.style.cursor="grab");break;case 1:const e=this._pointers[0],t=this._pointerPositions[e];this._onTouchStart({pointerId:e,pageX:t.x,pageY:t.y});break}}function Di(o){let e;switch(o.button){case 0:e=this.mouseButtons.LEFT;break;case 1:e=this.mouseButtons.MIDDLE;break;case 2:e=this.mouseButtons.RIGHT;break;default:e=-1}switch(e){case Je.DOLLY:if(this.enableZoom===!1)return;this._handleMouseDownDolly(o),this.state=K.DOLLY;break;case Je.ROTATE:if(o.ctrlKey||o.metaKey||o.shiftKey){if(this.enablePan===!1)return;this._handleMouseDownPan(o),this.state=K.PAN}else{if(this.enableRotate===!1)return;this._handleMouseDownRotate(o),this.state=K.ROTATE}break;case Je.PAN:if(o.ctrlKey||o.metaKey||o.shiftKey){if(this.enableRotate===!1)return;this._handleMouseDownRotate(o),this.state=K.ROTATE}else{if(this.enablePan===!1)return;this._handleMouseDownPan(o),this.state=K.PAN}break;default:this.state=K.NONE}this.state!==K.NONE&&this.dispatchEvent($t)}function Ri(o){switch(this.state){case K.ROTATE:if(this.enableRotate===!1)return;this._handleMouseMoveRotate(o);break;case K.DOLLY:if(this.enableZoom===!1)return;this._handleMouseMoveDolly(o);break;case K.PAN:if(this.enablePan===!1)return;this._handleMouseMovePan(o);break}}function Ci(o){this.enabled===!1||this.enableZoom===!1||this.state!==K.NONE||(o.preventDefault(),this.dispatchEvent($t),this._handleMouseWheel(this._customWheelEvent(o)),this.dispatchEvent(vs))}function Ni(o){this.enabled!==!1&&this._handleKeyDown(o)}function Ii(o){switch(this._trackPointer(o),this._pointers.length){case 1:switch(this.touches.ONE){case Ze.ROTATE:if(this.enableRotate===!1)return;this._handleTouchStartRotate(o),this.state=K.TOUCH_ROTATE;break;case Ze.PAN:if(this.enablePan===!1)return;this._handleTouchStartPan(o),this.state=K.TOUCH_PAN;break;default:this.state=K.NONE}break;case 2:switch(this.touches.TWO){case Ze.DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchStartDollyPan(o),this.state=K.TOUCH_DOLLY_PAN;break;case Ze.DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchStartDollyRotate(o),this.state=K.TOUCH_DOLLY_ROTATE;break;default:this.state=K.NONE}break;default:this.state=K.NONE}this.state!==K.NONE&&this.dispatchEvent($t)}function Oi(o){switch(this._trackPointer(o),this.state){case K.TOUCH_ROTATE:if(this.enableRotate===!1)return;this._handleTouchMoveRotate(o),this.update();break;case K.TOUCH_PAN:if(this.enablePan===!1)return;this._handleTouchMovePan(o),this.update();break;case K.TOUCH_DOLLY_PAN:if(this.enableZoom===!1&&this.enablePan===!1)return;this._handleTouchMoveDollyPan(o),this.update();break;case K.TOUCH_DOLLY_ROTATE:if(this.enableZoom===!1&&this.enableRotate===!1)return;this._handleTouchMoveDollyRotate(o),this.update();break;default:this.state=K.NONE}}function Wi(o){this.enabled!==!1&&o.preventDefault()}function $i(o){o.key==="Control"&&(this._controlActive=!0,this.domElement.getRootNode().addEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function Ui(o){o.key==="Control"&&(this._controlActive=!1,this.domElement.getRootNode().removeEventListener("keyup",this._interceptControlUp,{passive:!0,capture:!0}))}function Bi(o){if(o.kind!=="building"||!o.parts.length)return[];const e=o.parts.map(ct).filter(({min:t,max:s})=>(s[1]<=1.2+1e-6||s[1]-t[1]<.3)&&s[0]-t[0]>1&&s[2]-t[2]>1);if(!e.length){const t=Qs(o);e.push({min:[t.min[0],0,t.min[2]],max:[t.max[0],0,t.max[2]]})}return e.map(({min:t,max:s})=>({x:(t[0]+s[0])/2,y:s[1]+.012,z:(t[2]+s[2])/2,width:(s[0]-t[0])*.96,depth:(s[2]-t[2])*.96}))}class _s{group=new he;material=new bs({uniforms:{night:{value:0},warmth:{value:new H("#ffb24d")},strength:{value:.34}},vertexShader:`varying vec2 lightUv;
|
|
2
2
|
void main() { lightUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); }`,fragmentShader:`uniform float night; uniform vec3 warmth; uniform float strength; varying vec2 lightUv;
|
|
3
3
|
void main() {
|
|
4
4
|
vec2 p = lightUv * 2.0 - 1.0;
|
|
Binary file
|
|
Binary file
|