From 0ed293bd96f05f005d64799343accbdbacec9fe1 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 25 Nov 2015 11:27:25 -0800 Subject: [PATCH] New item uses altitude from last item --- src/MissionManager/MissionController.cc | 18 ++++++++++++++++++ src/MissionManager/MissionController.h | 1 + 2 files changed, 19 insertions(+) diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index 7bb30c6c9..a78c60e4f 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -168,6 +168,9 @@ int MissionController::addMissionItem(QGeoCoordinate coordinate) newItem->setCommand(MavlinkQmlSingleton::MAV_CMD_NAV_TAKEOFF); } newItem->setDefaultsForCommand(); + if (newItem->command() == MAV_CMD_NAV_WAYPOINT) { + newItem->setParam7(_findLastAltitude()); + } _missionItems->append(newItem); _recalcAll(); @@ -592,3 +595,18 @@ QmlObjectListModel* MissionController::missionItems(void) { return _missionItems; } + +double MissionController::_findLastAltitude(void) +{ + double lastAltitude = MissionItem::defaultAltitude; + + for (int i=0; i<_missionItems->count(); i++) { + MissionItem* item = qobject_cast(_missionItems->get(i)); + + if (item->specifiesCoordinate()) { + lastAltitude = item->param7(); + } + } + + return lastAltitude; +} diff --git a/src/MissionManager/MissionController.h b/src/MissionManager/MissionController.h index dd11398d0..6c4d1e329 100644 --- a/src/MissionManager/MissionController.h +++ b/src/MissionManager/MissionController.h @@ -95,6 +95,7 @@ private: void _setupMissionItems(bool loadFromVehicle, bool forceLoad); void _setupActiveVehicle(Vehicle* activeVehicle, bool forceLoadFromVehicle); double _calcDistance(bool homePositionValid, double homeAlt, MissionItem* item1, MissionItem* item2); + double _findLastAltitude(void); private: bool _editMode; -- 2.22.0