public override void DrawGizmos() { bool selected = GizmoContext.InActiveSelection(this); Color color = selected ? GizmosColorSelected : GizmosColor; if (StartTransform != null) { Draw.CircleXZ(StartTransform.position, 0.4f, color); } if (EndTransform != null) { Draw.CircleXZ(EndTransform.position, 0.4f, color); } if (StartTransform != null && EndTransform != null) { NodeLink.DrawArch(StartTransform.position, EndTransform.position, color); if (selected) { Vector3 cross = Vector3.Cross(Vector3.up, (EndTransform.position - StartTransform.position)).normalized; NodeLink.DrawArch(StartTransform.position + cross * 0.1f, EndTransform.position + cross * 0.1f, color); NodeLink.DrawArch(StartTransform.position - cross * 0.1f, EndTransform.position - cross * 0.1f, color); } } }
public static void LinkObjects (Transform a, Transform b, bool removeConnection) { NodeLink connecting = null; NodeLink[] conns = a.GetComponents<NodeLink> (); for (int i=0;i<conns.Length;i++) { if (conns[i].end == b) { connecting = conns[i]; break; } } conns = b.GetComponents<NodeLink> (); for (int i=0;i<conns.Length;i++) { if (conns[i].end == a) { connecting = conns[i]; break; } } if (removeConnection) { if (connecting != null) DestroyImmediate (connecting); } else { if (connecting == null) { connecting = a.gameObject.AddComponent<NodeLink> (); connecting.end = b; } else { connecting.deleteConnection = !connecting.deleteConnection; } } }
public override void DrawGizmos() { if (Start == null || End == null) { return; } NodeLink.DrawArch(Start.position, End.position, deleteConnection ? Color.red : Color.green); }