ISequencer :: OnStopEvent is executed when pause, but not when playing to the last frame and stopping automatically.
This is because OnStopDelegate.Broadcast(); is only in FSequencer::Pause(). When it stops automatically, the process is called in the following order, so pause () is not executed.
> UnrealEditor-MovieScene-Win64-Debug.dll! FMovieSceneTimeController :: StopPlaying (const FQualifiedFrameTime & InStopTime) Line 61 C ++ UnrealEditor-MovieScene-Win64-Debug.dll! FMovieSceneTimeController :: PlayerStatusChanged (EMovieScenePlayerStatus :: Type InStatus, const FQualifiedFrameTime & InCurrentTime) Line 43 C ++ UnrealEditor-Sequencer-Win64-Debug.dll! FSequencer :: SetPlaybackStatus (EMovieScenePlayerStatus :: Type InPlaybackStatus) Line 4176 C ++ UnrealEditor-Sequencer-Win64-Debug.dll! FSequencer :: SetLocalTimeLooped (FFrameTime NewLocalTime) Line 4846 C ++ UnrealEditor-Sequencer-Win64-Debug.dll! F Sequencer :: Tick (float InDeltaTime) Line 766 C ++
So you can fix this problem by adding pause() as below.
void FSequencer::SetLocalTimeLooped(FFrameTime NewLocalTime)
{
...// Set the playback status if we need to
	if (NewPlaybackStatus.IsSet())
	{
		////
		//SetPlaybackStatus(NewPlaybackStatus.GetValue());
		//// Evaluate the sequence with the new status
		//EvaluateInternal(EvalRange);
		if (NewPlaybackStatus->Stopped)
		{
			Pause();
		}
		else
		{
			SetPlaybackStatus(NewPlaybackStatus.GetValue());
			// Evaluate the sequence with the new status
			EvaluateInternal(EvalRange);
		}
		////
	}
}
expect : OnStopEvent and 1 event fire
result : does not fire
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-158921 in the post.
| 0 | 
| Component | UE - Anim - Sequencer | 
|---|---|
| Affects Versions | 5.0 | 
| Target Fix | 5.1 | 
| Created | Jul 8, 2022 | 
|---|---|
| Resolved | Jul 12, 2022 | 
| Updated | Jul 17, 2022 |