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

View file

@ -39,7 +39,8 @@ var gs_kiri_print = exports;
this.settings = settings;
this.widgets = widgets;
this.group = new THREE.Group();
this.layerView = [];
this.printView = [];
this.movesView = [];
this.time = 0;
this.lines = 0;
@ -350,7 +351,7 @@ var gs_kiri_print = exports;
}
PRO.renderMoves = function(showMoves, moveColor) {
var scope = this, last, view;
var scope = this, last, emits, moves;
// render layered output
scope.lines = 0;
scope.output.forEach(function(layerout) {
@ -376,21 +377,24 @@ var gs_kiri_print = exports;
}
last = out.point;
});
view = KIRI.newLayer(scope.group);
scope.layerView.push(view);
emits = KIRI.newLayer(scope.group);
scope.printView.push(emits);
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) {
var sint = Math.min(6000, parseInt(speed));
var rgb = hsv2rgb({h:sint/6000, s:1, v:0.6});
view.lines(print[speed],
emits.lines(print[speed],
((rgb.r * 0xff) << 16) |
((rgb.g * 0xff) << 8) |
((rgb.b * 0xff) << 0)
);
}
view.render();
emits.render();
scope.lines += print.length;
});
}
@ -400,13 +404,17 @@ var gs_kiri_print = exports;
}
PRO.hide = function() {
this.layerView.forEach(function(layer) {
this.printView.forEach(function(layer) {
layer.setVisible(false);
})
this.movesView.forEach(function(layer) {
layer.setVisible(false);
})
};
PRO.showLayer = function(index, show) {
if (this.layerView[index]) this.layerView[index].setVisible(show);
PRO.showLayer = function(index, show, moves) {
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,
// ---------------
printSeq = parseInt(SDB['kiri-print-seq'] || SDB['print-seq'] || "0") + 1,
showLayerRange = 0,
showLayerValue = 0,
showLayerMax = 0,
renderMode = 4,
viewMode = VIEWS.ARRANGE,
layoutOnAdd = true,
@ -153,6 +150,11 @@ self.kiri.license = exports.LICENSE;
VIEWS,
SETUP
},
var: {
layer_at: 0,
layer_max: 0,
layer_range: 0
},
device: {
get: currentDeviceName
},
@ -209,6 +211,7 @@ self.kiri.license = exports.LICENSE;
controls: setControlsVisible,
favorites: getShowFavorites,
slices: showSlices,
layer: setVisibleLayer,
local: showLocal,
import: function() { UI.import.style.display = '' }
},
@ -227,7 +230,8 @@ self.kiri.license = exports.LICENSE;
all: function() { return WIDGETS.slice() },
for: forAllWidgets,
load: Widget.loadFromCatalog,
meshes: meshArray
meshes: meshArray,
opacity: setOpacity
},
work: KIRI.work
};
@ -416,7 +420,7 @@ self.kiri.license = exports.LICENSE;
}
function setVisibleLayer(v) {
showSlices(showLayerValue = bound(v, 0, showLayerMax));
showSlices(API.var.layer_at = bound(v, 0, API.var.layer_max));
}
function meshArray() {
@ -459,16 +463,16 @@ self.kiri.license = exports.LICENSE;
});
}
max = Math.max(0, max - 1);
showLayerMax = max;
if (UI.layerID.convert() > max || showLayerValue > max) {
showLayerValue = max;
API.var.layer_max = max;
if (UI.layerID.convert() > max || API.var.layer_at > max) {
API.var.layer_at = max;
UI.layerID.value = max;
UI.layerSlider.value = showLayerMax;
UI.layerSlider.value = API.var.layer_max;
}
UI.layerSlider.max = max;
if (set) {
showLayerValue = showLayerMax;
UI.layerSlider.value = showLayerMax;
API.var.layer_at = API.var.layer_max;
UI.layerSlider.value = API.var.layer_max;
}
}
@ -500,10 +504,10 @@ self.kiri.license = exports.LICENSE;
if (typeof(layer) === 'string' || typeof(layer) === 'number') {
layer = parseInt(layer);
} 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.layerSlider.value = layer;
@ -513,14 +517,15 @@ self.kiri.license = exports.LICENSE;
slices,
layers,
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;
}
showLayerRange = range;
showLayerValue = layer;
API.var.layer_range = range;
API.var.layer_at = layer;
forAllWidgets(function(widget) {
if (print) return widget.hideSlices();
@ -568,10 +573,13 @@ self.kiri.license = exports.LICENSE;
});
if (currentPrint) {
for (j = 0; j < currentPrint.layerView.length; j++) {
currentPrint.showLayer(j, print && showSlice(j, range, layer));
let len = currentPrint.getLayerCount();
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();
}
@ -1089,8 +1097,8 @@ self.kiri.license = exports.LICENSE;
var firstMesh = true,
countdown = WIDGETS.length,
preserveMax = showLayerMax,
preserveLayer = showLayerValue,
preserveMax = API.var.layer_max,
preserveLayer = API.var.layer_at,
totalProgress,
track = {};
@ -1127,8 +1135,8 @@ self.kiri.license = exports.LICENSE;
DBUG.log(segtimes);
STATS.add(`ua_${getModeLower()}_slice`);
updateSliderMax(true);
if (preserveMax != showLayerMax) {
preserveLayer = showLayerMax;
if (preserveMax != API.var.layer_max) {
preserveLayer = API.var.layer_max;
}
firstMesh = false;
}
@ -1345,7 +1353,7 @@ self.kiri.license = exports.LICENSE;
}
function platformDeselect(widget) {
if (viewMode !== VIEWS.ARRANGE) return;
// if (viewMode !== VIEWS.ARRANGE) return;
if (!widget) {
forAllWidgets(function(widget) {
platform.deselect(widget);