Newer
Older
{
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mapbox.Utils;
using Mapbox.Directions;
using Mapbox.Unity;
using Mapbox.Unity.Map;
using Mapbox.Unity.Utilities;
//! @authors Wakestufou
//! @brief Gère les Waypoints
//! @details Cette classe permet de créer les waypoints pour créer la course
public class WaypointsFactory : MonoBehaviour
{
// Champs publiques
public static List<Vector2d> points; //<! Coordonnées des waypoints
public Transform prefabs_parent; //<! Objet qui va contenir les waypoints
// Champs privés
Directions _directions; //<! Contient les informations gps de la course
private GameObject _map; //<! Map
private static WaypointsFactory _instance; //<! Instance de @b Waypoints.WaypointsFactory
Vector2d[] _coordinates; //<! Va contenir @a coordonnee1 et @a coordonnee2
DirectionResource _directionResource; //<! Contient les informations sous forme de json deserialize
private DirectionsResponse _DirectionResourceResultat; //<! Contient les informations de @a _directionRessource
private bool _test = true; //<! Test si la création des waypoints est finie
private AbstractMap _abstractmap; //<! Map Google Street View.
private string _coordonnee1; //<! Coordonnées du point de départ
private string _coordonnee2; //<! Coordonnées du point de fin
//! @brief Se lance au lancement du script.
//! @details Initialise les variables
_instance = this;
_map = GameObject.Find("Map");
_abstractmap = _map.GetComponent<AbstractMap>();
_directions = MapboxAccess.Instance.Directions;
_coordinates = new Vector2d[2];
_directionResource = new DirectionResource(_coordinates, RoutingProfile.Driving);
_directionResource.Steps = true;
}
//! @brief Retourne l'instance
//! @details return @a instance
public static WaypointsFactory getInstance()
{
/*
//! @brief Retourne si les waypoints ont fini d'être crée
//! @details Retourne si les waypoints ont fini d'être crée
public bool getTest()
{
return test;
}*/
//! @brief Retourne les coordonnées des waypoints
//! @details Retourne la liste des coordonnées des waypoints
{
return points;
}
//! @brief Créer la route
//! @details Créer la route avec le point de départ et de fin
_coordinates[0] = Conversions.StringToLatLon(_coordonnee1);
_coordinates[1] = Conversions.StringToLatLon(_coordonnee2);
_directionResource.Coordinates = _coordinates;
_directions.Query(_directionResource, HandleDirectionsResponse);
}
//! @brief Enregistre les informations
//! @details Enregistre les informations en format json deserialize
void HandleDirectionsResponse(DirectionsResponse res)
{
//! @brief Lance la création de route
//! @details Lance la création de route
public void click(string coord1, string coord2)
{
_coordonnee1 = coord1;
_coordonnee2 = coord2;
Debug.Log(_coordonnee1);
Debug.Log(_coordonnee2);
StartCoroutine(createRoad());
}
//! @brief Lance la création de route
//! @details Lance la création de route
IEnumerator createRoad()
{
{
}
else
{
Route();
yield return new WaitUntil(() => _test == false);
PlacementWaypoint(_abstractmap.WorldToGeoPosition(GameObject.FindGameObjectWithTag("start_wp").transform.position));
foreach (var val in _DirectionResourceResultat.Routes[0].Legs[0].Steps)
{
foreach (var inter in val.Intersections)
{
PlacementWaypoint(inter.Location);
}
}
PlacementWaypoint(_abstractmap.WorldToGeoPosition(GameObject.FindGameObjectWithTag("end_wp").transform.position));
GameObject.FindGameObjectWithTag("start_wp").Destroy();
GameObject.FindGameObjectWithTag("end_wp").Destroy();
//! @brief Enregistre un waypoints
//! @details Enregistre les coordonnées d'un waypoints
void PlacementWaypoint(Vector2d coordonnesPoints)
{