/// <summary> /// Start the drone mission /// </summary> public void startMission() { switch (droneStatus) { case FlightStatus.ON_GROUND_STANDBY: if (droneStatusPrev == FlightStatus.NULL) { nextWaypointID = 0; foreach (Waypoint waypoint in drone.AllWaypoints()) { waypoint.waypointProperties.WaypointUploaded(); } updateDestination(true, false, false); droneStatus = FlightStatus.FLYING; droneStatusPrev = FlightStatus.ON_GROUND_STANDBY; drone.droneProperties.StartCheckingFlightProgress(1, drone.WaypointsCount() - 1); } else { if (updateDestination(true, false, false)) { droneStatusPrev = droneStatus; droneStatus = FlightStatus.FLYING; } else { Debug.Log("Invalid drone command request, all waypoints completed"); } } break; case FlightStatus.IN_AIR_STANDBY: if (updateDestination(true, false, false)) { droneStatusPrev = droneStatus; droneStatus = FlightStatus.FLYING; } else { Debug.Log("Invalid drone command request, all waypoints completed"); } break; case FlightStatus.PAUSED_IN_AIR: resumeFlight(); break; case FlightStatus.LANDING: case FlightStatus.FLYING_HOME: case FlightStatus.FLYING: case FlightStatus.NULL: Debug.Log("Invalid drone command request"); break; } }