Timeline "Reverse from End" can have wrong direction at start

After calling “Reverse from End” from timeline on first tick of “Update” the timeline’s Direction can be “Forward” not “Backward”. It depends on previous played direction.

Tested on 4.15.3 and 4.16.2

Example on picture:

:

  1. Press Q
  2. Wait till finished
  3. Press W

And in logs you’ll find something like this:

LogBlueprintUserMessages: [BP_Timeline_154] Forward | 0.983359
LogBlueprintUserMessages: [BP_Timeline_154] Forward | 0.991692
LogBlueprintUserMessages: [BP_Timeline_154] Forward | 1.0
LogBlueprintUserMessages: [BP_Timeline_154] ------
LogBlueprintUserMessages: [BP_Timeline_154] Forward | 1.0       <<<<<
LogBlueprintUserMessages: [BP_Timeline_154] Backward | 0.991666
LogBlueprintUserMessages: [BP_Timeline_154] Backward | 0.983333

And if you press W again:

LogBlueprintUserMessages: [BP_Timeline_154] Backward | 0.015384
LogBlueprintUserMessages: [BP_Timeline_154] Backward | 0.007051
LogBlueprintUserMessages: [BP_Timeline_154] Backward | 0.0
LogBlueprintUserMessages: [BP_Timeline_154] ------
LogBlueprintUserMessages: [BP_Timeline_154] Backward | 1.0      <<<<<
LogBlueprintUserMessages: [BP_Timeline_154] Backward | 0.991666
LogBlueprintUserMessages: [BP_Timeline_154] Backward | 0.983333

According to log, everything is fine.

Every time you press Q, timeline will play from 0

Every time you press W, timeline will play from 1

If you want to play from previous result, you must use simple Play/Reverse, not “from Start/End”

Look at Direction in logs (where <<<<<<<). it should be “Backward” in both cases coz I start playing from end to start position.

Now it looks like, “oh. Im playing to the end… oh. im already on it, let’s go back to start”.

Issue still present on 4.23…

LogBlueprintUserMessages: [BP_Pawn_test_C_0] Forward::: 0.916669
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Forward::: 0.933336
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Forward::: 0.950003
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Forward::: 0.966669
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Forward::: 0.983336
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Forward::: 1.0
LogBlueprintUserMessages: [BP_Pawn_test_C_0] finish
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Forward::: 1.0
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Backward::: 0.983333
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Backward::: 0.966667
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Backward::: 0.95
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Backward::: 0.933333
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Backward::: 0.916666
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Backward::: 0.9
LogBlueprintUserMessages: [BP_Pawn_test_C_0] Backward::: 0.883333

just to keep this up, ISSUE STILL EXISTS IN 5.2! But still thank this post, just for knowing that the bug I ran into wasn’t my problem. Hope it could be fix.

UE 5.3: Ran as expected and suddenly I get this weird behavior. My work-around is to check timeline->IsPlaying() in the callback. When it returns false (and it does!) I early exit the callback. Now it works consistently as expected. Should be solved by Unreal, tho.