Commit Graph

80 Commits

Author SHA1 Message Date
andrew rodham
8e6119cf18 Sequencer: Change outliner column layout algorithm to encroach cell padding without hiding the subsequent cell if possible
#jira UE-205622
#rb Max.Chen

[CL 31093814 by andrew rodham in ue5-main branch]
2024-02-01 13:12:44 -05:00
vincent gauthier
5a38f21d52 MovieScene Truncation Warning fixes
#jira UE-166271
#rb daren.cheng

[CL 31057708 by vincent gauthier in ue5-main branch]
2024-01-31 14:08:29 -05:00
andrew rodham
5c35b76857 Sequencer: Introduced a new column that only shows an 'Add keyframe' button for more condensed views
This column is mutually exclusive with the Key Frame Navigation column

#rb Max.Chen
#jira UE-200166

[CL 31018662 by andrew rodham in ue5-main branch]
2024-01-30 15:31:19 -05:00
andrew rodham
76ecbe00cf Sequencer: Corrected hover state handling for outliner rows
#rb Max.Chen
#jira UE-200166

[CL 31017912 by andrew rodham in ue5-main branch]
2024-01-30 15:13:57 -05:00
andrew rodham
0d7faee56c Compile fix
[CL 30977233 by andrew rodham in ue5-main branch]
2024-01-29 16:06:15 -05:00
andrew rodham
c262d4f937 Sequencer: Outliner UX improvements
This change represents the final round of improvements to the Sequencer outliner UI per UX team's mockups. The notable changes are:

 - All widgets on the outliner are now properly aligned and maintained through a rich and extensible column management API. All columns can be toggled on and off as desired.
 - Previous/Add/Next key navigation buttons have updated icons and spacing and are consistent with the pin/lock/mute/solo icons
 - Labels and edit widgets will now forcibly overflow other, less important, widgets on hover if they are occluded because of a narrow overal outliner width
 - All rows now have a separator line
 - Track rows are now uniform heights
 - Lock camera button is now more prominent

#rb Max.Chen
#jira UE-200166

[CL 30976450 by andrew rodham in ue5-main branch]
2024-01-29 15:28:45 -05:00
max chen
87d7d1c5d4 Sequencer: Next/Previous Key rework to expose it to BPs
The SequencerOutlinerScriptingObject now has GetNextKey/GetPreviousKey functions which can be called from scripts.

SequencerOutlinerViewModel implements GetNextKey/GetPreviousKey

GetNextKey/GetPreviousKey now operate within the the sequence's time bounds (which can be restricted to the selection range)

#jira UE-176340
#jira UE-198077
#rb ludovic.chabant, andrew.rodham

[CL 30953693 by max chen in ue5-main branch]
2024-01-26 22:18:28 -05:00
max chen
98d8561e09 Sequencer: Sequencer module scripting layer
Precursor to sequencer specific functions like GetNextKey/GetPreviousKey

#rb andrew.rodham
#rnx

[CL 30952733 by max chen in ue5-main branch]
2024-01-26 20:39:59 -05:00
steve robb
f43fc1d782 Fixed up more bool-taking calls to take EAllowShrinking instead.
[CL 30894388 by steve robb in ue5-main branch]
2024-01-25 14:09:12 -05:00
steve robb
6d5b974842 Fixed up a lot of bool-taking container resize functions to take EAllowShrinking instead.
[CL 30735396 by steve robb in ue5-main branch]
2024-01-19 19:41:56 -05:00
steve robb
7da84c1d1b Replaced UE_NODISCARD with [[nodiscard]].
[CL 30593744 by steve robb in ue5-main branch]
2024-01-12 10:47:04 -05:00
max chen
153dadd2af Sequencer: Track Area UX - selection for track lane is now tinted rather than a border
#rb andrew.rodham
#jira UE-200166

[CL 30383391 by max chen in ue5-main branch]
2023-12-18 17:12:21 -05:00
max chen
0953ec17df Sequencer: Allow resizing sub track and template sequence track row heights
#rb Andrew.Rodham
#jira UE-202588

[CL 30330397 by max chen in ue5-main branch]
2023-12-14 15:42:33 -05:00
max chen
85e15d5995 Sequencer: Additional Tree View UX - Null pointer check
#rb Andrew.Rodham
#jira UE-200166

[CL 30281687 by max chen in ue5-main branch]
2023-12-12 18:27:09 -05:00
max chen
ea910823bd Sequencer: Additional Tree View UX - Highlight parents even if the selected item is collapsed
Same as SSceneOutlinerTreeView::Private_UpdateParentHighlights

#rb Andrew.Rodham
#jira UE-200166

[CL 30272151 by max chen in ue5-main branch]
2023-12-12 14:29:01 -05:00
max chen
96499ec11c Sequencer: Tree View UX
- 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]
2023-12-07 13:58:37 -05:00
max chen
6aad82d604 Sequencer: Column UX
- Update icons to 14x14
- Remove inner border
- Update opacities: Default 10%, Row Hover 25%, Row and Icon Hover 80%, Selected 100%

#jira UE-200167
#rb andrew.rodham

[CL 30143354 by max chen in ue5-main branch]
2023-12-05 19:45:55 -05:00
david bromberg
dd8c44e6f5 Sequencer- Binding Lifetime Track.
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]
2023-11-10 07:34:17 -05:00
ludovic chabant
cce1cd40c0 Sequencer: stable sort sequencer outliner children to avoid weird reordering issues
#jira UE-194092
#rb max.chen, andrew.rodham

[CL 28479854 by ludovic chabant in ue5-main branch]
2023-10-04 18:28:03 -04:00
max chen
cb5bb57b06 Sequencer: OnHierarchyUpdated can be called while the widget is being destroyed, so just mark bWidgetsDirty and not RecreateWidgets() immediately. bWidgetsDirty will call RecreateWidgets() on Tick() if necessary.
#jira UE-194376
#rb andrew.rodham

[CL 28347249 by max chen in ue5-main branch]
2023-09-29 13:21:29 -04:00
steve robb
51f3ea53ae Removed ChooseClass.h includes.
#rb trivial

[CL 27823723 by steve robb in ue5-main branch]
2023-09-13 05:43:01 -04:00
andrew rodham
02f64a43a5 Sequencer: Optimized mute/solo/lock columns by implementing caching and removing redundant UI delegation
+ 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]
2023-09-07 08:25:43 -04:00
david bromberg
14598e7e48 Fix rendering issue where color property tracks in Materials were causing key areas to get culled due to mismatching outliner and trackview heights.
[REVIEW] [at]ue-sequencer
#jira UE-194187

[CL 27599233 by david bromberg in ue5-main branch]
2023-09-05 12:10:05 -04:00
david bromberg
5c5b2be807 Sequencer- Add fixup UX logic for Component Material Parameter and Material Switcher tracks. We now detect when a track bound to a material by slot name no longer matches both slot name and material index, and allow the user to either automatically or manually rebind the track to the material slot and index.
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]
2023-09-05 10:15:32 -04:00
max chen
5e4758c80e Sequencer: Outliner Column fixed height caused issues with alignment between Outliner View and Track View
#rb john.manard
#rnx

[CL 27250398 by max chen in ue5-main branch]
2023-08-21 15:36:02 -04:00