void Water() {
Random waterRand = new Random( random.Next() );
for( int x = 0; x < genParams.MapWidth; x++ ) {
FloodFill( x, 0, waterLevel - 1, Block.StillWater );
FloodFill( x, genParams.MapLength - 1, waterLevel - 1, Block.StillWater );
}
for( int y = 0; y < genParams.MapLength; y++ ) {
FloodFill( 0, y, waterLevel - 1, Block.StillWater );
FloodFill( genParams.MapWidth - 1, y, waterLevel - 1, Block.StillWater );
}
int maxWaterSpawns = genParams.MapWidth*genParams.MapLength/genParams.WaterSpawnDensity;
for( int waterSpawn = 0; waterSpawn < maxWaterSpawns; waterSpawn++ ) {
int x = waterRand.Next( genParams.MapWidth );
int y = waterRand.Next( genParams.MapLength );
int z = waterLevel - 1 - waterRand.Next( 2 );
if( blocks[((z*genParams.MapLength + y)*genParams.MapWidth + x)] != (byte)Block.Air )
continue;
FloodFill( x, y, z, Block.StillWater );
}
}