Files
OpenSpace/data/assets/util/generate_bookmarks.asset
T
2020-07-10 11:25:26 +02:00

86 lines
2.6 KiB
Plaintext

local assetHelper = asset.require('util/asset_helper')
local getBookmarks = function (guiPath, bookmarkfile)
local genBookmarks = {};
local notFirstLine = false;
local PARSEC_CONSTANT = 3.0856776E16;
for line in io.lines(openspace.absPath(bookmarkfile)) do
if (notFirstLine) then
local matchstring = '(.-),(.-),(.-),(.-),(.-),(.-),(.-),(.-),(.-),(.-),(.-)$'
local group, name, globe, lat, lon, altitude, x, y, z, scale, linewidth = line:match(matchstring)
scale = (scale == '' and 75000 or scale)
linewidth = (linewidth == '' and 2.0 or tonumber(linewidth))
group = (group == '' and globe or group)
local parent = (globe == '' and 'Root' or globe)
local sgn = {
Identifier = guiPath .. '-' .. name,
Parent = parent,
Transform = {
Scale = {
Type = 'StaticScale',
Scale = tonumber(scale);
},
Rotation = {
Type = "StaticRotation",
Rotation = {
-0.05487554, 0.4941095, -0.8676661,
-0.9938214 , -0.1109906, -0.0003515167,
-0.09647644, 0.8622859, 0.4971472
}
}
},
Renderable = {
Type = 'RenderableSphericalGrid',
Enabled = false,
Opacity = 0.3,
GridColor = { 0.3, 0.84, 1.0},
LineWidth = linewidth
},
GUI = {
Name = name,
Path = '/' .. guiPath
}
}
if (group ~= '') then
sgn.GUI.Path = sgn.GUI.Path .. '/' .. group
end
if (globe == '') then
sgn.Transform.Translation = {
Type = 'StaticTranslation',
Position = {
tonumber(x) * PARSEC_CONSTANT,
tonumber(y) * PARSEC_CONSTANT,
tonumber(z) * PARSEC_CONSTANT
}
}
else
sgn.Transform.Translation = {
Type = 'GlobeTranslation',
Globe = globe,
Latitude = tonumber(lat),
Longitude = tonumber(lon)
}
if (altitude == nil) then
sgn.Transform.Translation.UseHeightMap = true;
else
sgn.Transform.Translation.UseHeightMap = false;
sgn.Transform.Translation.Altitude = tonumber(altitude);
end
end
table.insert(genBookmarks, sgn);
else
notFirstLine = true
end
end
return genBookmarks
end
asset.export('getBookmarks', getBookmarks)