soonspacejs
Version:
soonspacejs 2.x
43 lines (42 loc) • 1.13 kB
JavaScript
import { BufferGeometry as m, BufferAttribute as u } from "three";
import { MeshBVH as c } from "three-mesh-bvh";
onmessage = function({ data: n }) {
let i = performance.now();
function p(e) {
const o = performance.now();
(o - i >= 10 || e === 1) && (postMessage({
error: null,
serialized: null,
position: null,
progress: e
}), i = o);
}
try {
if (!n) {
postMessage(n);
return;
}
const { index: e, position: o, options: r } = n, s = new m();
if (s.setAttribute("position", new u(o, 3, !1)), e && s.setIndex(new u(e, 1, !1)), r.includedProgressCallback && (r.onProgress = p), r.groups) {
const f = r.groups;
for (const g in f) {
const t = f[g];
s.addGroup(t.start, t.count, t.materialIndex);
}
}
const a = new c(s, r), l = c.serialize(a, { cloneBuffers: !1 });
postMessage({
error: null,
serialized: l,
position: o,
progress: 1
}, [o.buffer, ...l.roots]);
} catch (e) {
postMessage({
error: e,
serialized: null,
position: null,
progress: 1
});
}
};