mirror of
https://gitlab.com/gaelysam/mapgen_rivers.git
synced 2025-02-22 06:50:29 +01:00
Made interactive loading optional but enabled by default
This commit is contained in:
parent
7e39189368
commit
32bc9561b6
3
load.lua
3
load.lua
@ -64,6 +64,9 @@ local loader_mt = {
|
|||||||
function mapgen_rivers.interactive_loader(filename, bytes, signed, size, converter)
|
function mapgen_rivers.interactive_loader(filename, bytes, signed, size, converter)
|
||||||
local file = io.open(worldpath .. filename, 'rb')
|
local file = io.open(worldpath .. filename, 'rb')
|
||||||
if file then
|
if file then
|
||||||
|
minetest.register_on_shutdown(function()
|
||||||
|
file:close()
|
||||||
|
end)
|
||||||
converter = converter or false
|
converter = converter or false
|
||||||
return setmetatable({file=file, bytes=bytes, signed=signed, size=size, conv=converter}, loader_mt)
|
return setmetatable({file=file, bytes=bytes, signed=signed, size=size, conv=converter}, loader_mt)
|
||||||
end
|
end
|
||||||
|
50
polygons.lua
50
polygons.lua
@ -18,33 +18,59 @@ local function offset_converter(o)
|
|||||||
return (o + 0.5) * (1/256)
|
return (o + 0.5) * (1/256)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local load_all = mapgen_rivers.settings.load_all
|
||||||
|
|
||||||
-- Try to read file 'size'
|
-- Try to read file 'size'
|
||||||
local sfile = io.open(world_data_path..'size', 'r')
|
local sfile = io.open(world_data_path..'size', 'r')
|
||||||
|
local first_mapgen = true
|
||||||
if sfile then
|
if sfile then
|
||||||
X, Z = tonumber(sfile:read('*l')), tonumber(sfile:read('*l'))
|
X, Z = tonumber(sfile:read('*l')), tonumber(sfile:read('*l'))
|
||||||
sfile:close()
|
sfile:close()
|
||||||
|
first_mapgen = false
|
||||||
|
end
|
||||||
|
|
||||||
minetest.register_on_mods_loaded(function()
|
if first_mapgen then
|
||||||
local grid = mapgen_rivers.grid
|
|
||||||
grid.dem = mapgen_rivers.interactive_loader('dem', 2, true, X*Z)
|
|
||||||
grid.lakes = mapgen_rivers.interactive_loader('lakes', 2, true, X*Z)
|
|
||||||
grid.dirs = mapgen_rivers.interactive_loader('dirs', 1, false, X*Z)
|
|
||||||
grid.rivers = mapgen_rivers.interactive_loader('rivers', 4, false, X*Z)
|
|
||||||
|
|
||||||
grid.offset_x = mapgen_rivers.interactive_loader('offset_x', 1, true, X*Z, offset_converter)
|
|
||||||
grid.offset_y = mapgen_rivers.interactive_loader('offset_y', 1, true, X*Z, offset_converter)
|
|
||||||
end)
|
|
||||||
else
|
|
||||||
-- Generate a map!!
|
-- Generate a map!!
|
||||||
local pregenerate = dofile(mapgen_rivers.modpath .. '/pregenerate.lua')
|
local pregenerate = dofile(mapgen_rivers.modpath .. '/pregenerate.lua')
|
||||||
minetest.register_on_mods_loaded(function()
|
minetest.register_on_mods_loaded(function()
|
||||||
pregenerate()
|
print('Generating grid')
|
||||||
|
pregenerate(load_all)
|
||||||
|
|
||||||
|
if load_all then
|
||||||
local offset_x = mapgen_rivers.grid.offset_x
|
local offset_x = mapgen_rivers.grid.offset_x
|
||||||
local offset_y = mapgen_rivers.grid.offset_y
|
local offset_y = mapgen_rivers.grid.offset_y
|
||||||
for i=1, X*Z do
|
for i=1, X*Z do
|
||||||
offset_x[i] = offset_converter(offset_x[i])
|
offset_x[i] = offset_converter(offset_x[i])
|
||||||
offset_y[i] = offset_converter(offset_y[i])
|
offset_y[i] = offset_converter(offset_y[i])
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- if data not already loaded
|
||||||
|
if not (first_mapgen and load_all) then
|
||||||
|
local load_map
|
||||||
|
if load_all then
|
||||||
|
load_map = mapgen_rivers.load_map
|
||||||
|
else
|
||||||
|
load_map = mapgen_rivers.interactive_loader
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_mods_loaded(function()
|
||||||
|
if load_all then
|
||||||
|
print('Loading full grid')
|
||||||
|
else
|
||||||
|
print('Loading grid as interactive loaders')
|
||||||
|
end
|
||||||
|
local grid = mapgen_rivers.grid
|
||||||
|
|
||||||
|
grid.dem = load_map('dem', 2, true, X*Z)
|
||||||
|
grid.lakes = load_map('lakes', 2, true, X*Z)
|
||||||
|
grid.dirs = load_map('dirs', 1, false, X*Z)
|
||||||
|
grid.rivers = load_map('rivers', 4, false, X*Z)
|
||||||
|
|
||||||
|
grid.offset_x = load_map('offset_x', 1, true, X*Z, offset_converter)
|
||||||
|
grid.offset_y = load_map('offset_y', 1, true, X*Z, offset_converter)
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ local time_step = mapgen_rivers.settings.evol_time_step
|
|||||||
local niter = math.ceil(time/time_step)
|
local niter = math.ceil(time/time_step)
|
||||||
time_step = time / niter
|
time_step = time / niter
|
||||||
|
|
||||||
local function pregenerate()
|
local function pregenerate(keep_loaded)
|
||||||
local grid = mapgen_rivers.grid
|
local grid = mapgen_rivers.grid
|
||||||
local size = grid.size
|
local size = grid.size
|
||||||
|
|
||||||
@ -66,12 +66,14 @@ local function pregenerate()
|
|||||||
sfile:write(size.x..'\n'..size.y)
|
sfile:write(size.x..'\n'..size.y)
|
||||||
sfile:close()
|
sfile:close()
|
||||||
|
|
||||||
|
if keep_loaded then
|
||||||
grid.dem = model.dem
|
grid.dem = model.dem
|
||||||
grid.lakes = model.lakes
|
grid.lakes = model.lakes
|
||||||
grid.dirs = model.dirs
|
grid.dirs = model.dirs
|
||||||
grid.rivers = model.rivers
|
grid.rivers = model.rivers
|
||||||
grid.offset_x = offset_x
|
grid.offset_x = offset_x
|
||||||
grid.offset_y = offset_y
|
grid.offset_y = offset_y
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return pregenerate
|
return pregenerate
|
||||||
|
@ -61,6 +61,8 @@ mapgen_rivers.settings = {
|
|||||||
tectonic_speed = def_setting('tectonic_speed', 'number', 70),
|
tectonic_speed = def_setting('tectonic_speed', 'number', 70),
|
||||||
evol_time = def_setting('evol_time', 'number', 10),
|
evol_time = def_setting('evol_time', 'number', 10),
|
||||||
evol_time_step = def_setting('evol_time_step', 'number', 1),
|
evol_time_step = def_setting('evol_time_step', 'number', 1),
|
||||||
|
|
||||||
|
load_all = mtsettings:get_bool('mapgen_rivers_load_all')
|
||||||
}
|
}
|
||||||
|
|
||||||
local function write_settings()
|
local function write_settings()
|
||||||
|
@ -46,6 +46,11 @@ mapgen_rivers_glacier_widening_factor (Glacier widening factor) float 8.0 1.0 20
|
|||||||
# This results in mountains being more covered by snow.
|
# This results in mountains being more covered by snow.
|
||||||
mapgen_rivers_elevation_chill (Elevation chill) float 0.25 0.0 5.0
|
mapgen_rivers_elevation_chill (Elevation chill) float 0.25 0.0 5.0
|
||||||
|
|
||||||
|
# If enabled, loads all grid data in memory at init time.
|
||||||
|
# If disabled, data will be loaded on request and cached in memory.
|
||||||
|
# It's recommended to disable it for very large maps (> 2000 grid nodes or so)
|
||||||
|
mapgen_rivers_load_all (Load all data in memory) bool false
|
||||||
|
|
||||||
[Landscape evolution parameters]
|
[Landscape evolution parameters]
|
||||||
|
|
||||||
# Modelled landscape evolution time, in arbitrary units
|
# Modelled landscape evolution time, in arbitrary units
|
||||||
|
Loading…
x
Reference in New Issue
Block a user