- 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]
This is the actual playback range that can be restricted by Sequencer with the selection range or the shot range. This allows other systems, like the Curve Editor to be bounded by the same range.
#jira UE-199263
#rb andrew.rodham
[CL 29607487 by max chen in ue5-main branch]
New algorithm is in MovieScenCurveChannelImpl where we calculate auto tangents. Since they work off tangents and not key positons, need to make sure to recalc them if the tangent changes now. Since FRichCurve will not support these new auto tangents, they only do 2 key interps with the old auto key algorithm that doesn't average the tangents at all, had to add a SupportedTangentType to FCurveEditor so that we can use that with the curve editor context menu/commands/SCurveEditorPanel since they are all shared between Sequencer and the Curve Asset viewer. Most of the code is making sure we treat smart auto's the same as the old autos
#jira UE-171811
#rb max.chen
#preflight 6446d596dc71c13446fa361a
[CL 25175842 by mike zyracki in ue5-main branch]
- Set color for all selected curves in the tree and/or curves that have selected keyframes (ie. curve selection)
- Fix next random color - pastel green
- Broadcast when custom colors changed so that the curve models can update their colors
Note - if you delete a custom color from the preferences, it doesn't refresh the curve editor as you might expect because the color is no longer defined in the key area meta data. The only way to fix this is to recreate the curve models, but that seems like overkill for this (selection would change, framing would change, etc)
#jira UE-164162
#jira UE-164168
#jira UE-164165
#preflight 632657398c3def91aa032650
#rb mike.zyracki, matt.hoffman, ludovic.chabant
[CL 22088557 by max chen in ue5-main branch]
Removed redundant private include paths from build.cs files.
Fixed include paths to be relative to the private or public folders.
Hid or removed includes that reached into other private module folders.
Updated PublicInclude paths when necessary.
#jira
#preflight 631e283bec5b0c765fc0ffdb
[CL 21960084 by bryan sefcik in ue5-main branch]