convert preview path to async function. remove shared array from animation direct list
This commit is contained in:
parent
d4e867fd2d
commit
e970d377b2
7 changed files with 26 additions and 22 deletions
|
|
@ -304,7 +304,7 @@ kiri.load(() => {
|
|||
center = Object.assign({}, stock.center);
|
||||
center.z -= stock.z / 2;
|
||||
|
||||
send.data({ mesh_add: { id: 0, ind, offset, sab } }, [ sab ]);
|
||||
send.data({ mesh_add: { id: 0, ind, offset, sab } }, [ ]); // sab not transferrable
|
||||
send.data({ mesh_move: { id: 0, pos: center } });
|
||||
send.done();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ const POLY = polygons;
|
|||
* @param {Number} [index] into widget array
|
||||
* @param {Object} [firstPoint] starting point
|
||||
*/
|
||||
CAM.prepare = function(widgets, settings, update) {
|
||||
CAM.prepare = async function(widgets, settings, update) {
|
||||
widgets = widgets.filter(w => !w.track.ignore && !w.meta.disabled);
|
||||
|
||||
const count = widgets.length;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ const POLY = polygons;
|
|||
* @param {Function} update progress callback
|
||||
* @returns {Object[]} returns array of render objects
|
||||
*/
|
||||
FDM.prepare = function(widgets, settings, update) {
|
||||
FDM.prepare = async function(widgets, settings, update) {
|
||||
// filter ignored widgets
|
||||
widgets = widgets.filter(w => !w.track.ignore && !w.meta.disabled);
|
||||
|
||||
|
|
@ -768,7 +768,7 @@ FDM.prepare = function(widgets, settings, update) {
|
|||
|
||||
// render if not explicitly disabled
|
||||
if (settings.render !== false) {
|
||||
return render.path(output, (progress, layer) => {
|
||||
await render.path(output, (progress, layer) => {
|
||||
update(0.5 + progress * 0.5, "render", layer);
|
||||
}, {
|
||||
lineWidth: settings.process.sliceLineWidth,
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ function sliceEmitObjects(print, slice, groups, opt = { }) {
|
|||
* @param {Object} print state object
|
||||
* @param {Function} update incremental callback
|
||||
*/
|
||||
function prepare(widgets, settings, update) {
|
||||
async function prepare(widgets, settings, update) {
|
||||
let device = settings.device,
|
||||
process = settings.process,
|
||||
print = self.worker.print = kiri.newPrint(settings, widgets),
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ if (SLA.legacy) {
|
|||
|
||||
// runs in worker. would usually be in src/mode/sla/prepare.js
|
||||
// but the SLA driver skips the prepare step because there is no path routing
|
||||
function prepare(widgets, settings, update) {
|
||||
async function prepare(widgets, settings, update) {
|
||||
root.worker.print = kiri.newPrint(settings, widgets);
|
||||
if (!SLA.wasm) {
|
||||
fetch('/wasm/kiri-sla.wasm')
|
||||
|
|
|
|||
|
|
@ -475,19 +475,19 @@ kiri.worker = {
|
|||
return console.log({invalid_print_driver: mode, driver});
|
||||
}
|
||||
|
||||
const layers = driver.prepare(widgets, settings, (progress, message, layer) => {
|
||||
driver.prepare(widgets, settings, (progress, message, layer) => {
|
||||
const state = { zeros: [] };
|
||||
const emit = { progress, message, layer: (layer ? layer.encode(state) : undefined) };
|
||||
send.data(emit, state.zeros);
|
||||
}).then(() => {
|
||||
const unitScale = settings.controller.units === 'in' ? (1 / 25.4) : 1;
|
||||
const print = current.print || {};
|
||||
const minSpeed = (print.minSpeed || 0) * unitScale;
|
||||
const maxSpeed = (print.maxSpeed || 0) * unitScale;
|
||||
|
||||
send.data({ progress: 1, message: "transfer" });
|
||||
send.done({ done: true, minSpeed, maxSpeed });
|
||||
});
|
||||
|
||||
const unitScale = settings.controller.units === 'in' ? (1 / 25.4) : 1;
|
||||
const print = current.print || {};
|
||||
const minSpeed = (print.minSpeed || 0) * unitScale;
|
||||
const maxSpeed = (print.maxSpeed || 0) * unitScale;
|
||||
|
||||
send.data({ progress: 1, message: "transfer" });
|
||||
send.done({ done: true, minSpeed, maxSpeed });
|
||||
},
|
||||
|
||||
export(data, send) {
|
||||
|
|
@ -550,10 +550,12 @@ kiri.worker = {
|
|||
}, done => {
|
||||
const minSpeed = print.minSpeed;
|
||||
const maxSpeed = print.maxSpeed;
|
||||
const layers = kiri.render.path(done.output, progress => {
|
||||
kiri.render.path(done.output, progress => {
|
||||
send.data({ progress: 0.25 + progress * 0.75 });
|
||||
}, { thin: thin || print.belt, flat, tools });
|
||||
send.done({parsed: codec.encode(layers), maxSpeed, minSpeed});
|
||||
}, { thin: thin || print.belt, flat, tools })
|
||||
.then(layers => {
|
||||
send.done({parsed: codec.encode(layers), maxSpeed, minSpeed});
|
||||
});
|
||||
}, {
|
||||
fdm: mode === 'FDM',
|
||||
belt: device.bedBelt
|
||||
|
|
@ -568,10 +570,12 @@ kiri.worker = {
|
|||
});
|
||||
});
|
||||
const print = current.print = kiri.newPrint(null, Object.values(wcache));
|
||||
const layers = kiri.render.path(parsed, progress => {
|
||||
kiri.render.path(parsed, progress => {
|
||||
send.data({ progress });
|
||||
}, { thin: true });
|
||||
send.done({parsed: codec.encode(layers)});
|
||||
}, { thin: true })
|
||||
.then(layers => {
|
||||
send.done({parsed: codec.encode(layers)});
|
||||
});
|
||||
},
|
||||
|
||||
config(data, send) {
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ function rate_to_color(rate, max) {
|
|||
}
|
||||
};
|
||||
|
||||
function path(levels, update, opts = {}) {
|
||||
async function path(levels, update, opts = {}) {
|
||||
levels = levels.filter(level => level.length);
|
||||
if (levels.length === 0) {
|
||||
self.worker.print.maxSpeed = 0;
|
||||
|
|
|
|||
Loading…
Reference in a new issue