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;
}
}
}