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

SetLaneMarkers() приватный Метод

private SetLaneMarkers ( ) : void
Результат void
		void SetLaneMarkers()
		{
			m_hoveredLaneMarkers.Clear();
			if (m_segments.Count == 0)
				return;

			NetSegment segment = NetManager.instance.m_segments.m_buffer[m_segments.Values.First().m_segmentId];
			NetInfo info = segment.Info;
			int laneCount = info.m_lanes.Length;
			bool bothWays = info.m_hasBackwardVehicleLanes && info.m_hasForwardVehicleLanes;
			bool isInverted = false;

			for (ushort i = 0; i < laneCount; i++)
				m_hoveredLaneMarkers[i] = new FastList<SegmentLaneMarker>();

			foreach (Segment seg in m_segments.Values)
			{
				segment = NetManager.instance.m_segments.m_buffer[seg.m_segmentId];
				uint laneId = segment.m_lanes;

				if (bothWays)
				{
					isInverted = seg.m_targetNode == segment.m_startNode;
					if ((segment.m_flags & NetSegment.Flags.Invert) == NetSegment.Flags.Invert)
						isInverted = !isInverted;
				}

				for (int j = 0; j < laneCount && laneId != 0; j++)
				{
					NetLane lane = NetManager.instance.m_lanes.m_buffer[laneId];

                    //if ((info.m_lanes[j].m_laneType & (NetInfo.LaneType.Vehicle | NetInfo.LaneType.TransportVehicle)) != NetInfo.LaneType.None)
                    if ((info.m_lanes[j].m_laneType & NetInfo.LaneType.Vehicle) == NetInfo.LaneType.Vehicle)
                    {
						Bezier3 bezier = lane.m_bezier;
						bezier.GetBounds().Expand(1f);

						int index = j;
						if (bothWays && isInverted)
							index += (j % 2 == 0) ? 1 : -1;

						m_hoveredLaneMarkers[index].Add(new SegmentLaneMarker()
						{
							m_bezier = bezier,
							m_lane = laneId,
							m_laneIndex = index
						});
					}

					laneId = lane.m_nextLane;
				}
			}
		}