public static CalculateRanges ( float minTime, float maxTime, float rangeStart, float rangeEnd, WrapMode preWrapMode, WrapMode postWrapMode ) : ].float[ | ||
minTime | float | |
maxTime | float | |
rangeStart | float | |
rangeEnd | float | |
preWrapMode | WrapMode | |
postWrapMode | WrapMode | |
return | ].float[ |
public static float[,] CalculateRanges(float minTime, float maxTime, float rangeStart, float rangeEnd, WrapMode preWrapMode, WrapMode postWrapMode)
{
WrapMode mode = preWrapMode;
if (postWrapMode != mode)
{
return new float[,] { { rangeStart, rangeEnd } };
}
if (mode == WrapMode.Loop)
{
if ((maxTime - minTime) > (rangeEnd - rangeStart))
{
return new float[,] { { rangeStart, rangeEnd } };
}
minTime = Mathf.Repeat(minTime - rangeStart, rangeEnd - rangeStart) + rangeStart;
maxTime = Mathf.Repeat(maxTime - rangeStart, rangeEnd - rangeStart) + rangeStart;
if (minTime < maxTime)
{
return new float[,] { { minTime, maxTime } };
}
return new float[,] { { rangeStart, maxTime }, { minTime, rangeEnd } };
}
if (mode == WrapMode.PingPong)
{
return new float[,] { { rangeStart, rangeEnd } };
}
return new float[,] { { minTime, maxTime } };
}
private Vector3[] GetPoints(float minTime, float maxTime) { List <Vector3> list = new List <Vector3>(); if (this.m_Curve.length == 0) { return(list.ToArray()); } list.Capacity = 1000 + this.m_Curve.length; float[,] array = NormalCurveRenderer.CalculateRanges(minTime, maxTime, this.rangeStart, this.rangeEnd, this.preWrapMode, this.postWrapMode); for (int i = 0; i < array.GetLength(0); i++) { this.AddPoints(ref list, array[i, 0], array[i, 1], minTime, maxTime); } if (list.Count > 0) { for (int j = 1; j < list.Count; j++) { if (list[j].x < list[j - 1].x) { list.RemoveAt(j); j--; } } } return(list.ToArray()); }