- TableRowStyle for Sequencer which is a combination of the alternative row style and the show parent style - Alternating rows have different tints, parents have different tints.
- Make sure top level rows also report as a parent row
- Rows that have keys or sections selected also report as highlighted
#rb Andrew.Rodham
#jira UE-200166
[CL 30187311 by max chen in ue5-main branch]
The Binding Lifetime track is an optional track that can be added to any object binding. It allows the user to set time range(s) for when the object in question will be bound by Sequencer. Outside of those ranges, the object will be released, and any tracks underneath it will restore state/keep state as set.
Currently this track works for both spawnables and possessables. This track is a precursor to other binding types coming to Sequencer, and in the future this track will allow the user to trigger events as part of the binding activation/deactivation so that changes like AI control for example can be set when binding/unbinding NPC characters or player characters.
As part of this change, it was necessary to clean up some of the sequencer UI color settings on labels, as well as a few changes to the layer bar UI to facilitate a hatch overlay for the sections of the binding tracks that are in a deactivated area.
[REVIEW] [at]ue-sequencer
#jira UE-200088, UE-199857, UE-199299
#rb ludovic.chabant
[CL 29636485 by david bromberg in ue5-main branch]
+ Added a new row type for outliner trees that sets the background color once for the whole row. Previously this logic was implemented by each widget within the row (now each column widget, and the outliner view widget), which meant we re-ran the exact same logic (that was copied around) for background color computation multiple times per row. We now only do this once for the whole row.
+ Added a ModelID to all MVVM models. This is just a non-persistent serial uint32 unique to the instance and can be used for more efficient and stable keys than using the instance ptr.
+ SharedData is now a view model so it can support arbitrary extension and casting. This enables us to:
+ Add a new hierarchical cache extension that is easily accessible from any widget using GetSharedData()->CastThis<FOutlinerCacheExtension>()
+ Hierarchical Cache will perform a single pass on the entire MVVM hierarchy and allow clients to compute cached flags.
+ We have a separate cache for each of mute, solo and lock states that includes whether the item is set directly, and also whether it has settable children, and is implicitly set by a parent or child.
+ Added a dynamic extension iterator that allows anyone to iterate and filter the currently active dynamic extensions.
+ Moved Mute and Solo logic into the actual mute / solo extensions, rather than it being implemented in the NodeTree
+ Fixed header coloration for collapsed outliner rows that had selected keys within them. The logic here was incorrect and looked like an error in porting the code. It is now correct (and more efficient).
- Only folders, objects, tracks and track rows now implement mute/solo. Channels and categories were never supported, and now no longer show as such on the UI.
- Deleted the pre-existing XYZEditorExtension classes since they have all been ported to these new caches (the code is largely the same)
#jira UE-193500
#rb Max.Chen
[CL 27669850 by andrew rodham in ue5-main branch]
As part of this, change display name tooltips on tracks back to using a function rather than a saved value so they can be dynamically specified. This needed Sequencer and ObjectBindingID passed to the function for context. This was only very recently changed to use saved values, so this shouldn't cause issues.
#jira UE-192507
[REVIEW] [at]ue-sequencer
[CL 27595620 by david bromberg in ue5-main branch]
This corrects the event only being broadcast for the SetHotspot call from CL 24179637.
#jira UE-191858
#rb Max.Chen
[CL 26818509 by andrew rodham in ue5-main branch]
Implementations for the pin, mute, lock, and solo outliner columns to be displayed in the SOutlinerView of Sequencer. Each outliner column widget implements click and drag functionality. Outliner column visibility is saved per-sequencer and per-user. Default column visibility and order can be saved and restored in BaseEditorPerProjectUserSettings.ini.
#jira UE-105291
#rb max.chen
[CL 26656030 by john manard in ue5-main branch]
These editor extensions are used by outliner column implementations to query and modify pin, mute, lock, and solo.
#jira UE-105291
#rb max.chen
[CL 26520650 by john manard in ue5-main branch]