private static void drawEdge(EdgeCollider2D edge, Color color) { Vector2[] vertices = edge.GetWorldPoints(); if (vertices == null) { return; } for (int i = 0; i < vertices.Length; i++) { int ii = (i + 1) % vertices.Length; // Draw edge if (ii != 0) { Gizmos.color = color; Gizmos.DrawLine(vertices[i], vertices[ii]); } // Draw vertex if (Selection.activeGameObject == edge.gameObject) { Gizmos.color = ColorPalletReader.GetVertexColor(ColorStates.PATH); if (i == _selectedVertex) { Gizmos.color = ColorPalletReader.GetVertexColor(ColorStates.SELECTED); } Gizmos.DrawSphere(vertices[i], BrushSettingsWindow.VertexSize); if (BrushSettingsWindow.ShowVertexInfo == true) { Handles.Label(vertices[i] + new Vector2(0.1f, 0.4f), edge.GetLocalPoint(vertices[i]).ToString()); } } } }
public static void UpdateVertexPosition(this EdgeCollider2D edge, Vector3 newPosition, int selectedVertex) { Undo.RecordObject(edge, string.Format("Move vertex {0} in {1}", selectedVertex, edge.name)); Vector2[] vertices = edge.points; vertices[selectedVertex] = edge.GetLocalPoint(newPosition); edge.points = vertices; }