multiple api migration fixes. separate print moves into their own selectable layer

This commit is contained in:
Stewart Allen 2020-03-09 18:08:08 -04:00
commit b2c59cd739
3 changed files with 72 additions and 55 deletions

View file

@ -61,10 +61,10 @@ var gs_kiri_init = exports;
SPACE.showSkyGrid(false); SPACE.showSkyGrid(false);
SPACE.setSkyColor(0xffffff); SPACE.setSkyColor(0xffffff);
SPACE.init(container, function (delta) { SPACE.init(container, function (delta) {
if (showLayerMax === 0) return; if (API.var.layer_max === 0) return;
if (settings().controller.reverseZoom) delta = -delta; if (settings().controller.reverseZoom) delta = -delta;
if (delta > 0) showLayerValue--; if (delta > 0) API.var.layer_at--;
else if (delta < 0) showLayerValue++; else if (delta < 0) API.var.layer_at++;
API.show.slices(); API.show.slices();
}); });
SPACE.platform.onMove(API.conf.save); SPACE.platform.onMove(API.conf.save);
@ -267,6 +267,7 @@ var gs_kiri_init = exports;
layerSparse: UC.newBoolean("sparse fill", onLayerToggle, {modes:FDM}), layerSparse: UC.newBoolean("sparse fill", onLayerToggle, {modes:FDM}),
layerSupport: UC.newBoolean("support", onLayerToggle, {modes:FDM}), layerSupport: UC.newBoolean("support", onLayerToggle, {modes:FDM}),
layerPrint: UC.newBoolean("print", onLayerToggle), layerPrint: UC.newBoolean("print", onLayerToggle),
layerMoves: UC.newBoolean("moves", onLayerToggle),
settingsGroup: UC.newGroup("settings", control), settingsGroup: UC.newGroup("settings", control),
settingsTable: UC.newTableRow([ settingsTable: UC.newTableRow([
@ -447,12 +448,12 @@ var gs_kiri_init = exports;
} }
function onLayerToggle() { function onLayerToggle() {
updateSettings(); API.conf.update();
API.show.slices(); API.show.slices();
} }
function onBooleanClick() { function onBooleanClick() {
updateSettings(); API.conf.update();
} }
function inputHasFocus() { function inputHasFocus() {
@ -523,14 +524,14 @@ var gs_kiri_init = exports;
break; break;
case 38: // up arrow case 38: // up arrow
if (inputHasFocus()) return false; if (inputHasFocus()) return false;
if (evt.metaKey) return setVisibleLayer(showLayerValue+1); if (evt.metaKey) return API.show.layer(API.var.layer_at+1);
if (deg) API.selection.rotate(deg, 0, 0); if (deg) API.selection.rotate(deg, 0, 0);
if (move > 0) moveSelection(0, move, 0); if (move > 0) moveSelection(0, move, 0);
evt.preventDefault(); evt.preventDefault();
break; break;
case 40: // down arrow case 40: // down arrow
if (inputHasFocus()) return false; if (inputHasFocus()) return false;
if (evt.metaKey) return setVisibleLayer(showLayerValue-1); if (evt.metaKey) return API.show.layer(API.var.layer_at-1);
if (deg) API.selection.rotate(-deg, 0, 0); if (deg) API.selection.rotate(-deg, 0, 0);
if (move > 0) moveSelection(0, -move, 0); if (move > 0) moveSelection(0, -move, 0);
evt.preventDefault(); evt.preventDefault();
@ -573,13 +574,13 @@ var gs_kiri_init = exports;
} }
switch (evt.charCode) { switch (evt.charCode) {
case cca('`'): API.show.slices(0); break; case cca('`'): API.show.slices(0); break;
case cca('0'): API.show.slices(showLayerMax); break; case cca('0'): API.show.slices(API.var.layer_max); break;
case cca('1'): // toggle control left case cca('1'): // toggle control left
if (evt.ctrlKey) { if (evt.ctrlKey) {
style = UI.ctrlLeft.style; style = UI.ctrlLeft.style;
style.display = style.display === 'none' ? 'block' : 'none'; style.display = style.display === 'none' ? 'block' : 'none';
} else { } else {
API.show.slices(showLayerMax/10); API.show.slices(API.var.layer_max/10);
} }
break; break;
case cca('2'): // toggle control right case cca('2'): // toggle control right
@ -587,7 +588,7 @@ var gs_kiri_init = exports;
style = UI.ctrlRight.style; style = UI.ctrlRight.style;
style.display = style.display === 'none' ? 'block' : 'none'; style.display = style.display === 'none' ? 'block' : 'none';
} else { } else {
API.show.slices(showLayerMax*2/10); API.show.slices(API.var.layer_max*2/10);
} }
break; break;
case cca('3'): case cca('3'):
@ -597,15 +598,15 @@ var gs_kiri_init = exports;
SPACE.platform.showGrid(!style); SPACE.platform.showGrid(!style);
SPACE.update(); SPACE.update();
} else { } else {
API.show.slices(showLayerMax*3/10); API.show.slices(API.var.layer_max*3/10);
} }
break; break;
case cca('4'): API.show.slices(showLayerMax*4/10); break; case cca('4'): API.show.slices(API.var.layer_max*4/10); break;
case cca('5'): API.show.slices(showLayerMax*5/10); break; case cca('5'): API.show.slices(API.var.layer_max*5/10); break;
case cca('6'): API.show.slices(showLayerMax*6/10); break; case cca('6'): API.show.slices(API.var.layer_max*6/10); break;
case cca('7'): API.show.slices(showLayerMax*7/10); break; case cca('7'): API.show.slices(API.var.layer_max*7/10); break;
case cca('8'): API.show.slices(showLayerMax*8/10); break; case cca('8'): API.show.slices(API.var.layer_max*8/10); break;
case cca('9'): API.show.slices(showLayerMax*9/10); break; case cca('9'): API.show.slices(API.var.layer_max*9/10); break;
case cca('?'): case cca('?'):
API.help.show(); API.help.show();
break; break;
@ -1326,7 +1327,7 @@ var gs_kiri_init = exports;
SPACE.onEnterKey([ SPACE.onEnterKey([
UI.layerSpan, function() { API.show.slices() }, UI.layerSpan, function() { API.show.slices() },
UI.layerID, function() { setVisibleLayer(UI.layerID.value) }, UI.layerID, function() { API.show.layer(UI.layerID.value) },
UI.scaleX, selection.scale, UI.scaleX, selection.scale,
UI.scaleY, selection.scale, UI.scaleY, selection.scale,
@ -1372,7 +1373,7 @@ var gs_kiri_init = exports;
$('z+').onclick = function(ev) { API.selection.rotate(0,0,ev.shiftKey ? -ROT5 : -ROT) }; $('z+').onclick = function(ev) { API.selection.rotate(0,0,ev.shiftKey ? -ROT5 : -ROT) };
UI.modelOpacity.onchange = UI.modelOpacity.onclick = function(ev) { UI.modelOpacity.onchange = UI.modelOpacity.onclick = function(ev) {
setOpacity(parseInt(UI.modelOpacity.value)/100); API.widgets.opacity(parseInt(UI.modelOpacity.value)/100);
}; };
UI.layerSlider.ondblclick = function() { UI.layerSlider.ondblclick = function() {
@ -1385,11 +1386,11 @@ var gs_kiri_init = exports;
}; };
UI.layerSlider.onclick = function() { UI.layerSlider.onclick = function() {
setVisibleLayer(UI.layerSlider.value); API.show.layer(UI.layerSlider.value);
}; };
UI.layerSlider.onmousemove = UI.layerSlider.onchange = function() { UI.layerSlider.onmousemove = UI.layerSlider.onchange = function() {
setVisibleLayer(UI.layerSlider.value); API.show.layer(UI.layerSlider.value);
}; };
UI.layerSlider.onmouseup = function() { API.focus() }; UI.layerSlider.onmouseup = function() { API.focus() };

View file

@ -39,7 +39,8 @@ var gs_kiri_print = exports;
this.settings = settings; this.settings = settings;
this.widgets = widgets; this.widgets = widgets;
this.group = new THREE.Group(); this.group = new THREE.Group();
this.layerView = []; this.printView = [];
this.movesView = [];
this.time = 0; this.time = 0;
this.lines = 0; this.lines = 0;
@ -350,7 +351,7 @@ var gs_kiri_print = exports;
} }
PRO.renderMoves = function(showMoves, moveColor) { PRO.renderMoves = function(showMoves, moveColor) {
var scope = this, last, view; var scope = this, last, emits, moves;
// render layered output // render layered output
scope.lines = 0; scope.lines = 0;
scope.output.forEach(function(layerout) { scope.output.forEach(function(layerout) {
@ -376,21 +377,24 @@ var gs_kiri_print = exports;
} }
last = out.point; last = out.point;
}); });
view = KIRI.newLayer(scope.group); emits = KIRI.newLayer(scope.group);
scope.layerView.push(view); scope.printView.push(emits);
if (showMoves) { if (showMoves) {
view.lines(move, moveColor); moves = KIRI.newLayer(scope.group);
moves.lines(move, moveColor);
scope.movesView.push(moves);
moves.render();
} }
for (var speed in print) { for (var speed in print) {
var sint = Math.min(6000, parseInt(speed)); var sint = Math.min(6000, parseInt(speed));
var rgb = hsv2rgb({h:sint/6000, s:1, v:0.6}); var rgb = hsv2rgb({h:sint/6000, s:1, v:0.6});
view.lines(print[speed], emits.lines(print[speed],
((rgb.r * 0xff) << 16) | ((rgb.r * 0xff) << 16) |
((rgb.g * 0xff) << 8) | ((rgb.g * 0xff) << 8) |
((rgb.b * 0xff) << 0) ((rgb.b * 0xff) << 0)
); );
} }
view.render(); emits.render();
scope.lines += print.length; scope.lines += print.length;
}); });
} }
@ -400,13 +404,17 @@ var gs_kiri_print = exports;
} }
PRO.hide = function() { PRO.hide = function() {
this.layerView.forEach(function(layer) { this.printView.forEach(function(layer) {
layer.setVisible(false);
})
this.movesView.forEach(function(layer) {
layer.setVisible(false); layer.setVisible(false);
}) })
}; };
PRO.showLayer = function(index, show) { PRO.showLayer = function(index, show, moves) {
if (this.layerView[index]) this.layerView[index].setVisible(show); if (this.printView[index]) this.printView[index].setVisible(show);
if (this.movesView[index]) this.movesView[index].setVisible(show && moves);
}; };
/** /**

View file

@ -66,9 +66,6 @@ self.kiri.license = exports.LICENSE;
sliced_opacity_cam = 0.25, sliced_opacity_cam = 0.25,
// --------------- // ---------------
printSeq = parseInt(SDB['kiri-print-seq'] || SDB['print-seq'] || "0") + 1, printSeq = parseInt(SDB['kiri-print-seq'] || SDB['print-seq'] || "0") + 1,
showLayerRange = 0,
showLayerValue = 0,
showLayerMax = 0,
renderMode = 4, renderMode = 4,
viewMode = VIEWS.ARRANGE, viewMode = VIEWS.ARRANGE,
layoutOnAdd = true, layoutOnAdd = true,
@ -153,6 +150,11 @@ self.kiri.license = exports.LICENSE;
VIEWS, VIEWS,
SETUP SETUP
}, },
var: {
layer_at: 0,
layer_max: 0,
layer_range: 0
},
device: { device: {
get: currentDeviceName get: currentDeviceName
}, },
@ -209,6 +211,7 @@ self.kiri.license = exports.LICENSE;
controls: setControlsVisible, controls: setControlsVisible,
favorites: getShowFavorites, favorites: getShowFavorites,
slices: showSlices, slices: showSlices,
layer: setVisibleLayer,
local: showLocal, local: showLocal,
import: function() { UI.import.style.display = '' } import: function() { UI.import.style.display = '' }
}, },
@ -227,7 +230,8 @@ self.kiri.license = exports.LICENSE;
all: function() { return WIDGETS.slice() }, all: function() { return WIDGETS.slice() },
for: forAllWidgets, for: forAllWidgets,
load: Widget.loadFromCatalog, load: Widget.loadFromCatalog,
meshes: meshArray meshes: meshArray,
opacity: setOpacity
}, },
work: KIRI.work work: KIRI.work
}; };
@ -416,7 +420,7 @@ self.kiri.license = exports.LICENSE;
} }
function setVisibleLayer(v) { function setVisibleLayer(v) {
showSlices(showLayerValue = bound(v, 0, showLayerMax)); showSlices(API.var.layer_at = bound(v, 0, API.var.layer_max));
} }
function meshArray() { function meshArray() {
@ -459,16 +463,16 @@ self.kiri.license = exports.LICENSE;
}); });
} }
max = Math.max(0, max - 1); max = Math.max(0, max - 1);
showLayerMax = max; API.var.layer_max = max;
if (UI.layerID.convert() > max || showLayerValue > max) { if (UI.layerID.convert() > max || API.var.layer_at > max) {
showLayerValue = max; API.var.layer_at = max;
UI.layerID.value = max; UI.layerID.value = max;
UI.layerSlider.value = showLayerMax; UI.layerSlider.value = API.var.layer_max;
} }
UI.layerSlider.max = max; UI.layerSlider.max = max;
if (set) { if (set) {
showLayerValue = showLayerMax; API.var.layer_at = API.var.layer_max;
UI.layerSlider.value = showLayerMax; UI.layerSlider.value = API.var.layer_max;
} }
} }
@ -500,10 +504,10 @@ self.kiri.license = exports.LICENSE;
if (typeof(layer) === 'string' || typeof(layer) === 'number') { if (typeof(layer) === 'string' || typeof(layer) === 'number') {
layer = parseInt(layer); layer = parseInt(layer);
} else { } else {
layer = showLayerValue; layer = API.var.layer_at;
} }
layer = bound(layer, 0, showLayerMax); layer = bound(layer, 0, API.var.layer_max);
UI.layerID.value = layer; UI.layerID.value = layer;
UI.layerSlider.value = layer; UI.layerSlider.value = layer;
@ -513,14 +517,15 @@ self.kiri.license = exports.LICENSE;
slices, slices,
layers, layers,
range = UI.layerRange.checked ? UI.layerSpan.convert() || 1 : 0, range = UI.layerRange.checked ? UI.layerSpan.convert() || 1 : 0,
print = UI.layerPrint.checked; print = UI.layerPrint.checked,
moves = UI.layerMoves.checked;
if (MODE === MODES.CAM && showLayerRange !== range && range && layer === showLayerMax) { if (MODE === MODES.CAM && API.var.layer_range !== range && range && layer === API.var.layer_max) {
layer = 0; layer = 0;
} }
showLayerRange = range; API.var.layer_range = range;
showLayerValue = layer; API.var.layer_at = layer;
forAllWidgets(function(widget) { forAllWidgets(function(widget) {
if (print) return widget.hideSlices(); if (print) return widget.hideSlices();
@ -568,10 +573,13 @@ self.kiri.license = exports.LICENSE;
}); });
if (currentPrint) { if (currentPrint) {
for (j = 0; j < currentPrint.layerView.length; j++) { let len = currentPrint.getLayerCount();
currentPrint.showLayer(j, print && showSlice(j, range, layer)); for (j = 0; j < len; j++) {
currentPrint.showLayer(j, print && showSlice(j, range, layer), moves);
} }
} }
UI.layerPrint.parentNode.style.display = currentPrint ? '' : 'none';
UI.layerMoves.parentNode.style.display = currentPrint ? '' : 'none';
SPACE.update(); SPACE.update();
} }
@ -1089,8 +1097,8 @@ self.kiri.license = exports.LICENSE;
var firstMesh = true, var firstMesh = true,
countdown = WIDGETS.length, countdown = WIDGETS.length,
preserveMax = showLayerMax, preserveMax = API.var.layer_max,
preserveLayer = showLayerValue, preserveLayer = API.var.layer_at,
totalProgress, totalProgress,
track = {}; track = {};
@ -1127,8 +1135,8 @@ self.kiri.license = exports.LICENSE;
DBUG.log(segtimes); DBUG.log(segtimes);
STATS.add(`ua_${getModeLower()}_slice`); STATS.add(`ua_${getModeLower()}_slice`);
updateSliderMax(true); updateSliderMax(true);
if (preserveMax != showLayerMax) { if (preserveMax != API.var.layer_max) {
preserveLayer = showLayerMax; preserveLayer = API.var.layer_max;
} }
firstMesh = false; firstMesh = false;
} }
@ -1345,7 +1353,7 @@ self.kiri.license = exports.LICENSE;
} }
function platformDeselect(widget) { function platformDeselect(widget) {
if (viewMode !== VIEWS.ARRANGE) return; // if (viewMode !== VIEWS.ARRANGE) return;
if (!widget) { if (!widget) {
forAllWidgets(function(widget) { forAllWidgets(function(widget) {
platform.deselect(widget); platform.deselect(widget);