From 47cdebf7f8b7cfdfd7bc324ea54177a8394f8290 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 7 Apr 2026 10:53:21 +0200 Subject: [PATCH] Implement render enablement and disablement in ViewportHost --- src/viewport-three/viewport-host.js | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/viewport-three/viewport-host.js b/src/viewport-three/viewport-host.js index 817531b4..e3ee3909 100644 --- a/src/viewport-three/viewport-host.js +++ b/src/viewport-three/viewport-host.js @@ -153,6 +153,7 @@ export class ViewportHost { })); resizeObserver = null; animationFrame = 0; + renderEnabled = false; container = null; brushSelectionChangeHandler = null; whiteboxHoverLabelChangeHandler = null; @@ -230,7 +231,26 @@ export class ViewportHost { this.resize(); }); this.resizeObserver.observe(container); - this.render(); + if (this.renderEnabled) { + this.render(); + } + } + setRenderEnabled(enabled) { + if (this.renderEnabled === enabled) { + return; + } + this.renderEnabled = enabled; + if (!enabled) { + if (this.animationFrame !== 0) { + cancelAnimationFrame(this.animationFrame); + this.animationFrame = 0; + } + this.previousFrameTime = 0; + return; + } + if (this.container !== null && this.animationFrame === 0) { + this.render(); + } } updateWorld(world) { this.currentWorld = world; @@ -3237,6 +3257,10 @@ export class ViewportHost { this.creationPreviewTargetKey = nextTargetKey; } render = () => { + if (!this.renderEnabled) { + this.animationFrame = 0; + return; + } this.animationFrame = window.requestAnimationFrame(this.render); this.updateTransformGizmoPose(); const now = performance.now();