using System.Collections; using System.Collections.Generic; using System.IO; using GISTech.GISTerrainLoader; using UnityEngine; using UnityEngine.UI; public class SelectTextureLayer : MonoBehaviour { public Dropdown UILayers; private string TerrainFilePath; private GISTerrainLoaderPrefs Prefs; private GISTerrainLoaderRuntimePrefs RuntimePrefs; private RuntimeTerrainGenerator RuntimeGenerator; private void Start() { TerrainFilePath = Application.streamingAssetsPath + "/GIS Terrains/MultiTextures/TIFF.tif"; RuntimeGenerator = GISTerrainLoaderMonoSingleton.Get; RuntimePrefs = GISTerrainLoaderMonoSingleton.Get; Prefs = RuntimePrefs.Prefs; UILayers.onValueChanged.AddListener(OnUILayerValueChanged); SetUILayers(); StartCoroutine(GenerateTerrain(TerrainFilePath)); } private IEnumerator GenerateTerrain(string TerrainPath) { yield return new WaitForSeconds(0.5f); if ((Application.platform == RuntimePlatform.WindowsEditor || Application.platform == RuntimePlatform.WindowsPlayer) && (string.IsNullOrEmpty(TerrainPath) || !File.Exists(TerrainPath))) { Debug.LogError("Terrain file null or not supported.. Try againe"); yield break; } InitializingRuntimePrefs(); StartCoroutine(RuntimeGenerator.StartGenerating(Prefs)); } private void InitializingRuntimePrefs() { RuntimeGenerator.enabled = true; Prefs.TerrainFilePath = TerrainFilePath; Prefs.RemovePrvTerrain = OptionEnabDisab.Enable; Prefs.TerrainElevation = TerrainElevation.RealWorldElevation; Prefs.terrainDimensionMode = TerrainDimensionsMode.AutoDetection; Prefs.terrainScale = new Vector3(1f, 1f, 1f); Prefs.projectionMode = ProjectionMode.Geographic; Prefs.heightmapResolution = 257; Prefs.textureloadingMode = TexturesLoadingMode.AutoDetection; Prefs.textureMode = TextureMode.MultiTexture; } private void SetUILayers() { List fullTextureFolders = GISTerrainLoaderTextureGenerator.GetFullTextureFolders(TerrainFilePath); List list = new List(); if (fullTextureFolders.Count > 0) { for (int i = 0; i < fullTextureFolders.Count; i++) { list.Add(new Dropdown.OptionData("Layer_" + i)); } UILayers.ClearOptions(); UILayers.AddOptions(list); } } private void OnUILayerValueChanged(int value) { Prefs.TextureFolderIndex = value; StartCoroutine(RuntimeGenerator.GeneratedContainer.GenerateTextures(Prefs, ClearLayers: true)); } private void OnDisable() { UILayers.onValueChanged.RemoveListener(OnUILayerValueChanged); } }