Actually call the mvps callback
authorNovatux <nathanael.courant@laposte.net>
Fri, 3 Jan 2014 14:19:43 +0000 (15:19 +0100)
committerNovatux <nathanael.courant@laposte.net>
Sat, 18 Jan 2014 12:29:06 +0000 (13:29 +0100)
technic/machines/other/frames.lua

index 7b7059e8e605f00110e48d07c62a842eac6299d2..b3a179b900cd52510cbc19e0055938714e034fc7 100644 (file)
@@ -79,14 +79,14 @@ local function table_empty(table)
 end
 
 local function add_table(table,toadd)
-       local i=1
+       local i = 1
        while true do
-               o=table[i]
-               if o==toadd then return end
-               if o==nil then break end
-               i=i+1
+               o = table[i]
+               if o == toadd then return end
+               if o == nil then break end
+               i = i+1
        end
-       table[i]=toadd
+       table[i] = toadd
 end
 
 local function move_nodes_vect(poslist,vect,must_not_move,owner)
@@ -108,49 +108,42 @@ local function move_nodes_vect(poslist,vect,must_not_move,owner)
                        return
                end]]
        end
-       nodelist={}
-       frameslist = {}
-       for _,pos in ipairs(poslist) do
-               local node=minetest.get_node(pos)
-               local meta=minetest.get_meta(pos):to_table()
-               nodelist[#(nodelist)+1]={pos=pos,node=node,meta=meta}
-               if frames_pos[pos_to_string(pos)] then
-                       frameslist[#frameslist+1] = {pos=pos, name=frames_pos[pos_to_string(pos)]}
-                       frames_pos[pos_to_string(pos)] = nil
-               end
+       local nodelist = {}
+       for _, pos in ipairs(poslist) do
+               local node = minetest.get_node(pos)
+               local meta = minetest.get_meta(pos):to_table()
+               nodelist[#(nodelist)+1] = {oldpos = pos, pos = vector.add(pos, vect), node = node, meta = meta}
        end
-       objects={}
-       for _,pos in ipairs(poslist) do
+       local objects = {}
+       for _, pos in ipairs(poslist) do
                for _,object in ipairs(minetest.get_objects_inside_radius(pos, 1)) do
-                       add_table(objects,object)
-               end
-       end
-       for _,obj in ipairs(objects) do
-               obj:setpos(vector.add(obj:getpos(),vect))
-               le=obj:get_luaentity()
-               if le and le.name == "pipeworks:tubed_item" then
-                       le.start_pos=vector.add(le.start_pos,vect)
+                       local entity = object:get_luaentity()
+                       if not entity or not mesecon:is_mvps_unmov(entity.name) then
+                               add_table(objects, object)
+                       end
                end
        end
-       for _, n in ipairs(frameslist) do
-               local npos=vector.add(n.pos,vect)
-               frames_pos[pos_to_string(npos)] = n.name
+       for _, obj in ipairs(objects) do
+               obj:setpos(vector.add(obj:getpos(), vect))
        end
        for _,n in ipairs(nodelist) do
-               local npos=vector.add(n.pos,vect)
-               minetest.set_node(npos,n.node)
-               local meta=minetest.get_meta(npos)
+               local npos = n.pos
+               minetest.set_node(npos, n.node)
+               local meta = minetest.get_meta(npos)
                meta:from_table(n.meta)
                for __,pos in ipairs(poslist) do
-                       if npos.x==pos.x and npos.y==pos.y and npos.z==pos.z then
+                       if npos.x == pos.x and npos.y == pos.y and npos.z == pos.z then
                                table.remove(poslist, __)
                                break
                        end
                end
        end
-       for __,pos in ipairs(poslist) do
+       for __, pos in ipairs(poslist) do
                minetest.remove_node(pos)
        end
+       for _, callback in ipairs(mesecon.on_mvps_move) do
+               callback(nodelist)
+       end
 end
 
 local function is_supported_node(name)