From da0acec796f7e6e551a66ec2e6b91c9b152a3a03 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 fdb2a9dc4..ac9b72d66 100644 --- a/src/client/graphics/GameRenderer.ts +++ b/src/client/graphics/GameRenderer.ts @@ -483,11 +483,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; } @@ -517,12 +521,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 65215b949..471d9e9ab 100644 --- a/src/client/graphics/layers/PerformanceOverlay.ts +++ b/src/client/graphics/layers/PerformanceOverlay.ts @@ -144,6 +144,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, @@ -642,6 +645,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; @@ -841,6 +845,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; @@ -957,6 +966,9 @@ export class PerformanceOverlay extends LitElement implements Layer { layers: this.layerBreakdown.map((layer) => ({ ...layer })), tickLayers: this.tickLayerBreakdown.map((layer) => ({ ...layer })), layerCounters: { ...this.layerCounters }, + unitLayerCounters: this.unitLayerCounters + ? { ...this.unitLayerCounters } + : null, }; } @@ -1032,7 +1044,7 @@ export class PerformanceOverlay extends LitElement implements Layer { const renderLayersToShow = this.layerBreakdown.slice(0, 10); const tickLayersToShow = this.tickLayerBreakdown.slice(0, 10); - const unitLayerCounters = this.layerCounters.UnitLayer ?? null; + const unitLayerCounters = this.unitLayerCounters; const maxLayerAvg = renderLayersToShow.length > 0