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