Add multi-select, specifier column, and visibility shortcuts to hierarchy panel

Ctrl+click toggles prim selection; Shift+click range-selects using a
per-frame visible-order list. Multi-selection is broadcast to the viewport
via a new SetOnPrimsSelected callback so Hydra highlights all selected prims.

Adds a 5th table column showing each prim's SdfSpecifier (def/over/class)
with colour coding. 'over' prims are shown in orange to make overrides
immediately visible.

Visibility icon updated: invisible prims show EyeSlash in orange instead
of grey. Ctrl+H / Shift+H keyboard shortcuts hide / show all selected prims.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-02 07:04:22 +08:00
parent 781d464f47
commit f7a2262e80
5 changed files with 151 additions and 14 deletions
+3 -1
View File
@@ -48,6 +48,8 @@ public:
// ── Selection (called by SceneHierarchyPanel) ────────────────────────────
/// Set a single selected prim (clears any multi-selection).
void SetSelectedPrimPath(const std::string& path);
/// Set multiple selected prims (from hierarchy Ctrl+click multi-select).
void SetSelectedPrimPaths(const std::vector<std::string>& paths);
// ── Main render (called from Application::RenderUI) ──────────────────────
void Render(bool* p_open = nullptr);
@@ -99,7 +101,7 @@ private:
bool IsMouseOverDivider(ImVec2 origin, ImVec2 total) const;
/// Width (px) of the reserved left toolbar strip.
static constexpr float kToolbarW = 52.0f;
static constexpr float kToolbarW = 40.0f;
// ── Selection management ─────────────────────────────────────────────────
/// Push the current shared selection into every tile and the manipulator.