- When track instance input is re-linked (ie, something modified a section causing it to be invalidated in the track instance) we track whether the input previously existed in the inputs, and remove + re-add it if so. This ensures that OnInputAdded is always called when a section is modified. If OnInputAdded is not called then logic that operates on the section's data (which probably changed during the Modify that invalidated the input) will get missed.
In the case of the CVar track, all its pre-animated state capture happens in OnInputAdded - when CVars were added or removed from an existing section, pre-animated state would never be captured for the new data.
#jira UE-140559
#rb Mike.Zyracki, Matt.Hoffman
#preflight 61f84b28114ec25fe0b107c8
#ROBOMERGE-AUTHOR: andrew.rodham
#ROBOMERGE-SOURCE: CL 18796811 in //UE5/Release-5.0/... via CL 18797813 via CL 18798519
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v908-18788545)
[CL 18798631 by andrew rodham in ue5-main branch]
- Track Instance Inputs can now be used as capture sources to capture pre-animated state
- PreAnimatedState extension now simply exists as a member of UMovieSceneEntitySystem. Previously the existence of the extension was used to determine whether any pre-animated state logic was required, but in practice this created more problems than it solved and led to some convoluted lifetime management code.
- Added a templated group manager type from which the object group manager can inherit. This simplifies the introduction of new group managers
- Removed the requirement that all pre-animated state must exist as part of a valid group. This forced state from 'master' tracks to be arbitrarily grouped together which put an unnecessary burden on the storage classes.
#jira UE-132512
#rb max.chen, matt.hoffman
[FYI] andrew.rodham
#preflight 61f2ca893765218cf01f290e
#ROBOMERGE-AUTHOR: max.chen
#ROBOMERGE-SOURCE: CL 18754810 in //UE5/Release-5.0/... via CL 18754825 via CL 18757520
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18758489 by max chen in ue5-main branch]
- Client code ultilizing ForEachAllocation task callbacks no longer need to call Resolve to access component data - this is already done in the task internals and the lock is maintained correctly for the duration of the task
- Added Read/WriteComponent methods to FEntityAllocation to make custom component access more robust - these functions now return a scope-locked wrapper around the component data
#rb Max.Chen, Ludovic.Chabant
[CL 15144976 by Andrew Rodham in ue5-main branch]