protected override void OnToolUpdate()
{
base.OnToolUpdate();
if (Input.GetKeyUp(KeyCode.PageDown))
InfoManager.instance.SetCurrentMode(InfoManager.InfoMode.Traffic, InfoManager.SubInfoMode.Default);
else if (Input.GetKeyUp(KeyCode.PageUp))
InfoManager.instance.SetCurrentMode(InfoManager.InfoMode.None, InfoManager.SubInfoMode.Default);
if (m_toolController.IsInsideUI)
return;
if (m_selectedNode != 0)
{
HandleIntersectionRouting();
return;
}
if (m_hoveredSegment != 0)
{
HandleLaneCustomization();
}
if (!RayCastSegmentAndNode(out m_hoveredSegment, out m_hoveredNode))
{
// clear lanes
if (Input.GetMouseButtonUp(1))
{
m_selectedLaneMarkers.Clear();
if (OnEndLaneCustomization != null)
OnEndLaneCustomization();
}
m_segments.Clear();
m_hoveredLaneMarkers.Clear();
return;
}
if (m_hoveredSegment != 0)
{
NetSegment segment = NetManager.instance.m_segments.m_buffer[m_hoveredSegment];
NetNode startNode = NetManager.instance.m_nodes.m_buffer[segment.m_startNode];
NetNode endNode = NetManager.instance.m_nodes.m_buffer[segment.m_endNode];
Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition);
if (startNode.CountSegments() > 1)
{
Bounds bounds = startNode.m_bounds;
if (m_hoveredNode != 0)
bounds.extents /= 2f;
if (bounds.IntersectRay(mouseRay))
{
m_hoveredSegment = 0;
m_hoveredNode = segment.m_startNode;
}
}
if (m_hoveredSegment != 0 && endNode.CountSegments() > 1)
{
Bounds bounds = endNode.m_bounds;
if (m_hoveredNode != 0)
bounds.extents /= 2f;
if (bounds.IntersectRay(mouseRay))
{
m_hoveredSegment = 0;
m_hoveredNode = segment.m_endNode;
}
}
if (m_hoveredSegment != 0)
{
m_hoveredNode = 0;
if (!m_segments.ContainsKey(m_hoveredSegment))
{
m_segments.Clear();
SetSegments(m_hoveredSegment);
SetLaneMarkers();
}
}
else if (Input.GetMouseButtonUp(1))
{
// clear lane selection
m_selectedLaneMarkers.Clear();
if (OnEndLaneCustomization != null)
OnEndLaneCustomization();
}
}
else if (m_hoveredNode != 0 && NetManager.instance.m_nodes.m_buffer[m_hoveredNode].CountSegments() < 2)
{
m_hoveredNode = 0;
}
if (m_hoveredSegment == 0)
{
m_segments.Clear();
m_hoveredLaneMarkers.Clear();
}
if (Input.GetMouseButtonUp(0))
{
m_selectedNode = m_hoveredNode;
m_hoveredNode = 0;
if (m_selectedNode != 0)
SetNodeMarkers(m_selectedNode, true);
}
}