void HandleIntersectionRouting() { FastList <NodeLaneMarker> nodeMarkers; if (m_nodeMarkers.TryGetValue(m_selectedNode, out nodeMarkers)) { Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition); NodeLaneMarker hoveredMarker = null; Bounds bounds = new Bounds(Vector3.zero, Vector3.one); for (int i = 0; i < nodeMarkers.m_size; i++) { NodeLaneMarker marker = nodeMarkers.m_buffer[i]; if (!IsActive(marker)) { continue; } bounds.center = marker.m_position; if (bounds.IntersectRay(mouseRay)) { hoveredMarker = marker; marker.m_size = 2f; } else { marker.m_size = 1f; } } if (hoveredMarker != null && Input.GetMouseButtonUp(0)) { if (m_selectedMarker == null) { m_selectedMarker = hoveredMarker; } else if (LaneManager.RemoveLaneConnection(m_selectedMarker.m_lane, hoveredMarker.m_lane)) { m_selectedMarker.m_connections.Remove(hoveredMarker); } else if (LaneManager.AddLaneConnection(m_selectedMarker.m_lane, hoveredMarker.m_lane)) { m_selectedMarker.m_connections.Add(hoveredMarker); } } } if (Input.GetMouseButtonUp(1)) { if (m_selectedMarker != null) { m_selectedMarker = null; } else { m_selectedNode = 0; } } }