Fix direction when looping.
Fixes hang @caudetgit caught. Fixes same issue that we caught on the runtime yesterday in #4776
Diffs=
53a8f9517 Fix direction when looping. (#4786)
diff --git a/.rive_head b/.rive_head
index 4ead8a7..5a706f9 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-4c5a576adaf493b2a152fb69b68021c07aca385f
+53a8f95178fbcfce0a775b6217c8108c48af4591
diff --git a/src/animation/linear_animation_instance.cpp b/src/animation/linear_animation_instance.cpp
index 702398e..56609d8 100644
--- a/src/animation/linear_animation_instance.cpp
+++ b/src/animation/linear_animation_instance.cpp
@@ -114,18 +114,12 @@
if (direction == 1 && frames >= end)
{
m_SpilledTime = (frames - end) / fps;
- m_Direction *= -1;
frames = end + (end - frames);
- m_Time = frames / fps;
- didLoop = true;
}
else if (direction == -1 && frames < start)
{
m_SpilledTime = (start - frames) / fps;
- m_Direction *= -1;
frames = start + (start - frames);
- m_Time = frames / fps;
- didLoop = true;
}
else
{
@@ -136,7 +130,10 @@
// where animations are not advanced on regular intervals.
break;
}
- direction = speed() < 0 ? -m_Direction : m_Direction;
+ m_Time = frames / fps;
+ m_Direction *= -1;
+ direction *= -1;
+ didLoop = true;
}
break;
}