mirror of
https://github.com/sbrl/Minetest-WorldEditAdditions.git
synced 2024-11-26 00:53:00 +00:00
It works!
This commit is contained in:
parent
008519177c
commit
d2f101e9dd
2 changed files with 20 additions and 10 deletions
|
@ -51,13 +51,13 @@ end
|
|||
|
||||
local function subdivide_step_beforeload(state)
|
||||
state.cpos.z = state.cpos.z - (state.chunk_size.z + 1)
|
||||
if state.cpos.z <= state.pos1.z then
|
||||
if state.cpos.z < state.pos1.z then
|
||||
state.cpos.z = state.pos2.z
|
||||
state.cpos.y = state.cpos.y - (state.chunk_size.y + 1)
|
||||
if state.cpos.y <= state.pos1.y then
|
||||
if state.cpos.y < state.pos1.y then
|
||||
state.cpos.y = state.pos2.y
|
||||
state.cpos.x = state.cpos.x - (state.chunk_size.x + 1)
|
||||
if state.cpos.x <= state.pos1.x then
|
||||
if state.cpos.x < state.pos1.x then
|
||||
subdivide_step_complete(state)
|
||||
return
|
||||
end
|
||||
|
@ -125,6 +125,7 @@ end
|
|||
-- @param {function} callback The callback to call upon completion.
|
||||
function worldeditadditions.subdivide(pos1, pos2, chunk_size, callback_subblock, callback_complete)
|
||||
pos1, pos2 = worldedit.sort_pos(pos1, pos2)
|
||||
local chunks_total = count_chunks(pos1, pos2, chunk_size)
|
||||
|
||||
chunk_size.x = chunk_size.x - 1 -- WorldEdit regions are inclusive
|
||||
chunk_size.y = chunk_size.y - 1 -- WorldEdit regions are inclusive
|
||||
|
@ -132,7 +133,8 @@ function worldeditadditions.subdivide(pos1, pos2, chunk_size, callback_subblock,
|
|||
|
||||
local state = {
|
||||
pos1 = pos1, pos2 = pos2,
|
||||
cpos = { x = pos2.x, y = pos2.y, z = pos2.z },
|
||||
-- Note that we start 1 over on the Z axis because we increment *before* calling the callback, so if we don't fiddle it here, we'll miss the first chunk
|
||||
cpos = { x = pos2.x, y = pos2.y, z = pos2.z + chunk_size.z + 1 },
|
||||
-- The size of a single subblock
|
||||
chunk_size = chunk_size,
|
||||
-- The total number of nodes in the defined region
|
||||
|
@ -153,7 +155,7 @@ function worldeditadditions.subdivide(pos1, pos2, chunk_size, callback_subblock,
|
|||
-- The percentage of the total time spent so far waiting for Minetest to emerge blocks. Updated every step.
|
||||
emerge_overhead = 0,
|
||||
-- The total number of chunks
|
||||
chunks_total = count_chunks(pos1, pos2, chunk_size),
|
||||
chunks_total = chunks_total,
|
||||
-- The number of chunks processed so far
|
||||
chunks_completed = 0,
|
||||
callback_subblock = callback_subblock,
|
||||
|
|
|
@ -22,8 +22,10 @@ end
|
|||
local function emerge_stats_tostring(tbl_emerge)
|
||||
local result = {}
|
||||
for key,value in pairs(tbl_emerge) do
|
||||
if value > 0 then
|
||||
table.insert(result, string.format("%s=%d", key, value))
|
||||
end
|
||||
end
|
||||
return table.concat(result, ", ")
|
||||
end
|
||||
|
||||
|
@ -99,6 +101,7 @@ worldedit.register_command("subdivide", {
|
|||
worldedit.player_notify_suppress(name)
|
||||
worldedit.pos1[name] = cpos1
|
||||
worldedit.pos2[name] = cpos2
|
||||
worldedit.marker_update(name)
|
||||
cmd.func(name, args)
|
||||
if will_trigger_saferegion(name, cmd_name, args) then
|
||||
minetest.chatcommands["/y"].func()
|
||||
|
@ -121,8 +124,12 @@ worldedit.register_command("subdivide", {
|
|||
time_last_msg = wea.get_ms_time()
|
||||
end
|
||||
end, function(_, _, stats)
|
||||
worldedit.pos1[name] = pos1
|
||||
worldedit.pos2[name] = pos2
|
||||
worldedit.marker_update(name)
|
||||
|
||||
-- Called on completion
|
||||
minetest.log("action", string.format("%s used //subdivide at %s - %s, with $d chunks and %d total nodes in %s",
|
||||
minetest.log("action", string.format("%s used //subdivide at %s - %s, with %d chunks and %d total nodes in %s",
|
||||
name,
|
||||
wea.vector.tostring(pos1),
|
||||
wea.vector.tostring(pos2),
|
||||
|
@ -130,15 +137,16 @@ worldedit.register_command("subdivide", {
|
|||
stats.volume_nodes,
|
||||
wea.human_time(stats.times.total)
|
||||
))
|
||||
return true, string.format(
|
||||
worldedit.player_notify(name, string.format(
|
||||
"%sComplete: %d chunks processed in %s (%.2f%% emerge overhead, emerge totals: %s)",
|
||||
msg_prefix,
|
||||
stats.chunks_completed,
|
||||
wea.human_time(stats.time.total),
|
||||
wea.human_time(stats.times.total),
|
||||
stats.emerge_overhead * 100,
|
||||
emerge_stats_tostring(stats.emerge)
|
||||
)
|
||||
))
|
||||
end)
|
||||
|
||||
return true
|
||||
end
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue