Stop has many potential side effects as it may try to restore state of external actors that this player is affecting. It is not safe to call this during BeginDestroy as the validity of object pointers is very turbulent during a GC pass. Now, the Level Sequence Actor (and ActorSequenceComponent) detect EndPlay() and call Stop (which is a noop if it's already stopped). EndPlay() is called when the original call to Destroy(...) goes out to tear down the owning actor at which point the validity of object pointers is still valid as we don't get GC'd until after EndPlay is called on destroyed items.
This fixes an issue where during a seamless level transition, Stop() would sometimes fail to disable Cinematic Mode on the Player Controller (which survives the transition) as the World would have been destroyed at that point and we use the world to get the local player controller.
#jira UE-79481
#rb Max.Chen
[CL 8386282 by Matt Hoffman in Dev-Editor branch]
#lockdown josh.andersen
#rb Andrew.Rodham
#ROBOMERGE-OWNER: james.brinkerhoff
#ROBOMERGE-AUTHOR: trent.halvorsen
#ROBOMERGE-SOURCE: CL 8012362 via CL 8012363 via CL 8012365 via CL 8012928
#ROBOMERGE-BOT: (v400-8057353)
[CL 8064890 by james brinkerhoff in Main branch]
The new setting defaults to overriding the constraint to XFOV to preserve previous behaviour. It lets the user choose what kind of constraint to use during the sequence, or whether to not touch the constraint at all.
#jira UE-76517
#rb max.chen, matthoffman, andrew.rodham
[CL 7824809 by ludovic chabant in Dev-Editor branch]
- Changed a map of maps to use a single map with a combined key and therefore reduce heap allocation (and allow for pre-reservation of sensible starting allocation)
- Skipped unnecessarily checking for binding overrides in the spawn template if there were already bound objects
- Skipped redundant string manipulation in actor spawner to do with level names where the common case is no specified level name
#rb Max.Chen
#ROBOMERGE-SOURCE: CL 7269368 via CL 7269369 via CL 7269968 via CL 7270024 via CL 7275797
#ROBOMERGE-BOT: (v369-7254125)
[CL 7275928 by andrew rodham in Main branch]
#jira FURY-129
#rb none
#ROBOMERGE-SOURCE: CL 7266539 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v369-7254125)
[CL 7266554 by max chen in Main branch]
#rb andrew.rodham
#ROBOMERGE-SOURCE: CL 7249758 via CL 7249823 via CL 7250830 via CL 7263863
#ROBOMERGE-BOT: (v369-7254125)
[CL 7263943 by max chen in Main branch]
#jira UE-76125
#rb austin.crismore
#ROBOMERGE-SOURCE: CL 7073401 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v367-6836689)
[CL 7073550 by max chen in Main branch]
This is needed so that sequencer actors can tick first, putting objects in their desired locations and then allowing other systems to respond. This fixes special cases where sequencer would tick animation again if it had ticked before sequencer.
#jira UE-59735
#jira UE-61706
#jira UE-69731
#jira UE-72639
#rb marc.audy, andrew.rodham
[CL 5901999 by Max Chen in Dev-Sequencer branch]