Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ...
- public Planet(Int32 seed)
- {
- this.levels = new List<Level>();
- this.Seed = seed;
- this.random = new Random(this.Seed);
- var width = 512;
- var height = 512;
- var module = new ImplicitFractal(FractalType.FractionalBrownianMotion, BasisType.Gradient, InterpolationType.Quintic);
- module.Seed = this.Seed;
- module.Octaves = 1;
- module.Frequency = 2.00 + 2 * (width / 256.00);
- var cache = new ImplicitCache(module);
- var values = new Double[width, height];
- var sw = Stopwatch.StartNew();
- Mapping.Map2D(MappingMode.SeamlessXY, values, cache, new MappingRanges(), 0.00);
- Console.WriteLine("Generated in : " + sw.Elapsed.TotalSeconds.ToString("0.00") + "s - " + (sw.Elapsed.TotalMilliseconds / (width * height)).ToString("0.00") + "ms per tile");
- var level = new Level(width, height);
- for (var y = 0; y < level.TilesHigh; y++)
- {
- for (var x = 0; x < level.TilesWide; x++)
- {
- if (values[x, y] > 0.30)
- level.SetTile(x, y, new Tile(TileBackType.Rock, TileBaseType.Iron));
- else if (values[x, y] > 0.13)
- level.SetTile(x, y, new Tile(TileBackType.Rock, TileBaseType.Rock));
- else if (values[x, y] > 0.08)
- level.SetTile(x, y, new Tile(TileBackType.Gravel, TileBaseType.Air));
- else if (values[x, y] > 0.00)
- level.SetTile(x, y, new Tile(TileBackType.Sand, TileBaseType.Air));
- else if (values[x, y] > -0.30)
- level.SetTile(x, y, new Tile(TileBackType.Dirt, TileBaseType.Air));
- else
- level.SetTile(x, y, new Tile(TileBackType.Water, TileBaseType.Air));
- }
- }
- this.levels.Add(level);
- }
- ...
Advertisement
Add Comment
Please, Sign In to add comment