void Draw() { for (int i = 0; i < path.NumSegments; i++) { Vector2[] points = path.GetPointsInSegment(i); Handles.color = Color.black; Handles.DrawLine(ToV3(points [1]), ToV3(points [0])); Handles.DrawLine(ToV3(points [2]), ToV3(points [3])); Handles.DrawBezier(ToV3(points [0]), ToV3(points [3]), ToV3(points [1]), ToV3(points [2]), Color.green, null, 5); } Handles.color = Color.red; for (int i = 0; i < path.NumPoints; i++) { Vector3 newPos = Handles.FreeMoveHandle(ToV3(path [i]), Quaternion.identity, .1f, Vector3.zero, Handles.CylinderHandleCap); if (ToV3(path [i]) != newPos) { Undo.RecordObject(creator, "Move point"); path.MovePoint(i, ToV2(newPos)); } } if (creator.ShowRawPositions) { Vector3[] allPoints = path.GetRawPoints(creator.PointsPerSegment); for (int i = 0; i < allPoints.Length; i++) { Debug.DrawRay(creator.transform.TransformPoint(allPoints [i]), Vector3.up * creator.DebugLinesWidth, Color.blue); } } if (creator.ShowMarkLines) { Vector3[] marks = creator.GetEquidistantPoints(creator.MarkLinesDistance); for (int i = 0; i < marks.Length; i++) { Debug.DrawRay(creator.transform.TransformPoint(marks [i]), Vector3.up * creator.DebugLinesWidth, Color.red); } } creator.GenerateMesh(); }