コード例 #1
0
        public static Spline ToSpline(this IEditablePath path)
        {
            var count = path.pointCount * 3;

            if (path.isOpenEnded)
            {
                count -= 2;
            }

            var spline = new Spline()
            {
                isOpenEnded = path.isOpenEnded,
                points      = new Vector3[count]
            };

            for (var i = 0; i < path.pointCount; ++i)
            {
                var point = path.GetPoint(i);

                spline.points[i * 3] = point.position;

                if (i * 3 + 1 < count)
                {
                    var nextIndex = EditablePathUtility.Mod(i + 1, path.pointCount);

                    spline.points[i * 3 + 1] = path.CalculateRightTangent(i);
                    spline.points[i * 3 + 2] = path.CalculateLeftTangent(nextIndex);
                }
            }

            return(spline);
        }
コード例 #2
0
 public static Vector3 CalculateLocalRightTangent(this IEditablePath path, int index)
 {
     return(path.CalculateRightTangent(index) - path.GetPoint(index).position);
 }