add the ability to selectively disable widget slicing. normalize support widget meshes to make mergeBufferGeometries happy
This commit is contained in:
parent
15a00248bd
commit
3844642ad2
2 changed files with 19 additions and 10 deletions
|
|
@ -987,7 +987,8 @@
|
||||||
API.conf.save();
|
API.conf.save();
|
||||||
API.event.emit('slice.begin', getMode());
|
API.event.emit('slice.begin', getMode());
|
||||||
|
|
||||||
let countdown = WIDGETS.length,
|
let slicing = WIDGETS.slice().filter(w => !w.track.ignore),
|
||||||
|
countdown = slicing.length,
|
||||||
totalProgress,
|
totalProgress,
|
||||||
track = {},
|
track = {},
|
||||||
mode = settings.mode,
|
mode = settings.mode,
|
||||||
|
|
@ -996,10 +997,10 @@
|
||||||
defvert;
|
defvert;
|
||||||
|
|
||||||
// determing this widgets % of processing time estimated by vertex count
|
// determing this widgets % of processing time estimated by vertex count
|
||||||
for (let widget of WIDGETS) {
|
for (let widget of slicing) {
|
||||||
totvert += widget.getVertices().count;
|
totvert += widget.getVertices().count;
|
||||||
}
|
}
|
||||||
defvert = totvert / WIDGETS.length;
|
defvert = totvert / slicing.length;
|
||||||
|
|
||||||
setOpacity(color.slicing_opacity);
|
setOpacity(color.slicing_opacity);
|
||||||
|
|
||||||
|
|
@ -1017,7 +1018,7 @@
|
||||||
lastMsg;
|
lastMsg;
|
||||||
|
|
||||||
// for each widget, slice
|
// for each widget, slice
|
||||||
forAllWidgets(function(widget) {
|
for (let widget of slicing) {
|
||||||
let camOrLaser = mode === 'CAM' || mode === 'LASER',
|
let camOrLaser = mode === 'CAM' || mode === 'LASER',
|
||||||
stack = widget.stack = STACKS.create(widget.id, widget.mesh),
|
stack = widget.stack = STACKS.create(widget.id, widget.mesh),
|
||||||
factor = (widget.getVertices().count / defvert);
|
factor = (widget.getVertices().count / defvert);
|
||||||
|
|
@ -1055,7 +1056,7 @@
|
||||||
alert = API.show.alert("Rendering");
|
alert = API.show.alert("Rendering");
|
||||||
};
|
};
|
||||||
KIRI.client.unrotate(settings, () => {
|
KIRI.client.unrotate(settings, () => {
|
||||||
forAllWidgets(widget => {
|
for (let widget of slicing) {
|
||||||
// on done
|
// on done
|
||||||
segtimes[`${widget.id}_${segNumber++}_draw`] = widget.render(widget.stack);
|
segtimes[`${widget.id}_${segNumber++}_draw`] = widget.render(widget.stack);
|
||||||
// rotate stack for belt beds
|
// rotate stack for belt beds
|
||||||
|
|
@ -1069,7 +1070,7 @@
|
||||||
widget.setColor(color.deselected);
|
widget.setColor(color.deselected);
|
||||||
API.hide.alert(alert);
|
API.hide.alert(alert);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
updateSliderMax(true);
|
updateSliderMax(true);
|
||||||
setVisibleLayer(-1, 0);
|
setVisibleLayer(-1, 0);
|
||||||
if (scale === 1) {
|
if (scale === 1) {
|
||||||
|
|
@ -1103,12 +1104,12 @@
|
||||||
// on update
|
// on update
|
||||||
track[widget.id] = (update || 0) * factor;
|
track[widget.id] = (update || 0) * factor;
|
||||||
totalProgress = 0;
|
totalProgress = 0;
|
||||||
forAllWidgets(function(w) {
|
for (let w of slicing) {
|
||||||
totalProgress += (track[w.id] || 0);
|
totalProgress += (track[w.id] || 0);
|
||||||
});
|
}
|
||||||
API.show.progress(offset + (totalProgress / WIDGETS.length) * scale, msg);
|
API.show.progress(offset + (totalProgress / WIDGETS.length) * scale, msg);
|
||||||
});
|
});
|
||||||
});
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function preparePreview(callback, scale = 1, offset = 0) {
|
function preparePreview(callback, scale = 1, offset = 0) {
|
||||||
|
|
|
||||||
|
|
@ -229,7 +229,15 @@
|
||||||
if (!merge.length) {
|
if (!merge.length) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let boxen = merge.map(m => m.box.geometry.clone().translate(m.x, m.y, m.z));
|
let boxen = merge.map(m => {
|
||||||
|
let geo = m.box.geometry.clone();
|
||||||
|
if (geo.index) geo = geo.toNonIndexed();
|
||||||
|
return geo.translate(m.x, m.y, m.z);
|
||||||
|
});
|
||||||
|
for (let box of boxen) {
|
||||||
|
// eliminate / normalize uv to allow other widget merge
|
||||||
|
box.setAttribute('uv',new THREE.BufferAttribute(new Float32Array(0), 3));
|
||||||
|
}
|
||||||
let bbg = THREE.BufferGeometryUtils.mergeBufferGeometries(boxen);
|
let bbg = THREE.BufferGeometryUtils.mergeBufferGeometries(boxen);
|
||||||
let sw = kiri.newWidget(null, group);
|
let sw = kiri.newWidget(null, group);
|
||||||
let fwp = group[0].track.pos;
|
let fwp = group[0].track.pos;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue