From 9be674b61cba26a7ad95a8fc6da7dbbbe456ba45 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 21 Jun 2025 22:38:53 -0400 Subject: [PATCH] set visual state for trace and restore on trace done --- src/kiri-mode/cam/client.js | 3 ++- src/kiri/widget.js | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/kiri-mode/cam/client.js b/src/kiri-mode/cam/client.js index e2ff19f0..368b2f3c 100644 --- a/src/kiri-mode/cam/client.js +++ b/src/kiri-mode/cam/client.js @@ -1008,7 +1008,6 @@ CAM.init = function(kiri, api) { CAM.traces((ids) => { api.hide.alert(alert); alert = api.show.alert("[esc] cancels trace editing"); - kiri.api.widgets.opacity(0.8); kiri.api.widgets.for(widget => { if (ids.indexOf(widget.id) >= 0) { unselectTraces(widget, true); @@ -1042,6 +1041,7 @@ CAM.init = function(kiri, api) { }); // ensure appropriate traces are toggled matching current record kiri.api.widgets.for(widget => { + widget.setVisualState({ opacity: 0.25 }); let areas = (poppedRec.areas[widget.id] || []); let stack = widget.trace_stack; stack.meshes.forEach(mesh => { @@ -1070,6 +1070,7 @@ CAM.init = function(kiri, api) { api.feature.hover = false; api.feature.hoverAdds = false; kiri.api.widgets.for(widget => { + widget.restoreVisualState(); if (widget.trace_stack) { widget.trace_stack.hide(); widget.adds.removeAll(widget.trace_stack.meshes); diff --git a/src/kiri/widget.js b/src/kiri/widget.js index 61eb8ddf..8cb812bb 100644 --- a/src/kiri/widget.js +++ b/src/kiri/widget.js @@ -355,6 +355,27 @@ class Widget { } } + getVisualState() { + return { + edges: this.outline ? true : false, + wires: this.wire ? true : false, + opacity: this.getMaterial().opacity + }; + } + + setVisualState({ edges, wires, opacity}) { + this.cache.vizstate = this.getVisualState(); + this.setEdges(edges ?? false); + this.setWireframe(wires ?? false); + this.setOpacity(opacity ?? 1); + } + + restoreVisualState() { + if (this.cache.vizstate) { + this.setVisualState(this.cache.vizstate); + } + } + /** * @param {number} value */