public KochSurfaceGenerator(int seed, int size)
        {
            KochLikeNoiseSettings objSettings = new KochLikeNoiseSettings();

            objSettings.RandomSeed = seed;
            objSettings.ResultX = size;
            objSettings.ResultY = size;

            _settings = objSettings;
        }
        public void GenerateTerrain(IScene scene, string[] s)
        {
            string noiseType = MainConsole.Instance.Prompt("Noise generator (Perlin or Kosh)", "Perlin");
            bool perlinNoise = noiseType.ToLower().StartsWith("p");
            int baseHeight;

            if (perlinNoise)
            {
                _noiseGen = m_perlinNoise;
                PerlinNoiseSettings pns = new PerlinNoiseSettings();
                pns.ResultX = scene.RegionInfo.RegionSizeX;
                pns.ResultY = scene.RegionInfo.RegionSizeY;
                pns.RandomSeed = int.Parse(MainConsole.Instance.Prompt("Random Seed (0-infinity)", "10"));
                pns.CorsenessX = int.Parse(MainConsole.Instance.Prompt("Coarseness (X direction) (2-1000)", "100"));
                pns.CorsenessY = int.Parse(MainConsole.Instance.Prompt("Coarseness (Y direction) (2-1000)", "100"));
                pns.FlatEdges = MainConsole.Instance.Prompt("Flat Edges (recommended)", "true", new List<string>(new[] { "true", "false" })) == "true";
                pns.Octaves = int.Parse(MainConsole.Instance.Prompt("Octaves (0-infinity)", "5"));
                pns.Persistence = float.Parse(MainConsole.Instance.Prompt("Persistence", "0.8"));
                _noiseGen.Settings = pns;
                baseHeight = 30;
            }
            else
            {
                _noiseGen = m_kochLikeNoise;
                KochLikeNoiseSettings kns = new KochLikeNoiseSettings();
                //kns.ResultX = MainConsole.Instance.Prompt.RegionInfo.RegionSizeX;
                //kns.ResultY = MainConsole.Instance.Prompt.RegionInfo.RegionSizeY;
                kns.ResultX = scene.RegionInfo.RegionSizeX * 2;
                kns.ResultY = scene.RegionInfo.RegionSizeY * 2;
                kns.H = double.Parse(MainConsole.Instance.Prompt("Smoothing (Higher values are smoother)", "1.5"));
                kns.InitalGridX = int.Parse(MainConsole.Instance.Prompt("Initial Grid X", "2"));
                if(kns.InitalGridX < 2)
                    kns.InitalGridX = 2;
                kns.InitalGridY = int.Parse(MainConsole.Instance.Prompt("Initial Grid Y", "2"));
                if(kns.InitalGridY < 2)
                    kns.InitalGridY = 2;
                // grid X/Y divide the region so...
                //                kns.ResultX = kns.ResultX * kns.InitalGridX;
                //                kns.ResultY = kns.ResultY * kns.InitalGridY;

                kns.RandomMin = int.Parse(MainConsole.Instance.Prompt("Random Min", "-1"));
                kns.RandomMax = int.Parse(MainConsole.Instance.Prompt("Random Max", "1"));
                kns.RandomSeed = int.Parse(MainConsole.Instance.Prompt("Random Seed", "0"));
                kns.Scale = double.Parse(MainConsole.Instance.Prompt("Scale", "1.0"));

                _noiseGen.Settings = kns;
                baseHeight = 0;
            }

            float scaling = float.Parse(MainConsole.Instance.Prompt("Fractal Scaling", "50"));
            float[,] land = _noiseGen.Generate();
            ITerrainChannel c = new TerrainChannel(scene);
            for(int x = 0; x < scene.RegionInfo.RegionSizeX; x++)
            {
                for(int y = 0; y < scene.RegionInfo.RegionSizeY; y++)
                {
                    c[x, y] = (land[x, y] * scaling) + (float)scene.RegionInfo.RegionSettings.WaterHeight + baseHeight;
                }
            }
            scene.RequestModuleInterface<ITerrainModule>().TerrainMap = c;
            scene.RequestModuleInterface<ITerrainModule>().TaintTerrain();
            scene.RegisterModuleInterface<ITerrainChannel>(c);
        }
 public KochLikeNoise()
 {
     _settings = new KochLikeNoiseSettings();
 }