diff --git a/src/kiri-run/minion.js b/src/kiri-run/minion.js index 18b5b2ee..98f2765d 100644 --- a/src/kiri-run/minion.js +++ b/src/kiri-run/minion.js @@ -61,16 +61,18 @@ const funcs = { reply({ seq, union: codec.encode([]) }); return; } + let state = { zeros: [] }; let polys = codec.decode(data.polys); let union = POLY.union(polys, data.minarea || 0, true); - reply({ seq, union: codec.encode(union) }); + reply({ seq, union: codec.encode(union) }, state.zeros); }, topShells: (data, seq) => { let top = codec.decode(data.top, {full: true}); let {z, count, offset1, offsetN, fillOffset, opt} = data; kiri.driver.FDM.doTopShells(z, top, count, offset1, offsetN, fillOffset, opt); - reply({ seq, top: codec.encode(top, {full: true}) }); + let state = { zeros: [] }; + reply({ seq, top: codec.encode(top, {full: true}) }, state.zeros); }, fill: (data, seq) => { @@ -111,6 +113,7 @@ const funcs = { while (i < points.length) { realp[p++] = base.newPoint(points[i++], points[i++], points[i++]).round(3); } + let state = { zero: [] }; let output = []; base.sliceZ(z, realp, { ...options, @@ -120,7 +123,7 @@ const funcs = { // lines do not pass codec properly (for now) delete rec.lines; } - reply({ seq, output: codec.encode(output) }); + reply({ seq, output: codec.encode(output) }, state.zeros); }); }, diff --git a/src/kiri-run/worker.js b/src/kiri-run/worker.js index 6fc0446e..184bf086 100644 --- a/src/kiri-run/worker.js +++ b/src/kiri-run/worker.js @@ -100,8 +100,9 @@ kiri.minions = { let polyper = Math.ceil(polys.length / concurrent); let running = 0; let union = []; + let state = { zeros: [] }; let receiver = function(data) { - let polys = codec.decode(data.union); + let polys = codec.decode(data.union, state); union.appendAll(polys); if (--running === 0) { resolve(POLY.union(union, minarea, true)); @@ -113,7 +114,7 @@ kiri.minions = { cmd: "union", minarea, polys: codec.encode(polys.slice(i, i + polyper)) - }, receiver); + }, receiver, state.zeros); } }); }, @@ -124,9 +125,10 @@ kiri.minions = { resolve(POLY.fillArea(polys, angle, spacing, [], minLen, maxLen)); return; } + const state = { zeros: [] }; minwork.queue({ cmd: "fill", - polys: codec.encode(polys), + polys: codec.encode(polys, state), angle, spacing, minLen, maxLen }, data => { let arr = data.fill; @@ -138,7 +140,7 @@ kiri.minions = { } output.appendAll(fill); resolve(fill); - }); + }, state.zeros); }); },