using UnityEngine; namespace AmazingAssets.TerrainToMesh.Example { [RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))] public class ExportMeshAndBasemapByPositionIndex : MonoBehaviour { public TerrainData terrainData; public int vertexCountHorizontal = 100; public int vertexCountVertical = 100; [Space(10f)] public bool exportHoles; public int mapsResolution = 512; [Header("Chunk count is 4x4")] [Range(0f, 3f)] public int positionX; [Range(0f, 3f)] public int positionY; private int chunkCountHorizontal = 4; private int chunkCountVertical = 4; private void Start() { if (!(terrainData == null)) { Mesh sharedMesh = terrainData.TerrainToMesh().ExportMesh(vertexCountHorizontal, vertexCountVertical, chunkCountHorizontal, chunkCountVertical, positionX, positionY, perChunkUV: true, Normal.CalculateFromMesh); GetComponent().sharedMesh = sharedMesh; Texture2D value = terrainData.TerrainToMesh().ExportBasemapDiffuseTexture(mapsResolution, chunkCountHorizontal, chunkCountVertical, positionX, positionY, exportHoles, unpack: false); Texture2D texture2D = terrainData.TerrainToMesh().ExportBasemapNormalTexture(mapsResolution, chunkCountHorizontal, chunkCountVertical, positionX, positionY, unpack: false); Texture2D texture2D2 = terrainData.TerrainToMesh().ExportBasemapMaskTexture(mapsResolution, chunkCountHorizontal, chunkCountVertical, positionX, positionY, unpack: false); Material material = new Material(Shader.Find("Standard")); material.SetTexture("_MainTex", value); material.SetTexture("_BumpMap", texture2D); if (texture2D2 != null) { material.SetTexture("_MetallicGlossMap", texture2D2); material.EnableKeyword("_METALLICGLOSSMAP"); } if (texture2D != null) { material.EnableKeyword("_NORMALMAP"); } if (exportHoles) { material.SetFloat("_Mode", 1f); material.EnableKeyword("_ALPHATEST_ON"); } GetComponent().sharedMaterial = material; } } } }