public float[,] ErodeTerrain(float[,] heightMap, int seed) { rng = new System.Random(seed); erosionInfo = InitializeErosionInfo(); erosionBrush = InitializeErosionBrush(heightMap); depositionBrush = InitializeDepositionBrush(heightMap); for (int i = 0; i < settings.iterations; i++) { Droplet droplet = new Droplet(heightMap, erosionInfo, erosionBrush, depositionBrush); droplet.Update(); } return(heightMap); }
public Droplet(float[,] map, ErosionInfo info, ErosionBrush eBrush, DepositionBrush dBrush) { heightMap = map; erosionInfo = info; erosionBrush = eBrush; depositionBrush = dBrush; mapWidth = heightMap.GetLength(0); mapHeight = heightMap.GetLength(1); position = new Vector2( erosionInfo.rng.Next(0, mapWidth - 1), erosionInfo.rng.Next(0, mapHeight - 1) ); direction = new Vector2(0f, 0f).normalized; }