ZMWSLI0-SL2021-GR11/Projekt/MWSProjekt/Library/PackageCache/com.unity.terrain-tools@3.0.2-preview.3/Editor/TerrainTools/TerrainFillUtility.cs

73 lines
2.4 KiB
C#
Raw Normal View History

2021-07-05 21:20:56 +02:00
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.Experimental.TerrainAPI;
using System.Linq;
namespace UnityEditor.Experimental.TerrainAPI
{
public static class TerrainFillUtility
{
public static Terrain[] GetTerrainsInGroup(Terrain terrain)
{
TerrainUtility.TerrainMap terrainMap = TerrainUtility.TerrainMap.CreateFromPlacement(terrain, null, false);
Terrain[] terrainGroup = terrainMap.m_terrainTiles.Select(o => o.Value).ToArray();
return terrainGroup;
}
public static Terrain[] GetTerrainsInGroup(int groupingID)
{
List<Terrain> groupTerrains = new List<Terrain>();
Terrain[] activeTerrains = Terrain.activeTerrains;
for(int i = 0; i < activeTerrains.Length; ++i)
{
if(activeTerrains[i].groupingID == groupingID)
{
groupTerrains.Add(activeTerrains[i]);
}
}
return groupTerrains.ToArray();
}
private static Rect GetTerrainBounds(Terrain terrain)
{
return new Rect(0, 0, terrain.terrainData.size.x, terrain.terrainData.size.z);
}
public static PaintContext BeginFillHeightmap(Terrain terrain)
{
RenderTexture rt = terrain.terrainData.heightmapTexture;
PaintContext ctx = new PaintContext(terrain,
new RectInt(0, 0, rt.width, rt.height),
rt.width, rt.height);
ctx.CreateRenderTargets(rt.format);
ctx.GatherHeightmap();
return ctx;
}
public static void EndFillHeightmap(PaintContext ctx, string editorUndoString)
{
TerrainPaintUtility.EndPaintHeightmap(ctx, editorUndoString);
}
public static PaintContext BeginFillTexture(Terrain terrain, TerrainLayer inputLayer)
{
return TerrainPaintUtility.BeginPaintTexture(terrain, GetTerrainBounds(terrain), inputLayer);
}
public static void EndFillTexture(PaintContext ctx, string editorUndoString)
{
TerrainPaintUtility.EndPaintTexture(ctx, editorUndoString);
}
public static PaintContext CollectNormals(Terrain terrain)
{
return TerrainPaintUtility.CollectNormals(terrain, GetTerrainBounds(terrain));
}
}
}