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)); }