Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/SelectTextureLayer.cs
2026-03-04 09:37:33 +08:00

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);
}
}