diff --git a/js/kiri-init.js b/js/kiri-init.js index bdddcd1a..15e9c8d7 100644 --- a/js/kiri-init.js +++ b/js/kiri-init.js @@ -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() }; diff --git a/js/kiri-print.js b/js/kiri-print.js index 55fbe5ab..9c93aa57 100644 --- a/js/kiri-print.js +++ b/js/kiri-print.js @@ -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); }; /** diff --git a/js/kiri.js b/js/kiri.js index 99ddf2e8..92aed89f 100644 --- a/js/kiri.js +++ b/js/kiri.js @@ -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);