Beispiel #1
0
        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));
                }
            }
        }
Beispiel #2
0
        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);
        }