Пример #1
0
        public static bool ClearLaneConnections(uint laneId)
        {
            bool result = false;
            Lane lane   = GetLane(laneId);

            if (lane != null)
            {
                result = true;
                foreach (uint connectionId in GetLaneConnections(laneId))
                {
                    result &= lane.RemoveConnection(connectionId);
                }
                ToolsModifierControl.GetTool <RoadCustomizerTool>().SetNodeMarkers(lane.m_nodeId, true);
            }

            return(result);
        }
Пример #2
0
        public static Lane CreateLane(uint laneId)
        {
            Lane lane = new Lane()
            {
                m_laneId = laneId
            };

            NetSegment segment   = NetManager.instance.m_segments.m_buffer[NetManager.instance.m_lanes.m_buffer[laneId].m_segment];
            NetInfo    netInfo   = segment.Info;
            int        laneCount = netInfo.m_lanes.Length;
            int        laneIndex = 0;

            for (uint l = segment.m_lanes; laneIndex < laneCount && l != 0; laneIndex++)
            {
                if (l == laneId)
                {
                    break;
                }

                l = NetManager.instance.m_lanes.m_buffer[l].m_nextLane;
            }

            if (laneIndex < laneCount)
            {
                NetInfoLane netInfoLane = netInfo.m_lanes[laneIndex] as NetInfoLane;
                if (netInfoLane != null)
                {
                    lane.m_vehicleTypes = netInfoLane.m_allowedVehicleTypes;
                }

                lane.m_speed = netInfo.m_lanes[laneIndex].m_speedLimit;
            }

            NetManager.instance.m_lanes.m_buffer[laneId].m_flags |= Lane.CONTROL_BIT;

            sm_lanes[laneId] = lane;

            return(lane);
        }
Пример #3
0
        public static bool CheckLaneConnection(this NetInfo.Lane laneInfo, ExtendedVehicleType vehicleType, uint from, uint to)
        {
            if ((vehicleType & sm_routedUnits) == 0)
            {
                return(true);
            }

            if ((laneInfo.m_vehicleType & VehicleInfo.VehicleType.Car) == VehicleInfo.VehicleType.None)
            {
                return(true);
            }

            // Quick fix for tram
            if ((laneInfo.m_vehicleType & VehicleInfo.VehicleType.Tram) != VehicleInfo.VehicleType.None)
            {
                return(true);
            }

            Lane lane = GetLane(from);

            return(lane.ConnectsTo(to));
        }
Пример #4
0
        public static bool CheckLaneConnection(uint from, uint to)
        {
            Lane lane = GetLane(from);

            return(lane.ConnectsTo(to));
        }
Пример #5
0
        public static uint[] GetLaneConnections(uint laneId)
        {
            Lane lane = GetLane(laneId);

            return(lane.GetConnectionsAsArray());
        }
Пример #6
0
        public static bool RemoveLaneConnection(uint laneId, uint connectionId)
        {
            Lane lane = GetLane(laneId);

            return(lane.RemoveConnection(connectionId));
        }