public override void SimulationStep(ushort vehicleID, ref Vehicle vehicleData, ref Vehicle.Frame frameData, ushort leaderID, ref Vehicle leaderData, int lodPhysics)
{
if ((TrafficMod.Options & OptionsManager.ModOptions.UseRealisticSpeeds) == OptionsManager.ModOptions.UseRealisticSpeeds)
{
var speedData = CarSpeedData.Of(vehicleID);
if (speedData.SpeedMultiplier == 0 || speedData.CurrentPath != vehicleData.m_path)
{
speedData.CurrentPath = vehicleData.m_path;
speedData.SetRandomSpeedMultiplier(0.65f, 1.05f);
}
m_info.ApplySpeedMultiplier(CarSpeedData.Of(vehicleID));
}
if ((vehicleData.m_flags & Vehicle.Flags.Stopped) != 0)
{
vehicleData.m_waitCounter += 1;
if (this.CanLeave(vehicleID, ref vehicleData))
{
vehicleData.m_flags &= ~Vehicle.Flags.Stopped;
vehicleData.m_flags |= Vehicle.Flags.Leaving;
vehicleData.m_waitCounter = 0;
}
}
base.SimulationStep(vehicleID, ref vehicleData, ref frameData, leaderID, ref leaderData, lodPhysics);
if ((vehicleData.m_flags & Vehicle.Flags.GoingBack) == 0 && this.ShouldReturnToSource(vehicleID, ref vehicleData))
{
this.SetTransportLine(vehicleID, ref vehicleData, 0);
}
if ((TrafficMod.Options & OptionsManager.ModOptions.UseRealisticSpeeds) == OptionsManager.ModOptions.UseRealisticSpeeds)
{
m_info.RestoreVehicleSpeed(CarSpeedData.Of(vehicleID));
}
}