80 lines
2.1 KiB
C#
80 lines
2.1 KiB
C#
using System;
|
|
using System.Linq;
|
|
|
|
namespace UnityEngine.Timeline
|
|
{
|
|
// Token: 0x0200003A RID: 58
|
|
public static class Extrapolation
|
|
{
|
|
// Token: 0x060001E8 RID: 488 RVA: 0x00009DC4 File Offset: 0x00007FC4
|
|
internal static void CalculateExtrapolationTimes(this TrackAsset asset)
|
|
{
|
|
TimelineClip[] clips = asset.clips;
|
|
if (clips != null && clips.Length != 0)
|
|
{
|
|
if (clips[0].SupportsExtrapolation())
|
|
{
|
|
TimelineClip[] array = clips.OrderBy((TimelineClip x) => x.start).ToArray<TimelineClip>();
|
|
if (array.Length > 0)
|
|
{
|
|
for (int i = 0; i < array.Length; i++)
|
|
{
|
|
double num = double.PositiveInfinity;
|
|
for (int j = 0; j < array.Length; j++)
|
|
{
|
|
if (i != j)
|
|
{
|
|
double num2 = array[j].start - array[i].end;
|
|
if (num2 >= -TimeUtility.kTimeEpsilon && num2 < num)
|
|
{
|
|
num = Math.Min(num, num2);
|
|
}
|
|
if (array[j].start <= array[i].end && array[j].end > array[i].end)
|
|
{
|
|
num = 0.0;
|
|
}
|
|
}
|
|
}
|
|
num = ((num > Extrapolation.kMinExtrapolationTime) ? num : 0.0);
|
|
array[i].SetPostExtrapolationTime(num);
|
|
}
|
|
array[0].SetPreExtrapolationTime(Math.Max(0.0, array[0].start));
|
|
for (int k = 1; k < array.Length; k++)
|
|
{
|
|
double num3 = 0.0;
|
|
int num4 = -1;
|
|
for (int l = 0; l < k; l++)
|
|
{
|
|
if (array[l].end > array[k].start)
|
|
{
|
|
num4 = -1;
|
|
num3 = 0.0;
|
|
break;
|
|
}
|
|
double num5 = array[k].start - array[l].end;
|
|
if (num4 == -1 || num5 < num3)
|
|
{
|
|
num3 = num5;
|
|
num4 = l;
|
|
}
|
|
}
|
|
if (num4 >= 0)
|
|
{
|
|
if (array[num4].postExtrapolationMode != TimelineClip.ClipExtrapolation.None)
|
|
{
|
|
num3 = 0.0;
|
|
}
|
|
}
|
|
num3 = ((num3 > Extrapolation.kMinExtrapolationTime) ? num3 : 0.0);
|
|
array[k].SetPreExtrapolationTime(num3);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x040000E0 RID: 224
|
|
public static readonly double kMinExtrapolationTime = TimeUtility.kTimeEpsilon * 1000.0;
|
|
}
|
|
}
|