8 [CustomEditor(typeof(UILineRenderer))]
20 var oldMatrix = Handles.matrix;
21 var transform = curveRenderer.GetComponent<RectTransform>();
24 Handles.matrix = transform.localToWorldMatrix;
26 var sizeX = curveRenderer.rectTransform.rect.width;
27 var sizeY = curveRenderer.rectTransform.rect.height;
28 var offsetX = -curveRenderer.rectTransform.pivot.x * sizeX;
29 var offsetY = -curveRenderer.rectTransform.pivot.y * sizeY;
31 Vector2[] points =
new Vector2[curveRenderer.
Points.Length];
32 for (
int i = 0; i < curveRenderer.
Points.Length; i++)
34 points[i] = curveRenderer.
Points[i];
40 for (
int i = 0; i < points.Length; i++)
42 points[i] =
new Vector2(points[i].x * sizeX + offsetX, points[i].y * sizeY + offsetY);
46 for (
int i = 0; i < points.Length - 1; i += 2)
48 Handles.DrawLine(points[i], points[i + 1]);
51 for (
int i = 0; i < points.Length; ++i)
53 using (var check =
new EditorGUI.ChangeCheckScope())
55 var p = Handles.PositionHandle(points[i], Quaternion.identity);
59 Undo.RecordObject(curveRenderer,
"Changed Curve Position");
62 curveRenderer.
Points[i] =
new Vector2((p.x - offsetX) / sizeX, (p.y - offsetY) / sizeY);
66 curveRenderer.
Points[i] = p;
68 curveRenderer.transform.gameObject.SetActive(
false);
69 curveRenderer.transform.gameObject.SetActive(
true);
74 Handles.matrix = oldMatrix;
Vector2[] Points
Points to be drawn in the line.
Credit Erdener Gonenc - @PixelEnvision.