83 lines
2.5 KiB
C#
83 lines
2.5 KiB
C#
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<RuntimeTerrainGenerator>.Get;
|
|
RuntimePrefs = GISTerrainLoaderMonoSingleton<GISTerrainLoaderRuntimePrefs>.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<string> fullTextureFolders = GISTerrainLoaderTextureGenerator.GetFullTextureFolders(TerrainFilePath);
|
|
List<Dropdown.OptionData> list = new List<Dropdown.OptionData>();
|
|
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);
|
|
}
|
|
}
|