Files
KopMap/Assets/NatureManufacture Assets/WorldStreamer/Scritps/Terrain/Editor/TerrainSettingsSetter.cs
2025-09-02 18:55:19 +08:00

61 lines
2.8 KiB
C#

// /**
// * Created by Pawel Homenko on 11/2023
// */
using UnityEditor;
using UnityEngine;
namespace WorldStreamer2
{
public static class TerrainSettingsSetter
{
public static void SetTerrainSettings(TerrainManagerSettings terrainManagerSettings, bool allTerrains = false)
{
Terrain[] terrains = Selection.GetFiltered<Terrain>(SelectionMode.TopLevel);
if (allTerrains)
terrains = Terrain.activeTerrains;
foreach (var terrain in terrains)
{
Undo.RegisterCompleteObjectUndo(terrain, "Modify Terrain");
Undo.RegisterCompleteObjectUndo(terrain.terrainData, "Modify Terrain");
SetTerrainSettings(terrain, terrainManagerSettings);
}
}
public static void SetTerrainSettings(Terrain terrain, TerrainManagerSettings terrainManagerSettings)
{
terrain.groupingID = terrainManagerSettings.groupingID;
terrain.allowAutoConnect = terrainManagerSettings.allowAutoConnect;
terrain.drawHeightmap = terrainManagerSettings.drawHeightmap;
terrain.drawInstanced = terrainManagerSettings.drawInstanced;
terrain.heightmapPixelError = terrainManagerSettings.heightmapPixelError;
terrain.basemapDistance = terrainManagerSettings.basemapDistance;
terrain.shadowCastingMode = terrainManagerSettings.shadowCastingMode;
terrain.reflectionProbeUsage = terrainManagerSettings.reflectionProbeUsage;
terrain.materialTemplate = terrainManagerSettings.materialTemplate;
terrain.drawTreesAndFoliage = terrainManagerSettings.drawTreesAndFoliage;
terrain.bakeLightProbesForTrees = terrainManagerSettings.bakeLightProbesForTrees;
terrain.deringLightProbesForTrees = terrainManagerSettings.deringLightProbesForTrees;
terrain.preserveTreePrototypeLayers = terrainManagerSettings.preserveTreePrototypeLayers;
terrain.detailObjectDistance = terrainManagerSettings.detailObjectDistance;
terrain.detailObjectDensity = terrainManagerSettings.detailObjectDensity;
terrain.treeDistance = terrainManagerSettings.treeDistance;
terrain.treeBillboardDistance = terrainManagerSettings.treeBillboardDistance;
terrain.treeCrossFadeLength = terrainManagerSettings.treeCrossFadeLength;
terrain.treeMaximumFullLODCount = terrainManagerSettings.treeMaximumFullLODCount;
var data = terrain.terrainData;
data.wavingGrassStrength = terrainManagerSettings.wavingGrassStrength;
data.wavingGrassSpeed = terrainManagerSettings.wavingGrassSpeed;
data.wavingGrassAmount = terrainManagerSettings.wavingGrassAmount;
data.wavingGrassTint = terrainManagerSettings.wavingGrassTint;
}
}
}