fix(input): Phase K live-test fixes pt2 — visible cursor in chase, free-fly discoverable
Two issues from the K-fix1 launch (2026-04-26 user report):
1. Mouse pointer invisible after login.
Root cause: CameraController.EnterChaseMode invokes
ModeChanged?.Invoke(IsChaseMode) — passing TRUE when chase
becomes active. The OnCameraModeChanged handler interpreted
that bool as `isFlyMode`, so chase entry wrongly triggered
the Raw cursor branch (raw = invisible pointer). The bool is
unreliable: ToggleFly passes IsFlyMode, ExitChaseMode passes
IsFlyMode, but EnterChaseMode passes IsChaseMode. Read the
controller state directly inside the handler instead — fly
mode IS the only state that needs Raw, everything else stays
Normal so the user can click panels / future selectables.
2. No way to enter free-fly mode.
The DebugPanel already had a "Toggle Free-Fly Mode" button
wired in K.2, but the user didn't know to look there. Added
two more discovery paths:
- Keyboard shortcut: Ctrl+Shift+F → AcdreamToggleFlyMode
in RetailDefaults() (retail leaves Ctrl+Shift+F unbound;
Ctrl+F is unused too, so this is conflict-free).
- View → Camera submenu in the ImGui MainMenuBar with a
"Enter / Exit Free-Fly Mode" entry whose label flips with
the active state. Shortcut hint shows "Ctrl+Shift+F".
The keyboard handler now also cancels _playerModeAutoEntry on
manual fly toggle (matches the DebugPanel button + new menu
entry — user's choice wins, the chase camera doesn't snap on
top of the fly camera mid-inspection).
Also corrected the View → Debug menu shortcut hint (was "F1",
actual binding is Ctrl+F1 since K.1c).
Tests still 1220 green.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
bc9ee9fdfa
commit
6481169cb9
2 changed files with 50 additions and 15 deletions
|
|
@ -325,12 +325,11 @@ public sealed class KeyBindings
|
|||
b.Add(new(new KeyChord(Key.Down, ModifierMask.Ctrl), InputAction.ScrollDown));
|
||||
|
||||
// ── Acdream debug actions: relocated to Ctrl+F* to avoid retail
|
||||
// conflicts. AcdreamToggleFlyMode + AcdreamTogglePlayerMode have
|
||||
// NO keyboard binding in retail-default; K.2 adds a DebugPanel
|
||||
// button for free-fly toggle and player-mode is auto-entered at
|
||||
// login. AcdreamRmbOrbitHold is intentionally absent — retail
|
||||
// binds RMB to SelectRight; the chase-camera orbit lives behind
|
||||
// a debug-mode flag in K.2.
|
||||
// conflicts. AcdreamTogglePlayerMode has NO keyboard binding
|
||||
// in retail-default (player-mode is auto-entered at login).
|
||||
// AcdreamRmbOrbitHold is intentionally absent — retail binds
|
||||
// RMB to SelectRight; the chase-camera orbit lives behind a
|
||||
// debug-mode flag in K.2.
|
||||
b.Add(new(new KeyChord(Key.F1, ModifierMask.Ctrl), InputAction.AcdreamToggleDebugPanel));
|
||||
b.Add(new(new KeyChord(Key.F2, ModifierMask.Ctrl), InputAction.AcdreamToggleCollisionWires));
|
||||
b.Add(new(new KeyChord(Key.F3, ModifierMask.Ctrl), InputAction.AcdreamDumpNearby));
|
||||
|
|
@ -339,6 +338,15 @@ public sealed class KeyBindings
|
|||
b.Add(new(new KeyChord(Key.F9, ModifierMask.Ctrl), InputAction.AcdreamSensitivityUp));
|
||||
b.Add(new(new KeyChord(Key.F10, ModifierMask.Ctrl), InputAction.AcdreamCycleWeather));
|
||||
|
||||
// K-fix2 (2026-04-26): free-fly toggle keyboard shortcut.
|
||||
// Retail leaves Ctrl+Shift+F unbound (retail F = SelectionPickUp,
|
||||
// Ctrl+F = unused) so this is non-conflicting. Also discoverable
|
||||
// via View → Camera in the ImGui MainMenuBar and the
|
||||
// "Toggle Free-Fly Mode" button in the Debug panel.
|
||||
b.Add(new(
|
||||
new KeyChord(Key.F, ModifierMask.Ctrl | ModifierMask.Shift),
|
||||
InputAction.AcdreamToggleFlyMode));
|
||||
|
||||
// K-fix1 (2026-04-26): RMB-hold camera orbit. Coexists with the
|
||||
// SelectRight Press binding above — Press fires on click,
|
||||
// AcdreamRmbOrbitHold fires on hold/release transitions so the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue