Files
OpenSpace/modules/globebrowsing/scripts/node_support.lua
2024-07-16 12:27:03 +02:00

66 lines
3.2 KiB
Lua

openspace.globebrowsing.documentation = {
{
Name = "setNodePosition",
Arguments = {
{ "nodeIdentifer", "String" },
{ "globeIdentifier", "String" },
{ "latitude", "Number" },
{ "longitude", "Number" },
{ "altitude", "Number" }
},
Documentation = [[
Sets the position of a SceneGraphNode that has GlobeTranslation/GlobeRotations.
Usage:
openspace.globebrowsing.setNodePosition(
"Scale_StatueOfLiberty", "Earth", 40.000, -117.5, optionalAltitude
)
]]
},
{
Name = "setNodePositionFromCamera",
Arguments = {
{ "nodeIdentifer", "String" },
{ "useAltitude", "Boolean" }
},
Documentation = [[
Sets the position of a SceneGraphNode that has GlobeTranslation/GlobeRotations to
match the camera. Only uses camera position not rotation. If useAltitude is true,
then the position will also be updated to the camera's altitude.
Usage:
openspace.globebrowsing.setNodePositionFromCamera(
"Scale_StatueOfLiberty", optionalUseAltitude
)
]]
}
}
openspace.globebrowsing.setNodePosition = function (node_identifer, globe_identifier, lat, lon, altitude)
openspace.setParent(node_identifer, globe_identifier)
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Translation.Globe", globe_identifier);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Translation.Latitude", lat);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Translation.Longitude", lon);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Rotation.Globe", globe_identifier);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Rotation.Latitude", lat);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Rotation.Longitude", lon);
if (altitude) then
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Translation.Altitude", altitude);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Translation.Altitude", altitude);
end
end
openspace.globebrowsing.setNodePositionFromCamera = function (node_identifer, use_altitude)
local lat, lon, alt = openspace.globebrowsing.geoPositionForCamera();
local camera = openspace.navigation.getNavigationState();
openspace.setParent(node_identifer, camera.Anchor)
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Translation.Globe", camera.Anchor);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Translation.Latitude", lat);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Translation.Longitude", lon);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Rotation.Globe", camera.Anchor);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Rotation.Latitude", lat);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Rotation.Longitude", lon);
if (use_altitude) then
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Translation.Altitude", alt);
openspace.setPropertyValueSingle("Scene." .. node_identifer .. ".Translation.Altitude", alt);
end
end