splice slice sync and slice async

This commit is contained in:
casperlamboo 2016-08-19 15:12:20 +02:00
parent 0ae8ef33b9
commit 178e88f76b
2 changed files with 23 additions and 25 deletions

View File

@ -11,6 +11,6 @@ const geometry = new THREE.TorusGeometry(20, 10, 30, 30);
const slicer = new SLICER.Slicer(); const slicer = new SLICER.Slicer();
slicer.setGeometry(geometry); slicer.setGeometry(geometry);
slicer.slice(settings, true).then(gcode => { slicer.slice(settings).then(gcode => {
document.getElementById('gcode').innerHTML = gcode.replace(/(?:\r\n|\r|\n)/g, '<br />'); document.getElementById('gcode').innerHTML = gcode.replace(/(?:\r\n|\r|\n)/g, '<br />');
}); });

View File

@ -30,34 +30,32 @@ export default class {
return this; return this;
} }
async slice(settings, async = false) { sliceSync(settings) {
let gcode; return slice(this.geometry, settings);
}
slice(settings) {
const sliceWorker = new SliceWorker();
if (async) { const geometry = this.geometry.toJSON();
const sliceWorker = new SliceWorker(); const { config } = settings;
const geometry = this.geometry.toJSON(); return new Promise((resolve, reject) => {
const { config } = settings; sliceWorker.onerror = reject;
gcode = await new Promise((resolve) => { sliceWorker.addEventListener('message', (event) => {
sliceWorker.addEventListener('message', (event) => { const { message, data } = event.data;
const { message, data } = event.data; switch (message) {
switch (message) { case 'SLICE': {
case 'SLICE': { sliceWorker.terminate();
sliceWorker.terminate(); resolve(data.gcode);
resolve(data.gcode);
}
} }
}); }
sliceWorker.postMessage({
message: 'SLICE',
data: { geometry, config }
});
}); });
} else {
gcode = slice(this.geometry, settings); sliceWorker.postMessage({
} message: 'SLICE',
return gcode; data: { geometry, config }
});
});
} }
} }