public void GenerateWorld() { float[,] noiseMap = Noise.GenerateNoiseMap(_chunkSize + 2, _chunkSize + 2, _seed, _noiseScale, _octaves, _persistance, _lacunarity, _offset, _radius); //Color Color[] colorMap = new Color[_chunkSize * _chunkSize]; for (int x = 0; x < _chunkSize; x++) { for (int y = 0; y < _chunkSize; y++) { float currentHeight = noiseMap[x, y]; for (int i = 0; i < regions.Length; i++) { if (currentHeight <= regions[i].height) { colorMap[y * _chunkSize + x] = regions[i].color; break; } } } } WorldDisplay display = FindObjectOfType <WorldDisplay>(); if (drawMode == DrawMode.NoiseMap) { display.DrawTexture(TextureGenerator.TextureFromHeightMap(noiseMap)); } else if (drawMode == DrawMode.ColorMap) { display.DrawTexture(TextureGenerator.TextureFromColorMap(colorMap, _chunkSize, _chunkSize)); } else if (drawMode == DrawMode.Mesh) { display.DrawMesh(MeshGenerator.GenerateTerrainMesh(noiseMap, _meshHeightMultiplier, _meshHeightCurve, _LevelOfDetail, _useTerrainFlatShading), TextureGenerator.TextureFromColorMap(colorMap, _chunkSize, _chunkSize)); } SpawnObjects(noiseMap, _densitiy); }
public void RendWorld() { WorldStats worldStats = GenerateWorld(Vector2.zero); WorldDisplay display = FindObjectOfType <WorldDisplay>(); if (drawMode == DrawMode.NoiseWorld) { display.DrawTexture(Texturing.TextureFromHeightMap(worldStats.heightWorld)); } else if (drawMode == DrawMode.ColourWorld) { display.DrawTexture(Texturing.TextureFromColourMap(worldStats.colourWorld, worldPartSize, worldPartSize)); } else if (drawMode == DrawMode.Mesh) { display.DrawMesh(MeshGenerator.GenerateTerrainMesh(worldStats.heightWorld, meshHeightMultiplier, meshHeightCurve, ValueLevelOfDetail), Texturing.TextureFromColourMap(worldStats.colourWorld, worldPartSize, worldPartSize)); } else if (drawMode == DrawMode.FallMap) { display.DrawTexture(Texturing.TextureFromHeightMap(FallGenerator.GenerateFall(worldPartSize))); } }