Description

The issue seems to have a few parts.

First, active events don't persist between frames. Instead, a new active list is created each frame and diffed against the previous frame. Added events have Begin called, removed events have End called, and events that didn't change have Tick called.

Second, there is special case code (both in UBlendSpaceBase::TickAssetPlayer, UAnimSequenceBase::GetAnimNotifies, and potentially elsewhere) that will prevent notifications from being added to the current active list when DeltaTime is 0. Animation DeltaTime is computed as ActualDeltaTime * GlobalAnimRateScale, meaning when GlobalAnimRateScale is 0, these cases are hit.

Steps to Reproduce

Download, extract, and open the attached project.
Play the level.
Pressing P will set GlobalAnimRateScale to 0.
Releasing P will set GlobalAnimRateScale to 1.

Expected: When P is pressed the animation pauses, and when P is released the animation resumes. No notifies are triggered.

Actual: When P is pressed the animation pauses and NotifyEnd is triggered. When P is released the animation resumes and NotifyBegin is triggered.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-36437 in the post.

4
Login to Vote

Won't Fix
ComponentOLD - Anim
Affects Versions4.124.14
Target Fix4.19
CreatedSep 26, 2016
ResolvedNov 21, 2017
UpdatedMay 18, 2020