From dee30f13a62b54fcf6d627c016ddadde140b0f73 Mon Sep 17 00:00:00 2001
From: DonLakeFlyer <don@thegagnes.com>
Date: Tue, 30 Jun 2020 15:30:33 -0700
Subject: [PATCH] Change in vehicle speed requires transect rebuild to recalc
 terrain max climb/descent rate based setup

---
 src/MissionManager/TransectStyleComplexItem.cc | 12 +++++++-----
 src/MissionManager/TransectStyleComplexItem.h  |  2 +-
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/MissionManager/TransectStyleComplexItem.cc b/src/MissionManager/TransectStyleComplexItem.cc
index 313b7e6..35b40ad 100644
--- a/src/MissionManager/TransectStyleComplexItem.cc
+++ b/src/MissionManager/TransectStyleComplexItem.cc
@@ -327,8 +327,10 @@ double TransectStyleComplexItem::greatestDistanceTo(const QGeoCoordinate &other)
 void TransectStyleComplexItem::setMissionFlightStatus(MissionController::MissionFlightStatus_t& missionFlightStatus)
 {
     ComplexMissionItem::setMissionFlightStatus(missionFlightStatus);
-    if (!qFuzzyCompare(_cruiseSpeed, missionFlightStatus.vehicleSpeed)) {
-        _cruiseSpeed = missionFlightStatus.vehicleSpeed;
+    if (!qFuzzyCompare(_vehicleSpeed, missionFlightStatus.vehicleSpeed)) {
+        _vehicleSpeed = missionFlightStatus.vehicleSpeed;
+        // Vehicle speed change affects max climb/descent rates calcs for terrain so we need to re-adjust
+        _rebuildTransects();
         emit timeBetweenShotsChanged();
     }
 }
@@ -707,9 +709,9 @@ int TransectStyleComplexItem::_maxPathHeight(const TerrainPathQuery::PathHeightI
 
 void TransectStyleComplexItem::_adjustForMaxRates(QList<CoordInfo_t>& transect)
 {
-    double maxClimbRate = _terrainAdjustMaxClimbRateFact.rawValue().toDouble();
-    double maxDescentRate = _terrainAdjustMaxDescentRateFact.rawValue().toDouble();
-    double flightSpeed = _missionFlightStatus.vehicleSpeed;
+    double maxClimbRate     = _terrainAdjustMaxClimbRateFact.rawValue().toDouble();
+    double maxDescentRate   = _terrainAdjustMaxDescentRateFact.rawValue().toDouble();
+    double flightSpeed      = _vehicleSpeed;
 
     if (qIsNaN(flightSpeed) || (maxClimbRate == 0 && maxDescentRate == 0)) {
         if (qIsNaN(flightSpeed)) {
diff --git a/src/MissionManager/TransectStyleComplexItem.h b/src/MissionManager/TransectStyleComplexItem.h
index 09435bb..9882151 100644
--- a/src/MissionManager/TransectStyleComplexItem.h
+++ b/src/MissionManager/TransectStyleComplexItem.h
@@ -185,7 +185,7 @@ protected:
     double          _complexDistance =  qQNaN();
     int             _cameraShots =      0;
     double          _timeBetweenShots = 0;
-    double          _cruiseSpeed =      0;
+    double          _vehicleSpeed =     5;
     CameraCalc      _cameraCalc;
     bool            _followTerrain =    false;
     double          _minAMSLAltitude =  qQNaN();