using UnityEngine; using Mapbox.Directions; using System.Collections.Generic; using Mapbox.Unity.Map; using Mapbox.Unity.MeshGeneration.Data; using Mapbox.Utils; using Mapbox.Unity.Utilities; using Mapbox.Unity; using System; namespace Mapbox.Examples { public class AstronautDirections : MonoBehaviour { AbstractMap _map; Directions.Directions _directions; Action> callback; void Awake() { _directions = MapboxAccess.Instance.Directions; } public void Query(Action> vecs, Transform start, Transform end, AbstractMap map) { if (callback == null) callback = vecs; _map = map; var wp = new Vector2d[2]; wp[0] = start.GetGeoPosition(_map.CenterMercator, _map.WorldRelativeScale); wp[1] = end.GetGeoPosition(_map.CenterMercator, _map.WorldRelativeScale); var _directionResource = new DirectionResource(wp, RoutingProfile.Walking); _directionResource.Steps = true; _directions.Query(_directionResource, HandleDirectionsResponse); } void HandleDirectionsResponse(DirectionsResponse response) { if (null == response.Routes || response.Routes.Count < 1) { return; } var dat = new List(); foreach (var point in response.Routes[0].Geometry) { dat.Add(Conversions.GeoToWorldPosition(point.x, point.y, _map.CenterMercator, _map.WorldRelativeScale).ToVector3xz()); } callback(dat); } } }