85 lines
3.5 KiB
C#
85 lines
3.5 KiB
C#
|
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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|