From 5be0ee97fb5489dc951e44e3a9cb2841dbe88fd2 Mon Sep 17 00:00:00 2001 From: binarycat Date: Sun, 17 Dec 2023 15:36:40 -0500 Subject: [PATCH] add fifo_queue.add_list() and use it to eliminate an inner loop --- mesecons/fifo_queue.lua | 5 +++++ mesecons_mvps/init.lua | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/mesecons/fifo_queue.lua b/mesecons/fifo_queue.lua index a71c71b..b1c50c2 100644 --- a/mesecons/fifo_queue.lua +++ b/mesecons/fifo_queue.lua @@ -20,6 +20,11 @@ function fifo_queue.add(self, v) self.buf_in[n] = v end +-- add several elements to the queue +function fifo_queue.add_list(self, v) + table.move(v, 1, #v, self.n_in + 1, self.buf_in) + self.n_in = self.n_in + #v +end -- removes and returns the next element, or nil of empty function fifo_queue.take(self) local i_out = self.i_out diff --git a/mesecons_mvps/init.lua b/mesecons_mvps/init.lua index 78ac9fe..739d779 100644 --- a/mesecons_mvps/init.lua +++ b/mesecons_mvps/init.lua @@ -85,9 +85,10 @@ function mesecon.mvps_get_stack(pos, dir, maximum, all_pull_sticky) if minetest.registered_nodes[nn.name] and minetest.registered_nodes[nn.name].mvps_sticky then local connected = minetest.registered_nodes[nn.name].mvps_sticky(np, nn) - for _, cp in ipairs(connected) do + frontiers:add_list(connected) + --[[for _, cp in ipairs(connected) do frontiers:add(cp) - end + end]] end frontiers:add(vector.add(np, dir))