Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tuxilio/ledtree
  • codecraft/ledtree
2 results
Show changes
Commits on Source (3)
local size = 50 -- NUR DURCH 4 TEILBARE ZAHLEN > 20 VERWENDEN!!!
local leds = {
64,
56,
48,
36,
20,
}
for i = 1, #leds do
if leds[i] % 4 ~= 0 then
error("[ledtree] led count per layer must be divisible by 4. Error location: 'leds' table, item "..i..": "..leds[i])
end
if leds[i] < 20 then
error("[ledtree] led count per layer must be greater than or qual to 20. Error location: 'leds' table, item "..i..": "..leds[i])
end
end
local height_increment = 3 local height_increment = 3
local function place_tree(pos) local function breite(n)
local set = {} return n / 4
local iled = 0 end
for iy = 0, size - 1 do
for ix = iy, size - 1 - iy do
for iz = iy, size - 1 - iy do
for h = 0, height_increment - 1 do
table.insert(set, {x = pos.x + ix, y = pos.y + iy * height_increment + h, z = pos.z + iz})
iled = iled + 1
local function is_led(center, breite, pos)
if math.abs(center.x - pos.x) >= (breite - 1) / 2 and math.abs(center.z - pos.z) >= (breite - 1) / 2 then
return false
end
if math.abs(center.x - pos.x) == (breite - 1) / 2 then
return math.abs(center.z - pos.z) % 2 == 0
end
if math.abs(center.z - pos.z) == (breite - 1) / 2 then
return math.abs(center.x - pos.x) % 2 == 0
end
end
local function place_layer(center, breite)
breite = breite * 2 + 1
local needles = {}
local leds = {}
local max_offset = math.floor(breite / 2)
for y = math.ceil(-height_increment / 2), math.floor(height_increment / 2) do
for x = -max_offset, max_offset do
for z = -max_offset, max_offset do
local pos = vector.new({x = center.x + x, y = center.y + y, z = center.z + z})
table.insert(needles, pos)
if y == 0 and is_led(center, breite, pos) then
table.insert(leds, pos)
end end
end end
end end
end end
minetest.bulk_set_node(set, {name = "ledtree:pine_needles"}) core.bulk_set_node(needles, {name = "ledtree:pine_needles"})
return leds
end
local function place_leds(led_index, leds)
for i = 1, #leds do
core.set_node(leds[i], {name = "ledtree:led"..led_index.."_red"})
led_index = led_index + 1
end
return led_index
end
local function place_tree(pos)
local led_index = 0
for index = 1, #leds do
local l = leds[index]
local layer_center = vector.new(pos.x, pos.y + index * height_increment - height_increment / 2, pos.z)
local leds = place_layer(layer_center, breite(l))
led_index = place_leds(led_index, leds)
end
end end
core.register_node("ledtree:ledtree", { core.register_node("ledtree:ledtree", {
......