コード例 #1
0
        public override void SimulationStep(ushort segmentID, ref NetSegment data)
        {
            NetManager instance = Singleton <NetManager> .instance;

            if ((instance.m_nodes.m_buffer[(int)data.m_startNode].m_flags & NetNode.Flags.Temporary) == NetNode.Flags.None)
            {
                if (data.m_path == 0u || (ulong)(Singleton <SimulationManager> .instance.m_currentFrameIndex >> 8 & 15u) == (ulong)((long)(segmentID & 15)))
                {
                    BusTransportLineAI.StartPathFind(segmentID, ref data, this.m_netService, this.m_vehicleType, false);
                }
                else
                {
                    BusTransportLineAI.UpdatePath(segmentID, ref data, this.m_netService, this.m_vehicleType, false);
                }
            }
        }
コード例 #2
0
        public static bool UpdatePaths(ref TransportLine transportLine, ushort lineID)
        {
            bool       flag     = true;
            NetManager instance = Singleton <NetManager> .instance;
            ushort     stops    = transportLine.m_stops;
            ushort     num      = stops;
            int        num2     = 0;

            while (num != 0)
            {
                ushort num3 = 0;
                for (int i = 0; i < 8; i++)
                {
                    ushort segment = instance.m_nodes.m_buffer[(int)num].GetSegment(i);
                    if (segment != 0 && instance.m_segments.m_buffer[(int)segment].m_startNode == num)
                    {
                        TransportInfo info = transportLine.Info;
                        if (!BusTransportLineAI.UpdatePath(segment, ref instance.m_segments.m_buffer[(int)segment], info.m_netService, info.m_vehicleType, (transportLine.m_flags & TransportLine.Flags.Temporary) != TransportLine.Flags.None))
                        {
                            flag = false;
                        }
                        num3 = instance.m_segments.m_buffer[(int)segment].m_endNode;
                        break;
                    }
                }
                num = num3;
                if (num == stops)
                {
                    break;
                }
                if (!flag)
                {
                    break;
                }
                if (++num2 >= 32768)
                {
                    CODebugBase <LogChannel> .Error(LogChannel.Core, "Invalid list detected!\n" + Environment.StackTrace);

                    break;
                }
            }
            return(flag);
        }