Third-person camera: enabling it in settings shouldn't capture the mouse immediately #795

Open
opened 2026-10-16 11:10:55 +00:00 by sky_line · 0 comments
Owner

When the third-person shooter camera is turned on in settings (SlipstreamTPSCamera), it immediately engages and captures the mouse (cursor hidden, mouse drives the camera). It should instead turn on in the non-captured state: the cursor stays free until the user engages it (self-click / Esc / the engage key, as already supported).

Why: the setting is usually flipped from the preferences floater or a menu. Capturing straight away takes the mouse from the UI the user is still using, and they have to release it again to finish.

Where: indra/newview/sltpscamera.cpp SLTPSCamera::onSettingChanged calls requestEngage() when the setting becomes true, and toggleEngaged() relies on that ("turning the feature on engages it"). update() then calls engage(), which takes SLToolTPS mouse capture and hides the cursor.

Expected:

  • Enabling the setting only arms the feature: no capture, cursor visible.
  • The existing engage paths (Esc re-engage, self-click, keybind) capture as today.
  • toggleEngaged() (keybind): decide whether enable + engage in one press is still wanted there; if so, engage explicitly in that path instead of through the setting callback.
  • Disabling the setting still disengages immediately.
When the third-person shooter camera is turned on in settings (`SlipstreamTPSCamera`), it immediately engages and captures the mouse (cursor hidden, mouse drives the camera). It should instead turn on in the **non-captured** state: the cursor stays free until the user engages it (self-click / Esc / the engage key, as already supported). **Why:** the setting is usually flipped from the preferences floater or a menu. Capturing straight away takes the mouse from the UI the user is still using, and they have to release it again to finish. **Where:** `indra/newview/sltpscamera.cpp` `SLTPSCamera::onSettingChanged` calls `requestEngage()` when the setting becomes true, and `toggleEngaged()` relies on that ("turning the feature on engages it"). `update()` then calls `engage()`, which takes `SLToolTPS` mouse capture and hides the cursor. **Expected:** - Enabling the setting only arms the feature: no capture, cursor visible. - The existing engage paths (Esc re-engage, self-click, keybind) capture as today. - `toggleEngaged()` (keybind): decide whether enable + engage in one press is still wanted there; if so, engage explicitly in that path instead of through the setting callback. - Disabling the setting still disengages immediately.
sky_line added this to the Slipstream project 2026-10-16 11:10:55 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#795
No description provided.