From e9caf7f6e6cf3b6a90a135c81ce76f6078138127 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 15 Feb 2015 17:01:52 +0000 Subject: [PATCH] Initialise frame time when playing a new sequence. Fixes #3706, #6389. --- OpenRA.Game/Graphics/Animation.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OpenRA.Game/Graphics/Animation.cs b/OpenRA.Game/Graphics/Animation.cs index 10722e670c..135d2a4e29 100644 --- a/OpenRA.Game/Graphics/Animation.cs +++ b/OpenRA.Game/Graphics/Animation.cs @@ -79,6 +79,8 @@ namespace OpenRA.Graphics backwards = false; tickAlways = false; CurrentSequence = sequenceProvider.GetSequence(name, sequenceName); + timeUntilNextFrame = CurrentSequence != null ? CurrentSequence.Tick : defaultTick; + frame = 0; tickFunc = () => { @@ -94,6 +96,8 @@ namespace OpenRA.Graphics return false; CurrentSequence = sequenceProvider.GetSequence(name, sequenceName); + var tick = CurrentSequence != null ? CurrentSequence.Tick : defaultTick; + timeUntilNextFrame = Math.Min(tick, timeUntilNextFrame); frame %= CurrentSequence.Length; return true; } @@ -103,6 +107,8 @@ namespace OpenRA.Graphics backwards = false; tickAlways = false; CurrentSequence = sequenceProvider.GetSequence(name, sequenceName); + timeUntilNextFrame = CurrentSequence != null ? CurrentSequence.Tick : defaultTick; + frame = 0; tickFunc = () => { @@ -127,6 +133,8 @@ namespace OpenRA.Graphics backwards = false; tickAlways = true; CurrentSequence = sequenceProvider.GetSequence(name, sequenceName); + timeUntilNextFrame = CurrentSequence != null ? CurrentSequence.Tick : defaultTick; + frame = func(); tickFunc = () => frame = func(); }