From 3f357a323903d6adbf02153a1a99a9222e0680e9 Mon Sep 17 00:00:00 2001 From: scamiv <6170744+scamiv@users.noreply.github.com> Date: Sat, 28 Feb 2026 00:26:59 +0100 Subject: [PATCH] Fix UnitLayer perf counters in prod overlay --- src/client/graphics/GameRenderer.ts | 8 ++++++++ src/client/graphics/layers/PerformanceOverlay.ts | 14 +++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/client/graphics/GameRenderer.ts b/src/client/graphics/GameRenderer.ts index ea7748f8b..a3133ba7e 100644 --- a/src/client/graphics/GameRenderer.ts +++ b/src/client/graphics/GameRenderer.ts @@ -485,11 +485,15 @@ export class GameRenderer { const tickLayerDurations: Record = {}; const layerCounters: Record> = {}; + let unitLayerCounters: Record | null = null; for (const layer of this.layers) { if (!layer.tick) { const counters = layer.getPerfCounters?.(); if (counters && Object.keys(counters).length > 0) { + if (layer instanceof UnitLayer) { + unitLayerCounters = counters; + } const label = layer.constructor?.name ?? "UnknownLayer"; layerCounters[label] = counters; } @@ -519,12 +523,16 @@ export class GameRenderer { const counters = layer.getPerfCounters?.(); if (counters && Object.keys(counters).length > 0) { + if (layer instanceof UnitLayer) { + unitLayerCounters = counters; + } const label = layer.constructor?.name ?? "UnknownLayer"; layerCounters[label] = counters; } } this.performanceOverlay.updateLayerCounters(layerCounters); + this.performanceOverlay.updateUnitLayerCounters(unitLayerCounters); if (shouldProfileTick) { this.performanceOverlay.updateTickLayerMetrics(tickLayerDurations); diff --git a/src/client/graphics/layers/PerformanceOverlay.ts b/src/client/graphics/layers/PerformanceOverlay.ts index 49e7df1a4..16bbac354 100644 --- a/src/client/graphics/layers/PerformanceOverlay.ts +++ b/src/client/graphics/layers/PerformanceOverlay.ts @@ -133,6 +133,9 @@ export class PerformanceOverlay extends LitElement implements Layer { @state() private layerCounters: Record> = {}; + @state() + private unitLayerCounters: Record | null = null; + // Smoothed per-layer render-per-tick timings (EMA over recent ticks) private renderPerTickLayerStats: Map< string, @@ -734,6 +737,7 @@ export class PerformanceOverlay extends LitElement implements Layer { this.renderLastTickLayerTotalMs = 0; this.renderLastTickLayerDurations = {}; this.layerCounters = {}; + this.unitLayerCounters = null; this.renderPerTickLayerStats.clear(); this.renderLayersExpanded = false; this.tickLayersExpanded = false; @@ -909,6 +913,11 @@ export class PerformanceOverlay extends LitElement implements Layer { this.layerCounters = counters; } + updateUnitLayerCounters(counters: Record | null) { + if (!this.isVisible) return; + this.unitLayerCounters = counters; + } + updateTickMetrics(tickExecutionDuration?: number, tickDelay?: number) { if (!this.isVisible) return; @@ -1029,6 +1038,9 @@ export class PerformanceOverlay extends LitElement implements Layer { this.tickLayerStats, ).map((layer) => ({ ...layer })), layerCounters: { ...this.layerCounters }, + unitLayerCounters: this.unitLayerCounters + ? { ...this.unitLayerCounters } + : null, }; } @@ -1112,7 +1124,7 @@ export class PerformanceOverlay extends LitElement implements Layer { const renderLayersToShow = renderLayerBreakdown.slice(0, 10); const tickLayersToShow = tickLayerBreakdown.slice(0, 10); - const unitLayerCounters = this.layerCounters.UnitLayer ?? null; + const unitLayerCounters = this.unitLayerCounters; const maxLayerAvg = renderLayersToShow.length > 0