Esempio n. 1
0
    /// <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;
        }
    }