+ Removed "Clean View" it was not being used.
+ Removed pinned nodes there was no UI for pinning and pinning in code is not neccessary with no shot filtering.
+ Tracks are now always visible, with shot filtering gone this was only being used to hide empty tracks. If we want this behavior we should just delete tracks when they become empty.
+ Removed caching code which is not neccessary now that visibility is simpler.
[CL 2703157 by Frank Fella in Main branch]
- Added FSequencerSnapField to simplify snapping calculations and related code.
- Formalised IMarqueeVisitor as a more generic ISequencerEntityVisitor that can be used to walk a range of visible sequencer entities
- Updated FMoveKeys drag operation to use FSequencerSnapField and corrected snapping code
- Track area geometry is now cached in SSequencerTrackArea to simplify SSequencer::GetVirtualTrackArea
- Fixed grouped keys swallowing each other when dragging other keys over the top
[CL 2643241 by Andrew Rodham in Main branch]
Conceptual changes:
- SSection is no longer responsible for drag operations. This alleviates mouse capture fighting and event ordering issues to do with both SSequencerTrackArea and SSection wanting to potentially handle drag-like events.
- ISequencerEditTool can be implemented to define interaction logic for the sequencer as a whole.
- There is only ever one tool active at a time. This is set by SSequencer::SetEditTool.
- Edit tools are responsible for handling mouse input based on the current environment
- Sequencer hotspots define particular points of interest on the sequencer UI such as keys, sections etc. Hotspots can optionally define a drag protocol. This may or may not be honored by the current edit tool.
- FVirtualConvertor has been formalised as FVirtualTrackArea which provides logic for converting between virtual and physical track area space, as well as hit-testing logic.
We currently have two tools: move (V) and marquee (M) selection. Marquee selection has two modes (key and section selection) which can be toggled with the toolbar button, or by pressing the hotkey multiple times.
[CL 2640139 by Andrew Rodham in Main branch]
- Sequencer tree is now an STreeView which gives us proper virtualized scroll, and allows removal of lots of manually implemented tree-management code.
- Selection and expansion is now handled by STreeView itself.
- Track lanes are now also virtualized vertically, so we should only see section area widgets when they're actually on screen. Positioning these elements is a frame behind the tree rows.
- Added Traversal methods for more expressive traversal of the sequencer tree (See FSequencerDisplayNode::Traverse(Visible)_(Child|Parent)First).
- Removed outliner backgrtounds and replaced with more subtle separator lines.
- Added Marquee selection for sequencer keys. Currently this is not implented when LMB dragging on a SSection.
- Added RMB panning for the sequencer track area. This currently has no inertial scroll, but could be added in future.
[CL 2625643 by Andrew Rodham in Main branch]