Firstborn/Assets/AwesomeTechnologies/VegetationStudioPro/Runtime/TerrainSystemPro/TerrainSystemPro_HeatMap.cs

85 lines
3.5 KiB
C#
Raw Normal View History

using AwesomeTechnologies.VegetationSystem;
#if UNITY_EDITOR
using UnityEditor.SceneManagement;
#endif
using UnityEngine.SceneManagement;
namespace AwesomeTechnologies.TerrainSystem
{
public partial class TerrainSystemPro
{
public void ShowTerrainHeatmap(bool value)
{
if (!VegetationSystemPro) return;
VegetationSystemPro.ShowHeatMap = value;
if (value)
{
float worldspaceMinHeight = VegetationSystemPro.VegetationSystemBounds.center.y -
VegetationSystemPro.VegetationSystemBounds.extents.y;
float worldspaceSeaLevel = worldspaceMinHeight + VegetationSystemPro.SeaLevel;
float worldspaceMaxHeight = VegetationSystemPro.VegetationSystemBounds.center.y +
VegetationSystemPro.VegetationSystemBounds.extents.y;
for (int i = 0; i <= VegetationSystemPro.VegetationStudioTerrainList.Count - 1; i++)
{
VegetationSystemPro.VegetationStudioTerrainList[i].OverrideTerrainMaterial();
VegetationPackagePro vegetationPackagePro =
VegetationSystemPro.VegetationPackageProList[VegetationPackageIndex];
TerrainTextureSettings terrainTextureSettings = vegetationPackagePro.TerrainTextureSettingsList[VegetationPackageTextureIndex];
VegetationSystemPro.VegetationStudioTerrainList[i].UpdateTerrainMaterial(worldspaceSeaLevel, worldspaceMaxHeight, terrainTextureSettings);
}
}
else
{
for (int i = 0; i <= VegetationSystemPro.VegetationStudioTerrainList.Count - 1; i++)
{
VegetationSystemPro.VegetationStudioTerrainList[i].RestoreTerrainMaterial();
}
}
}
public void UpdateTerrainHeatmap()
{
if (!VegetationSystemPro.ShowHeatMap) return;
float worldspaceMinHeight = VegetationSystemPro.VegetationSystemBounds.center.y -
VegetationSystemPro.VegetationSystemBounds.extents.y;
float worldspaceSeaLevel = worldspaceMinHeight + VegetationSystemPro.SeaLevel;
float worldspaceMaxHeight = VegetationSystemPro.VegetationSystemBounds.center.y +
VegetationSystemPro.VegetationSystemBounds.extents.y;
for (int i = 0; i <= VegetationSystemPro.VegetationStudioTerrainList.Count - 1; i++)
{
VegetationPackagePro vegetationPackagePro =
VegetationSystemPro.VegetationPackageProList[VegetationPackageIndex];
TerrainTextureSettings terrainTextureSettings = vegetationPackagePro.TerrainTextureSettingsList[VegetationPackageTextureIndex];
VegetationSystemPro.VegetationStudioTerrainList[i].UpdateTerrainMaterial(worldspaceSeaLevel, worldspaceMaxHeight, terrainTextureSettings);
}
}
// ReSharper disable once UnusedMember.Local
void OnEnable()
{
#if UNITY_EDITOR
EditorSceneManager.sceneSaving += OnSceneSaving;
#endif
}
// ReSharper disable once UnusedMember.Local
void OnDisable()
{
#if UNITY_EDITOR
EditorSceneManager.sceneSaving -= OnSceneSaving;
#endif
}
void OnSceneSaving(Scene scene, string path)
{
ShowTerrainHeatmap(false);
}
}
}