Freeze look-at: key combo + Quick Prefs button + toolbar button -- head stays on the current target whatever the camera does #955

Open
opened 2026-10-23 02:43:51 +00:00 by sky_line · 0 comments
Owner

Request

A Freeze look-at toggle. When turned on, it captures the current look-at target and keeps the avatar's head tracking it, no matter how the camera moves afterwards (orbit, alt-cam, TPS camera, mouselook exit, zoom). Turning it off returns to normal look-at behaviour.

Applies to both

  • Our own head locally (the look-at motion, SLPoseLookAt / SLPoseLookAtMotion in indra/newview/slposelookat.{h,cpp}).
  • What we send to others: the look-at sent to the server (LL's LLHUDEffectLookAt target, indra/newview/llhudeffectlookat.cpp) and our own "Send where I look" line (SLPoseLookAt sender). Others must see the head stay on the frozen target too.

Target capture

  • If the current look-at target is an object or avatar: freeze on that object (follow it if it moves; if it disappears / leaves range, hold the last world position, or unfreeze -- decide and document).
  • If the target is a point (no object): freeze on that world position.
  • No target at the moment of freezing: freeze on the point the camera is looking at.

Controls

  1. Key combo (rebindable in the key bindings like the other actions). Must not use a bare letter key (letter keys always mean movement). Suggested default with a modifier chord that doesn't clash with the Alt+Shift set (#948); confirm with the owner.
  2. Quick Prefs (floater_quick_prefs.xml): a toggle button / checkbox showing the frozen state.
  3. Toolbar button (app_settings/commands.xml command + icon), toggle state shown on the button.
    All three drive one setting / state (e.g. SlipstreamLookAtFreeze, not persisted across login) so they stay in sync.

Interactions

  • Respects the existing blocks: RLV restrictions, "Don't send my Look At target to others" (privacy), "Disable Look At Animation" -- frozen state must not bypass any of them.
  • A brief notification / hint when freezing (what it froze on) and when it auto-releases.
  • The client AO / pose holding the head: same precedence as today.

Test

  • Look at an object, freeze, orbit the camera all around and alt-cam elsewhere: the head stays on the object locally and on a second viewer.
  • Moving target (another avatar walking): head follows it.
  • Toggle from each of the three controls: all three show the same state.
  • Privacy setting on: nothing is sent to others while frozen.
## Request A **Freeze look-at** toggle. When turned on, it captures the current look-at target and keeps the avatar's head tracking it, no matter how the camera moves afterwards (orbit, alt-cam, TPS camera, mouselook exit, zoom). Turning it off returns to normal look-at behaviour. ## Applies to both - **Our own head locally** (the look-at motion, `SLPoseLookAt` / `SLPoseLookAtMotion` in `indra/newview/slposelookat.{h,cpp}`). - **What we send to others:** the look-at sent to the server (LL's `LLHUDEffectLookAt` target, `indra/newview/llhudeffectlookat.cpp`) and our own "Send where I look" line (`SLPoseLookAt` sender). Others must see the head stay on the frozen target too. ## Target capture - If the current look-at target is an object or avatar: freeze on that object (follow it if it moves; if it disappears / leaves range, hold the last world position, or unfreeze -- decide and document). - If the target is a point (no object): freeze on that world position. - No target at the moment of freezing: freeze on the point the camera is looking at. ## Controls 1. **Key combo** (rebindable in the key bindings like the other actions). Must not use a bare letter key (letter keys always mean movement). Suggested default with a modifier chord that doesn't clash with the Alt+Shift set (#948); confirm with the owner. 2. **Quick Prefs** (`floater_quick_prefs.xml`): a toggle button / checkbox showing the frozen state. 3. **Toolbar button** (`app_settings/commands.xml` command + icon), toggle state shown on the button. All three drive one setting / state (e.g. `SlipstreamLookAtFreeze`, not persisted across login) so they stay in sync. ## Interactions - Respects the existing blocks: RLV restrictions, "Don't send my Look At target to others" (privacy), "Disable Look At Animation" -- frozen state must not bypass any of them. - A brief notification / hint when freezing (what it froze on) and when it auto-releases. - The client AO / pose holding the head: same precedence as today. ## Test - Look at an object, freeze, orbit the camera all around and alt-cam elsewhere: the head stays on the object locally and on a second viewer. - Moving target (another avatar walking): head follows it. - Toggle from each of the three controls: all three show the same state. - Privacy setting on: nothing is sent to others while frozen.
sky_line added this to the Slipstream project 2026-10-23 02:43:51 +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#955
No description provided.