remove non-func unrotate() and fold rotinfo back into belt

This commit is contained in:
Stewart Allen 2022-11-01 23:45:11 -04:00
commit 4bc113096b
7 changed files with 43 additions and 76 deletions

View file

@ -249,7 +249,6 @@ FDM.prepare = async function(widgets, settings, update) {
let swidget = kiri.newWidget(null,widget.group); let swidget = kiri.newWidget(null,widget.group);
swidget.slices = sslices; swidget.slices = sslices;
swidget.support = true; swidget.support = true;
swidget.rotinfo = widget.rotinfo;
swidget.belt = widget.belt; swidget.belt = widget.belt;
swidget.track = Object.clone(widget.track); swidget.track = Object.clone(widget.track);
swidget.mesh = { widget: swidget, position: swidget.track.pos }; swidget.mesh = { widget: swidget, position: swidget.track.pos };
@ -440,12 +439,12 @@ FDM.prepare = async function(widgets, settings, update) {
// establish offsets // establish offsets
for (let widget of widgets) { for (let widget of widgets) {
let { rotinfo, belt } = widget; let { belt } = widget;
let offset = Object.clone(widget.track.pos); let offset = Object.clone(widget.track.pos);
if (isBelt) { if (isBelt) {
let o = rotinfo.ypos * beltfact; let o = belt.ypos * beltfact;
offset = { offset = {
x: rotinfo.xpos, x: belt.xpos,
y: o, y: o,
z: o z: o
}; };

View file

@ -346,10 +346,8 @@ kiri.worker = {
let x = vert[i++]; let x = vert[i++];
let y = vert[i++]; let y = vert[i++];
let z = vert[i++]; let z = vert[i++];
// if (z < 0.01) { miny = Math.min(miny, y);
miny = Math.min(miny, y); maxy = Math.max(maxy, y);
maxy = Math.max(maxy, y);
// }
} }
return { miny, maxy }; return { miny, maxy };
} }
@ -377,7 +375,14 @@ kiri.worker = {
} }
widget.rotateRaw(rotation,0,0,true); widget.rotateRaw(rotation,0,0,true);
let minr = gmin(group); let minr = gmin(group);
widget.belt = { xpos, ypos, yadd: minr.maxy - minr.miny, dy: -miny, dz: 0 }; widget.belt = {
angle: 45,
xpos,
ypos,
yadd: minr.maxy - minr.miny,
dy: -miny - (proc.beltAnchor || proc.firstLayerBeltLead || 0),
dz: 0
};
for (let others of group.slice(1)) { for (let others of group.slice(1)) {
others.belt = widget.belt; others.belt = widget.belt;
} }
@ -387,28 +392,6 @@ kiri.worker = {
send.done({}); send.done({});
}, },
unrotate(data, send) {
let { settings } = data;
if (!settings.device.bedBelt) {
return send.done({});
}
let rotation = (Math.PI / 180) * 45;
for (let group of Object.values(wgroup)) {
let widget = group[0];
let { xpos, ypos } = widget.belt;
let { dy, dz } = widget.belt;
let proc = settings.process;
// move to accomodate anchor
dy -= (proc.beltAnchor || proc.firstLayerBeltLead || 0) ;
widget.rotinfo = { angle: 45, dy, dz, xpos, ypos };
for (let others of group.slice(1)) {
others.rotinfo = widget.rotinfo;
}
send.data({group: group.id, rotinfo: widget.rotinfo});
}
send.done({});
},
slice(data, send) { slice(data, send) {
send.data({update:0.001, updateStatus:"slicing"}); send.data({update:0.001, updateStatus:"slicing"});

View file

@ -199,18 +199,6 @@ const client = exports({
}); });
}, },
unrotate(settings, callback) {
send("unrotate", { settings }, reply => {
if (reply.group) {
for (let widget of kiri.Widget.Groups.forid(reply.group)) {
widget.rotinfo = reply.rotinfo;
}
} else if (callback) {
callback();
}
});
},
slice(settings, widget, callback) { slice(settings, widget, callback) {
send("slice", { send("slice", {
id: widget.id, id: widget.id,

View file

@ -163,7 +163,8 @@ function encodePointArray(points, state, z) {
return points; return points;
} }
const array = codec.allocFloat32Array(length * 3, state.zeros); const zeros = state ? state.zeros : undefined;
const array = codec.allocFloat32Array(length * 3, zeros);
for (let i=0, pos=0, point; i<length; i++) { for (let i=0, pos=0, point; i<length; i++) {
point = points[i]; point = points[i];
@ -186,7 +187,8 @@ function encodePointArray2D(points, state) {
return points; return points;
} }
const array = codec.allocFloat32Array(length * 2, state.zeros); const zeros = state ? state.zeros : undefined;
const array = codec.allocFloat32Array(length * 2, zeros);
for (let i=0, pos=0, point; i<length; i++) { for (let i=0, pos=0, point; i<length; i++) {
point = points[i]; point = points[i];

View file

@ -90,6 +90,7 @@ function prepareSlices(callback, scale = 1, offset = 0) {
lastMsg; lastMsg;
for (let widget of toSlice) { for (let widget of toSlice) {
widget.belt = null;
widget.stats.progress = 0; widget.stats.progress = 0;
widget.setColor(COLOR.slicing); widget.setColor(COLOR.slicing);
let { extruder } = widget.anno; let { extruder } = widget.anno;
@ -135,7 +136,6 @@ function prepareSlices(callback, scale = 1, offset = 0) {
widget.stack.obj.view.position.z = widget.track.zcut || 0; widget.stack.obj.view.position.z = widget.track.zcut || 0;
widget.slice(settings, (sliced, error) => { widget.slice(settings, (sliced, error) => {
widget.rotinfo = null;
let mark = Date.now(); let mark = Date.now();
// update UI info // update UI info
if (sliced) { if (sliced) {
@ -190,31 +190,29 @@ function prepareSlices(callback, scale = 1, offset = 0) {
if (scale === 1 && feature.work_alerts && slicing.length) { if (scale === 1 && feature.work_alerts && slicing.length) {
alert = show.alert("Rendering"); alert = show.alert("Rendering");
}; };
client.unrotate(settings, () => { for (let widget of slicing) {
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 if (widget.belt) {
if (widget.rotinfo) { widget.stack.obj.rotate(widget.belt);
widget.stack.obj.rotate(widget.rotinfo);
}
if (scale === 1) {
// clear wireframe
widget.setWireframe(false, COLOR.wireframe, COLOR.wireframe_opacity);
widget.setOpacity(camOrLaser ? COLOR.cam_sliced_opacity : COLOR.sliced_opacity);
widget.setColor(COLOR.deselected);
api.hide.alert(alert);
}
} }
view.update_slider_max(true);
show.layer(-1, 0);
if (scale === 1) { if (scale === 1) {
view.update_stack_labels(); // clear wireframe
widget.setWireframe(false, COLOR.wireframe, COLOR.wireframe_opacity);
widget.setOpacity(camOrLaser ? COLOR.cam_sliced_opacity : COLOR.sliced_opacity);
widget.setColor(COLOR.deselected);
api.hide.alert(alert);
} }
if (!isBelt && controller.lineType === 'line' && !process.xray && !controller.devel) { }
$('render-ghost').onclick(); view.update_slider_max(true);
} show.layer(-1, 0);
}); if (scale === 1) {
view.update_stack_labels();
}
if (!isBelt && controller.lineType === 'line' && !process.xray && !controller.devel) {
$('render-ghost').onclick();
}
if (scale === 1) { if (scale === 1) {
show.progress(0); show.progress(0);
} }
@ -334,11 +332,11 @@ function preparePreview(callback, scale = 1, offset = 0) {
stack.add(layer); stack.add(layer);
}); });
// rotate stack for belt beds // rotate stack for belt beds
if (isBelt && widgets[0].rotinfo) { if (isBelt && widgets[0].belt) {
let ri = widgets[0].rotinfo; let ri = widgets[0].belt;
ri.dz = 0; ri.dz = 0;
ri.dy = settings.device.bedDepth / 2; ri.dy = settings.device.bedDepth / 2;
stack.obj.rotate(widgets[0].rotinfo); stack.obj.rotate(widgets[0].belt);
} }
api.hide.alert(alert); api.hide.alert(alert);
segtimes[`${segNumber}_draw`] = Date.now() - startTime; segtimes[`${segNumber}_draw`] = Date.now() - startTime;

View file

@ -33,8 +33,8 @@ class Stack {
rotate(set) { rotate(set) {
this.view.rotation.x = -set.angle * (Math.PI/180); this.view.rotation.x = -set.angle * (Math.PI/180);
this.view.position.y += -set.dy; this.view.position.y = -set.dy;
this.view.position.z += -set.dz; this.view.position.z = -set.dz;
} }
destroy() { destroy() {

View file

@ -772,9 +772,6 @@ class Widget {
if (reply.slice) { if (reply.slice) {
widget.slices.push(kiri.codec.decode(reply.slice, {mesh:widget.mesh})); widget.slices.push(kiri.codec.decode(reply.slice, {mesh:widget.mesh}));
} }
if (reply.rotinfo) {
widget.rotinfo = reply.rotinfo;
}
if (reply.done) { if (reply.done) {
ondone(true); ondone(true);
} }