public override void SimulationStep(ushort vehicleID, ref Vehicle data, Vector3 physicsLodRefPos)
{
if ((TrafficMod.Options & OptionsManager.ModOptions.UseRealisticSpeeds) == OptionsManager.ModOptions.UseRealisticSpeeds)
{
var speedData = CarSpeedData.Of(vehicleID);
if (speedData.SpeedMultiplier == 0 || speedData.CurrentPath != data.m_path)
{
speedData.CurrentPath = data.m_path;
speedData.SetRandomSpeedMultiplier(0.7f, 1.1f);
}
m_info.ApplySpeedMultiplier(CarSpeedData.Of(vehicleID));
}
if (((data.m_flags & Vehicle.Flags.Congestion) != 0) &&
((TrafficMod.Options & OptionsManager.ModOptions.NoDespawn) != OptionsManager.ModOptions.NoDespawn))
{
Singleton<VehicleManager>.instance.ReleaseVehicle(vehicleID);
}
else
{
if ((data.m_flags & Vehicle.Flags.WaitingTarget) != 0 && (data.m_waitCounter += 1) > 20)
{
this.RemoveOffers(vehicleID, ref data);
data.m_flags &= ~Vehicle.Flags.WaitingTarget;
data.m_flags |= Vehicle.Flags.GoingBack;
data.m_waitCounter = 0;
if (!this.StartPathFind(vehicleID, ref data))
{
data.Unspawn(vehicleID);
}
}
base.SimulationStep(vehicleID, ref data, physicsLodRefPos);
}
if ((TrafficMod.Options & OptionsManager.ModOptions.UseRealisticSpeeds) == OptionsManager.ModOptions.UseRealisticSpeeds)
{
m_info.RestoreVehicleSpeed(CarSpeedData.Of(vehicleID));
}
}