//Function to generate the noise map MapData GenerateMapData(Vector2 centre) { float[,] noiseMap = TerrainNoise.GenerateNoiseMap(mapChunkSize + 2, mapChunkSize + 2, seed, noiseScale, octaves, persistance, lacunarity, centre + offset, normalizeMode); //Generating colored map Color[] colorMap = new Color[mapChunkSize * mapChunkSize]; //Array to save all colors used for (int y = 0; y < mapChunkSize; y++) { for (int x = 0; x < mapChunkSize; x++) { if (useIslandGenerator) { noiseMap[x, y] = Mathf.Clamp01(noiseMap[x, y] - islandGenMap[x, y]); } float currentHeight = noiseMap[x, y]; for (int i = 0; i < regions.Length; i++) //Loop to check which region the current height value falls into { if (currentHeight >= regions[i].height) { colorMap[y * mapChunkSize + x] = regions[i].color; } else { break; } } } } return(new MapData(noiseMap, colorMap)); }
public TerrainData GenerateTerrainData(TerrainSettings terrainSettings, Vector2Int size, Vector2 offset) { int width = size.x; int height = size.y; AnimationCurve heightCurve = new AnimationCurve(terrainSettings.heightCurve.keys); float[,] heightMap = TerrainNoise.GenerateNoiseMap(width, height, terrainSettings.noiseSeed, terrainSettings.noiseScale, terrainSettings.octaves, terrainSettings.persistance, terrainSettings.lacunarity, offset, terrainSettings.normalizeMode); Color[] colorMap = CreateColorMap(heightMap, terrainSettings.regions); MeshData meshData = MeshGenerator.GenerateMesh(heightMap, terrainSettings.heightScale, heightCurve); return(new TerrainData(heightMap, colorMap, meshData, size, terrainSettings)); }