public static void Generate(GraphicsDevice gd, float[][] arr, string algorithm = "")
        {
            try
            {
                int width  = arr.Length;
                int height = arr.Length;

                if (!String.IsNullOrWhiteSpace(algorithm))
                {
                    algorithm = algorithm + " - ";
                }

                using (Texture2D image = new Texture2D(gd, width, height))
                {
                    var copy2D = arr.Select(a => a.ToArray()).ToArray();
                    var imgArr = ToOneDimentionalArray(PostModifications.Normalize(copy2D, width, 255));

                    image.SetData(ToGrayScale(imgArr, width, height));

                    if (!Directory.Exists("./HeightMaps/"))
                    {
                        Directory.CreateDirectory("./HeightMaps/");
                    }

                    using (Stream stream = File.Create("./HeightMaps/" + algorithm +
                                                       DateTime.Now.ToString("H;mm;ss") + ".png"))
                    {
                        image.SaveAsPng(stream, width, height);
                    }
                }
            }
            catch
            {
            }
        }
        public IGameObject Generate()
        {
            var arr = Generate(GridSize, Seed);

            arr = PostModifications.NormalizeAndFlatten(arr, GridSize, Flattening, Height);
            arr = Utils.ShiftTerrain(arr);
            HeightMapGenerator.Generate(_graphicDevice, arr, "Simplex Noise");
            return(new PrimitiveBase(_graphicDevice, _graphicDeviceManeger, arr, GridSize));
        }
        public IGameObject Generate()
        {
            var arr = Utils.GetEmptyArray(Size, Size, 0);

            for (int i = 0; i < Size; i++)
            {
                for (int j = 0; j < Size; j++)
                {
                    arr[i][j] = GetCellular(i, j);
                }
            }

            arr = PostModifications.Normalize(arr, Size, Height);
            HeightMapGenerator.Generate(_graphicDevice, arr, "Voronoi (" + noiseType.ToString() + ")");
            return(new PrimitiveBase(_graphicDevice, _graphicDeviceManeger, arr, Size));
        }
Beispiel #4
0
        private float[][] GenerateVertices(int gridSize)
        {
            var arr = Utils.GetEmptyArray(gridSize, gridSize);


            for (var i = 0; i < Iterations; i++)
            {
                var   centerX = Rand.Next(0, MapSize);
                var   centerY = Rand.Next(0, MapSize);
                float radius  = (float)(Rand.Next(RadiusMin * 100, RadiusMax * 100)) / 100;

                arr = RaiseHill(arr, radius, centerX, centerY);
            }

            arr = PostModifications.NormalizeAndFlatten(arr, MapSize, Flattening, Height);
            return(arr);
        }
        public IGameObject Generate()
        {
            var arr = Utils.GetEmptyArray(2, 2, -1);

            for (var i = 0; i < arr.Length; i++)
            {
                for (var j = 0; j < arr.Length; j++)
                {
                    arr[i][j] = GetRandom();
                }
            }


            for (int i = 1; i < Iterations; i++)
            {
                var Divided = DivideToSquares(arr);

                var squaredArray = new List <float[][]>();
                for (int j = 0; j < Divided.Count; j++)
                {
                    var div = Square(Divided.ElementAt(j));
                    squaredArray.Add(div);
                }

                var middedArray = new List <float[][]>();
                for (int j = 0; j < squaredArray.Count; j++)
                {
                    var mid = Mid(squaredArray.ElementAt(j));
                    middedArray.Add(mid);
                }

                var diamondedArray = new List <float[][]>();
                for (int j = 0; j < middedArray.Count; j++)
                {
                    var diamond = Diamond(middedArray.ElementAt(j));
                    diamondedArray.Add(diamond);
                }
                arr           = ConnectArrays(diamondedArray);
                Displacement /= 2;
            }
            arr = PostModifications.Normalize(arr, arr.Length, Height);
            arr = Utils.ShiftTerrain(arr);
            HeightMapGenerator.Generate(_graphicDevice, arr, "Diamond Square");
            return(new PrimitiveBase(_graphicDevice, _graphicDeviceManeger, arr, arr.Length));
        }
        public IGameObject Generate()
        {
            var arr = Utils.GetEmptyArray(MapSize, MapSize, 10);

            for (int j = 0; j < Walkers; j++)
            {
                int PointX = rand.Next(0, MapSize);
                int PointY = rand.Next(0, MapSize);

                int Steps = rand.Next(MinSteps, MaxSteps);
                for (int i = 0; i < Steps; i++)
                {
                    Walk(arr, ref PointX, ref PointY);
                }
            }


            arr = PostModifications.Smooth(arr, 1);
            arr = Utils.ShiftTerrain(arr);
            HeightMapGenerator.Generate(_graphicDevice, arr, "Drunkard walk");
            return(new PrimitiveBase(_graphicDevice, _graphicDeviceManeger, arr, MapSize));
        }