70 lines
2.2 KiB
Lua
70 lines
2.2 KiB
Lua
|
|
local grid = {
|
||
|
|
|
||
|
|
--render = function(items)
|
||
|
|
-- local jml = ''
|
||
|
|
-- local gridsize = tonumber( app.opts.plugin_openbrush_layout_grid_size )
|
||
|
|
-- for i,v in pairs(items) do
|
||
|
|
-- local url = v.redirect and v.redirect or v.url
|
||
|
|
-- local pos = {x=0,y=0,z=0}
|
||
|
|
-- local posStr = pos.x .. ' ' .. pos.y .. ' ' .. pos.z
|
||
|
|
-- jml = jml .. ' <link url="' .. url .. '" url_pos="' .. posStr .. '" url_scale="1 1 1" auto_load="true"/>\n'
|
||
|
|
-- end
|
||
|
|
-- return jml
|
||
|
|
--end
|
||
|
|
|
||
|
|
render = function(items)
|
||
|
|
local jml = ''
|
||
|
|
-- Distance between items in meters. gridsize = 5 means 5m x 5m spacing.
|
||
|
|
local gridsize = tonumber(app.opts.plugin_openbrush_layout_grid_size) or 5
|
||
|
|
-- Square spiral: Start at (0, 0) right, up, left, down, increasing the step length
|
||
|
|
local x = 0
|
||
|
|
local z = 0
|
||
|
|
local dx = 1
|
||
|
|
local dz = 0
|
||
|
|
local steps = 1
|
||
|
|
local stepsTaken = 0
|
||
|
|
local turns = 0
|
||
|
|
local index = 0
|
||
|
|
for i, v in pairs(items) do
|
||
|
|
local url = v.redirect and v.redirect or v.url
|
||
|
|
-- Position current item
|
||
|
|
local pos = {
|
||
|
|
x = v.title:match("#overlay") and 0 or x * gridsize,
|
||
|
|
y = 0,
|
||
|
|
z = v.title:match("#overlay") and 0 or z * gridsize
|
||
|
|
}
|
||
|
|
local posStr = pos.x .. ' ' .. pos.y .. ' ' .. pos.z
|
||
|
|
local is_nested_room = false
|
||
|
|
if is_nested_room then
|
||
|
|
jml = jml .. ' <link url="' .. url .. '" url_pos="' .. posStr
|
||
|
|
.. '" url_scale="1 1 1" auto_load="true"/>\n'
|
||
|
|
else
|
||
|
|
jml = jml .. ' <object id="' .. url .. '" pos="' .. posStr .. '"/>\n'
|
||
|
|
end
|
||
|
|
index = index + 1
|
||
|
|
-- Move to next position in the spiral
|
||
|
|
if index < #items then
|
||
|
|
x = x + dx
|
||
|
|
z = z + dz
|
||
|
|
stepsTaken = stepsTaken + 1
|
||
|
|
if stepsTaken == steps then
|
||
|
|
stepsTaken = 0
|
||
|
|
-- Rotate clockwise: right -> up -> left -> down
|
||
|
|
local oldDx = dx
|
||
|
|
dx = -dz
|
||
|
|
dz = oldDx
|
||
|
|
turns = turns + 1
|
||
|
|
-- Increase the length after every second turn
|
||
|
|
if turns % 2 == 0 then
|
||
|
|
steps = steps + 1
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
return jml
|
||
|
|
end
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
return grid
|