If some sequencer events are added to LatentAction queue while calling SetPlaybackPostion using Play method, the events will not be digested.
So the LatentActions cause that ensure condition failed next tick.
Following workaround resolves this issue.
void UMovieSceneSequencePlayer::SetPlaybackPosition(FMovieSceneSequencePlaybackParams InPlaybackParams) { ... TimeController->Reset(GetCurrentTime()); RunLatentActions(); // workaround : flush latent actions if (HasAuthority()) { RPC_ExplicitServerUpdateEvent(InPlaybackParams.UpdateMethod, NewPosition); } }
Result:
A few seconds later, the following ensure is hit.
Error: Ensure condition failed: LatentActionManager.IsEmpty() [File:E:/dev/UnrealEngine-4.27.1/Engine/Source/Runtime/MovieScene/Private/MovieSceneSequenceTickManager.cpp] [Line: 72]
UMovieSceneSequenceTickManager::TickSequenceActors(float DeltaSeconds) Line 72
TBaseUObjectMethodDelegateInstance<0,UMovieSceneSequenceTickManager,void __cdecl(float),FDefaultDelegateUserPolicy>::ExecuteIfSafe(float <Params_0>) Line 611
TMulticastDelegate<void __cdecl(float),FDefaultDelegateUserPolicy>::Broadcast(float <Params_0>) Line 955
UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1434
UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 1733
UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 426
FEngineLoop::Tick() Line 4922
EngineTick() Line 63
GuardedMain(const wchar_t * CmdLine) Line 181
LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 262
WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 320
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-134328 in the post.
0 |
Component | UE - Anim - Sequencer |
---|---|
Affects Versions | 4.27.1 |
Target Fix | 5.0 |
Created | Nov 9, 2021 |
---|---|
Resolved | Nov 9, 2021 |
Updated | Nov 10, 2021 |