UNPKG

lingo3d-vue

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

73 lines (72 loc) 2.87 kB
import { bc as u, bd as E, be as n, bf as L, bg as b, bh as f } from "./index-ee50be32.mjs"; import "vue"; const C = (() => { const o = navigator.userAgent; return /(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(o) ? !0 : !!/Mobile|Android|iP(hone|od)|IEMobile|BlackBerry|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(o); })(); function M() { this.done || (this.createEffect(() => { if (u() !== this.camera || !this.mouseControlState.get()) return; if (E() === this.camera) { const t = (c) => this.gyrate(c.movementX, c.movementY); return document.addEventListener("mousemove", t), () => { document.removeEventListener("mousemove", t); }; } let o = !1, e, i, r; const s = () => { o = !0, [i, r] = [void 0, void 0]; }, v = () => o = !1, l = (t) => { i === void 0 && (i = t.clientX), r === void 0 && (r = t.clientY); const [c, a] = [t.clientX - i, t.clientY - r]; [i, r] = [t.clientX, t.clientY], o && this.gyrate(c / window.innerWidth * 3e3, a / window.innerHeight * 3e3); }; if (C) { const t = (d) => { e === void 0 && (e = d.changedTouches[d.changedTouches.length - 1].identifier, s()); }; n.addEventListener("touchstart", t); const c = (d) => { e !== void 0 && d.changedTouches[d.changedTouches.length - 1].identifier === e && (e = void 0, v()); }; n.addEventListener("touchend", c); const a = (d) => { if (e === void 0) return; let h; for (let m = 0; m < d.changedTouches.length; ++m) { const g = d.changedTouches[m]; if (g.identifier === e) { h = g; break; } } h && l(h); }; return n.addEventListener("touchmove", a), () => { n.removeEventListener("touchstart", t), n.removeEventListener("touchend", c), n.removeEventListener("touchmove", a), e = void 0, o = !1; }; } const k = L.on("down", s), p = L.on("up", v); return n.addEventListener("mousemove", l), () => { k.cancel(), p.cancel(), n.removeEventListener("mousemove", l), e = void 0, o = !1; }; }, [this.mouseControlState.get, u, E]), this.createEffect(() => { const o = u(); if (this.mouseControlState.get() !== !0 || o !== this.camera || !b()) return; const e = () => { var r, s; return (s = (r = n).requestPointerLock) == null ? void 0 : s.call(r); }, i = () => { document.pointerLockElement === n ? f(o) : f(void 0); }; return n.addEventListener("click", e), document.addEventListener("pointerlockchange", i), () => { n.removeEventListener("click", e), document.removeEventListener("pointerlockchange", i), document.exitPointerLock(), f(void 0); }; }, [this.mouseControlState.get, u, b])); } export { M as default };