* Broke out some copy/pasted code into a helper function for calculating the inverse of the lifetime section ranges, and protected against hanging in case somehow some of the sections overlap.
* Prevent re-making a section infinite if by doing so would cause it to overlap with another section in its range and the track doesn't allow blending on its sections.
* Fix a crash bug in the initial placement code for the binding lifetime sections caused by an edge case in the logic to prevent overlaps.
[REVIEW] [at]ue-sequencer
#jira UE-200796, UE-200795
#rb ludovic.chabant
[CL 29885252 by david bromberg in ue5-main branch]
simplifies usage of Object Properties and fixes a few edge cases
see zousar.shaker for issues
#rb zousar.shaker
[CL 29761675 by joe pribele in ue5-main branch]
- we have to force the reconstruction of the tree as FMovieSceneChannelHandle::Index will be changed when removing a curve model upper in the list
#jira UE-199938
#rb mike.zyracki
#rnx
[CL 29679988 by benoit gadreau 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]
This is another step in the broader refactor to remove IMovieScenePlayer from the core evaluation code. This step moves some of the main evaluation information from the player and its root evaluation template instance, to the shared playback state.
With this knowledge, FSharedPlaybackState, FSequenceInstance, and a few other classes have access to basic things like the linker, runner, and more, so this change removes the need to pass these pointers into many methods. We do however still need to pass the player into a few places because the creation and initialization of sequence instances needs to execute some binding-related logic in a careful order. This will be further cleaned-up in a follow-up change when we move object caches and binidng overrides out of the player class.
#rb andrew.rodham
#jira UE-199666
[CL 29410139 by ludovic chabant in ue5-main branch]
This allows custom anim blueprints to either:
a) Allow Sequencer to swap out their anim instance during playback (swapping it back after). This is similar to checking the 'Force Custom Mode' checkbox on a Skeletal Animation track section, but at the blueprint level without having to change anything in Sequencer.
b) Provide a list of valid Anim Slot names for the Sequencer Skeletal Animation track section UI to choose from. When provided by a blueprint with the interface, a valid slot will always be chosen when creating new skeletal animation sections.
These features will allow UEFN devs to better manage Sequencer takeover of pawn animation without the user having to edit a SlotName in the Sequencer UI. To use these features will require them editing their anim blueprints to use this interface.
I had considered as part of this change hiding the Slot Name UI entirely in UEFN when there is no choice to be made, but decided against it for less UEFN-specific code.
[REVIEW] [at]ue-sequencer [at]guillaume.guay
#jira UE-199199, UE-199200
#rb Max.Chen
[CL 29316313 by david bromberg in ue5-main branch]