public MapGenerator( [NotNull] MapGeneratorArgs generatorArgs ) {
if( generatorArgs == null ) throw new ArgumentNullException( "generatorArgs" );
args = generatorArgs;
args.Validate();
if( !args.CustomWaterLevel ) {
args.WaterLevel = (args.MapHeight - 1) / 2;
}
rand = new Random( args.Seed );
noise = new Noise( args.Seed, NoiseInterpolationMode.Bicubic );
ApplyTheme( args.Theme );
EstimateComplexity();
}