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
Summary
The Outliner currently supports single-actor selection only (
SelectedActorHandleon the scene). Add Ctrl+click / Shift+click multi-selection with a unified gizmo.Requirements
Selection model
SelectedActorHandleas the primary selection (gizmo anchor, property panel target).Array<ActorHandle> m_selected_handlesinHierarchyViewUIComponent(no scene change needed for phase 1).Visual feedback
COL_SELECTEDtint used today).Gizmo
WorldTransformtranslation columns.Position/Rotation/Scale.Keyboard
Escape— deselect all.Delete— delete all selected actors.Out of scope (follow-up)
Files likely touched
Tetragrama/Components/HierarchyViewUIComponent.h— addm_selected_handles,m_last_clicked_idxTetragrama/Components/HierarchyViewUIComponent.cpp— click handling, row highlight, gizmo centroid logic