Commit a53d8023 authored by DonLakeFlyer's avatar DonLakeFlyer

Fix fly view waypoint line generation

parent f4f20bb0
...@@ -1011,9 +1011,9 @@ void MissionController::_recalcWaypointLines(void) ...@@ -1011,9 +1011,9 @@ void MissionController::_recalcWaypointLines(void)
bool firstCoordinateItem = true; bool firstCoordinateItem = true;
VisualMissionItem* lastCoordinateItem = qobject_cast<VisualMissionItem*>(_visualItems->get(0)); VisualMissionItem* lastCoordinateItem = qobject_cast<VisualMissionItem*>(_visualItems->get(0));
bool showHomePosition = _settingsItem->coordinate().isValid(); bool homePositionValid = _settingsItem->coordinate().isValid();
qCDebug(MissionControllerLog) << "_recalcWaypointLines showHomePosition" << showHomePosition; qCDebug(MissionControllerLog) << "_recalcWaypointLines homePositionValid" << homePositionValid;
CoordVectHashTable old_table = _linesTable; CoordVectHashTable old_table = _linesTable;
_linesTable.clear(); _linesTable.clear();
...@@ -1032,35 +1032,33 @@ void MissionController::_recalcWaypointLines(void) ...@@ -1032,35 +1032,33 @@ void MissionController::_recalcWaypointLines(void)
for (int i=1; i<_visualItems->count(); i++) { for (int i=1; i<_visualItems->count(); i++) {
VisualMissionItem* item = qobject_cast<VisualMissionItem*>(_visualItems->get(i)); VisualMissionItem* item = qobject_cast<VisualMissionItem*>(_visualItems->get(i));
// If we still haven't found the first coordinate item and we hit a takeoff command this means the mission starts from the ground.
// If we still haven't found the first coordinate item and we hit a takeoff command, link back to home // Link the first item back to home to show that.
if (firstCoordinateItem && if (firstCoordinateItem && item->isSimpleItem()) {
item->isSimpleItem() && MAV_CMD command = (MAV_CMD)qobject_cast<SimpleMissionItem*>(item)->command();
(!_controllerVehicle->firmwarePlugin()->supportedMissionCommands().contains(MAV_CMD_NAV_TAKEOFF) || if (command == MAV_CMD_NAV_TAKEOFF || command == MAV_CMD_NAV_VTOL_TAKEOFF) {
qobject_cast<SimpleMissionItem*>(item)->command() == MavlinkQmlSingleton::MAV_CMD_NAV_TAKEOFF || linkStartToHome = true;
qobject_cast<SimpleMissionItem*>(item)->command() == MavlinkQmlSingleton::MAV_CMD_NAV_VTOL_TAKEOFF)) {
linkStartToHome = true;
if (!_editMode) {
_waypointPath.append(QVariant::fromValue(lastCoordinateItem->coordinate()));
} }
} }
if (item->specifiesCoordinate()) { if (item->specifiesCoordinate() && !item->isStandaloneCoordinate()) {
if (!item->isStandaloneCoordinate()) { firstCoordinateItem = false;
firstCoordinateItem = false; if (lastCoordinateItem != _settingsItem || (homePositionValid && linkStartToHome)) {
if (lastCoordinateItem != _settingsItem || (showHomePosition && linkStartToHome)) { if (_editMode) {
if (_editMode) { VisualItemPair pair(lastCoordinateItem, item);
VisualItemPair pair(lastCoordinateItem, item); _addWaypointLineSegment(old_table, pair);
_addWaypointLineSegment(old_table, pair);
} else {
_waypointPath.append(QVariant::fromValue(item->coordinate()));
}
} }
lastCoordinateItem = item;
} }
_waypointPath.append(QVariant::fromValue(item->coordinate()));
lastCoordinateItem = item;
} }
} }
if (linkEndToHome && lastCoordinateItem != _settingsItem && showHomePosition) {
if (linkStartToHome && homePositionValid) {
_waypointPath.prepend(QVariant::fromValue(_settingsItem->coordinate()));
}
if (linkEndToHome && lastCoordinateItem != _settingsItem && homePositionValid) {
if (_editMode) { if (_editMode) {
VisualItemPair pair(lastCoordinateItem, _settingsItem); VisualItemPair pair(lastCoordinateItem, _settingsItem);
_addWaypointLineSegment(old_table, pair); _addWaypointLineSegment(old_table, pair);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment