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;
        }