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
JavaScript
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
};