diff --git a/heightmap.lua b/heightmap.lua index cbe8923..d6b2303 100644 --- a/heightmap.lua +++ b/heightmap.lua @@ -6,7 +6,7 @@ local transform_quadri = dofile(modpath .. 'geometry.lua') local sea_level = mapgen_rivers.settings.sea_level local riverbed_slope = mapgen_rivers.settings.riverbed_slope * mapgen_rivers.settings.blocksize -local MAP_BOTTOM = -31000 +local out_elev = mapgen_rivers.settings.margin_elev -- Localize for performance local floor, min, max = math.floor, math.min, math.max @@ -128,8 +128,8 @@ local function heightmaps(minp, maxp) terrain_height_map[i] = terrain_height lake_height_map[i] = lake_height else - terrain_height_map[i] = MAP_BOTTOM - lake_height_map[i] = MAP_BOTTOM + terrain_height_map[i] = out_elev + lake_height_map[i] = out_elev end i = i + 1 end diff --git a/pregenerate.lua b/pregenerate.lua index 91fac15..164d2ad 100644 --- a/pregenerate.lua +++ b/pregenerate.lua @@ -13,9 +13,9 @@ local time_step = mapgen_rivers.settings.evol_time_step local niter = math.ceil(time/time_step) time_step = time / niter -local use_margin = true -local margin_width = 2000 / blocksize -local margin_elev = -200 +local use_margin = mapgen_rivers.settings.margin +local margin_width = mapgen_rivers.settings.margin_width / blocksize +local margin_elev = mapgen_rivers.settings.margin_elev local function margin(dem, width, elev) local X, Y = dem.X, dem.Y diff --git a/settings.lua b/settings.lua index 87f26fd..5eef795 100644 --- a/settings.lua +++ b/settings.lua @@ -74,6 +74,9 @@ mapgen_rivers.settings = { grid_x_size = def_setting('grid_x_size', 'number', 1000), grid_z_size = def_setting('grid_z_size', 'number', 1000), + margin = def_setting('margin', 'bool', true), + margin_width = def_setting('margin_width', 'number', 2000), + margin_elev = def_setting('margin_elev', 'number', -200), evol_params = { K = def_setting('river_erosion_coef', 'number', 0.5), m = def_setting('river_erosion_power', 'number', 0.4), diff --git a/settingtypes.txt b/settingtypes.txt index 455a6b0..7d266e9 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -17,6 +17,16 @@ mapgen_rivers_grid_x_size (Grid X size) int 1000 50 5000 # Actual size of the map is grid_z_size * blocksize mapgen_rivers_grid_z_size (Grid Z size) int 1000 50 5000 +# If margin is enabled, elevation becomes closer to a fixed value when approaching +# the edges of the map. +mapgen_rivers_margin (Margin) bool true + +# Width of the transition at map borders, in nodes +mapgen_rivers_margin_width (Margin width) float 2000.0 0.0 15000.0 + +# Elevation toward which to converge at map borders +mapgen_rivers_margin_elev (Margin elevation) float -200.0 -31000.0 31000.0 + # Minimal catchment area for a river to be drawn, in square nodes # Lower value means bigger river density mapgen_rivers_min_catchment (Minimal catchment area) float 3600.0 100.0 1000000.0