diff --git a/src/MissionManager/CorridorScanComplexItem.cc b/src/MissionManager/CorridorScanComplexItem.cc index de4a1da458ef99194536d80ea9f376dbbfc4f3fe..f5bdd904410f8cd40a792ea3fda4452d73915437 100644 --- a/src/MissionManager/CorridorScanComplexItem.cc +++ b/src/MissionManager/CorridorScanComplexItem.cc @@ -29,7 +29,6 @@ const char* CorridorScanComplexItem::jsonComplexItemTypeValue = "CorridorScan"; CorridorScanComplexItem::CorridorScanComplexItem(Vehicle* vehicle, QObject* parent) : TransectStyleComplexItem (vehicle, settingsGroup, parent) - , _ignoreRecalc (false) , _entryPoint (0) , _metaDataMap (FactMetaData::createMapFromJsonFile(QStringLiteral(":/json/CorridorScan.SettingsGroup.json"), this)) , _corridorWidthFact (settingsGroup, _metaDataMap[corridorWidthName]) diff --git a/src/MissionManager/CorridorScanComplexItem.h b/src/MissionManager/CorridorScanComplexItem.h index 7e45a13bb04c5ea76a67f2677fceef1da2fd5899..a91236ccda634d7d487a64b9a8aac33f16fccfbf 100644 --- a/src/MissionManager/CorridorScanComplexItem.h +++ b/src/MissionManager/CorridorScanComplexItem.h @@ -69,8 +69,7 @@ private: QGCMapPolyline _corridorPolyline; QList> _transectSegments; ///< Internal transect segments including grid exit, turnaround and internal camera points - bool _ignoreRecalc; - int _entryPoint; + int _entryPoint; QMap _metaDataMap; SettingsFact _corridorWidthFact; diff --git a/src/MissionManager/TransectStyleComplexItem.cc b/src/MissionManager/TransectStyleComplexItem.cc index 966408cfb9f14023a057cd3db9c71584dffff1e4..6f26026860e20ed6e2a1734422e8aff0f5b72aac 100644 --- a/src/MissionManager/TransectStyleComplexItem.cc +++ b/src/MissionManager/TransectStyleComplexItem.cc @@ -32,7 +32,7 @@ const char* TransectStyleComplexItem::terrainAdjustMaxDescentRateName = "Ter const char* TransectStyleComplexItem::_jsonTransectStyleComplexItemKey = "TransectStyleComplexItem"; const char* TransectStyleComplexItem::_jsonCameraCalcKey = "CameraCalc"; -const char* TransectStyleComplexItem::_jsonTransectPointsKey = "TransectPoints"; +const char* TransectStyleComplexItem::_jsonVisualTransectPointsKey = "VisualTransectPoints"; const char* TransectStyleComplexItem::_jsonItemsKey = "Items"; const char* TransectStyleComplexItem::_jsonFollowTerrainKey = "FollowTerrain"; @@ -150,7 +150,7 @@ void TransectStyleComplexItem::_save(QJsonObject& complexObject) // Save transects polyline JsonHelper::saveGeoCoordinateArray(_visualTransectPoints, false /* writeAltitude */, transectPointsJson); - innerObject[_jsonTransectPointsKey] = transectPointsJson; + innerObject[_jsonVisualTransectPointsKey] = transectPointsJson; // Save the interal mission items QJsonArray missionItemsJsonArray; @@ -205,7 +205,7 @@ bool TransectStyleComplexItem::_load(const QJsonObject& complexObject, QString& { hoverAndCaptureName, QJsonValue::Bool, true }, { refly90DegreesName, QJsonValue::Bool, true }, { _jsonCameraCalcKey, QJsonValue::Object, true }, - { _jsonTransectPointsKey, QJsonValue::Array, true }, + { _jsonVisualTransectPointsKey, QJsonValue::Array, true }, { _jsonItemsKey, QJsonValue::Array, true }, { _jsonFollowTerrainKey, QJsonValue::Bool, true }, }; @@ -213,13 +213,12 @@ bool TransectStyleComplexItem::_load(const QJsonObject& complexObject, QString& return false; } -#if 0 - // FIXME - // Load transect points - if (!JsonHelper::loadGeoCoordinateArray(innerObject[_jsonTransectPointsKey], false /* altitudeRequired */, _transectPoints, errorString)) { + // Load visual transect points + if (!JsonHelper::loadGeoCoordinateArray(innerObject[_jsonVisualTransectPointsKey], false /* altitudeRequired */, _visualTransectPoints, errorString)) { return false; } -#endif + _coordinate = _visualTransectPoints.count() ? _visualTransectPoints.first().value() : QGeoCoordinate(); + _exitCoordinate = _visualTransectPoints.count() ? _visualTransectPoints.last().value() : QGeoCoordinate(); // Load generated mission items _loadedMissionItemsParent = new QObject(this); @@ -339,6 +338,10 @@ bool TransectStyleComplexItem::hoverAndCaptureAllowed(void) const void TransectStyleComplexItem::_rebuildTransects(void) { + if (_ignoreRecalc) { + return; + } + _rebuildTransectsPhase1(); _queryTransectsPathHeightInfo(); @@ -352,6 +355,11 @@ void TransectStyleComplexItem::_rebuildTransects(void) } emit visualTransectPointsChanged(); + _coordinate = _visualTransectPoints.count() ? _visualTransectPoints.first().value() : QGeoCoordinate(); + _exitCoordinate = _visualTransectPoints.count() ? _visualTransectPoints.last().value() : QGeoCoordinate(); + emit coordinateChanged(_coordinate); + emit exitCoordinateChanged(_exitCoordinate); + _rebuildTransectsPhase2(); emit lastSequenceNumberChanged(lastSequenceNumber()); @@ -654,20 +662,26 @@ void TransectStyleComplexItem::setFollowTerrain(bool followTerrain) int TransectStyleComplexItem::lastSequenceNumber(void) const { - int itemCount = 0; + if (_loadedMissionItems.count()) { + // We have stored mission items, just use those + return _sequenceNumber + _loadedMissionItems.count() - 1; + } else { + // We have to determine from transects + int itemCount = 0; - foreach (const QList& rgCoordInfo, _transects) { - itemCount += rgCoordInfo.count(); - } + foreach (const QList& rgCoordInfo, _transects) { + itemCount += rgCoordInfo.count(); + } - if (_cameraTriggerInTurnAroundFact.rawValue().toBool()) { - // Only one camera start and on camera stop - itemCount += 2; - } else { - // Each transect will have a camera start and stop in it - itemCount += _transects.count() * 2; - } + if (_cameraTriggerInTurnAroundFact.rawValue().toBool()) { + // Only one camera start and on camera stop + itemCount += 2; + } else { + // Each transect will have a camera start and stop in it + itemCount += _transects.count() * 2; + } - return _sequenceNumber + itemCount - 1; + return _sequenceNumber + itemCount - 1; + } } diff --git a/src/MissionManager/TransectStyleComplexItem.h b/src/MissionManager/TransectStyleComplexItem.h index e616e59519d0a783bfde0b32bbcf8e69037af849..2eb73ae3e374ddb3570b384b3c96814cf610f483 100644 --- a/src/MissionManager/TransectStyleComplexItem.h +++ b/src/MissionManager/TransectStyleComplexItem.h @@ -192,7 +192,7 @@ protected: static const char* _jsonCameraCalcKey; static const char* _jsonTransectStyleComplexItemKey; - static const char* _jsonTransectPointsKey; + static const char* _jsonVisualTransectPointsKey; static const char* _jsonItemsKey; static const char* _jsonFollowTerrainKey; diff --git a/src/PlanView/CorridorScanEditor.qml b/src/PlanView/CorridorScanEditor.qml index bf3bb139b754bc33010538e4a98b05ef253f12d4..754086544847a17da138bf27f3d8515e6931447d 100644 --- a/src/PlanView/CorridorScanEditor.qml +++ b/src/PlanView/CorridorScanEditor.qml @@ -134,7 +134,7 @@ Rectangle { SectionHeader { id: terrainHeader text: qsTr("Terrain") - checked: false + checked: missionItem.followTerrain } ColumnLayout {