public void GenerateTerrain() { float[,] noiseMap = NoiseGen.GenerateNoiseMap(width, height, seed, scale, octaves, persistance, lacunarity, offset); FoliageGen.removeAllFoliage(); TerrainRendering terrainRendering = FindObjectOfType <TerrainRendering>(); List <ChunkData> chunks = NoiseGen.ChunkNoiseMap(noiseMap); List <MeshData> meshData = new List <MeshData>(); foreach (ChunkData chunkData in chunks) { meshData.Add(MeshGen.GenerateTerrainMesh(chunkData.heightMap, meshHeightMultiplier, meshHeightCurve, chunkData.chunkCoords, regions)); } if (useShader) { terrainRendering.DrawMesh(meshData, meshScale, shaderMaterial); } else { terrainRendering.DrawMesh(meshData, meshScale, null); } UpdateShaderData(); }
// MAP GENERATION MapData GenerateMapData(Vector2 center) { // Get noise map float[,] noiseMap = NoiseGen.GenerateNoiseMap(mapChunkSize, mapChunkSize, seed, noiseScale, octaves, persistance, lacunarity, center + offset, normalizeMode); //Assign Terrain based on height Color[] colorMap = new Color[mapChunkSize * mapChunkSize]; for (int x = 0; x < mapChunkSize; x++) { for (int y = 0; y < mapChunkSize; y++) { float currentHeight = noiseMap[x, y]; for (int i = 0; i < regions.Length; i++) { if (currentHeight >= regions[i].height) { colorMap[y * mapChunkSize + x] = regions[i].color; } else { break; } } } } return(new MapData(noiseMap, colorMap)); }
MapData GenerateMapData(Vector2 center) { float[,] noiseMap = NoiseGen.GenerateNoiseMap(mapChunkSize + 2, mapChunkSize + 2, seed, noiseScale, octaves, persistance, lacunarity, center + offset, normalizeMode);//mapchunksize + 2 cause border Color[] colorMap = new Color[mapChunkSize * mapChunkSize]; for (int y = 0; y < mapChunkSize; y++) { for (int x = 0; x < mapChunkSize; x++) { if (useFalloff) { noiseMap[x, y] = Mathf.Clamp01(noiseMap[x, y] - falloffMap[x, y]); } float currentHeight = noiseMap[x, y]; for (int i = 0; i < regions.Length; i++) { if (currentHeight >= regions[i].height) { colorMap[y * mapChunkSize + x] = regions[i].color; } else { break; } } } } return(new MapData(noiseMap, colorMap)); }
MapData GenerateMapData(Vector2 center) { float[,] noiseMap = NoiseGen.GenerateNoiseMap(mapChunkSize, mapChunkSize, seed, noiseScale, octaves, persistance, lacunarity, center + offset); Color[] colorMap = new Color[mapChunkSize * mapChunkSize]; for (int y = 0; y < mapChunkSize; y++) { for (int x = 0; x < mapChunkSize; x++) { float currentHeight = noiseMap[x, y]; for (int i = 0; i < regions.Length; i++) { if (currentHeight <= regions[i].height) { colorMap[y * mapChunkSize + x] = regions[i].color; break; } } } } return(new MapData(noiseMap, colorMap)); }