Edit window: list of links and faces with hover-to-highlight and click-to-select #252

Closed
opened 2026-10-02 21:06:04 +00:00 by sky_line · 2 comments
Owner

Request

Add a Links / Faces list to the Edit (build tools) floater.

  • Links list: every link in the selected linkset (root first), showing link number and object name (plus description on hover).
  • Faces list: the faces of the currently selected link (face index, maybe a texture thumbnail, material type).

Behaviour:

  • Hover a link row: the selection outline / wireframe highlight switches to that link. This is a preview; the selection doesn't change.
  • Click a link row: select that link in the edit window, like "Edit linked" + click on the prim.
  • Hover a face row: highlight that face (as the face-select outline does).
  • Click a face row: select that face ("Select Face" mode).
  • Multi-select with Ctrl/Shift, matching the build tools' selection semantics.

Notes / prior art

  • Firestorm's build floater has a link number / linkset tools section. Black Dragon and Kokua have linkset browsers; check them for UX and port if suitable (LGPL), themed like our floaters.
  • Selection plumbing: LLSelectMgr (selectObjectOnly, selectTE), LLToolFace, and "Edit linked parts" mode. The hover highlight can use the same path as the VK selection outline (renderSelections / VK overlay). Silhouettes were removed with GL. The VK outline walks getSelection(), so the hover preview needs a separate "highlight" list it can draw (#… area-search beacons use a similar overlay pass).
  • Large linksets (255 links): the list must virtualize / filter (search box by name / desc / link number).
  • Respect permissions: only show editable links for selection, but list all.

Acceptance

  • Hovering rows moves the outline to the right link or face immediately.
  • Clicking selects it, and the edit panels (Object / Features / Texture) update.
  • Works with Edit Linked on and off.
  • No outline flicker.
## Request Add a **Links / Faces list** to the Edit (build tools) floater. - **Links list:** every link in the selected linkset (root first), showing link number and object name (plus description on hover). - **Faces list:** the faces of the currently selected link (face index, maybe a texture thumbnail, material type). Behaviour: - **Hover** a link row: the selection outline / wireframe highlight switches to that link. This is a preview; the selection doesn't change. - **Click** a link row: select that link in the edit window, like "Edit linked" + click on the prim. - **Hover** a face row: highlight that face (as the face-select outline does). - **Click** a face row: select that face ("Select Face" mode). - Multi-select with Ctrl/Shift, matching the build tools' selection semantics. ## Notes / prior art - Firestorm's build floater has a link number / linkset tools section. Black Dragon and Kokua have linkset browsers; check them for UX and port if suitable (LGPL), themed like our floaters. - **Selection plumbing:** `LLSelectMgr` (`selectObjectOnly`, `selectTE`), `LLToolFace`, and "Edit linked parts" mode. The hover highlight can use the same path as the VK selection outline (`renderSelections` / VK overlay). Silhouettes were removed with GL. The VK outline walks `getSelection()`, so the hover preview needs a separate "highlight" list it can draw (#… area-search beacons use a similar overlay pass). - **Large linksets (255 links):** the list must virtualize / filter (search box by name / desc / link number). - Respect permissions: only show editable links for selection, but list all. ## Acceptance - Hovering rows moves the outline to the right link or face immediately. - Clicking selects it, and the edit panels (Object / Features / Texture) update. - Works with Edit Linked on and off. - No outline flicker.
Author
Owner

Implemented on branch linklist (146b5fefd3, 4d8fc95205, 1e416d00d5). Not built yet; -fsyntax-only passes on the touched TUs.

UI: a new Links tab in the build floater (panel_tools_links.xml, LLPanelObjectLinks). It has a filter box (name / description / link number), a links list (link number + name, description in the tooltip, root first), and a faces list for the current link (face index, PBR / Legacy / Legacy+M, alpha mode, base texture UUID in the tooltip). No-modify or RLV-locked links are listed greyed and can't be selected.

Hover: the hovered link (all faces) or face is drawn in the VK selection outline in its own colour (SilhouetteHoverColor), on top of the existing selection, and its occluded edges are always shown. It uses the same instance-id indirect outline lists: sel_root is now a kind (root / child / hover), with 9 lists and no shader change. The frame builder polls it each frame, so it works with retained UI. It clears on mouse-leave.

Click: clicking a link turns Edit linked parts on and selects that prim. Clicking a face switches to the Select Face tool and selects that face. Ctrl / Shift toggle, following LLToolSelect / LLToolFace. The lists follow LLSelectMgr (in-world clicks, the Edit linked toggle).

Notes:

  • No texture thumbnails. A scroll-list icon cell loads the texture as a permanent BOOST_UI image.
  • Names for links that were never selected are fetched with RequestObjectPropertiesFamily (8 per frame). It's untested whether the sim answers this for child prims. If it doesn't, those rows show "(loading name...)" until the whole linkset has been selected once.
Implemented on branch `linklist` (146b5fefd3, 4d8fc95205, 1e416d00d5). Not built yet; `-fsyntax-only` passes on the touched TUs. **UI:** a new **Links** tab in the build floater (`panel_tools_links.xml`, `LLPanelObjectLinks`). It has a filter box (name / description / link number), a links list (link number + name, description in the tooltip, root first), and a faces list for the current link (face index, PBR / Legacy / Legacy+M, alpha mode, base texture UUID in the tooltip). No-modify or RLV-locked links are listed greyed and can't be selected. **Hover:** the hovered link (all faces) or face is drawn in the VK selection outline in its own colour (`SilhouetteHoverColor`), on top of the existing selection, and its occluded edges are always shown. It uses the same instance-id indirect outline lists: `sel_root` is now a kind (root / child / hover), with 9 lists and no shader change. The frame builder polls it each frame, so it works with retained UI. It clears on mouse-leave. **Click:** clicking a link turns Edit linked parts on and selects that prim. Clicking a face switches to the Select Face tool and selects that face. Ctrl / Shift toggle, following LLToolSelect / LLToolFace. The lists follow LLSelectMgr (in-world clicks, the Edit linked toggle). **Notes:** - No texture thumbnails. A scroll-list icon cell loads the texture as a permanent BOOST_UI image. - Names for links that were never selected are fetched with RequestObjectPropertiesFamily (8 per frame). It's untested whether the sim answers this for child prims. If it doesn't, those rows show "(loading name...)" until the whole linkset has been selected once.
Author
Owner

Verified done: Links tab in the build floater: filterable links list + faces list, hover-to-highlight in the VK selection outline, click to select link/face, texture thumbnails and colour swatches. Commits: 146b5fefd3, 4d8fc95205, 1e416d00d5, 9b71f01706. Shipped in v1.0.0-beta.1.

Verified done: Links tab in the build floater: filterable links list + faces list, hover-to-highlight in the VK selection outline, click to select link/face, texture thumbnails and colour swatches. Commits: 146b5fefd3, 4d8fc95205, 1e416d00d5, 9b71f01706. Shipped in v1.0.0-beta.1.
sky_line referenced this issue from a commit 2026-10-07 00:37:07 +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#252
No description provided.