Beispiel #1
0
    public void HandleReceivedDroneData(string data)
    {
        DroneFlightData flightData = JsonUtility.FromJson <DroneFlightData>(data);

        foreach (Drone drone in Drones.drones)
        {
            // Drone is already present and instaciated, we found it, just update position
            if (drone.FlightData.DroneId == flightData.DroneId)
            {
                drone.UpdateDroneFlightData(flightData);
                return;
            }
        }
        // Drone is new one in the system, we need to instanciate it
        AddDrone(flightData);
    }
Beispiel #2
0
    public void AddDrone(DroneFlightData flightData)
    {
        Mapbox.Utils.Vector2d mapboxPosition = new Mapbox.Utils.Vector2d(flightData.Latitude, flightData.Longitude);
        Vector3 position3d = MapController.Instance.Map.GeoToWorldPosition(mapboxPosition, false);

        //float groundAltitude = MapController.Instance.Map.QueryElevationInUnityUnitsAt(MapController.Instance.Map.WorldToGeoPosition(position3d));
        position3d.y = (float)flightData.Altitude;

        GameObject Clone = Instantiate(newDrone, position3d, ourDrone.rotation);

        Clone.name = "DroneObject" + droneNumber.ToString();
        Drones.drones.Add(new Drone(Clone, flightData));
        Drones.DroneAdded(dronesPanelGrid, dronesPrefab, iconTransform, icon, PopUp, PopUpRenderTexture);
        droneNumber++;
        Clone.transform.SetParent(transform);
    }
Beispiel #3
0
    public void UpdateDroneFlightData(DroneFlightData flightData)
    {
        FlightData = flightData;
        if (double.IsNaN(FlightData.Latitude) || double.IsNaN(FlightData.Longitude))
        {
            return;
        }

        Mapbox.Utils.Vector2d mapboxPosition = new Mapbox.Utils.Vector2d(FlightData.Latitude, FlightData.Longitude);
        Vector3 position3d = MapController.Instance.Map.GeoToWorldPosition(mapboxPosition, false);

        if (FlightData.DroneId == "DJI-Mavic2")
        {
            float groundAltitude = MapController.Instance.Map.QueryElevationInUnityUnitsAt(MapController.Instance.Map.WorldToGeoPosition(position3d));
            position3d.y = groundAltitude + (float)FlightData.Altitude;
        }
        else
        {
            position3d.y = (float)FlightData.Altitude;
        }
        DroneGameObject.transform.position    = position3d;
        DroneGameObject.transform.eulerAngles = new Vector3((float)FlightData.Pitch, (float)FlightData.Yaw + (float)FlightData.Compass, (float)FlightData.Roll);
    }
Beispiel #4
0
 public Drone(GameObject droneGameObject, DroneFlightData flightData)
 {
     DroneGameObject = droneGameObject;
     FlightData      = flightData;
 }
Beispiel #5
0
 private void processJsonData(string _url)
 {
     jsonData = JsonUtility.FromJson <DroneFlightData>(_url);
 }