public bool ProcessCurrentAndNextPathPosition(ref Vehicle vehicleData, byte index, DualPathPositionProcessor processor)
 {
     if (index < 11)
     {
         return(ProcessPathUnitPair(ref vehicleData, ref Singleton <PathManager> .instance.m_pathUnits.m_buffer[vehicleData.m_path], ref Singleton <PathManager> .instance.m_pathUnits.m_buffer[vehicleData.m_path], index, processor));
     }
     else
     {
         return(ProcessPathUnitPair(ref vehicleData, ref Singleton <PathManager> .instance.m_pathUnits.m_buffer[vehicleData.m_path], ref Singleton <PathManager> .instance.m_pathUnits.m_buffer[Singleton <PathManager> .instance.m_pathUnits.m_buffer[vehicleData.m_path].m_nextPathUnit], index, processor));
     }
 }
        private bool ProcessPathUnitPair(ref Vehicle vehicleData, ref PathUnit unit1, ref PathUnit unit2, byte index, DualPathPositionProcessor processor)
        {
            if ((unit1.m_pathFindFlags & PathUnit.FLAG_READY) == 0)
            {
                return(false);
            }

            if ((unit2.m_pathFindFlags & PathUnit.FLAG_READY) == 0)
            {
                return(false);
            }

            switch (index)
            {
            case 0:
                processor(ref vehicleData, ref unit1.m_position00, ref unit1.m_position01);
                break;

            case 1:
                processor(ref vehicleData, ref unit1.m_position01, ref unit1.m_position02);
                break;

            case 2:
                processor(ref vehicleData, ref unit1.m_position02, ref unit1.m_position03);
                break;

            case 3:
                processor(ref vehicleData, ref unit1.m_position03, ref unit1.m_position04);
                break;

            case 4:
                processor(ref vehicleData, ref unit1.m_position04, ref unit1.m_position05);
                break;

            case 5:
                processor(ref vehicleData, ref unit1.m_position05, ref unit1.m_position06);
                break;

            case 6:
                processor(ref vehicleData, ref unit1.m_position06, ref unit1.m_position07);
                break;

            case 7:
                processor(ref vehicleData, ref unit1.m_position07, ref unit1.m_position08);
                break;

            case 8:
                processor(ref vehicleData, ref unit1.m_position08, ref unit1.m_position09);
                break;

            case 9:
                processor(ref vehicleData, ref unit1.m_position09, ref unit1.m_position10);
                break;

            case 10:
                processor(ref vehicleData, ref unit1.m_position10, ref unit1.m_position11);
                break;

            case 11:
                processor(ref vehicleData, ref unit1.m_position11, ref unit2.m_position00);
                break;

            default:
                return(false);
            }

            return(true);
        }
 public bool ProcessCurrentAndNextPathPosition(ref Vehicle vehicleData, DualPathPositionProcessor processor)
 {
     return(ProcessCurrentAndNextPathPosition(ref vehicleData, (byte)(vehicleData.m_pathPositionIndex >> 1), processor));
 }