From 9e816dd14b1cd6a022473c75f7d962793d44e99b Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Mon, 5 Jan 2026 15:33:29 -0500 Subject: [PATCH] reduce edges recalculation when enabled --- src/kiri/app/widget.js | 13 +++++++++---- src/kiri/core/widget.js | 18 ++++++++++-------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/kiri/app/widget.js b/src/kiri/app/widget.js index b55dd548..b27309fc 100644 --- a/src/kiri/app/widget.js +++ b/src/kiri/app/widget.js @@ -130,10 +130,16 @@ class Widget extends WidgetCore { } } - /** - * Set edge rendering - */ setEdges(set) { + clearTimeout(this._setimer); + if (set === true && this.outline) { + this._setimer = setTimeout(() => this._setEdges(set), 10); + } else { + this._setEdges(set); + } + } + + _setEdges(set) { if (!(this.api && this.api.conf)) { // missing api features in engine mode return; @@ -145,7 +151,6 @@ class Widget extends WidgetCore { if (this.outline) { mesh.remove(this.outline); this.outline = null; - } if (set) { let dark = this.api.space.is_dark(); diff --git a/src/kiri/core/widget.js b/src/kiri/core/widget.js index 90ea0625..57f5e100 100644 --- a/src/kiri/core/widget.js +++ b/src/kiri/core/widget.js @@ -442,12 +442,10 @@ class Widget { } _updateMeshPosition() { - let mesh = this.mesh, - track = this.track, - tzoff = track.tzoff, - top = track.top, - tz = -tzoff, - { x, y, z } = track.pos; + let { cache, mesh, track } = this, + { top, tzoff } = track, + { x, y, z } = track.pos, + tz = -tzoff; if (track.indexed) { this.mesh.rotation.x = -track.indexRad; z = top; @@ -455,8 +453,12 @@ class Widget { this.mesh.rotation.x = 0; z += tz; } - mesh.position.set(x, y, z); - this._updateEdges(); + let { pos } = cache; + if (!pos || pos.x !== x || pos.y !==y || pos.z !== z) { + mesh.position.set(x, y, z); + this._updateEdges(); + cache.pos = { x, y, z }; + } } _updateEdges() {