Bug: Montage End Fires Prematurely on Client

Mesothere
Thu, 10 May 2018 00:01:36 +0000
Multiplayer & Networking

Hello guys,

I have some fairly simple logic to run animations. I run them from C++, and when the animation ends, I like to run a simple function to set some variables.

It looks roughly like this:

character->GetMesh()->GetAnimInstance()->Montage_Play(animName, speed);

FOnMontageEnded MontageBlendOutDelegate;
MontageBlendOutDelegate.BindUObject(this, &UCharacterAnimationManager::AnimationEnded);

character->GetMesh()->GetAnimInstance()->Montage_SetEndDelegate(MontageBlendOutDelegate);

Although this is a minor simplification for ease of reading.

This does play the animation fine. On the server, the animation plays as expected - if I put a breakpoint in the AnimationEnded function then it occurs when expected (that is, after the animation has ended) - on the client however, the same logic doesn’t take place - the animation plays as expected, but the AnimationEnded function is immediately called at the same time as play, despite the animation clearly not being finished with.

Is this a bug, or am I missing something in the implementation?

2 posts - 1 participant