Adjust restore visual lbm, Add new drawers.remove_visuals

This commit is contained in:
LNJ 2017-04-05 12:01:23 +02:00
parent a53dac2929
commit 768edb4d09
No known key found for this signature in database
GPG Key ID: 69268DBD835B6B0B
3 changed files with 25 additions and 14 deletions

@ -59,20 +59,12 @@ function drawers.drawer_on_construct(pos)
i = i + 1
end
drawers.spawn_visual(pos)
drawers.spawn_visuals(pos)
end
-- destruct drawer
function drawers.drawer_on_destruct(pos)
local objs = core.get_objects_inside_radius(pos, 0.537)
if not objs then return end
for _, obj in pairs(objs) do
if obj and obj:get_luaentity() and
obj:get_luaentity().name == "drawers:visual" then
obj:remove()
end
end
drawers.remove_visuals(pos)
end
-- drop all items

@ -66,7 +66,7 @@ function drawers.get_inv_image(name)
return texture
end
function drawers.spawn_visual(pos)
function drawers.spawn_visuals(pos)
local node = core.get_node(pos)
local ndef = core.registered_nodes[node.name]
local drawerType = ndef.groups.drawer
@ -150,6 +150,18 @@ function drawers.spawn_visual(pos)
end
end
function drawers.remove_visuals(pos)
local objs = core.get_objects_inside_radius(pos, 0.537)
if not objs then return end
for _, obj in pairs(objs) do
if obj and obj:get_luaentity() and
obj:get_luaentity().name == "drawers:visual" then
obj:remove()
end
end
end
function drawers.randomize_pos(pos)
local rndpos = table.copy(pos)
local x = math.random(-50, 50) * 0.01

@ -260,17 +260,24 @@ core.register_lbm({
nodenames = {"group:drawer"},
run_at_every_load = true,
action = function(pos, node)
local drawerType = core.registered_nodes[node.name].groups.drawer
local foundVisuals = 0
local objs = core.get_objects_inside_radius(pos, 0.537)
if objs then
for _, obj in pairs(objs) do
if obj and obj:get_luaentity() and
obj:get_luaentity().name == "drawers:visual" then
return
foundVisuals = foundVisuals + 1
end
end
end
-- if all drawer visuals were found, return
if foundVisuals == drawerType then
return
end
-- no visual found, create a new one
drawers.spawn_visual(pos)
-- not enough visuals found, remove existing and create new ones
drawers.remove_visuals(pos)
drawers.spawn_visuals(pos)
end
})