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.getGeoPositionForCamera();
    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
