+ 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]
Add frame number customizations for tool properties panel
Moved SCurveEditorToolProperties.h to public
Fixed tool properties not getting updated on reselection
#jira UE-194391
#rb mike.zyracki
[CL 27643380 by max chen 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]
- Removed excessive allocations caused by continuously populating TSets
- Changed column widget to cache IsActive et. al. on Tick so it only gets called once per-frame
#rb Max.Chen
#jira UE-193500
[CL 27384929 by andrew rodham in ue5-main branch]
Custom primitive data is an alternative way of driving material parameters. It allows you to map any of 36 numbered float parameters on a PrimitiveComponent to one or more material parameters across multiple meshes and materials. You can apportion between 1-4 slots in a row to handle anything from scalar to color parameters. Previously these could only be set via code or blueprint, but now these can be animated in Sequencer.
A custom primitive data track can be added to a Primitive Component binding track in Sequencer.
From there, you can choose to add a float, Vector2D, Vector, or Color parameter, choosing the custom primitive data start index the parameter starts from. The UI will also scan the primitive component for material parameters currently mapped to any index to give you helpful suggestions for which parameters you may want to add. These parameters can then be animated and blended just like any parameter of that type.
As this was a new track, we had to build a new track editor, track, and section. The section inherits from MovieSceneParameterSection, as this was already capable of animating parameters of these types. We use the unique start index of the parameter as the name for these parameter sections.
To create the dynamic tooltips that show which material parameters the custom primitive data entries are mapped to, a change was made to the tooltiptext channel metadata to take a lambda instead of just an FText. This allows the tooltips to be generated live, so any changes to materials will be taken into account in the tooltip.
A new screenshot autotest using the feature was also created.
#jira UE-158852
[REVIEW] [at]ue-sequencer
[CL 27300987 by david bromberg in ue5-main branch]
Add SetWorld/GetWorld on the linker so that systems would get the player context world instead of the linker world, which is the transient package.
#jira UE-192690
#rb andrew.rodham
[CL 27277285 by max chen in ue5-main branch]
Folder within folder moving removes viewmodel child data for possessables until rebuilt. This fix recycles valid child object bindings in OnConstruct for Possessable Models.
#jira UE-178827
#rb andrew.rodham
[CL 27176778 by john manard in ue5-main branch]
This fixes a crash moving keys after deleting marked frames because the selected marked frames is stale.
Note, when keys are deleted, we similarly clear the key selection.
#jira UE-193116
#rb andrew.rodham
#lockdown julien.marchand
[CL 27141238 by max chen in ue5-main branch]