From dee283676ba23e3bc80458931ddac238ee95f311 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 ++++++++ .../graphics/layers/PerformanceOverlay.ts | 17 ++++++++++++++--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/client/graphics/GameRenderer.ts b/src/client/graphics/GameRenderer.ts index d07d7c116..f800ce7ae 100644 --- a/src/client/graphics/GameRenderer.ts +++ b/src/client/graphics/GameRenderer.ts @@ -500,11 +500,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; } @@ -534,12 +538,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 ec7f34430..58e8ab8e2 100644 --- a/src/client/graphics/layers/PerformanceOverlay.ts +++ b/src/client/graphics/layers/PerformanceOverlay.ts @@ -137,6 +137,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, @@ -732,6 +735,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; @@ -907,6 +911,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; @@ -1027,6 +1036,9 @@ export class PerformanceOverlay extends LitElement implements Layer { this.tickLayerStats, ).map((layer) => ({ ...layer })), layerCounters: { ...this.layerCounters }, + unitLayerCounters: this.unitLayerCounters + ? { ...this.unitLayerCounters } + : null, }; } @@ -1101,9 +1113,8 @@ export class PerformanceOverlay extends LitElement implements Layer { ? this.uiText.failedCopy : this.uiText.copyClipboard; - const renderLayerBreakdown = this.renderLayersExpanded const renderLayerBreakdown = - this.renderLayersExpanded || this.layerCounters.UnitLayer + this.renderLayersExpanded ? PerformanceOverlay.computeLayerBreakdown(this.layerStats) : []; const tickLayerBreakdown = this.tickLayersExpanded @@ -1112,7 +1123,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