using System.Collections; using System.Collections.Generic; using Platformer.Mechanics; using UnityEditor; using UnityEngine; namespace Platformer { [CustomEditor(typeof(PatrolPath))] public class PatrolPathGizmo : Editor { public void OnSceneGUI() { var path = target as PatrolPath; using (var cc = new EditorGUI.ChangeCheckScope()) { var sp = path.transform.InverseTransformPoint(Handles.PositionHandle(path.transform.TransformPoint(path.startPosition), path.transform.rotation)); var ep = path.transform.InverseTransformPoint(Handles.PositionHandle(path.transform.TransformPoint(path.endPosition), path.transform.rotation)); if (cc.changed) { sp.y = 0; ep.y = 0; path.startPosition = sp; path.endPosition = ep; } } Handles.Label(path.transform.position, (path.startPosition - path.endPosition).magnitude.ToString()); } [DrawGizmo(GizmoType.Selected | GizmoType.NonSelected)] static void OnDrawGizmo(PatrolPath path, GizmoType gizmoType) { var start = path.transform.TransformPoint(path.startPosition); var end = path.transform.TransformPoint(path.endPosition); Handles.color = Color.yellow; Handles.DrawDottedLine(start, end, 5); Handles.DrawSolidDisc(start, path.transform.forward, 0.1f); Handles.DrawSolidDisc(end, path.transform.forward, 0.1f); } } }