// Delete the closest node to proximity of 1.0f on click void DeleteNode() { Event current = Event.current; WaypointNode dNode = null; if (!current.alt) { Ray mRay = HandleUtility.GUIPointToWorldRay(current.mousePosition); RaycastHit rHit; if (Physics.Raycast(mRay, out rHit, Mathf.Infinity)) { dNode = currentWaypoints.GetClosestNode(rHit.point, 1.0f); } if (dNode != null) { Handles.DrawWireDisc(dNode.Position, Vector3.up, 0.5f); } if (current.type == EventType.mouseDown && dNode != null) { foreach (WaypointLink p in dNode.NeighborNodes) { WaypointNode node = (WaypointNode)currentWaypoints.GetClosestNode(p.from); node.RemoveLink(p); node = (WaypointNode)currentWaypoints.GetClosestNode(p.to); node.RemoveLink(p); } currentWaypoints.WaypointList.Remove(dNode); dNode = null; } } }