From e7dc15239288ff4e466f585406765269e1cba9c4 Mon Sep 17 00:00:00 2001 From: Jeremy Koritzinsky Date: Thu, 6 Sep 2018 00:21:24 -0500 Subject: [PATCH] Fix case where timing lands on exactly a new keyframe. --- src/Avalonia.Animation/Animator`1.cs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Avalonia.Animation/Animator`1.cs b/src/Avalonia.Animation/Animator`1.cs index 8079ac69b5..e674ac84e1 100644 --- a/src/Avalonia.Animation/Animator`1.cs +++ b/src/Avalonia.Animation/Animator`1.cs @@ -86,10 +86,18 @@ namespace Avalonia.Animation double t0 = firstCue.Key; double t1 = lastCue.Key; - var intraframeTime = (t - t0) / (t1 - t0); - var firstFrameData = (firstCue.Value.frame.GetTypedValue(), firstCue.Value.isNeutral); - var lastFrameData = (lastCue.Value.frame.GetTypedValue(), lastCue.Value.isNeutral); - return (intraframeTime, new KeyFramePair(firstFrameData, lastFrameData)); + if (t0 != t1) + { + var intraframeTime = (t - t0) / (t1 - t0); + var firstFrameData = (firstCue.Value.frame.GetTypedValue(), firstCue.Value.isNeutral); + var lastFrameData = (lastCue.Value.frame.GetTypedValue(), lastCue.Value.isNeutral); + return (intraframeTime, new KeyFramePair(firstFrameData, lastFrameData)); + } + else + { + var frameData = (firstCue.Value.frame.GetTypedValue(), firstCue.Value.isNeutral); + return (0.0, new KeyFramePair(frameData, frameData)); + } }