示例#1
0
        public BezierPoint.ExtraData GetExtraData(float normalizedT, ExtraDataLerpFunction lerpFunction)
        {
            if (!loop)
            {
                if (normalizedT <= 0f)
                {
                    return(endPoints[0].extraData);
                }
                else if (normalizedT >= 1f)
                {
                    return(endPoints[endPoints.Count - 1].extraData);
                }
            }
            else
            {
                if (normalizedT < 0f)
                {
                    normalizedT += 1f;
                }
                else if (normalizedT >= 1f)
                {
                    normalizedT -= 1f;
                }
            }

            float t = normalizedT * (loop ? endPoints.Count : (endPoints.Count - 1));

            int startIndex = (int)t;
            int endIndex   = startIndex + 1;

            if (endIndex == endPoints.Count)
            {
                endIndex = 0;
            }

            return(lerpFunction(endPoints[startIndex].extraData, endPoints[endIndex].extraData, t - startIndex));
        }
示例#2
0
            public BezierPoint.ExtraData GetExtraData(float percentage, ExtraDataLerpFunction lerpFunction)
            {
                if (!loop)
                {
                    if (percentage <= 0f)
                    {
                        return(extraDatas[0]);
                    }
                    else if (percentage >= 1f)
                    {
                        return(extraDatas[extraDatas.Length - 1]);
                    }
                }
                else
                {
                    if (percentage < 0f)
                    {
                        percentage += 1f;
                    }
                    if (percentage >= 1f)
                    {
                        percentage -= 1f;
                    }
                }

                float t = percentage * (loop ? extraDatas.Length : (extraDatas.Length - 1));

                int startIndex = (int)t;
                int endIndex   = startIndex + 1;

                if (endIndex == extraDatas.Length)
                {
                    endIndex = 0;
                }

                return(lerpFunction(extraDatas[startIndex], extraDatas[endIndex], t - startIndex));
            }
示例#3
0
 public BezierPoint.ExtraData GetExtraData(float localT, ExtraDataLerpFunction lerpFunction)
 {
     return(lerpFunction(point1.extraData, point2.extraData, localT));
 }