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