When the same AnimMonotage is played again while moving with MotionWarping & RootMotion, UAnimNotifyState_MotionWarping does not recognize it.
The issue was that in URootMotionModifier::Update it tries to remove invalid animations by checking if the animation is still valid and that its the same as the cached animation, if not it marks it for modifier for removal.
The problem is that if you replay the same montage, while it's still in the warping window, it doesn't know that is needs to reset, as its only checking if the animation asset has changed which is has not. Thus it keeps playing out the only warping window with its cached values that promptly gets shut down. Effectively its not starting a new warping window because it believes its already active, the old one gets shutdown and you end up with a result that no warping occurs when it should.
I've put in a fix which checks the montage instance id, caches it like it does with the animation asset then checks to ensure it has not changed. I've recently modified the fix as we updated to 5.1 but it does have some limitations, it only works for montages and it doesn't really support replication, which I believe 5.1 added support to check SavedMoved during replay / rollback.
expect : print OnWarpBegin log when 5
result : does not print
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-173786 in the post.