Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions api.async.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@

mapsync = {
async_env = true
}

function mapsync.select_backend(chunk_pos)
return minetest.ipc_get("mapsync:backend")
end
10 changes: 9 additions & 1 deletion api.lua
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,14 @@ function mapsync.register_backend(name, backend_def)

-- register
backends[name] = backend_def
if minetest.ipc_set then
-- register async
minetest.ipc_set("mapsync:backend", {
type = backend_def.type,
name = backend_def.name,
path = backend_def.path
})
end
end

-- unregisters a backend
Expand Down Expand Up @@ -64,4 +72,4 @@ end

function mapsync.get_data_backend()
return data_backend_def
end
end
1 change: 0 additions & 1 deletion data.spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ mtt.register("data", function(callback)
assert(mapsync.get_data_file("myfile2.txt", "w"))

-- write to data file
assert(not mapsync.get_data_file("myfile3.txt"))
local f = mapsync.get_data_file("myfile3.txt", "w")
assert(f)
f:write("stuff")
Expand Down
4 changes: 2 additions & 2 deletions deserialize_chunk.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
local global_env = ...
local global_env = ... or _G

local param1, param2, node_data

Expand Down Expand Up @@ -70,4 +70,4 @@ function mapsync.get_key_manifest(filename)
return false, m_err_msg
end
return minetest.parse_json(key_str)
end
end
23 changes: 20 additions & 3 deletions init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,24 @@ dofile(MP.."/auto_update.lua")
dofile(MP.."/save.lua")
loadfile(MP.."/data.lua")(global_env)
dofile(MP.."/load.lua")
dofile(MP.."/mapgen.lua")

if not minetest.register_mapgen_script then
-- sync mapgen
dofile(MP.."/mapgen.lua")
else
-- async mapgen
minetest.register_mapgen_script(MP.."/api.async.lua")
minetest.register_mapgen_script(MP.."/pos_iterator.lua")
minetest.register_mapgen_script(MP.."/encoding.lua")
minetest.register_mapgen_script(MP.."/functions.lua")
minetest.register_mapgen_script(MP.."/mapgen.async.lua")

minetest.register_mapgen_script(MP.."/load.lua")
minetest.register_mapgen_script(MP.."/parse_chunk.lua")
minetest.register_mapgen_script(MP.."/deserialize_chunk.lua")
minetest.register_mapgen_script(MP.."/deserialize_mapblock.lua")
minetest.register_mapgen_script(MP.."/localize_nodeids.lua")
end

-- hud stuff
dofile(MP.."/hud.lua")
Expand Down Expand Up @@ -69,9 +86,9 @@ end

-- testing
if minetest.get_modpath("mtt") and mtt.enabled then
dofile(MP.."/init.spec.lua")
dofile(MP.."/functions.spec.lua")
dofile(MP.."/data.spec.lua")
dofile(MP.."/api.spec.lua")
dofile(MP.."/serialize_chunk.spec.lua")
end
dofile(MP.."/mapgen.spec.lua")
end
2 changes: 0 additions & 2 deletions init.spec.lua

This file was deleted.

16 changes: 16 additions & 0 deletions mapgen.async.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
minetest.register_on_generated(function(vmanip, minp)
local chunk_pos = mapsync.get_chunkpos(minp)

local t1 = minetest.get_us_time()
mapsync.load(chunk_pos, vmanip)
local t2 = minetest.get_us_time()

local micros = t2 - t1
if micros > 0 then
-- log slow chunks
minetest.log(
"action",
"[mapsync] async emerge of " .. minetest.pos_to_string(chunk_pos) .. " took " .. micros .. " us"
)
end
end)
2 changes: 1 addition & 1 deletion mapgen.lua
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ minetest.register_on_generated(function(minp)
"[mapsync] emerge of " .. minetest.pos_to_string(chunk_pos) .. " took " .. micros .. " us"
)
end
end)
end)
18 changes: 18 additions & 0 deletions mapgen.spec.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
local BACKEND_NAME = "test-mapgen-backend"

mtt.register("mapgen-test (register)", function(callback)
-- backend for mapgen test
mapsync.register_backend(BACKEND_NAME, {
type = "fs",
path = minetest.get_modpath("mapsync") .. "/test/map"
})
callback()
end)

local pos = { x=0, y=0, z=0 }
mtt.emerge_area(pos, pos)

mtt.register("mapgen-test (unregister)", function(callback)
mapsync.unregister_backend(BACKEND_NAME)
callback()
end)
4 changes: 2 additions & 2 deletions parse_chunk.lua
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
local global_env = ...
local global_env = ... or _G

-- local vars for faster access
local insert, byte, decode_uint16 = table.insert, string.byte, mapsync.decode_uint16
Expand Down Expand Up @@ -65,4 +65,4 @@ function mapsync.parse_chunk(filename)
end

return chunk
end
end
Binary file added test/map/chunk_(0,0,0).zip
Binary file not shown.