This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
ARPlusSystem/ARPlusSystem-250418/Assets/ARLocation/Mapbox Routes/Scripts/RouteWaypoint.cs

81 lines
2.1 KiB
C#

using System.Collections;
namespace ARLocation.MapboxRoutes
{
public enum RouteWaypointType
{
UserLocation,
Location,
Query
};
[System.Serializable]
public class RouteWaypoint
{
public RouteWaypointType Type;
public Location Location = new Location();
public string Query;
public override string ToString()
{
return "RouteWaypoint{ \n" +
$"Type = {Type}\n" +
$"Location = {Location}\n" +
$"Query = {Query}\n" +
"}";
}
}
public class RouteWaypointResolveLocation
{
public Location result;
public bool IsError;
public string ErrorMessage;
private RouteWaypoint w;
private MapboxApi api;
public RouteWaypointResolveLocation(MapboxApi mapboxApi, RouteWaypoint waypoint)
{
w = waypoint;
api = mapboxApi;
}
public IEnumerator Resolve()
{
switch (w.Type)
{
case RouteWaypointType.Location:
result = w.Location;
IsError = false;
ErrorMessage = null;
yield break;
case RouteWaypointType.UserLocation:
result = ARLocationProvider.Instance.CurrentLocation.ToLocation();
IsError = false;
ErrorMessage = null;
yield break;
case RouteWaypointType.Query:
yield return api.QueryLocal(w.Query);
if (api.ErrorMessage != null)
{
result = null;
IsError = true;
ErrorMessage = api.ErrorMessage;
}
else
{
result = api.QueryLocalResult.features[0].geometry.coordinates[0];
IsError = false;
ErrorMessage = null;
}
yield break;
}
}
}
}