Browse Source

Fix case where timing lands on exactly a new keyframe.

pull/1793/head
Jeremy Koritzinsky 8 years ago
parent
commit
e7dc152392
  1. 16
      src/Avalonia.Animation/Animator`1.cs

16
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<T>(), firstCue.Value.isNeutral);
var lastFrameData = (lastCue.Value.frame.GetTypedValue<T>(), lastCue.Value.isNeutral);
return (intraframeTime, new KeyFramePair<T>(firstFrameData, lastFrameData));
if (t0 != t1)
{
var intraframeTime = (t - t0) / (t1 - t0);
var firstFrameData = (firstCue.Value.frame.GetTypedValue<T>(), firstCue.Value.isNeutral);
var lastFrameData = (lastCue.Value.frame.GetTypedValue<T>(), lastCue.Value.isNeutral);
return (intraframeTime, new KeyFramePair<T>(firstFrameData, lastFrameData));
}
else
{
var frameData = (firstCue.Value.frame.GetTypedValue<T>(), firstCue.Value.isNeutral);
return (0.0, new KeyFramePair<T>(frameData, frameData));
}
}

Loading…
Cancel
Save