- Introduced a new match result utility that keeps track of remaining matched tokens.
- Filter terms that include periods (.) are now also eligible to be matched non-recursively using a literal match (ie, an entry with the literal label Location.X will be matched by Location.X, but LocationABC.X will not match)
- Previously, sequencer curve editor filter terms were not being matched recursively. This has been corrected using the new match result utility.
#rb david.bromberg
[CL 36448236 by andrew rodham in 5.5 branch]
Follow up fix to 35727872. It turns out the ugly hack is still necessary in some cases
#jira UE-223371
#rb matt.hoffman
[CL 36022768 by max chen in ue5-main branch]
This is slightly more robust because we want to expose other properties on the key struct, like interp and tangent modes.
#rb Matt.Hoffman
[CL 35727878 by max chen in ue5-main branch]
Set the focus on the viewport, sequencer or the curve editor if the mouse hovers the widget AND a key is pressed when the mouse is over the widget.
This is disabled by default but can be enabled using 'AnimMode.PendingFocusMode true' to enable it in animation mode only
+ improved fps when playing animations in animation mode (mainly due to synthesized mouse moves)
TODO: add a user preference instead of the cvar if the feedback is positive
NOTE: this could probably be something provided as a core slate functionality but we'd like this to be tested at the animation level first.
#jira UE-220620
#rb mike.zyracki
[CL 35311116 by benoit gadreau in ue5-main branch]
- Fixed crash while engine is exiting due to FCurveEditor unbinding its uobject delegates in destructor
[CL 35220246 by loris rossi in ue5-main branch]
This is a large suite of changes that are being submitted in bulk for build-health reasons:
Core machinery:
- FMovieSceneNumericVariant: This is the base variant type that represents either a double, or a custom object. It is not much use on its own, but provides the basis for the time-warp variant, and will be the basis for parameterization.
- FMovieSceneTimeWarpVariant: This is a drop in replacement for a double PlayRate/TimeScale UProperty that can now represent a time-warp or play rate curve, a loop, a clamp, or a fixed time. It also provides functionality for remapping time, and inverse remapping time.
- The following interpolation types have been added/improved to add Derivative and Integral functionality
* FConstantValue: Represents a curve of the form y=c
* FLinearInterpolation: Represents a curve of the form y=mx + c
* FQuadraticInterpolation: Represents a curve of the form y=ax^2 + bx + c.
* FCubicInterpolation: Represents a curve of the form y=ax^3 + bx^2 + cx + d.
* FQuarticInterpolation: Represents a curve of the form y=ax^4 + bx^3 + cx^2 + dx + e. Does not support integration.
* FCubicBezierInterpolation now has an AsCubic method that converts it to a cubic polynomial form, which also allows derivative/integral functionality.
- FPiecewiseCurve(Model): A generic read-only piecewise curve implementation and curve editor model. Used to display derivative curves for playrate.
- FMovieSceneTimingParameters: A struct for specifying section timing that simplifies computation of a transform. I wanted to replace all implementations with this but current deprecation mechanisms were prohibitively restrictive. More work will be needed there to remove legacy code.
- FMovieSceneTimeWarpChannel: A new channel type that defines time in one of two domains: PlayRate or Time
Curve Editor: Added the ability to specify custom axes and child curves
- Custom Axes:
* Custom axes can now be assigned to each curve within a view, and the axis defines the scaling for that curve.
* This allows us to have multiple different 'spaces' on the same view that have vastly different scales (for instance, play rate, and tick resolution times)
- Child Curves:
* Child curves are added whenever their parent is added. This allows us to show the derivative of a play rate curve on the curve editor.
Sequencer: Added Owning Object and key offsets to channel meta-data and curve models, made Sequencer key-editors polymorphic,
- New options on channel proxy entries allow us to specify that a channel's keys are relative to their section start time via a key offset
- New options in the curve editor models allow for a non-UMovieSceneSection owner object type
#jira UE-149871
#rb Ludovic.Chabant, David.Bromberg, Max.Chen
[CL 34813298 by andrew rodham in ue5-main branch]
Tested that you can still override snapping by holding down Shift.
Tested that snapping settings are retained when closing and reopening Sequencer/Curve Editor.
#jira UE-203562
#rb Mike.Zyracki
[CL 32217525 by max chen in ue5-main branch]
Invert selection of keys for curves that have selected keys. (ie. don't select all keys if there are no keys selected for a curve)
#jira UE-205341
#rb Mike.Zyracki
[CL 32217374 by max chen in ue5-main branch]
We previously had 2 render paths, with each one having some issues.
With the attribute RenderWithLocalTransform set to to true, scale and absolute position were wrong in the geometry, resulting in texts scaled incorrectly and GetAccumulatedLayoutTransform returning incorrect (shifted) values.
With the attribute RenderWithLocalTransform set to to false, render transform like rotation/shear were applyed twice
There is now a single render path with the best of both world. The render path is similar to the one with RenderWithLocalTransform set to true, but it keep the scale and position info in the FGeometry that were lost in the process of getting rid of additional render transform previously.
#jira UE-114934, UE-107863, UE-112225, UE-203471
#tests Added auto test validating different use case of the retainer, based on the different jira related to this issue. Tested retainer usage from the curve editor where keyframe drag selection was working only with RenderWithLocalTransform deactivated, and other input issue test case from UDN.
#rb Patrick.Boutot
#virtualized
[CL 30886114 by yohann dossantos in ue5-main branch]