From 67e64c79cf0fe821d5b199460141fc7ff9560db4 Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 19 May 2026 09:47:33 +0200 Subject: [PATCH] feat(camera): flip retail chase camera to default-on after visual ship After visual verification 2026-05-18 (turn lag, coast-and-settle, slope-tilt, jump tracking with contact-plane projection all working), make the retail chase camera the default. Legacy ChaseCamera stays available via the DebugPanel toggle (ACDREAM_RETAIL_CHASE=0 or the checkbox) pending a follow-up deletion commit. Env var polarity now matches AlignToSlope: default-on if unset, off only when explicitly "0". Co-Authored-By: Claude Opus 4.7 (1M context) --- src/AcDream.Core/Rendering/CameraDiagnostics.cs | 14 +++++++++----- .../Rendering/CameraDiagnosticsTests.cs | 13 ++++++++----- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/AcDream.Core/Rendering/CameraDiagnostics.cs b/src/AcDream.Core/Rendering/CameraDiagnostics.cs index 01349f1..e95683d 100644 --- a/src/AcDream.Core/Rendering/CameraDiagnostics.cs +++ b/src/AcDream.Core/Rendering/CameraDiagnostics.cs @@ -15,13 +15,17 @@ namespace AcDream.Core.Rendering; public static class CameraDiagnostics { /// - /// Master toggle. When false (default) the legacy - /// AcDream.App.Rendering.ChaseCamera is the active camera; - /// when true, the retail-faithful RetailChaseCamera is. - /// Initial state from ACDREAM_RETAIL_CHASE=1. + /// Master toggle. When true (default, after visual ship 2026-05-18) + /// the retail-faithful AcDream.App.Rendering.RetailChaseCamera + /// is the active chase camera; when false, the legacy + /// AcDream.App.Rendering.ChaseCamera rigid-follow camera is. + /// Initial state from ACDREAM_RETAIL_CHASE — default-on if + /// unset, off only when explicitly set to "0". The legacy + /// camera stays available via the DebugPanel toggle pending the + /// follow-up deletion commit. /// public static bool UseRetailChaseCamera { get; set; } = - Environment.GetEnvironmentVariable("ACDREAM_RETAIL_CHASE") == "1"; + Environment.GetEnvironmentVariable("ACDREAM_RETAIL_CHASE") != "0"; /// /// When true (default), the camera basis follows the player's diff --git a/tests/AcDream.Core.Tests/Rendering/CameraDiagnosticsTests.cs b/tests/AcDream.Core.Tests/Rendering/CameraDiagnosticsTests.cs index d3d3251..28323f3 100644 --- a/tests/AcDream.Core.Tests/Rendering/CameraDiagnosticsTests.cs +++ b/tests/AcDream.Core.Tests/Rendering/CameraDiagnosticsTests.cs @@ -20,27 +20,30 @@ public class CameraDiagnosticsTests CameraDiagnostics.MouseLowPassWindowSec = 0.25f; CameraDiagnostics.CameraAdjustmentSpeed = 40.0f; CameraDiagnostics.AlignToSlope = true; - CameraDiagnostics.UseRetailChaseCamera = false; + CameraDiagnostics.UseRetailChaseCamera = true; Assert.Equal(0.45f, CameraDiagnostics.TranslationStiffness); Assert.Equal(0.45f, CameraDiagnostics.RotationStiffness); Assert.Equal(0.25f, CameraDiagnostics.MouseLowPassWindowSec); Assert.Equal(40.0f, CameraDiagnostics.CameraAdjustmentSpeed); Assert.True(CameraDiagnostics.AlignToSlope); - Assert.False(CameraDiagnostics.UseRetailChaseCamera); + // 2026-05-18 ship: retail chase camera is the default. The + // legacy camera remains opt-in via the DebugPanel toggle until + // the follow-up deletion commit. + Assert.True(CameraDiagnostics.UseRetailChaseCamera); } [Fact] public void Setters_PersistRuntimeChanges() { CameraDiagnostics.TranslationStiffness = 0.8f; - CameraDiagnostics.UseRetailChaseCamera = true; + CameraDiagnostics.UseRetailChaseCamera = false; Assert.Equal(0.8f, CameraDiagnostics.TranslationStiffness); - Assert.True(CameraDiagnostics.UseRetailChaseCamera); + Assert.False(CameraDiagnostics.UseRetailChaseCamera); // Reset so other tests aren't poisoned. CameraDiagnostics.TranslationStiffness = 0.45f; - CameraDiagnostics.UseRetailChaseCamera = false; + CameraDiagnostics.UseRetailChaseCamera = true; } }