4 using SiliconStudio.Core.Mathematics;
6 namespace SiliconStudio.
Paradox.DataModel
12 SetTime(ref channel, newTime);
14 var currentTime = channel.CurrentTime;
15 var currentIndex = channel.CurrentIndex;
17 var keyFrames = channel.Curve.KeyFrames;
18 var keyFramesItems = keyFrames.Items;
19 var keyFramesCount = keyFrames.Count;
22 int timeStart = keyFrames[currentIndex + 0].Time.Ticks;
23 int timeEnd = keyFrames[currentIndex + 1].Time.Ticks;
26 float t = ((float)currentTime.Ticks - (
float)timeStart) / ((
float)timeEnd - (float)timeStart);
30 *(
float*)(location + channel.Offset) = Interpolator.Cubic(
31 keyFramesItems[currentIndex > 0 ? currentIndex - 1 : 0].Value,
32 keyFramesItems[currentIndex].Value,
33 keyFramesItems[currentIndex + 1].Value,
34 keyFramesItems[currentIndex + 2 >= keyFramesCount ? currentIndex + 1 : currentIndex + 2].Value,
39 *(
float*)(location + channel.Offset) = MathUtil.Lerp(keyFramesItems[currentIndex].Value, keyFramesItems[currentIndex + 1].Value, t);
43 throw new NotImplementedException();
AnimationCurveInterpolationType
Describes how a curve should be interpolated.
unsafe override void ProcessChannel(ref Channel channel, CompressedTimeSpan newTime, IntPtr location)