IEnumerator WaitForImageResponse(int index, Vector2 pos) { OWMWeatherImage weatherImage = _downloadedWeatherImages.Where(x => x.ZoomLevel == _currZoom && x.Position == pos && (x.DownloadTime - System.DateTime.Now).Hours < 1).FirstOrDefault(); //(OWMWeatherImage)MainGameController.instance.networkController.getResponse(Responses.WeatherImg, index); while (weatherImage == null) { yield return(new WaitForSeconds(1)); weatherImage = (OWMWeatherImage)MainGameController.instance.networkController.getResponse(Responses.WeatherImg, index); if (weatherImage != null) { weatherImage.Position = pos; weatherImage.ZoomLevel = _currZoom; _downloadedWeatherImages.Add(weatherImage); } } index = weatherImage.Index; GameObject windImage = GameObject.Instantiate(_windImagePrefab); windImage.transform.SetParent(_windImagesParent.transform); windImage.name = index + "-WindImage" + pos; windImage.GetComponent <Image>().sprite = weatherImage.Image; windImage.GetComponent <Image>().color = Color.white; windImage.GetComponent <Image>().mainTexture.filterMode = FilterMode.Point; windImage.GetComponent <RectTransform>().sizeDelta = new Vector2(2048, 2048); windImage.transform.localScale = Vector3.one; windImage.transform.localPosition = new Vector2(pos.x * 2048, pos.y * -2048) - new Vector2(1024, -1024); windImage.SetActive(false); _loadedIndex += 1; }
public IEnumerator request(string url, int index) { WWW www = new WWW(url); yield return(www); if (www.error == string.Empty || www.error == null) { if (www.texture.height == 256) { Texture2D texture = new Texture2D(www.texture.width, www.texture.height, TextureFormat.DXT1, false); www.LoadImageIntoTexture(texture); Rect rect = new Rect(0, 0, texture.width, texture.height); Sprite spriteToUse = Sprite.Create(texture, rect, new Vector2(0.5f, 0.5f), 100); OWMWeatherImage oWMWeatherImage = new OWMWeatherImage(spriteToUse, Vector2.negativeInfinity, -1, System.DateTime.Parse(www.responseHeaders["Date"]), index); _responses.Add(Responses.WeatherImg.ToString() + index, oWMWeatherImage); } processResponse(www.text); } else { Debug.LogError(url + "\n gives the folowing error:" + www.error); } }
public IEnumerator getWindImages() { float worldMapSize = 4096 * _currZoom;//_windImagesParent.GetComponent<RectTransform>().sizeDelta.x; int amount = Mathf.RoundToInt(Mathf.Sqrt((worldMapSize / 2048))); int maxxy = (int)Mathf.Pow(2, amount); Vector2 playerpos = MainGameController.instance.player.getCurrentLocationLatLon(); Vector3 pos = WorldMapController.LatitudeLongitudeToTileId(playerpos.x, playerpos.y, amount); int minx = (int)((pos.x - 2 >= 0) ? pos.x - 2 : 0); int maxx = (int)((pos.x + 2 < maxxy) ? pos.x + 2 : maxxy - 1); int miny = (int)((pos.y - 2 >= 0) ? pos.y - 2 : 0); int maxy = (int)((pos.y + 2 < maxxy) ? pos.y + 2 : maxxy - 1); int lastIndex = 0; _windImagesParent.SetActive(false); _loadingImage.SetActive(true); _zoominButton.interactable = false; _zoomOutButton.interactable = false; //_loadedIndex = MainGameController.instance.networkController.GetCurrentWeatherImageIndex(); int startIndex = _loadedIndex; int index = startIndex; for (int fx = minx; fx <= maxx; fx++) { for (int fy = maxy; fy >= miny; fy--) { OWMWeatherImage oWMWeatherImage = _downloadedWeatherImages.Where(x => x.ZoomLevel == _currZoom && x.Position == new Vector2(fx, fy) && (x.DownloadTime - System.DateTime.Now).Hours < 1).FirstOrDefault(); if (oWMWeatherImage == null) { index = MainGameController.instance.networkController.getWindImage(amount, fx, fy); } else { index++; oWMWeatherImage.Index = index; } lastIndex = index; StartCoroutine(WaitForImageResponse(index, new Vector2(fx, fy))); yield return(new WaitForSeconds(0.1f)); } } StartCoroutine(viewWeatherMapWhenDone(startIndex, lastIndex)); //float parentpos = ((worldMapSize / 2048) - 1) * 1024; //_windImagesParent.transform.localPosition = new Vector3(parentpos, -parentpos); //MainGameController.instance.networkController.getWindImage(0, 0, 0); //StartCoroutine(WaitForImageResponse()); }