feat(scoreboard): a master on/off switch that also stops the polling
Creator: "even if it's not visible, we want to avoid polling." ScoreboardEnabled is the layer's master switch in the properties panel. Off means two things: - the strip frame is null in every scene (per-scene eye toggles stay independent), and - the cadence policy returns None at every phase — a scoreboard nobody can see must not spend quota. The switch is persisted (Scoreboard.Enabled), because one that resets would quietly resume polling. The polling gate is ScoreboardPollsEnabled: master switch AND at least one scene with a visible scoreboard — so hiding it in all five scenes also stops the polls. Guards: ScoreboardCadenceTests adds the switch off across live/test/recording; ScoreboardProperties pins the checkbox and the VM surface.
This commit is contained in:
@@ -29,8 +29,13 @@ public static class ScoreboardCadence
|
||||
public static readonly TimeSpan AnalyticsInterval = TimeSpan.FromMinutes(30);
|
||||
public static readonly TimeSpan SubscriberInterval = TimeSpan.FromSeconds(60);
|
||||
|
||||
public static ScoreboardPoll Due(SessionPhase phase, DateTime lastAnalyticsUtc, DateTime lastSubscriberUtc, DateTime nowUtc)
|
||||
/// <summary><paramref name="enabled"/> is the layer's master switch. Off means NOTHING is
|
||||
/// polled, whatever the session is doing — a hidden scoreboard has no reason to spend quota
|
||||
/// (creator ruling 2026-10-30).</summary>
|
||||
public static ScoreboardPoll Due(SessionPhase phase, DateTime lastAnalyticsUtc, DateTime lastSubscriberUtc,
|
||||
DateTime nowUtc, bool enabled = true)
|
||||
{
|
||||
if (!enabled) return ScoreboardPoll.None;
|
||||
if (phase == SessionPhase.Idle) return ScoreboardPoll.None;
|
||||
|
||||
var analyticsDue = phase == SessionPhase.Live && nowUtc - lastAnalyticsUtc >= AnalyticsInterval;
|
||||
|
||||
Reference in New Issue
Block a user