diff --git a/notes.md b/notes.md index 4294bec1..dec822aa 100644 --- a/notes.md +++ b/notes.md @@ -99,8 +99,9 @@ * `P` common part pre-analyze to speed up 'slice' and improve shadow (overhangs) * `P` redo all path route / planning in prepare to account for terrain before camOut -* `P` detect render message backlog and pause or warn +* `P` detect render message backlog and pause or warn? * `P` allow faster z movements when contouring (not plunging) +* `P` common / faster shadow generator using vertices shared with ledges # Laser diff --git a/src/kiri/init.js b/src/kiri/init.js index 3b6c45a6..db42243c 100644 --- a/src/kiri/init.js +++ b/src/kiri/init.js @@ -1999,9 +1999,17 @@ xv = parseFloat(UI.sizeX.was), yv = parseFloat(UI.sizeY.was), zv = parseFloat(UI.sizeZ.was), - xr = (UI.lockX.checked ? ra : 1), - yr = (UI.lockY.checked ? ra : 1), - zr = (UI.lockZ.checked ? ra : 1); + ta = e.target, + xc = UI.lockX.checked, + yc = UI.lockY.checked, + zc = UI.lockZ.checked, + xt = ta === UI.sizeX, + yt = ta === UI.sizeY, + zt = ta === UI.sizeZ, + tl = (xt && xc) || (yt && yc) || (zt && zc), + xr = ((tl && xc) || (!tl && xt) ? ra : 1), + yr = ((tl && yc) || (!tl && yt) ? ra : 1), + zr = ((tl && zc) || (!tl && zt) ? ra : 1); API.selection.scale(xr,yr,zr); UI.sizeX.was = UI.sizeX.value = xv * xr; UI.sizeY.was = UI.sizeY.value = yv * yr; @@ -2015,9 +2023,17 @@ xv = parseFloat(UI.scaleX.was), yv = parseFloat(UI.scaleY.was), zv = parseFloat(UI.scaleZ.was), - xr = (UI.lockX.checked ? ra : 1), - yr = (UI.lockY.checked ? ra : 1), - zr = (UI.lockZ.checked ? ra : 1); + ta = e.target, + xc = UI.lockX.checked, + yc = UI.lockY.checked, + zc = UI.lockZ.checked, + xt = ta === UI.scaleX, + yt = ta === UI.scaleY, + zt = ta === UI.scaleZ, + tl = (xt && xc) || (yt && yc) || (zt && zc), + xr = ((tl && xc) || (!tl && xt) ? ra : 1), + yr = ((tl && yc) || (!tl && yt) ? ra : 1), + zr = ((tl && zc) || (!tl && zt) ? ra : 1); API.selection.scale(xr,yr,zr); UI.scaleX.was = UI.scaleX.value = xv * xr; UI.scaleY.was = UI.scaleY.value = yv * yr; @@ -2053,6 +2069,22 @@ $('rot_z'), selectionRotate ]); + $('lab-axis').onclick = () => { + UI.lockX.checked = + UI.lockY.checked = + UI.lockZ.checked = !( + UI.lockX.checked || + UI.lockY.checked || + UI.lockZ.checked + ); + }; + + $('lab-scale').onclick = () => { + API.selection.scale(1 / UI.scaleX.was, 1 / UI.scaleY.was, 1 / UI.scaleZ.was); + UI.scaleX.value = UI.scaleY.value = UI.scaleZ.value = + UI.scaleX.was = UI.scaleY.was = UI.scaleZ.was = 1; + }; + UC.onBlur([ UI.toolName, UI.toolNum, diff --git a/web/kiri/index.css b/web/kiri/index.css index 2d07ad6c..f4a6211e 100644 --- a/web/kiri/index.css +++ b/web/kiri/index.css @@ -1500,3 +1500,11 @@ th, tr, td, label { border-top: 1px solid #ddd; margin: 5px 0 5px 0; } + +#lab-axis, #lab-scale { + padding: 0 6px 0 6px; + border-radius: 3px; +} +#lab-axis:hover, #lab-scale:hover { + background-color: rgba(0,0,0,0.2); +} diff --git a/web/kiri/index.html b/web/kiri/index.html index b6cf9d1d..e3760d58 100644 --- a/web/kiri/index.html +++ b/web/kiri/index.html @@ -222,9 +222,9 @@
-
-
-
+
+
+