2 lines
1.4 KiB
JavaScript
2 lines
1.4 KiB
JavaScript
import{j as f,Y as i,Z as l,$ as u,a0 as n}from"./model.vue.8f6f7b03.js";import"./entry.a42f0781.js";const[c,v]=f(void 0);function E(){this.done||(this.createEffect(()=>{if(!(this.mouseControlState.get()!==!0||i()!==this.camera))return l("camera"),()=>{l("mouse")}},[this.mouseControlState.get,i]),this.createEffect(()=>{if(i()!==this.camera||!this.mouseControlState.get())return;if(v()===this.camera){const e=a=>this.gyrate(a.movementX,a.movementY);return document.addEventListener("mousemove",e),()=>{document.removeEventListener("mousemove",e)}}let t=!1,[o,r]=[0,0];const s=u.on("down",e=>(t=!0,[o,r]=[e.clientX,e.clientY])),d=u.on("up",()=>t=!1),m=e=>{if(e.movementX===void 0){const[a,h]=[e.clientX-o,e.clientY-r];[o,r]=[e.clientX,e.clientY],t&&this.gyrate(a*2,h*2);return}t&&this.gyrate(e.movementX*2,e.movementY*2)};return n.addEventListener("pointermove",m),()=>{s.cancel(),d.cancel(),n.removeEventListener("pointermove",m),t=!1}},[this.mouseControlState.get,i,v]),this.createEffect(()=>{const t=i();if(this.mouseControlState.get()!==!0||t!==this.camera)return;const o=()=>{var s;return(s=n.requestPointerLock)===null||s===void 0?void 0:s.call(n)},r=()=>{document.pointerLockElement===n?c(t):c(void 0)};return n.addEventListener("click",o),document.addEventListener("pointerlockchange",r),()=>{n.removeEventListener("click",o),document.removeEventListener("pointerlockchange",r),document.exitPointerLock(),c(void 0)}},[this.mouseControlState.get,i]))}export{E as default};
|