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); }
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); }
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); }
public Drone(GameObject droneGameObject, DroneFlightData flightData) { DroneGameObject = droneGameObject; FlightData = flightData; }
private void processJsonData(string _url) { jsonData = JsonUtility.FromJson <DroneFlightData>(_url); }