From d594a73f1a35ac74e47d1c060dcae1d05d550242 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 28 Apr 2026 17:58:21 +0200 Subject: [PATCH] Enhance whitebox hover label tracking with update loop tracing --- src/viewport-three/ViewportCanvas.tsx | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/viewport-three/ViewportCanvas.tsx b/src/viewport-three/ViewportCanvas.tsx index 7b07b655..fcfa4459 100644 --- a/src/viewport-three/ViewportCanvas.tsx +++ b/src/viewport-three/ViewportCanvas.tsx @@ -29,6 +29,7 @@ import type { SceneDocument } from "../document/scene-document"; import type { WorldSettings } from "../document/world-settings"; import type { EditorSimulationController } from "../runtime-three/editor-simulation-controller"; import { createWorldBackgroundStyle } from "../shared-ui/world-background-style"; +import { traceUpdateLoopEvent } from "../debug/update-loop-trace"; import { getViewportPanelLabel, type ViewportDisplayMode, @@ -308,6 +309,7 @@ export function ViewportCanvas({ const [hoveredWhiteboxLabel, setHoveredWhiteboxLabel] = useState< string | null >(null); + const hoveredWhiteboxLabelTraceRef = useRef(null); useLayoutEffect(() => { const container = containerRef.current; @@ -440,10 +442,20 @@ export function ViewportCanvas({ }, [onTerrainBrushCommit]); useEffect(() => { - hostRef.current?.setWhiteboxHoverLabelChangeHandler( - setHoveredWhiteboxLabel - ); - }, []); + hostRef.current?.setWhiteboxHoverLabelChangeHandler((nextLabel) => { + const previousLabel = hoveredWhiteboxLabelTraceRef.current; + + traceUpdateLoopEvent("ViewportCanvas.setWhiteboxHoverLabel", { + panelId, + previousLabel, + nextLabel, + labelChanged: previousLabel !== nextLabel + }); + + hoveredWhiteboxLabelTraceRef.current = nextLabel; + setHoveredWhiteboxLabel(nextLabel); + }); + }, [panelId]); useEffect(() => { hostRef.current?.setCameraStateChangeHandler(onCameraStateChange);