summaryrefslogtreecommitdiff
path: root/worldedit/queue.lua
diff options
context:
space:
mode:
authorAnthony Zhang <azhang9@gmail.com>2013-07-31 00:02:37 -0400
committerAnthony Zhang <azhang9@gmail.com>2013-07-31 00:02:37 -0400
commit3c51ec8c4a347a6714472c423215243fc538f5f5 (patch)
tree8e135060cff98b685a26f96682f0a1919822abe6 /worldedit/queue.lua
parent49b683f27f54bcdc636c018c7e6c1c4b4462b0bf (diff)
//pyramid works along any axis and backwards. Working //clearobjects and //cylinder command, begin implementing super marker. Remove EnvRef usages and the block queue (the block queue does not work with VoxelManips). More block emergers.
Diffstat (limited to 'worldedit/queue.lua')
-rw-r--r--worldedit/queue.lua123
1 files changed, 0 insertions, 123 deletions
diff --git a/worldedit/queue.lua b/worldedit/queue.lua
deleted file mode 100644
index e9f3ac3..0000000
--- a/worldedit/queue.lua
+++ /dev/null
@@ -1,123 +0,0 @@
-worldedit = worldedit or {}
-local minetest = minetest --local copy of global
-
-worldedit.queue = {}
-worldedit.lower = 1
-worldedit.higher = 0
-
-worldedit.ENABLE_QUEUE = true --enable the WorldEdit block queue
-worldedit.MAXIMUM_TIME = 0.08 --maximum time each step alloted for WorldEdit operations
-
-minetest.register_globalstep(function(dtime)
- local elapsed = 0
- local env = minetest.env
- while worldedit.lower <= worldedit.higher and elapsed <= worldedit.MAXIMUM_TIME do
- local entry = worldedit.queue[worldedit.lower]
- if entry.t == "set_node" then
- env:set_node(entry.pos, entry.node)
- elapsed = elapsed + 0.0002
- elseif entry.t == "remove_node" then
- env:remove_node(entry.pos)
- elapsed = elapsed + 0.0002
- elseif entry.t == "place_node" then
- env:place_node(entry.pos, entry.node)
- elapsed = elapsed + 0.001
- elseif entry.t == "dig_node" then
- env:dig_node(entry.pos)
- elapsed = elapsed + 0.001
- elseif entry.t == "add_entity" then
- env:add_entity(entry.pos, entry.name)
- elapsed = elapsed + 0.005
- elseif entry.t == "add_item" then
- env:add_item(entry.pos, entry.item)
- elapsed = elapsed + 0.005
- elseif entry.t == "meta_from_table" then
- env:get_meta(entry.pos):from_table(entry.table)
- elapsed = elapsed + 0.0002
- else
- print("Unknown queue event type: " .. entry.t)
- end
- worldedit.queue[worldedit.lower] = nil
- worldedit.lower = worldedit.lower + 1
- end
-end)
-
-worldedit.enqueue = function(value)
- worldedit.higher = worldedit.higher + 1
- worldedit.queue[worldedit.higher] = value
-end
-
-function table.copy(t, seen)
- seen = seen or {}
- if t == nil then return nil end
- if seen[t] then return seen[t] end
-
- local nt = {}
- for k, v in pairs(t) do
- if type(v) == 'table' then
- nt[k] = table.copy(v, seen)
- else
- nt[k] = v
- end
- end
- seen[t] = nt
- return nt
-end
-
-local queue_setnode = function(self, pos_, node_)
- worldedit.enqueue({pos=table.copy(pos_), node=table.copy(node_), t="set_node"})
-end
-
-local queue_removenode = function(self, pos_)
- worldedit.enqueue({pos=table.copy(pos_), t="remove_node"})
-end
-
-local queue_placenode = function(self, pos_, node_)
- worldedit.enqueue({pos=table.copy(pos_), node=table.copy(node_), t="place_node"})
-end
-
-local queue_dignode = function(self, pos_)
- worldedit.enqueue({pos=table.copy(pos_), t="dig_node"})
-end
-
-local queue_addentity = function(self, pos_, name_)
- worldedit.enqueue({pos=table.copy(pos_), name=name_.."", t="add_entity"})
-end
-
-local queue_additem = function(self, pos_, item_)
- worldedit.enqueue({pos=table.copy(pos_), item=item_.."", t="add_item"})
-end
-
-local queue_setmeta = function(self, pos_, table_)
- worldedit.enqueue({pos=table.copy(pos_), table=table.copy(table_), t="meta_from_table"})
-end
-
-local aliasmeta = {
--- the other functions are left out because they are not used in worldedit
- to_table = function(self) return minetest.env:get_meta(self._pos):to_table() end,
- set_string = function(self, name_, value_) minetest.env:get_meta(self._pos):set_string(name_, value_) end,
- from_table = function(self, tbl) queue_setmeta(nil, self._pos, tbl) end,
-}
-
-local get_meta_alias = function(self, pos)
- local am = table.copy(aliasmeta)
- am._pos = pos
- return am
-end
-
-worldedit.queue_aliasenv = {
--- ALL functions that are not just piped to the real minetest.env function must copy the arguments, not just reference them
- set_node = queue_setnode,
- add_node = queue_setnode,
- remove_node = queue_removenode,
- get_node = function(self, pos) return minetest.env:get_node(pos) end,
- get_node_or_nil = function(self, pos) return minetest.env:get_node_or_nil(pos) end,
- get_node_light = function(self, pos, timeofday) return minetest.env:get_node_light(pos, timeofday) end,
- place_node = queue_placenode,
- dig_node = queue_dignode,
- punch_node = function(self, pos) return minetest.env:punch_node(pos) end,
- get_meta = get_meta_alias,
- get_node_timer = function(self, pos) return minetest.env:get_node_timer(pos) end,
- add_entity = queue_addentity,
- add_item = queue_additem,
-}