UNPKG

lingo3d-react

Version:

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

74 lines (73 loc) 2.89 kB
import { bu as g, bv as L, bw as n, bx as C, by as M, bz as E, b4 as b, bA as m } from "./index-895cfa2f.mjs"; import "react"; import "react-dom"; const w = (() => { 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 S() { this.done || (this.createEffect(() => { if (g[0] !== this.camera || !this.mouseControlState.get()) return; if (L() === this.camera) { const t = (s) => this.gyrate(s.movementX, s.movementY); return document.addEventListener("mousemove", t), () => { document.removeEventListener("mousemove", t); }; } let o = !1, e, i, r; const a = () => { o = !0, [i, r] = [void 0, void 0]; }, f = () => o = !1, u = (t) => { i === void 0 && (i = t.clientX), r === void 0 && (r = t.clientY); const [s, c] = [t.clientX - i, t.clientY - r]; [i, r] = [t.clientX, t.clientY], o && this.gyrate(s / window.innerWidth * 3e3, c / window.innerHeight * 3e3); }; if (w) { const t = (d) => { e === void 0 && (e = d.changedTouches[d.changedTouches.length - 1].identifier, a()); }; n.addEventListener("touchstart", t); const s = (d) => { e !== void 0 && d.changedTouches[d.changedTouches.length - 1].identifier === e && (e = void 0, f()); }; n.addEventListener("touchend", s); const c = (d) => { if (e === void 0) return; let l; for (let h = 0; h < d.changedTouches.length; ++h) { const v = d.changedTouches[h]; if (v.identifier === e) { l = v; break; } } l && u(l); }; return n.addEventListener("touchmove", c), () => { n.removeEventListener("touchstart", t), n.removeEventListener("touchend", s), n.removeEventListener("touchmove", c), e = void 0, o = !1; }; } const k = C(a), p = M(f); return n.addEventListener("mousemove", u), () => { k.cancel(), p.cancel(), n.removeEventListener("mousemove", u), e = void 0, o = !1; }; }, [this.mouseControlState.get, E, L]), this.createEffect(() => { const [o] = g; if (this.mouseControlState.get() !== !0 || o !== this.camera || !b()) return; const e = () => { var r, a; return (a = (r = n).requestPointerLock) == null ? void 0 : a.call(r); }, i = () => { document.pointerLockElement === n ? m(o) : m(void 0); }; return n.addEventListener("click", e), document.addEventListener("pointerlockchange", i), () => { n.removeEventListener("click", e), document.removeEventListener("pointerlockchange", i), document.exitPointerLock(), m(void 0); }; }, [this.mouseControlState.get, E, b])); } export { S as default };