diff --git a/src/MissionManager/ComplexMissionItem.h b/src/MissionManager/ComplexMissionItem.h index 66209491ae760cf1755ff3b85a90d1ca19023d1f..71046d1d47d2508047f61a4927b846d723c2bb8d 100644 --- a/src/MissionManager/ComplexMissionItem.h +++ b/src/MissionManager/ComplexMissionItem.h @@ -44,10 +44,6 @@ public: /// This mission item attribute specifies the type of the complex item. static const char* jsonComplexItemTypeKey; - // Overrides from VisualMissionItem - double additionalTimeDelay(void) const final { return 0; } - - signals: void complexDistanceChanged (void); void boundingCubeChanged (void); diff --git a/src/MissionManager/CorridorScanComplexItem.h b/src/MissionManager/CorridorScanComplexItem.h index a5fe2cab8acee6a353cd838c2862545caa04bc86..278ef847f9a67ee5e9232355e60ca9f1fdfbee98 100644 --- a/src/MissionManager/CorridorScanComplexItem.h +++ b/src/MissionManager/CorridorScanComplexItem.h @@ -52,6 +52,7 @@ public: QString commandName (void) const final { return tr("Corridor Scan"); } QString abbreviation (void) const final { return tr("C"); } bool readyForSave (void) const; + double additionalTimeDelay (void) const final { return 0; } static const char* jsonComplexItemTypeValue; diff --git a/src/MissionManager/FixedWingLandingComplexItem.h b/src/MissionManager/FixedWingLandingComplexItem.h index 70e77b0922d0ece1923e4190f63055b601682bd5..9f81b56954c7f9cd53d9654ec6f38287eb0777d3 100644 --- a/src/MissionManager/FixedWingLandingComplexItem.h +++ b/src/MissionManager/FixedWingLandingComplexItem.h @@ -91,6 +91,7 @@ public: double specifiedGimbalPitch (void) final { return std::numeric_limits::quiet_NaN(); } void appendMissionItems (QList& items, QObject* missionItemParent) final; void applyNewAltitude (double newAltitude) final; + double additionalTimeDelay (void) const final { return 0; } bool coordinateHasRelativeAltitude (void) const final { return _altitudesAreRelative; } bool exitCoordinateHasRelativeAltitude (void) const final { return _altitudesAreRelative; } diff --git a/src/MissionManager/MissionSettingsItem.h b/src/MissionManager/MissionSettingsItem.h index 2a031217578ecdc357eef70e1ee778e6ab1336bc..935cade386139205839ffd1b49258fa32ccf6e31 100644 --- a/src/MissionManager/MissionSettingsItem.h +++ b/src/MissionManager/MissionSettingsItem.h @@ -77,6 +77,7 @@ public: void appendMissionItems (QList& items, QObject* missionItemParent) final; void applyNewAltitude (double newAltitude) final { Q_UNUSED(newAltitude); /* no action */ } double specifiedFlightSpeed (void) final; + double additionalTimeDelay (void) const final { return 0; } bool coordinateHasRelativeAltitude (void) const final { return false; } bool exitCoordinateHasRelativeAltitude (void) const final { return false; } diff --git a/src/MissionManager/StructureScanComplexItem.h b/src/MissionManager/StructureScanComplexItem.h index 5f38be25f6b81c3a2004874ce6db56be9098b170..9b8b09d4c0f88611acee601fa6bb96b9839eee8b 100644 --- a/src/MissionManager/StructureScanComplexItem.h +++ b/src/MissionManager/StructureScanComplexItem.h @@ -84,6 +84,7 @@ public: void appendMissionItems (QList& items, QObject* missionItemParent) final; void setMissionFlightStatus (MissionController::MissionFlightStatus_t& missionFlightStatus) final; void applyNewAltitude (double newAltitude) final; + double additionalTimeDelay (void) const final { return 0; } bool coordinateHasRelativeAltitude (void) const final { return _altitudeRelative; } bool exitCoordinateHasRelativeAltitude (void) const final { return _altitudeRelative; } diff --git a/src/MissionManager/SurveyComplexItem.cc b/src/MissionManager/SurveyComplexItem.cc index 8a0fac3786b69fa41c5ab6894c7ebd99db34e3e6..95d95814028da2e0a3b6c5c1baa438a291c838e8 100644 --- a/src/MissionManager/SurveyComplexItem.cc +++ b/src/MissionManager/SurveyComplexItem.cc @@ -1476,3 +1476,16 @@ double SurveyComplexItem::timeBetweenShots(void) { return _cruiseSpeed == 0 ? 0 : triggerDistance() / _cruiseSpeed; } + +double SurveyComplexItem::additionalTimeDelay (void) const +{ + double hoverTime = 0; + + if (hoverAndCaptureEnabled()) { + for (const QList& transect: _transects) { + hoverTime += _hoverAndCaptureDelaySeconds * transect.count(); + } + } + + return hoverTime; +} diff --git a/src/MissionManager/SurveyComplexItem.h b/src/MissionManager/SurveyComplexItem.h index 01248446c647e1650007322e1ee20fa99dd3622b..8bac39b8905c7dd2d4b385f1c565abd19e2618be 100644 --- a/src/MissionManager/SurveyComplexItem.h +++ b/src/MissionManager/SurveyComplexItem.h @@ -52,6 +52,7 @@ public: QString commandName (void) const final { return tr("Survey"); } QString abbreviation (void) const final { return tr("S"); } bool readyForSave (void) const final; + double additionalTimeDelay (void) const final; // Must match json spec for GridEntryLocation enum EntryLocation { diff --git a/src/MissionManager/TransectStyleComplexItem.cc b/src/MissionManager/TransectStyleComplexItem.cc index d616d75152e8570fe9e384a4eb817b21207a9e87..7e4a03c3a9854ca0ec5ee75ccbc813d5009b05d1 100644 --- a/src/MissionManager/TransectStyleComplexItem.cc +++ b/src/MissionManager/TransectStyleComplexItem.cc @@ -398,6 +398,7 @@ void TransectStyleComplexItem::_rebuildTransects(void) emit lastSequenceNumberChanged(lastSequenceNumber()); emit timeBetweenShotsChanged(); + emit additionalTimeDelayChanged(); } void TransectStyleComplexItem::_queryTransectsPathHeightInfo(void) diff --git a/src/MissionManager/TransectStyleComplexItemTest.h b/src/MissionManager/TransectStyleComplexItemTest.h index dac201cf7094ab41616f67ee51b06910df3ff926..e0b00751e74d341f58ebdaa35d1dc73270a2a843 100644 --- a/src/MissionManager/TransectStyleComplexItemTest.h +++ b/src/MissionManager/TransectStyleComplexItemTest.h @@ -94,6 +94,7 @@ public: bool specifiesCoordinate (void) const final { return true; } void appendMissionItems (QList& items, QObject* missionItemParent) final { Q_UNUSED(items); Q_UNUSED(missionItemParent); } void applyNewAltitude (double newAltitude) final { Q_UNUSED(newAltitude); } + double additionalTimeDelay (void) const final { return 0; } bool rebuildTransectsPhase1Called; bool rebuildTransectsPhase2Called;