Files
OpenSpace/data/assets/util/generate_bookmarks.asset
T
2020-01-26 09:13:48 -05:00

81 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, linewitdh = line:match(matchstring)
scale = (scale == '' and 75000 or scale)
linewitdh = (linewitdh == '' and 2.0 or tonumber(linewitdh))
group = (group == "" and globe or group)
local parent = (globe == "" and 'Root' or globe)
local sgn = {
Identifier = guiPath .. "-" .. name,
Parent = parent,
Transform = {
Translation = {
},
Scale = {
Type = "StaticScale",
Scale = tonumber(scale);
}
},
Renderable = {
Type = "RenderableSphericalGrid",
Enabled = false,
GridColor = { 0.3, 0.84, 1.0, 0.3},
LineWidth = linewitdh,
GridMatrix = { -0.05487554, 0.4941095, -0.8676661 , 0.0,
-0.9938214 , -0.1109906, -0.0003515167, 0.0,
-0.09647644, 0.8622859, 0.4971472 , 0.0,
0.0 , 0.0 , 0.0 , 1.0 }
},
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)