Esempio n. 1
0
    private IEnumerator CargarImagenes(List <Imagen> imagenes)
    {
        InterfazProgreso.ActualizarAccion(_nombreAccion, 10, "Iniciando la visualización");
        int index = 1;
        int total = imagenes.Count;
        int delta = 90 / total;

        for (int i = total - 1; i >= 0; i--)
        //foreach (Imagen imagen in imagenes)
        {
            Imagen     imagen           = imagenes[i];
            string     nombreComponente = this._prefijoComponenteImagen + index;
            GameObject ContenedorImagen = GameObject.Find(nombreComponente);
            ContenedorImagen.SetActive(false);

            string url    = this._ftp + imagen.direccionImagen;
            var    loaded = UnityWebRequestTexture.GetTexture(url);
            //loaded.timeout = 0;
            yield return(loaded.SendWebRequest());

            if (loaded.isNetworkError || loaded.isHttpError)
            {
                Debug.Log("Error cargando imagen " + url + ". " + loaded.error);
                Recorrido.RemoverImagenById(imagen.idImagen);
                MonoBehaviour.Destroy(ContenedorImagen);
            }
            else
            {
                try{
                    ContenedorImagen.name = _prefijoComponenteImagenFinal + imagen.idImagen;

                    Texture2D texture = ((DownloadHandlerTexture)loaded.downloadHandler).texture as Texture2D;

                    RectTransform rt         = (RectTransform)ContenedorImagen.transform;
                    float         proporcion = Convert.ToSingle(texture.width) / Convert.ToSingle(texture.height);
                    if (proporcion > 1)
                    {
                        //Imagen mas ancha que larga
                        rt.sizeDelta = new Vector2((_tamanoStandarImagen * proporcion), _tamanoStandarImagen);
                    }
                    else
                    {
                        rt.sizeDelta = new Vector2(_tamanoStandarImagen, (_tamanoStandarImagen / proporcion));
                    }

                    Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.one / 2);
                    ContenedorImagen.GetComponent <Image>().sprite = sprite;

                    Recorrido.AgregarGameObjectImagen(ContenedorImagen, imagen.idImagen);
                }catch (Exception e) {
                    Debug.Log("Error cargando imagen " + url + " ." + e.Message);
                    Recorrido.RemoverImagenById(imagen.idImagen);
                    MonoBehaviour.Destroy(ContenedorImagen);
                }
            }
            InterfazProgreso.ActualizarAccion(_nombreAccion, 10 + index * delta, _mensajesProgreso[index % _mensajesProgreso.Count]);
            index++;
        }
        if (Recorrido.listaImagenes.Count > 0)
        {
            Recorrido.imagenActual = Recorrido.listaImagenes[0].idImagen;
            Recorrido.MostrarImagen(Recorrido.imagenActual);
        }
        InterfazProgreso.ActualizarAccion(_nombreAccion, 100, "Recorrido creado con éxito");
    }