account for widget position

This commit is contained in:
Stewart Allen 2021-02-18 16:12:04 -05:00
commit 1e064a1936

View file

@ -313,18 +313,18 @@
let lerp = UTIL.lerp(0,dist,dw).map(v => v/dist); let lerp = UTIL.lerp(0,dist,dw).map(v => v/dist);
lerp.pop(); lerp.pop();
for (let pct of lerp) { for (let pct of lerp) {
let point = new THREE.Vector3(from.x + d.x * pct, from.z + d.z * pct - ip.y, from.y + d.y * pct); let point = new THREE.Vector3(from.x + d.x * pct, from.z + d.z * pct, from.y + d.y * pct);
addSupportAtPoint(targets, point); addSupportAtPoint(targets, point, ip);
} }
} }
ws.push(Object.clone(rec)); ws.push(Object.clone(rec));
fromPillar = addWidgetSupport(iw, rec); fromPillar = addWidgetSupport(iw, rec);
API.conf.save(); API.conf.save();
}); });
function addSupportAtPoint(targets, point) { function addSupportAtPoint(targets, point, ip) {
let up = new THREE.Vector3(0,1,0) let up = new THREE.Vector3(0,1,0)
let dn = new THREE.Vector3(0,-1,0) let dn = new THREE.Vector3(0,-1,0)
let rp = new THREE.Vector3(point.x, point.y, -point.z); let rp = new THREE.Vector3(point.x + ip.x, point.y, -point.z - ip.y);
let iup = new THREE.Raycaster(rp, up) let iup = new THREE.Raycaster(rp, up)
.intersectObjects(targets, false) .intersectObjects(targets, false)
.filter(t => !t.object.pillar); .filter(t => !t.object.pillar);
@ -338,7 +338,7 @@
let ws = (wa.support = wa.support || []); let ws = (wa.support = wa.support || []);
let phi = iup[0].point; let phi = iup[0].point;
let plo = idn[0].point; let plo = idn[0].point;
let mp = (phi.y - plo.y) / 2; let mp = (phi.y + plo.y) / 2;
let dy = Math.abs(phi.y - plo.y); let dy = Math.abs(phi.y - plo.y);
let dw = api.conf.get().process.sliceSupportSize / 2; let dw = api.conf.get().process.sliceSupportSize / 2;
let rec = { x:point.x, y:point.z, z:mp, dw, dh:dy, id: Math.random() * 0xffffffffff }; let rec = { x:point.x, y:point.z, z:mp, dw, dh:dy, id: Math.random() * 0xffffffffff };