worldedit.marker2 = {}\r
worldedit.marker_region = {}\r
\r
+local init_sentinel = "new" .. tostring(math.random(99999))\r
+\r
--marks worldedit region position 1\r
worldedit.mark_pos1 = function(name, region_too)\r
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]\r
\r
- if pos1 ~= nil then\r
- --make area stay loaded\r
- local manip = minetest.get_voxel_manip()\r
- manip:read_from_map(pos1, pos1)\r
- end\r
if worldedit.marker1[name] ~= nil then --marker already exists\r
worldedit.marker1[name]:remove() --remove marker\r
worldedit.marker1[name] = nil\r
end\r
if pos1 ~= nil then\r
+ --make area stay loaded\r
+ local manip = minetest.get_voxel_manip()\r
+ manip:read_from_map(pos1, pos1)\r
+\r
--add marker\r
- worldedit.marker1[name] = minetest.add_entity(pos1, "worldedit:pos1")\r
+ worldedit.marker1[name] = minetest.add_entity(pos1, "worldedit:pos1", init_sentinel)\r
if worldedit.marker1[name] ~= nil then\r
worldedit.marker1[name]:get_luaentity().player_name = name\r
end\r
worldedit.mark_pos2 = function(name, region_too)\r
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]\r
\r
- if pos2 ~= nil then\r
- --make area stay loaded\r
- local manip = minetest.get_voxel_manip()\r
- manip:read_from_map(pos2, pos2)\r
- end\r
if worldedit.marker2[name] ~= nil then --marker already exists\r
worldedit.marker2[name]:remove() --remove marker\r
worldedit.marker2[name] = nil\r
end\r
if pos2 ~= nil then\r
+ --make area stay loaded\r
+ local manip = minetest.get_voxel_manip()\r
+ manip:read_from_map(pos2, pos2)\r
+\r
--add marker\r
- worldedit.marker2[name] = minetest.add_entity(pos2, "worldedit:pos2")\r
+ worldedit.marker2[name] = minetest.add_entity(pos2, "worldedit:pos2", init_sentinel)\r
if worldedit.marker2[name] ~= nil then\r
worldedit.marker2[name]:get_luaentity().player_name = name\r
end\r
local pos1, pos2 = worldedit.pos1[name], worldedit.pos2[name]\r
\r
if worldedit.marker_region[name] ~= nil then --marker already exists\r
- --wip: make the area stay loaded somehow\r
for _, entity in ipairs(worldedit.marker_region[name]) do\r
entity:remove()\r
end\r
\r
--XY plane markers\r
for _, z in ipairs({pos1.z - 0.5, pos2.z + 0.5}) do\r
- local marker = minetest.add_entity({x=pos1.x + sizex - 0.5, y=pos1.y + sizey - 0.5, z=z}, "worldedit:region_cube")\r
+ local entpos = {x=pos1.x + sizex - 0.5, y=pos1.y + sizey - 0.5, z=z}\r
+ local marker = minetest.add_entity(entpos, "worldedit:region_cube", init_sentinel)\r
if marker ~= nil then\r
marker:set_properties({\r
visual_size={x=sizex * 2, y=sizey * 2},\r
\r
--YZ plane markers\r
for _, x in ipairs({pos1.x - 0.5, pos2.x + 0.5}) do\r
- local marker = minetest.add_entity({x=x, y=pos1.y + sizey - 0.5, z=pos1.z + sizez - 0.5}, "worldedit:region_cube")\r
+ local entpos = {x=x, y=pos1.y + sizey - 0.5, z=pos1.z + sizez - 0.5}\r
+ local marker = minetest.add_entity(entpos, "worldedit:region_cube", init_sentinel)\r
if marker ~= nil then\r
marker:set_properties({\r
visual_size={x=sizez * 2, y=sizey * 2},\r
"worldedit_pos1.png", "worldedit_pos1.png"},\r
collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},\r
physical = false,\r
+ static_save = false,\r
},\r
- on_step = function(self, dtime)\r
- if worldedit.marker1[self.player_name] == nil then\r
+ on_activate = function(self, staticdata, dtime_s)\r
+ if staticdata ~= init_sentinel then\r
+ -- we were loaded from before static_save = false was added\r
self.object:remove()\r
end\r
end,\r
"worldedit_pos2.png", "worldedit_pos2.png"},\r
collisionbox = {-0.55, -0.55, -0.55, 0.55, 0.55, 0.55},\r
physical = false,\r
+ static_save = false,\r
},\r
- on_step = function(self, dtime)\r
- if worldedit.marker2[self.player_name] == nil then\r
+ on_activate = function(self, staticdata, dtime_s)\r
+ if staticdata ~= init_sentinel then\r
+ -- we were loaded from before static_save = false was added\r
self.object:remove()\r
end\r
end,\r
textures = {"worldedit_cube.png"},\r
visual_size = {x=10, y=10},\r
physical = false,\r
+ static_save = false,\r
},\r
- on_step = function(self, dtime)\r
- if worldedit.marker_region[self.player_name] == nil then\r
+ on_activate = function(self, staticdata, dtime_s)\r
+ if staticdata ~= init_sentinel then\r
+ -- we were loaded from before static_save = false was added\r
self.object:remove()\r
- return\r
end\r
end,\r
on_punch = function(self, hitter)\r