From 21462d79285a300ad1a7f744cb108375b1b356a6 Mon Sep 17 00:00:00 2001
From: Markus Quaritsch <markus.quaritsch@tugraz.at>
Date: Tue, 17 May 2016 10:59:44 +0200
Subject: [PATCH] fix: estimating distance before brake: handle case of no
 positive results can be found for dt

---
 .../SimulationComponent/Impl/DefaultDriverStrategy.cs      | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
index b67fecf445..56972493d3 100644
--- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
+++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/DefaultDriverStrategy.cs
@@ -477,8 +477,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 				Driver.DataBus.VehicleSpeed * Driver.DataBus.VehicleSpeed / 2 / Driver.DriverData.LookAheadCoasting.Deceleration -
 				(nextAction.TriggerDistance - Driver.DataBus.Distance)).Value());
 			dtList.Sort();
+			if (!dtList.Any(x => x > 0)) {
+				return null;
+			}
 			var dt = dtList.First(x => x > 0).SI<Second>();
-			var newds = Driver.DataBus.VehicleSpeed * dt + retVal.Acceleration / 2 * dt * dt;
+			var newds = Driver.DataBus.VehicleSpeed * dt + (retVal.Acceleration / 2 * dt * dt);
 			return newds;
 		}
 	}
@@ -566,7 +569,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
 						Constants.SimulationSettings.DriverActionDistanceTolerance)) {
 						return response;
 					}
-					newds = EstimateAccelerationDistanceBeforeBrake(response, nextAction);
+					newds = EstimateAccelerationDistanceBeforeBrake(response, nextAction) ?? ds;
 					break;
 				case DrivingBehavior.Braking:
 					var brakingDistance = Driver.DriverData.AccelerationCurve.ComputeAccelerationDistance(v2,
-- 
GitLab