From: Cy Date: Thu, 10 Jul 2014 06:50:41 +0000 (-0700) Subject: CPS-ifying stack X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=f5b67c5bc2de047ec322c5e284bafe00becc84b1;p=worldedit.git CPS-ifying stack Continuation Passing Style lets me use minetest.after, so the server gets a chance to not hang in between every stack iteration. Could even set minetest.after(1000,nextone) if you want to see it extend once every second. --- diff --git a/worldedit/manipulations.lua b/worldedit/manipulations.lua index a80de8f..2fa9a1e 100644 --- a/worldedit/manipulations.lua +++ b/worldedit/manipulations.lua @@ -420,13 +420,19 @@ worldedit.stack = function(pos1, pos2, axis, count) if count < 0 then count = -count length = -length - end - local amount = 0 - local copy = worldedit.copy - for i = 1, count do - amount = amount + length - copy(pos1, pos2, axis, amount) - end + end + local amount = 0 + local copy = worldedit.copy + local i = 1 + function nextone() + if i <= count then + i = i + 1 + amount = amount + length + copy(pos1, pos2, axis, amount) + minetest.after(0,nextone) + end + end + nextone() return worldedit.volume(pos1, pos2) * count end