UnityEditor.NormalCurveRenderer.CalculateRanges C# (CSharp) Method

CalculateRanges() public static method

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 } };
        }

Usage Example

        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());
        }
All Usage Examples Of UnityEditor.NormalCurveRenderer::CalculateRanges