feat(camera): CameraController carries both legacy + retail chase cams
EnterChaseMode now takes (ChaseCamera, RetailChaseCamera); Active consults CameraDiagnostics.UseRetailChaseCamera to pick which to expose. Flag flip at runtime swaps cameras instantly (both are kept warm). GameWindow's two EnterChaseMode call sites get a temporary stub RetailChaseCamera; Task 7 wires proper construction + per-frame updates. Also folds in two minor cleanups from the Task 3 code review: - Update() discards the unused `right` axis from BuildBasis (no caller in the chase-cam math; viewer_offset.X is always 0) - The three CameraDiagnostics-mutating integration tests now save and restore the static state in try/finally to avoid ordering-dependent contamination Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0c1403f2e6
commit
e5a5916679
5 changed files with 187 additions and 58 deletions
|
|
@ -9856,7 +9856,7 @@ public sealed class GameWindow : IDisposable
|
|||
&& _playerMode
|
||||
&& _chaseCamera is not null)
|
||||
{
|
||||
_cameraController.EnterChaseMode(_chaseCamera);
|
||||
_cameraController.EnterChaseMode(_chaseCamera, new RetailChaseCamera { Aspect = _chaseCamera.Aspect });
|
||||
return;
|
||||
}
|
||||
_cameraController.ToggleFly();
|
||||
|
|
@ -9962,7 +9962,7 @@ public sealed class GameWindow : IDisposable
|
|||
// accumulated value from a previous session doesn't leak
|
||||
// into a future code path that re-enables mouse-yaw.
|
||||
_playerMouseDeltaX = 0f;
|
||||
_cameraController?.EnterChaseMode(_chaseCamera);
|
||||
_cameraController?.EnterChaseMode(_chaseCamera, new RetailChaseCamera { Aspect = _chaseCamera.Aspect });
|
||||
// K-fix1 (2026-04-26): latch the "we have entered chase at least
|
||||
// once" flag so the live-mode pre-login render gate stops
|
||||
// suppressing the scene. From here on, the orbit camera (if the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue