1 using System.Collections.Generic;
18 public Vector3[]
Points {
get;
protected set; }
33 public float Length {
get;
protected set; }
35 protected float[] lengths;
50 s = Mathf.Clamp(s, 0,
Length);
56 var offset = i == 0 ? 0 : lengths[i - 1];
57 return segments[i].GetPointAtLength(s - offset);
71 s = Mathf.Clamp(s, 0,
Length);
77 var offset = i == 0 ? 0 : lengths[i - 1];
78 return segments[i].GetPointAndTangentAtLength(s - offset);
93 var points =
new List<Vector3>();
99 points.Add(func(pointData.point));
103 var arr = points.ToArray();
104 renderer.positionCount = arr.Length;
105 renderer.SetPositions(arr);
114 public Vector3[]
SamplePoints(
int n, System.Func<Vector3, Vector3> func)
116 var sample =
new Vector3[n + 2];
117 var delta =
Length / (n + 1.0f);
120 for (var i = 0; i < (n + 2); i++)
145 DrawCurveLengthGizmos();
148 private void DrawPointsGizmos()
152 Gizmos.color = Color.blue;
153 Gizmos.DrawSphere(p, 0.1f);
157 private void DrawCurveLengthGizmos()
163 Gizmos.color = Color.green;
165 Vector3 n = pointData.point;
166 Gizmos.DrawLine(p, n);
169 Gizmos.color = Color.magenta;
170 var tan = pointData.tangent;
171 Gizmos.color = Color.blue;
172 Gizmos.DrawLine(n, n + tan);