CSL_Traffic.RoadCustomizerTool.RenderOverlay C# (CSharp) Метод

RenderOverlay() публичный Метод

public RenderOverlay ( RenderManager cameraInfo ) : void
cameraInfo RenderManager
Результат void
		public override void RenderOverlay(RenderManager.CameraInfo cameraInfo)
		{
			base.RenderOverlay(cameraInfo);

			if (m_selectedNode != 0)
			{
				FastList<NodeLaneMarker> nodeMarkers;
				if (m_nodeMarkers.TryGetValue(m_selectedNode, out nodeMarkers))
				{
					Vector3 nodePos = NetManager.instance.m_nodes.m_buffer[m_selectedNode].m_position;
					for (int i = 0; i < nodeMarkers.m_size; i++)
					{
						NodeLaneMarker laneMarker = nodeMarkers.m_buffer[i];

						for (int j = 0; j < laneMarker.m_connections.m_size; j++)
							RenderLane(cameraInfo, laneMarker.m_position, laneMarker.m_connections.m_buffer[j].m_position, nodePos, laneMarker.m_color);

						if (m_selectedMarker != laneMarker && !IsActive(laneMarker))
							continue;

						if (m_selectedMarker == laneMarker)
						{
							RaycastOutput output;
							if (RayCastSegmentAndNode(out output))
							{
								RenderLane(cameraInfo, m_selectedMarker.m_position, output.m_hitPos, nodePos, m_selectedMarker.m_color);
								m_selectedMarker.m_size = 2f;
							}
						}

						RenderManager.instance.OverlayEffect.DrawCircle(cameraInfo, laneMarker.m_color, laneMarker.m_position, laneMarker.m_size, laneMarker.m_position.y - 1f, laneMarker.m_position.y + 1f, true, true);
					}
				}
			}
			else
			{
				foreach (KeyValuePair<int, FastList<SegmentLaneMarker>> keyValuePair in m_hoveredLaneMarkers)
				{
					bool renderBig = false;
					if (m_hoveredLanes == keyValuePair.Key)
						renderBig = true;

					FastList<SegmentLaneMarker> laneMarkers = keyValuePair.Value;
					for (int i = 0; i < laneMarkers.m_size; i++)
					{
						RenderManager.instance.OverlayEffect.DrawBezier(cameraInfo, new Color(0f, 0f, 1f, 0.75f), laneMarkers.m_buffer[i].m_bezier, renderBig ? 2f : laneMarkers.m_buffer[i].m_size, 0, 0, Mathf.Min(laneMarkers.m_buffer[i].m_bezier.a.y, laneMarkers.m_buffer[i].m_bezier.d.y) - 1f, Mathf.Max(laneMarkers.m_buffer[i].m_bezier.a.y, laneMarkers.m_buffer[i].m_bezier.d.y) + 1f, true, false);
					}
				}

				foreach (SegmentLaneMarker marker in m_selectedLaneMarkers)
				{
					RenderManager.instance.OverlayEffect.DrawBezier(cameraInfo, new Color(0f, 1f, 0f, 0.75f), marker.m_bezier, 2f, 0, 0, Mathf.Min(marker.m_bezier.a.y, marker.m_bezier.d.y) - 1f, Mathf.Max(marker.m_bezier.a.y, marker.m_bezier.d.y) + 1f, true, false);
				}
			}

			foreach (ushort node in m_nodeMarkers.Keys)
			{
				if (node == m_selectedNode || (NetManager.instance.m_nodes.m_buffer[node].m_flags & CUSTOMIZED_NODE_FLAG) != CUSTOMIZED_NODE_FLAG)
					continue;

				FastList<NodeLaneMarker> list = m_nodeMarkers[node];
				Vector3 nodePos = NetManager.instance.m_nodes.m_buffer[node].m_position;
				for (int i = 0; i < list.m_size; i++)
				{
					NodeLaneMarker laneMarker = list.m_buffer[i];
					Color color = laneMarker.m_color;
					color.a = 0.75f;

					for (int j = 0; j < laneMarker.m_connections.m_size; j++)
					{
						if (((NetLane.Flags)NetManager.instance.m_lanes.m_buffer[laneMarker.m_connections.m_buffer[j].m_lane].m_flags & NetLane.Flags.Created) == NetLane.Flags.Created)
							RenderLane(cameraInfo, laneMarker.m_position, laneMarker.m_connections.m_buffer[j].m_position, nodePos, color);                            
					}
						
				}
			}

			if (m_hoveredNode != 0)
			{
				NetNode node = NetManager.instance.m_nodes.m_buffer[m_hoveredNode];
				RenderManager.instance.OverlayEffect.DrawCircle(cameraInfo, new Color(0f, 0f, 0.5f, 0.75f), node.m_position, 15f, node.m_position.y - 1f, node.m_position.y + 1f, true, true);
			}
		}