Skip to content

feat(editor): multi-actor selection in Outliner #672

Description

@JeanPhilippeKernel

Summary

The Outliner currently supports single-actor selection only (SelectedActorHandle on the scene). Add Ctrl+click / Shift+click multi-selection with a unified gizmo.

Requirements

Selection model

  • Keep SelectedActorHandle as the primary selection (gizmo anchor, property panel target).
  • Add an editor-side Array<ActorHandle> m_selected_handles in HierarchyViewUIComponent (no scene change needed for phase 1).
  • Ctrl+click — toggle an actor into/out of the selection set; make it the primary if it's the only one selected.
  • Shift+click — range-select from the last clicked actor to the current one (DFS order).
  • Click with no modifier — clear selection, select clicked actor only.

Visual feedback

  • Highlight all selected rows (same COL_SELECTED tint used today).
  • Mark the primary actor with a slightly brighter tint or outline.

Gizmo

  • When more than one actor is selected, compute a centroid world position from all selected WorldTransform translation columns.
  • Show ImGuizmo at the centroid; on drag, distribute the delta (translation/rotation/scale) to each actor's local Position/Rotation/Scale.
  • For rotation and scale deltas, apply them in each actor's local frame (multiply local matrix by delta matrix, decompose).

Keyboard

  • Escape — deselect all.
  • Delete — delete all selected actors.

Out of scope (follow-up)

  • Multi-selection drag-and-drop reparent.
  • Copy/paste of selection.

Files likely touched

  • Tetragrama/Components/HierarchyViewUIComponent.h — add m_selected_handles, m_last_clicked_idx
  • Tetragrama/Components/HierarchyViewUIComponent.cpp — click handling, row highlight, gizmo centroid logic

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions