diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs index fab8b3f7e9d612b4248807cc6137b415a4cdbc51..b031b44a6dbec2877974eac47a8efc207ec2b9f1 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs @@ -98,7 +98,18 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl ((NextDrivingAction.TriggerDistance - NextDrivingAction.ActionDistance) / Driver.DataBus.VehicleSpeed) .IsSmaller( Constants.SimulationSettings.LowerBoundTimeInterval / 20) && !Driver.DataBus.ClutchClosed(absTime); - if ( atTriggerTistance || closeBeforeBraking || brakingIntervalTooShort) { + var brakingIntervalShort = NextDrivingAction.Action == DrivingBehavior.Braking && + ((NextDrivingAction.TriggerDistance - NextDrivingAction.ActionDistance) / Driver.DataBus.VehicleSpeed) + .IsSmaller( + Constants.SimulationSettings.LowerBoundTimeInterval / 2) && !Driver.DataBus.ClutchClosed(absTime); + if (brakingIntervalShort && remainingDistance.IsEqual(ds)) { + return new ResponseDrivingCycleDistanceExceeded() + { + Source = this, + MaxDistance = ds / 2 + }; + } + if ( atTriggerTistance || closeBeforeBraking || brakingIntervalTooShort) { CurrentDrivingMode = DrivingMode.DrivingModeBrake; DrivingModes[CurrentDrivingMode].ResetMode(); Log.Debug("Switching to DrivingMode BRAKE");