include zerocopy in minion postMessage
This commit is contained in:
parent
a753e12d3a
commit
cbf23bc351
2 changed files with 12 additions and 7 deletions
|
|
@ -61,16 +61,18 @@ const funcs = {
|
||||||
reply({ seq, union: codec.encode([]) });
|
reply({ seq, union: codec.encode([]) });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
let state = { zeros: [] };
|
||||||
let polys = codec.decode(data.polys);
|
let polys = codec.decode(data.polys);
|
||||||
let union = POLY.union(polys, data.minarea || 0, true);
|
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) => {
|
topShells: (data, seq) => {
|
||||||
let top = codec.decode(data.top, {full: true});
|
let top = codec.decode(data.top, {full: true});
|
||||||
let {z, count, offset1, offsetN, fillOffset, opt} = data;
|
let {z, count, offset1, offsetN, fillOffset, opt} = data;
|
||||||
kiri.driver.FDM.doTopShells(z, top, count, offset1, offsetN, fillOffset, opt);
|
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) => {
|
fill: (data, seq) => {
|
||||||
|
|
@ -111,6 +113,7 @@ const funcs = {
|
||||||
while (i < points.length) {
|
while (i < points.length) {
|
||||||
realp[p++] = base.newPoint(points[i++], points[i++], points[i++]).round(3);
|
realp[p++] = base.newPoint(points[i++], points[i++], points[i++]).round(3);
|
||||||
}
|
}
|
||||||
|
let state = { zero: [] };
|
||||||
let output = [];
|
let output = [];
|
||||||
base.sliceZ(z, realp, {
|
base.sliceZ(z, realp, {
|
||||||
...options,
|
...options,
|
||||||
|
|
@ -120,7 +123,7 @@ const funcs = {
|
||||||
// lines do not pass codec properly (for now)
|
// lines do not pass codec properly (for now)
|
||||||
delete rec.lines;
|
delete rec.lines;
|
||||||
}
|
}
|
||||||
reply({ seq, output: codec.encode(output) });
|
reply({ seq, output: codec.encode(output) }, state.zeros);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,8 +100,9 @@ kiri.minions = {
|
||||||
let polyper = Math.ceil(polys.length / concurrent);
|
let polyper = Math.ceil(polys.length / concurrent);
|
||||||
let running = 0;
|
let running = 0;
|
||||||
let union = [];
|
let union = [];
|
||||||
|
let state = { zeros: [] };
|
||||||
let receiver = function(data) {
|
let receiver = function(data) {
|
||||||
let polys = codec.decode(data.union);
|
let polys = codec.decode(data.union, state);
|
||||||
union.appendAll(polys);
|
union.appendAll(polys);
|
||||||
if (--running === 0) {
|
if (--running === 0) {
|
||||||
resolve(POLY.union(union, minarea, true));
|
resolve(POLY.union(union, minarea, true));
|
||||||
|
|
@ -113,7 +114,7 @@ kiri.minions = {
|
||||||
cmd: "union",
|
cmd: "union",
|
||||||
minarea,
|
minarea,
|
||||||
polys: codec.encode(polys.slice(i, i + polyper))
|
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));
|
resolve(POLY.fillArea(polys, angle, spacing, [], minLen, maxLen));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
const state = { zeros: [] };
|
||||||
minwork.queue({
|
minwork.queue({
|
||||||
cmd: "fill",
|
cmd: "fill",
|
||||||
polys: codec.encode(polys),
|
polys: codec.encode(polys, state),
|
||||||
angle, spacing, minLen, maxLen
|
angle, spacing, minLen, maxLen
|
||||||
}, data => {
|
}, data => {
|
||||||
let arr = data.fill;
|
let arr = data.fill;
|
||||||
|
|
@ -138,7 +140,7 @@ kiri.minions = {
|
||||||
}
|
}
|
||||||
output.appendAll(fill);
|
output.appendAll(fill);
|
||||||
resolve(fill);
|
resolve(fill);
|
||||||
});
|
}, state.zeros);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue