public override void GenerateTerrain(int seed) { //Validate data, exit if not yet valid if (GenerationData.DimX == 0 || GenerationData.DimY == 0 || this.GenerationData.TileDim == 0) { return; } //Create noise function var noiseGen = new Noise.Noise2D( GenerationData.AmplitudePersistence, GenerationData.FrequencyPersistence, GenerationData.Frequency, GenerationData.Amplitude, GenerationData.Octaves, seed); //Generate colours this.colors = new UnityEngine.Color[GenerationData.DimX * GenerationData.DimY]; for (uint y = 0; y < GenerationData.DimY; ++y) { for (uint x = 0; x < GenerationData.DimX; ++x) { var height = noiseGen.GetHeight(x, y); this.colors[x + y * GenerationData.DimX] = new UnityEngine.Color(0, 0.5f, (height + GenerationData.Amplitude) / (GenerationData.Amplitude * 2.0f)); } } }
public override void GenerateTerrain(int seed) { //Validate data, exit if not yet valid if (this.GenerationData.DimX == 0 || this.GenerationData.DimY == 0 || this.GenerationData.TileDim == 0 || this.TileData == null) { return; } //Create noise function var noiseGen = new Noise.Noise2D( GenerationData.AmplitudePersistence, GenerationData.FrequencyPersistence, GenerationData.Frequency, GenerationData.Amplitude, GenerationData.Octaves, seed); //Generate tiles this.tiles = new SimpleTerrainTile[this.GenerationData.DimX * this.GenerationData.DimY]; var gridNodeData = new Ants.Pathfinding.GridNode.InitData[this.GenerationData.DimX, this.GenerationData.DimY]; for (uint y = 0; y < this.GenerationData.DimY; ++y) { for (uint x = 0; x < this.GenerationData.DimX; ++x) { var height = noiseGen.GetHeight(x, y); //Find tile base on noise height SimpleTerrainTile tile = null; foreach (var tileType in this.TileData) { if (height >= tileType.HeightValMin && height < tileType.HeightValMax) { tile = tileType; break; } } this.tiles[x + y * GenerationData.DimX] = tile; //Update the relevant grid node gridNodeData[x, y] = new Pathfinding.GridNode.InitData(); gridNodeData[x, y].Passable = tile != null ? tile.Passable : false; gridNodeData[x, y].TravelCostModifier = 1.0f; gridNodeData[x, y].X = x; gridNodeData[x, y].Y = y; gridNodeData[x, y].WorldX = this.GenerationData.DimX * -0.5f * this.GenerationData.TileDim + x * this.GenerationData.TileDim + this.GenerationData.TileDim * 0.5f; gridNodeData[x, y].WorldY = this.GenerationData.DimY * 0.5f * this.GenerationData.TileDim - y * this.GenerationData.TileDim - this.GenerationData.TileDim * 0.5f; } } this.pathfindingGrid = new Pathfinding.Grid(this.GenerationData.DimX, this.GenerationData.DimY, this.GenerationData.TileDim, gridNodeData); }