From 690878bc87760dded42ca8eb349a8efc2ba73b9f Mon Sep 17 00:00:00 2001 From: Malin E Date: Wed, 6 Dec 2023 16:17:23 +0100 Subject: [PATCH] Layers maintenance (#2917) * Separate layers for the Moon and Earth * One asset each for each server, New York, Utah, and Sweden * Add the layers asset files for Earth and Moon * Add new layers structure for Mars and Europa * Add layers assets for Mercury and Enceladus * Add more layer assets for all servers * Add layer assets for each server on the top asset level * Rename Venus Utah cloud combo layer asset (breaking change) * Clean up layer asset descriptions * Update layer asset version name * Fix base layers error * Add configuration option to choose layers server * Add Lua functions to access configuration settings * Extend configuration Lua function * Add layer server setting in setting gui + add 'None' as a server option * Add base layers when server 'None' is used * Add tests for the new Layer Server setting --- .../ext/launcher/include/settingsdialog.h | 1 + .../ext/launcher/src/settingsdialog.cpp | 62 +++- data/assets/base.asset | 18 +- .../solarsystem/planets/base_layers.asset | 39 +++ .../solarsystem/planets/default_layers.asset | 40 +-- .../planets/earth/default_layers.asset | 56 ++-- .../planets/earth/layers/base_layers.asset | 44 +++ .../planets/earth/layers/newyork_layers.asset | 25 ++ .../planets/earth/layers/sweden_layers.asset | 25 ++ .../planets/earth/layers/utah_layers.asset | 25 ++ .../planets/earth/moon/default_layers.asset | 34 +-- .../earth/moon/layers/newyork_layers.asset | 24 ++ .../earth/moon/layers/sweden_layers.asset | 24 ++ .../earth/moon/layers/utah_layers.asset | 24 ++ .../jupiter/europa/default_layers.asset | 16 +- .../jupiter/europa/layers/base_layers.asset | 12 + .../jupiter/europa/layers/local_layers.asset | 17 ++ .../europa/layers/newyork_layers.asset | 17 ++ .../jupiter/europa/layers/sweden_layers.asset | 17 ++ .../planets/mars/default_layers.asset | 50 +--- .../planets/mars/layers/base_layers.asset | 24 ++ .../planets/mars/layers/newyork_layers.asset | 29 ++ .../planets/mars/layers/sweden_layers.asset | 28 ++ .../planets/mars/layers/utah_layers.asset | 28 ++ .../planets/mercury/default_layers.asset | 61 +--- .../planets/mercury/layers/base_layers.asset | 21 ++ .../mercury/layers/newyork_layers.asset | 31 ++ .../mercury/layers/sweden_layers.asset | 31 ++ .../planets/mercury/layers/utah_layers.asset | 29 ++ .../solarsystem/planets/newyork_layers.asset | 25 ++ .../saturn/enceladus/default_layers.asset | 16 +- .../saturn/enceladus/layers/base_layers.asset | 12 + .../enceladus/layers/newyork_layers.asset | 18 ++ .../enceladus/layers/sweden_layers.asset | 18 ++ .../solarsystem/planets/sweden_layers.asset | 27 ++ .../solarsystem/planets/utah_layers.asset | 27 ++ .../planets/venus/default_layers.asset | 20 +- .../planets/venus/layers/base_layers.asset | 12 + ...asset => clouds_magellan_combo_utah.asset} | 4 +- .../planets/venus/layers/newyork_layers.asset | 21 ++ .../planets/venus/layers/utah_layers.asset | 21 ++ include/openspace/engine/configuration.h | 14 + include/openspace/engine/settings.h | 2 + openspace.cfg | 6 + src/engine/configuration.cpp | 180 ++++++++++++ src/engine/openspaceengine.cpp | 4 +- src/engine/openspaceengine_lua.inl | 16 ++ src/engine/settings.cpp | 8 + tests/test_settings.cpp | 269 ++++++++++++++++++ 49 files changed, 1355 insertions(+), 217 deletions(-) create mode 100644 data/assets/scene/solarsystem/planets/base_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/layers/base_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/layers/newyork_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/layers/sweden_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/layers/utah_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/moon/layers/newyork_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/moon/layers/sweden_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/earth/moon/layers/utah_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/jupiter/europa/layers/base_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/jupiter/europa/layers/local_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/jupiter/europa/layers/newyork_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/jupiter/europa/layers/sweden_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/mars/layers/base_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/mars/layers/newyork_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/mars/layers/sweden_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/mars/layers/utah_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/mercury/layers/base_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/mercury/layers/newyork_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/mercury/layers/sweden_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/mercury/layers/utah_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/newyork_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/saturn/enceladus/layers/base_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/saturn/enceladus/layers/newyork_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/saturn/enceladus/layers/sweden_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/sweden_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/utah_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/venus/layers/base_layers.asset rename data/assets/scene/solarsystem/planets/venus/layers/colorlayers/{clouds_magellan_combo.asset => clouds_magellan_combo_utah.asset} (92%) create mode 100644 data/assets/scene/solarsystem/planets/venus/layers/newyork_layers.asset create mode 100644 data/assets/scene/solarsystem/planets/venus/layers/utah_layers.asset diff --git a/apps/OpenSpace/ext/launcher/include/settingsdialog.h b/apps/OpenSpace/ext/launcher/include/settingsdialog.h index eb06e92b0d..54ba955ec0 100644 --- a/apps/OpenSpace/ext/launcher/include/settingsdialog.h +++ b/apps/OpenSpace/ext/launcher/include/settingsdialog.h @@ -59,6 +59,7 @@ private: QComboBox* _propertyVisibility = nullptr; QCheckBox* _bypassLauncher = nullptr; QLabel* _bypassInformation = nullptr; + QComboBox* _layerServer = nullptr; struct { QCheckBox* isEnabled = nullptr; diff --git a/apps/OpenSpace/ext/launcher/src/settingsdialog.cpp b/apps/OpenSpace/ext/launcher/src/settingsdialog.cpp index 42ea8a0c70..dff09d8fc3 100644 --- a/apps/OpenSpace/ext/launcher/src/settingsdialog.cpp +++ b/apps/OpenSpace/ext/launcher/src/settingsdialog.cpp @@ -63,15 +63,16 @@ void SettingsDialog::createWidgets() { // | Property Visibility | DDDDDDDDDDDDDDDDDDDDD> | // | [] Bypass Launcher | // | Informational text about undoing the bypass setting | - // | MRF Caching | - // | [] Enable caching | - // | Cache location | [oooooooooooooooooooo] | + // | Layer Settings | + // | Layer Server | DDDDDDDDDDDDDDDDDDDDD> | + // | [] Enable MRF caching | + // | MRF Cache Location | [oooooooooooooooooooo] | // | | | // ------------------------------------------------------- QGridLayout* layout = new QGridLayout(this); layout->setSizeConstraint(QLayout::SetFixedSize); - + { QLabel* label = new QLabel("Profile"); label->setObjectName("heading"); @@ -269,11 +270,39 @@ void SettingsDialog::createWidgets() { layout->addWidget(new Line(), 12, 0, 1, 2); { - QLabel* label = new QLabel("MRF Caching"); + QLabel* label = new QLabel("Layer Settings"); label->setObjectName("heading"); layout->addWidget(label, 13, 0, 1, 2); - _mrf.isEnabled = new QCheckBox("Enable Caching"); + QLabel* conf = new QLabel("Layer Server"); + conf->setToolTip( + "This setting sets the default server to be used for the layers that " + "are hosted by the OpenSpace team" + ); + layout->addWidget(conf, 14, 0); + + _layerServer = new QComboBox; + _layerServer->setToolTip(conf->toolTip()); + _layerServer->addItems({ + "All", + "NewYork", + "Sweden", + "Utah", + "None" + }); + _layerServer->setCurrentText("All"); + connect( + _layerServer, + &QComboBox::textActivated, + [this](const QString& value) { + _currentEdit.layerServer = + openspace::stringToLayerServer(value.toStdString()); + updateSaveButton(); + } + ); + layout->addWidget(_layerServer, 14, 1); + + _mrf.isEnabled = new QCheckBox("Enable MRF Caching"); _mrf.isEnabled->setToolTip( "If this setting is checked, the MRF caching for globe layers will be " "enabled. This means that all planetary images that are loaded over the " @@ -296,9 +325,9 @@ void SettingsDialog::createWidgets() { updateSaveButton(); } ); - layout->addWidget(_mrf.isEnabled, 14, 0, 1, 2); + layout->addWidget(_mrf.isEnabled, 16, 0, 1, 2); - QLabel* conf = new QLabel("Cache Location"); + QLabel* mrfConf = new QLabel("MRF Cache Location"); conf->setToolTip( "This is the place where the MRF cache files are located. Please note that " "these files can potentially become quite large when using OpenSpace for a " @@ -306,10 +335,10 @@ void SettingsDialog::createWidgets() { "blank, the cached files will be stored in the 'mrf_cache' folder in the " "OpenSpace base folder." ); - layout->addWidget(conf, 15, 0); + layout->addWidget(mrfConf, 17, 0); _mrf.location = new QLineEdit; - _mrf.location->setToolTip(conf->toolTip()); + _mrf.location->setToolTip(mrfConf->toolTip()); _mrf.location->setDisabled(true); connect( _mrf.location, @@ -324,10 +353,10 @@ void SettingsDialog::createWidgets() { updateSaveButton(); } ); - layout->addWidget(_mrf.location, 15, 1); + layout->addWidget(_mrf.location, 17, 1); } - layout->addWidget(new Line(), 16, 0, 1, 2); + layout->addWidget(new Line(), 18, 0, 1, 2); _dialogButtons = new QDialogButtonBox; _dialogButtons->setStandardButtons( @@ -341,7 +370,7 @@ void SettingsDialog::createWidgets() { _dialogButtons, &QDialogButtonBox::rejected, this, &SettingsDialog::reject ); - layout->addWidget(_dialogButtons, 17, 1, 1, 1, Qt::AlignRight); + layout->addWidget(_dialogButtons, 19, 1, 1, 1, Qt::AlignRight); } void SettingsDialog::loadFromSettings(const openspace::Settings& settings) { @@ -387,6 +416,13 @@ void SettingsDialog::loadFromSettings(const openspace::Settings& settings) { _bypassLauncher->setChecked(*settings.bypassLauncher); } + if (settings.layerServer.has_value()) { + openspace::Configuration::LayerServer server = *settings.layerServer; + _layerServer->setCurrentText( + QString::fromStdString(openspace::layerServerToString(server)) + ); + } + if (settings.mrf.isEnabled.has_value()) { _mrf.isEnabled->setChecked(*settings.mrf.isEnabled); } diff --git a/data/assets/base.asset b/data/assets/base.asset index 7437c06163..3c3b08a2d6 100644 --- a/data/assets/base.asset +++ b/data/assets/base.asset @@ -10,7 +10,6 @@ asset.require("scene/solarsystem/sun/glare") asset.require("scene/solarsystem/sun/habitablezone") asset.require("scene/solarsystem/sun/default_layers") asset.require("scene/solarsystem/planets/planets") -asset.require("scene/solarsystem/planets/default_layers") asset.require("scene/solarsystem/dwarf_planets/pluto/system") asset.require("scene/solarsystem/dwarf_planets/pluto/default_layers") asset.require("scene/solarsystem/dwarf_planets/pluto/charon/default_layers") @@ -18,6 +17,23 @@ asset.require("scene/milkyway/milkyway/volume") asset.require("scene/milkyway/constellations/constellation_art") asset.require("scene/milkyway/constellations/constellation_keybinds") +-- Planet layers +local server = openspace.layerServer(); +if (server == "All") then + asset.require("scene/solarsystem/planets/default_layers") +elseif (server == "NewYork") then + asset.require("scene/solarsystem/planets/newyork_layers") +elseif (server == "Sweden") then + asset.require("scene/solarsystem/planets/sweden_layers") +elseif (server == "Utah") then + asset.require("scene/solarsystem/planets/utah_layers") +elseif (server == "None") then + asset.require("scene/solarsystem/planets/base_layers") +else + openspace.printWarning("Did not recognize the specified Layer server, defaults to 'All'") + asset.require("scene/solarsystem/planets/default_layers") +end + asset.require("scene/digitaluniverse/2dF") asset.require("scene/digitaluniverse/2mass") asset.require("scene/digitaluniverse/6dF") diff --git a/data/assets/scene/solarsystem/planets/base_layers.asset b/data/assets/scene/solarsystem/planets/base_layers.asset new file mode 100644 index 0000000000..a925ac4ec2 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/base_layers.asset @@ -0,0 +1,39 @@ +asset.require("./mercury/layers/base_layers") + +asset.require("./venus/layers/base_layers") + +asset.require("./earth/layers/base_layers") + +asset.require("./mars/layers/base_layers") + +asset.require("./jupiter/default_layers") +asset.require("./jupiter/callisto/default_layers") +asset.require("./jupiter/ganymede/default_layers") +asset.require("./jupiter/io/default_layers") + +asset.require("./saturn/default_layers") +asset.require("./saturn/dione/default_layers") +asset.require("./saturn/hyperion/default_layers") +asset.require("./saturn/iapetus/default_layers") +asset.require("./saturn/mimas/default_layers") +asset.require("./saturn/rhea/default_layers") +asset.require("./saturn/tethys/default_layers") +asset.require("./saturn/titan/default_layers") + +asset.require("./uranus/default_layers") + +asset.require("./neptune/default_layers") + + +asset.meta = { + Name = "Base Solar System Layers", + Version = "1.0", + Description = [[Adds base layers for all planets. Remove this asset and include + individual layers for planets to customize planet layers. + The base layers do not depend on any particular OpenSpace server but are still + dependent on internet access. + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/default_layers.asset b/data/assets/scene/solarsystem/planets/default_layers.asset index b3f332561e..9420959e1d 100644 --- a/data/assets/scene/solarsystem/planets/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/default_layers.asset @@ -1,39 +1,19 @@ -asset.require("./earth/default_layers") -asset.require("./earth/moon/default_layers") - -asset.require("./jupiter/default_layers") -asset.require("./jupiter/callisto/default_layers") -asset.require("./jupiter/europa/default_layers") -asset.require("./jupiter/ganymede/default_layers") -asset.require("./jupiter/io/default_layers") - -asset.require("./mars/default_layers") - -asset.require("./mercury/default_layers") - -asset.require("./neptune/default_layers") - -asset.require("./saturn/default_layers") -asset.require("./saturn/dione/default_layers") -asset.require("./saturn/enceladus/default_layers") -asset.require("./saturn/hyperion/default_layers") -asset.require("./saturn/iapetus/default_layers") -asset.require("./saturn/mimas/default_layers") -asset.require("./saturn/rhea/default_layers") -asset.require("./saturn/tethys/default_layers") -asset.require("./saturn/titan/default_layers") - -asset.require("./uranus/default_layers") - -asset.require("./venus/default_layers") +asset.require("./base_layers") +asset.require("./utah_layers") +asset.require("./sweden_layers") +asset.require("./newyork_layers") asset.meta = { Name = "Default Solar System Layers", - Version = "1.0", + Version = "1.1", Description = [[Adds default layers for all planets. Remove this asset and include - individual layers for planets to customize planet layers]], + individual layers for planets to customize planet layers + + + Layers loaded from all servers + ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license" diff --git a/data/assets/scene/solarsystem/planets/earth/default_layers.asset b/data/assets/scene/solarsystem/planets/earth/default_layers.asset index ace0e7a0d7..cd16ed15e3 100644 --- a/data/assets/scene/solarsystem/planets/earth/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/earth/default_layers.asset @@ -1,47 +1,25 @@ -asset.require("./layers/colorlayers/blue_marble", false) -asset.require("./layers/colorlayers/esri_viirs_combo", true) -asset.require("./layers/colorlayers/esri_noaa20_combo", false) -asset.require("./layers/colorlayers/esri_world_imagery", false) -asset.require("./layers/colorlayers/viirs_snpp_temporal", false) -asset.require("./layers/colorlayers/aqua_modis_temporal", false) -asset.require("./layers/colorlayers/terra_modis_temporal", false) -asset.require("./layers/colorlayers/bmng_utah", false) -asset.require("./layers/colorlayers/bmng_sweden", false) -asset.require("./layers/colorlayers/bmng_newyork", false) -asset.require("./layers/colorlayers/amsr2_gcom_w1_sea_ice_concentration_temporal", false) -asset.require("./layers/colorlayers/modis_terra_chlorophyll_a_temporal", false) -asset.require("./layers/colorlayers/ghrsst_l4_mur_sea_surface_temperature_temporal", false) - -asset.require("./layers/heightlayers/blue_marble_height", false) -asset.require("./layers/heightlayers/terrain_tileset", true) - -asset.require("./layers/nightlayers/earth_at_night_2012", true) -asset.require("./layers/nightlayers/earth_night_texture", false) -asset.require("./layers/nightlayers/earth_at_night_temporal", false) - -asset.require("./layers/overlays/coastlines", false) -asset.require("./layers/overlays/reference_features", false) -asset.require("./layers/overlays/reference_labels", false) -asset.require("./layers/overlays/tile_indices", false) -asset.require("./layers/overlays/size_reference", false) - -asset.require("./layers/watermasks/gebco_sweden", false) -asset.require("./layers/watermasks/gebco_utah", false) -asset.require("./layers/watermasks/gebco_newyork", false) -asset.require("./layers/watermasks/modis_water_mask", true) +asset.require("./layers/base_layers", true) +asset.require("./layers/utah_layers", false) +asset.require("./layers/sweden_layers", false) +asset.require("./layers/newyork_layers", false) asset.meta = { Name = "Default Earth Layers", - Version = "1.0", - Description = [[Default Earth layers are: ESRI VIIRS Combo, ESRI World Imagery, VIIRS - SNPP (Temporal), Aqua Modis (Temporal), Terra Modis (Temporal), BMNG, AMSR2 GCOM - W1 Sea Ice Concentration (Temporal), MODIS Terra Chlorophyll A (Temporal), GHRSST, - L4 G1SST Sea Surface Temperature (Temporal), GHRSST L4 MUR Sea Surface Temperature - (Temporal), World Elevation (3D), Earth at Night 2012, Coastlines, Reference - Features, Reference Labels, Tile Indicies, Size Reference, Gebco, and Modis Water - Mask]], + Version = "1.1", + Description = [[Default Earth layers are: Blue Marble, + ESRI VIIRS Combo, ESRI NOAA20 Combo, ESRI World Imagery, VIIRS SNPP (Temporal), + Aqua Modis (Temporal), Terra Modis (Temporal), + AMSR2 GCOM W1 Sea Ice Concentration (Temporal), MODIS Terra Chlorophyll A (Temporal), + GHRSST L4 MUR Sea Surface Temperature (Temporal), BMNG, Blue Marble Height (3D), + World Elevation (3D), Earth at Night 2012, Earth at Night Texture, + Earth at Night (Temporal), Coastlines, Reference Features, Reference Labels, + Tile Indicies, Size Reference, Gebco and Modis Water Mask. + + + Layers loaded from all servers + ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license" diff --git a/data/assets/scene/solarsystem/planets/earth/layers/base_layers.asset b/data/assets/scene/solarsystem/planets/earth/layers/base_layers.asset new file mode 100644 index 0000000000..741f6d1d23 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/layers/base_layers.asset @@ -0,0 +1,44 @@ +asset.require("./colorlayers/blue_marble", false) +asset.require("./colorlayers/esri_viirs_combo", asset.enabled) +asset.require("./colorlayers/esri_noaa20_combo", false) +asset.require("./colorlayers/esri_world_imagery", false) +asset.require("./colorlayers/viirs_snpp_temporal", false) +asset.require("./colorlayers/aqua_modis_temporal", false) +asset.require("./colorlayers/terra_modis_temporal", false) +asset.require("./colorlayers/amsr2_gcom_w1_sea_ice_concentration_temporal", false) +asset.require("./colorlayers/modis_terra_chlorophyll_a_temporal", false) +asset.require("./colorlayers/ghrsst_l4_mur_sea_surface_temperature_temporal", false) + +asset.require("./heightlayers/blue_marble_height", false) +asset.require("./heightlayers/terrain_tileset", asset.enabled) + +asset.require("./nightlayers/earth_at_night_2012", asset.enabled) +asset.require("./nightlayers/earth_night_texture", false) +asset.require("./nightlayers/earth_at_night_temporal", false) + +asset.require("./overlays/coastlines", false) +asset.require("./overlays/reference_features", false) +asset.require("./overlays/reference_labels", false) +asset.require("./overlays/tile_indices", false) +asset.require("./overlays/size_reference", false) + +asset.require("./watermasks/modis_water_mask", asset.enabled) + + + +asset.meta = { + Name = "Base Earth Layers", + Version = "1.0", + Description = [[Base Earth layers are: Blue Marble, ESRI VIIRS Combo, ESRI NOAA20 Combo, + ESRI World Imagery, VIIRS SNPP (Temporal), Aqua Modis (Temporal), + Terra Modis (Temporal), AMSR2 GCOM W1 Sea Ice Concentration (Temporal), + MODIS Terra Chlorophyll A (Temporal), + GHRSST L4 MUR Sea Surface Temperature (Temporal), Blue Marble Height (3D), + World Elevation (3D), Earth at Night 2012, Earth at Night Texture, + Earth at Night (Temporal), Coastlines, Reference Features, Reference Labels, + Tile Indicies, Size Reference, and Modis Water Mask. + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/newyork_layers.asset b/data/assets/scene/solarsystem/planets/earth/layers/newyork_layers.asset new file mode 100644 index 0000000000..6b0f27d377 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/layers/newyork_layers.asset @@ -0,0 +1,25 @@ +asset.require("./base_layers", true) +asset.require("./colorlayers/bmng_newyork", false) +asset.require("./watermasks/gebco_newyork", false) + + + +asset.meta = { + Name = "Default Earth Layers (New York)", + Version = "1.0", + Description = [[Default Earth layers are: Blue Marble, + ESRI VIIRS Combo, ESRI NOAA20 Combo, ESRI World Imagery, VIIRS SNPP (Temporal), + Aqua Modis (Temporal), Terra Modis (Temporal), + AMSR2 GCOM W1 Sea Ice Concentration (Temporal), MODIS Terra Chlorophyll A (Temporal), + GHRSST L4 MUR Sea Surface Temperature (Temporal), BMNG, Blue Marble Height (3D), + World Elevation (3D), Earth at Night 2012, Earth at Night Texture, + Earth at Night (Temporal), Coastlines, Reference Features, Reference Labels, + Tile Indicies, Size Reference, Gebco and Modis Water Mask. + + + Layers only loaded from the New York server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/sweden_layers.asset b/data/assets/scene/solarsystem/planets/earth/layers/sweden_layers.asset new file mode 100644 index 0000000000..95381f748e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/layers/sweden_layers.asset @@ -0,0 +1,25 @@ +asset.require("./base_layers", true) +asset.require("./colorlayers/bmng_sweden", false) +asset.require("./watermasks/gebco_sweden", false) + + + +asset.meta = { + Name = "Default Earth Layers (Sweden)", + Version = "1.0", + Description = [[Default Earth layers are: Blue Marble, + ESRI VIIRS Combo, ESRI NOAA20 Combo, ESRI World Imagery, VIIRS SNPP (Temporal), + Aqua Modis (Temporal), Terra Modis (Temporal), + AMSR2 GCOM W1 Sea Ice Concentration (Temporal), MODIS Terra Chlorophyll A (Temporal), + GHRSST L4 MUR Sea Surface Temperature (Temporal), BMNG, Blue Marble Height (3D), + World Elevation (3D), Earth at Night 2012, Earth at Night Texture, + Earth at Night (Temporal), Coastlines, Reference Features, Reference Labels, + Tile Indicies, Size Reference, Gebco and Modis Water Mask. + + + Layers only loaded from the Sweden server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/utah_layers.asset b/data/assets/scene/solarsystem/planets/earth/layers/utah_layers.asset new file mode 100644 index 0000000000..91e5287594 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/layers/utah_layers.asset @@ -0,0 +1,25 @@ +asset.require("./base_layers", true) +asset.require("./colorlayers/bmng_utah", false) +asset.require("./watermasks/gebco_utah", false) + + + +asset.meta = { + Name = "Default Earth Layers (Utah)", + Version = "1.0", + Description = [[Default Earth layers are: Blue Marble, + ESRI VIIRS Combo, ESRI NOAA20 Combo, ESRI World Imagery, VIIRS SNPP (Temporal), + Aqua Modis (Temporal), Terra Modis (Temporal), + AMSR2 GCOM W1 Sea Ice Concentration (Temporal), MODIS Terra Chlorophyll A (Temporal), + GHRSST L4 MUR Sea Surface Temperature (Temporal), BMNG, Blue Marble Height (3D), + World Elevation (3D), Earth at Night 2012, Earth at Night Texture, + Earth at Night (Temporal), Coastlines, Reference Features, Reference Labels, + Tile Indicies, Size Reference, Gebco and Modis Water Mask. + + + Layers only loaded from the Utah server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/default_layers.asset b/data/assets/scene/solarsystem/planets/earth/moon/default_layers.asset index 590c938ca1..23bcccc083 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/default_layers.asset @@ -1,32 +1,18 @@ -asset.require("./layers/colorlayers/wac_utah", true) -asset.require("./layers/colorlayers/wac_sweden", false) -asset.require("./layers/colorlayers/wac_newyork", false) -asset.require("./layers/colorlayers/clemuvvis_utah", false) -asset.require("./layers/colorlayers/clemuvvis_sweden", false) -asset.require("./layers/colorlayers/clemuvvis_newyork", false) -asset.require("./layers/colorlayers/uvvishybrid_utah", false) -asset.require("./layers/colorlayers/uvvishybrid_sweden", false) -asset.require("./layers/colorlayers/uvvishybrid_newyork", false) -asset.require("./layers/colorlayers/kaguya_utah", false) -asset.require("./layers/colorlayers/kaguya_sweden", false) -asset.require("./layers/colorlayers/kaguya_newyork", false) -asset.require("./layers/colorlayers/lola_clr_shade_utah", false) -asset.require("./layers/colorlayers/lola_clr_shade_sweden", false) -asset.require("./layers/colorlayers/lola_clr_shade_newyork", false) -asset.require("./layers/colorlayers/lola_shade_utah", false) -asset.require("./layers/colorlayers/lola_shade_sweden", false) -asset.require("./layers/colorlayers/lola_shade_newyork", false) - -asset.require("./layers/heightlayers/loladem_utah", true) -asset.require("./layers/heightlayers/loladem_sweden", false) -asset.require("./layers/heightlayers/loladem_newyork", false) +asset.require("./layers/utah_layers", true) +asset.require("./layers/sweden_layers", false) +asset.require("./layers/newyork_layers", false) asset.meta = { Name = "Default Moon layers", - Version = "1.0", - Description = "This asset adds the default layers to the Moon globe", + Version = "1.1", + Description = [[Default Moon layers are: WAC, Clem Uvvis, Uvvis Hybrid, Kaguya, + LRO LOLA Color Shaded Relief 388m v4, Lola Shade, and Lola DEM (3D). + + + Layers loaded from all servers + ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license" diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/newyork_layers.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/newyork_layers.asset new file mode 100644 index 0000000000..fc56a47032 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/newyork_layers.asset @@ -0,0 +1,24 @@ +asset.require("./colorlayers/wac_newyork", asset.enabled) +asset.require("./colorlayers/clemuvvis_newyork", false) +asset.require("./colorlayers/uvvishybrid_newyork", false) +asset.require("./colorlayers/kaguya_newyork", false) +asset.require("./colorlayers/lola_clr_shade_newyork", false) +asset.require("./colorlayers/lola_shade_newyork", false) + +asset.require("./heightlayers/loladem_newyork", asset.enabled) + + + +asset.meta = { + Name = "Default Moon layers (New York)", + Version = "1.0", + Description = [[Default Moon layers are: WAC, Clem Uvvis, Uvvis Hybrid, Kaguya, + LRO LOLA Color Shaded Relief 388m v4, Lola Shade, and Lola DEM (3D). + + + Layers only loaded from the New York server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/sweden_layers.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/sweden_layers.asset new file mode 100644 index 0000000000..5c63b86ff2 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/sweden_layers.asset @@ -0,0 +1,24 @@ +asset.require("./colorlayers/wac_sweden", asset.enabled) +asset.require("./colorlayers/clemuvvis_sweden", false) +asset.require("./colorlayers/uvvishybrid_sweden", false) +asset.require("./colorlayers/kaguya_sweden", false) +asset.require("./colorlayers/lola_clr_shade_sweden", false) +asset.require("./colorlayers/lola_shade_sweden", false) + +asset.require("./heightlayers/loladem_sweden", asset.enabled) + + + +asset.meta = { + Name = "Default Moon layers (Sweden)", + Version = "1.0", + Description = [[Default Moon layers are: WAC, Clem Uvvis, Uvvis Hybrid, Kaguya, + LRO LOLA Color Shaded Relief 388m v4, Lola Shade, and Lola DEM (3D). + + + Layers only loaded from the Sweden server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/utah_layers.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/utah_layers.asset new file mode 100644 index 0000000000..a3a4e4768f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/utah_layers.asset @@ -0,0 +1,24 @@ +asset.require("./colorlayers/wac_utah", asset.enabled) +asset.require("./colorlayers/clemuvvis_utah", false) +asset.require("./colorlayers/uvvishybrid_utah", false) +asset.require("./colorlayers/kaguya_utah", false) +asset.require("./colorlayers/lola_clr_shade_utah", false) +asset.require("./colorlayers/lola_shade_utah", false) + +asset.require("./heightlayers/loladem_utah", asset.enabled) + + + +asset.meta = { + Name = "Default Moon layers (Utah)", + Version = "1.0", + Description = [[Default Moon layers are: WAC, Clem Uvvis, Uvvis Hybrid, Kaguya, + LRO LOLA Color Shaded Relief 388m v4, Lola Shade, and Lola DEM (3D). + + + Layers only loaded from the Utah server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/default_layers.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/default_layers.asset index 19438c0567..2913c56a2b 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/europa/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/default_layers.asset @@ -1,14 +1,18 @@ -asset.require("./layers/colorlayers/europa_texture", false) -asset.require("./layers/colorlayers/voyager_global_mosaic_local", true) -asset.require("./layers/colorlayers/voyager_global_mosaic_sweden", false) -asset.require("./layers/colorlayers/voyager_global_mosaic_newyork", false) +asset.require("./layers/base_layers", false) +asset.require("./layers/local_layers", true) +asset.require("./layers/sweden_layers", false) +asset.require("./layers/newyork_layers", false) asset.meta = { Name = "Default Europa Layers", - Version = "1.1", - Description = "Default Europa layers are: Europa Texture", + Version = "1.2", + Description = [[Default Europa layers are: Europa Texture & Voyager Global Mosaic. + + + Layers loaded from all available servers + ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license" diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/layers/base_layers.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/base_layers.asset new file mode 100644 index 0000000000..bfc02aca0a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/base_layers.asset @@ -0,0 +1,12 @@ +asset.require("./colorlayers/europa_texture", false) + + + +asset.meta = { + Name = "Base Europa Layers", + Version = "1.0", + Description = "Base Europa layers are: Europa Texture", + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/layers/local_layers.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/local_layers.asset new file mode 100644 index 0000000000..906e0f74fd --- /dev/null +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/local_layers.asset @@ -0,0 +1,17 @@ +asset.require("./base_layers", false) +asset.require("./colorlayers/voyager_global_mosaic_local", asset.enabled) + + + +asset.meta = { + Name = "Default Europa Layers (Local)", + Version = "1.0", + Description = [[Default Europa layers are: Europa Texture & Voyager Global Mosaic. + + + Layers only loaded locally + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/layers/newyork_layers.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/newyork_layers.asset new file mode 100644 index 0000000000..091189c520 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/newyork_layers.asset @@ -0,0 +1,17 @@ +asset.require("./base_layers", false) +asset.require("./colorlayers/voyager_global_mosaic_newyork", asset.enabled) + + + +asset.meta = { + Name = "Default Europa Layers (New York)", + Version = "1.0", + Description = [[Default Europa layers are: Europa Texture & Voyager Global Mosaic. + + + Layers only loaded from the New York server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/layers/sweden_layers.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/sweden_layers.asset new file mode 100644 index 0000000000..1a7a661a93 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/sweden_layers.asset @@ -0,0 +1,17 @@ +asset.require("./base_layers", false) +asset.require("./colorlayers/voyager_global_mosaic_sweden", asset.enabled) + + + +asset.meta = { + Name = "Default Europa Layers (Sweden)", + Version = "1.0", + Description = [[Default Europa layers are: Europa Texture & Voyager Global Mosaic. + + + Layers only loaded from the Sweden server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mars/default_layers.asset b/data/assets/scene/solarsystem/planets/mars/default_layers.asset index 564c87875c..96c0b8b135 100644 --- a/data/assets/scene/solarsystem/planets/mars/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/mars/default_layers.asset @@ -1,45 +1,21 @@ -asset.require("./layers/colorlayers/mars_texture", false) -asset.require("./layers/colorlayers/moc_wa_color_utah", true) -asset.require("./layers/colorlayers/moc_wa_color_sweden", false) -asset.require("./layers/colorlayers/moc_wa_color_newyork", false) -asset.require("./layers/colorlayers/viking_mdim_utah", false) -asset.require("./layers/colorlayers/viking_mdim_sweden", false) -asset.require("./layers/colorlayers/viking_mdim_newyork", false) -asset.require("./layers/colorlayers/mola_pseudo_color_utah", false) -asset.require("./layers/colorlayers/mola_pseudo_color_sweden", false) -asset.require("./layers/colorlayers/mola_pseudo_color_newyork", false) -asset.require("./layers/colorlayers/mola_hrsc_utah", false) -asset.require("./layers/colorlayers/mola_hrsc_sweden", false) -asset.require("./layers/colorlayers/mola_hrsc_newyork", false) -asset.require("./layers/colorlayers/themis_ir_day_utah", false) -asset.require("./layers/colorlayers/themis_ir_day_sweden", false) -asset.require("./layers/colorlayers/themis_ir_day_newyork", false) -asset.require("./layers/colorlayers/themis_ir_night_utah", false) -asset.require("./layers/colorlayers/themis_ir_night_sweden", false) -asset.require("./layers/colorlayers/themis_ir_night_newyork", false) -asset.require("./layers/colorlayers/ctx_mosaic_utah", false) -asset.require("./layers/colorlayers/ctx_mosaic_sweden", false) -asset.require("./layers/colorlayers/ctx_mosaic_newyork", false) -asset.require("./layers/colorlayers/ctx_blended", false) -asset.require("./layers/colorlayers/hirise", false) -asset.require("./layers/colorlayers/hirisels", false) - -asset.require("./layers/heightlayers/mola_utah", false) -asset.require("./layers/heightlayers/mola_sweden", false) -asset.require("./layers/heightlayers/mdem200m", true) -asset.require("./layers/heightlayers/hirisels", false) - -asset.require("./layers/overlays/indices", false) -asset.require("./layers/overlays/size_reference", false) +asset.require("./layers/base_layers", true) +asset.require("./layers/utah_layers", true) +asset.require("./layers/sweden_layers", false) +asset.require("./layers/newyork_layers", false) asset.meta = { Name = "Default Mars Layers", - Version = "1.1", - Description = [[Default Mars layers are: MOC WA Color, Viking MDIM, MOLA Pseudo Color, - MOLA HRSC, Themis IR Day, Themis IR Night, CTX Mosaic, CTX Blended beta01, HiRISE, and - HiRISE Local Set]], + Version = "1.2", + Description = [[Default Mars layers are: Mars texture, CTX Blended, HiRISE, + HiRISE Local Set, MOC WA Color, Viking MDIM, MOLA Pseudo Color, MOLA HRSC, + Themis IR Day, Themis IR Night, CTX Mosaic, MDEM200M (3D), HiRISE Local Set DEM (3D), + Mola Elevation (3D), Tile Indicies, and Size Reference. + + + Layers loaded from all servers + ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license" diff --git a/data/assets/scene/solarsystem/planets/mars/layers/base_layers.asset b/data/assets/scene/solarsystem/planets/mars/layers/base_layers.asset new file mode 100644 index 0000000000..6b017c3997 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mars/layers/base_layers.asset @@ -0,0 +1,24 @@ +asset.require("./colorlayers/mars_texture", false) +asset.require("./colorlayers/ctx_blended", false) +asset.require("./colorlayers/hirise", false) +asset.require("./colorlayers/hirisels", false) + +asset.require("./heightlayers/mdem200m", asset.enabled) +asset.require("./heightlayers/hirisels", false) + +asset.require("./overlays/indices", false) +asset.require("./overlays/size_reference", false) + + + +asset.meta = { + Name = "Base Mars Layers", + Version = "1.0", + Description = [[Base Mars layers are: Mars texture, CTX Blended, HiRISE, + HiRISE Local Set, MDEM200M (3D), HiRISE Local Set DEM (3D), Tile Indicies, + and Size Reference. + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mars/layers/newyork_layers.asset b/data/assets/scene/solarsystem/planets/mars/layers/newyork_layers.asset new file mode 100644 index 0000000000..9355ab2007 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mars/layers/newyork_layers.asset @@ -0,0 +1,29 @@ +asset.require("./base_layers", true) +asset.require("./colorlayers/moc_wa_color_newyork", asset.enabled) +asset.require("./colorlayers/viking_mdim_newyork", false) +asset.require("./colorlayers/mola_pseudo_color_newyork", false) +asset.require("./colorlayers/mola_hrsc_newyork", false) +asset.require("./colorlayers/themis_ir_day_newyork", false) +asset.require("./colorlayers/themis_ir_night_newyork", false) +asset.require("./colorlayers/ctx_mosaic_newyork", false) + +-- The New York server does not have this map, use the Utah server for now +asset.require("./heightlayers/mola_utah", false) + + + +asset.meta = { + Name = "Default Mars Layers (New York)", + Version = "1.0", + Description = [[Default Mars layers are: Mars texture, CTX Blended, HiRISE, + HiRISE Local Set, MOC WA Color, Viking MDIM, MOLA Pseudo Color, MOLA HRSC, + Themis IR Day, Themis IR Night, CTX Mosaic, MDEM200M (3D), HiRISE Local Set DEM (3D), + Mola Elevation (3D), Tile Indicies, and Size Reference. + + + Layers only loaded from the New York server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mars/layers/sweden_layers.asset b/data/assets/scene/solarsystem/planets/mars/layers/sweden_layers.asset new file mode 100644 index 0000000000..50885a04dd --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mars/layers/sweden_layers.asset @@ -0,0 +1,28 @@ +asset.require("./base_layers", true) +asset.require("./colorlayers/moc_wa_color_sweden", asset.enabled) +asset.require("./colorlayers/viking_mdim_sweden", false) +asset.require("./colorlayers/mola_pseudo_color_sweden", false) +asset.require("./colorlayers/mola_hrsc_sweden", false) +asset.require("./colorlayers/themis_ir_day_sweden", false) +asset.require("./colorlayers/themis_ir_night_sweden", false) +asset.require("./colorlayers/ctx_mosaic_sweden", false) + +asset.require("./heightlayers/mola_sweden", false) + + + +asset.meta = { + Name = "Default Mars Layers (Sweden)", + Version = "1.0", + Description = [[Default Mars layers are: Mars texture, CTX Blended, HiRISE, + HiRISE Local Set, MOC WA Color, Viking MDIM, MOLA Pseudo Color, MOLA HRSC, + Themis IR Day, Themis IR Night, CTX Mosaic, MDEM200M (3D), HiRISE Local Set DEM (3D), + Mola Elevation (3D), Tile Indicies, and Size Reference. + + + Layers only loaded from the Sweden server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mars/layers/utah_layers.asset b/data/assets/scene/solarsystem/planets/mars/layers/utah_layers.asset new file mode 100644 index 0000000000..83d15a6a1c --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mars/layers/utah_layers.asset @@ -0,0 +1,28 @@ +asset.require("./base_layers", true) +asset.require("./colorlayers/moc_wa_color_utah", asset.enabled) +asset.require("./colorlayers/viking_mdim_utah", false) +asset.require("./colorlayers/mola_pseudo_color_utah", false) +asset.require("./colorlayers/mola_hrsc_utah", false) +asset.require("./colorlayers/themis_ir_day_utah", false) +asset.require("./colorlayers/themis_ir_night_utah", false) +asset.require("./colorlayers/ctx_mosaic_utah", false) + +asset.require("./heightlayers/mola_utah", false) + + + +asset.meta = { + Name = "Default Mars Layers (Utah)", + Version = "1.0", + Description = [[Default Mars layers are: Mars texture, CTX Blended, HiRISE, + HiRISE Local Set, MOC WA Color, Viking MDIM, MOLA Pseudo Color, MOLA HRSC, + Themis IR Day, Themis IR Night, CTX Mosaic, MDEM200M (3D), HiRISE Local Set DEM (3D), + Mola Elevation (3D), Tile Indicies, and Size Reference. + + + Layers only loaded from the Utah server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/default_layers.asset b/data/assets/scene/solarsystem/planets/mercury/default_layers.asset index 30aaccf7b7..e50d077b08 100644 --- a/data/assets/scene/solarsystem/planets/mercury/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/mercury/default_layers.asset @@ -1,56 +1,21 @@ -asset.require("./layers/colorlayers/messenger_mdis_utah", false) -asset.require("./layers/colorlayers/messenger_mdis_sweden", false) -asset.require("./layers/colorlayers/messenger_mdis_newyork", false) - -asset.require("./layers/colorlayers/messenger_mosaic_utah", false) -asset.require("./layers/colorlayers/messenger_mosaic_sweden", false) -asset.require("./layers/colorlayers/messenger_mosaic_newyork", false) - -asset.require("./layers/colorlayers/messenger_mosaic2_utah", false) -asset.require("./layers/colorlayers/messenger_mosaic2_sweden", false) -asset.require("./layers/colorlayers/messenger_mosaic2_newyork", false) - -asset.require("./layers/colorlayers/messenger_bdr_utah", true) -asset.require("./layers/colorlayers/messenger_bdr_sweden", false) -asset.require("./layers/colorlayers/messenger_bdr_newyork", false) - -asset.require("./layers/colorlayers/messenger_mdr_utah", false) - -asset.require("./layers/colorlayers/messenger_mp3_utah", false) - -asset.require("./layers/colorlayers/messenger_hie_utah", false) -asset.require("./layers/colorlayers/messenger_hie_sweden", false) -asset.require("./layers/colorlayers/messenger_hie_newyork", false) - -asset.require("./layers/colorlayers/messenger_hiw_utah", false) -asset.require("./layers/colorlayers/messenger_hiw_sweden", false) -asset.require("./layers/colorlayers/messenger_hiw_newyork", false) - -asset.require("./layers/colorlayers/messenger_loi_utah", false) -asset.require("./layers/colorlayers/messenger_loi_sweden", false) -asset.require("./layers/colorlayers/messenger_loi_newyork", false) - -asset.require("./layers/colorlayers/messenger_shade_utah", false) -asset.require("./layers/colorlayers/messenger_shade_sweden", false) -asset.require("./layers/colorlayers/messenger_shade_newyork", false) - -asset.require("./layers/colorlayers/alsimap_02122015", false) -asset.require("./layers/colorlayers/casimap_02122015", false) -asset.require("./layers/colorlayers/fesimap_02122015", false) -asset.require("./layers/colorlayers/mgsimap_02122015", false) -asset.require("./layers/colorlayers/ssimap_02122015", false) - -asset.require("./layers/heightlayers/messenger_dem_utah", true) +asset.require("./layers/base_layers", true) +asset.require("./layers/utah_layers", true) +asset.require("./layers/sweden_layers", false) +asset.require("./layers/newyork_layers", false) asset.meta = { Name = "Default Mercury Layers", - Version = "1.0", - Description = [[Default Mercury layers are: Messenger MDIS, Messenger Mosaic2, - Messenger BDR, Messenger MDR, Messenger MP3, Messenger Hie, Messenger Hiw, - Messenger LOI, Messenger SHADE, Aluminum Abundance, Calcium Abundance, Iron - Abundance, Magnesium Abundance, and Silicon Abundance]], + Version = "1.1", + Description = [[Default Mercury layers are: Aluminium Abundance, Calcium Abundance, + Iron Abundance, Magnesium Abundance, Silicon Abundance, Messenger MDIS, + Messenger Mosaic, Messenger Mosaic2, Messenger BDR, Messenger HIE, Messenger HIW, + Messenger LOI, Messenger SHADE, Messenger MDR, Messenger MP3, and Messenger DEM (3D). + + + Layers loaded from all servers + ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license" diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/base_layers.asset b/data/assets/scene/solarsystem/planets/mercury/layers/base_layers.asset new file mode 100644 index 0000000000..4842464e01 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mercury/layers/base_layers.asset @@ -0,0 +1,21 @@ +asset.require("./colorlayers/alsimap_02122015", false) +asset.require("./colorlayers/casimap_02122015", false) +asset.require("./colorlayers/fesimap_02122015", false) +asset.require("./colorlayers/mgsimap_02122015", false) +asset.require("./colorlayers/ssimap_02122015", false) + +-- Only the Utah server have this map, use it for now +asset.require("./heightlayers/messenger_dem_utah", asset.enabled) + + + +asset.meta = { + Name = "Base Mercury Layers", + Version = "1.0", + Description = [[Base Mercury layers are: Aluminium Abundance, Calcium Abundance, + Iron Abundance, Magnesium Abundance, Silicon Abundance, and Messenger DEM (3D). + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/newyork_layers.asset b/data/assets/scene/solarsystem/planets/mercury/layers/newyork_layers.asset new file mode 100644 index 0000000000..5162b6ac47 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mercury/layers/newyork_layers.asset @@ -0,0 +1,31 @@ +asset.require("./base_layers", true) +asset.require("./colorlayers/messenger_mdis_newyork", false) +asset.require("./colorlayers/messenger_mosaic_newyork", false) +asset.require("./colorlayers/messenger_mosaic2_newyork", false) +asset.require("./colorlayers/messenger_bdr_newyork", asset.enabled) +asset.require("./colorlayers/messenger_hie_newyork", false) +asset.require("./colorlayers/messenger_hiw_newyork", false) +asset.require("./colorlayers/messenger_loi_newyork", false) +asset.require("./colorlayers/messenger_shade_newyork", false) + +-- The New York server does not have these maps, use the Utah server for now +asset.require("./colorlayers/messenger_mdr_utah", false) +asset.require("./colorlayers/messenger_mp3_utah", false) + + + +asset.meta = { + Name = "Default Mercury Layers (New York)", + Version = "1.0", + Description = [[Default Mercury layers are: Aluminium Abundance, Calcium Abundance, + Iron Abundance, Magnesium Abundance, Silicon Abundance, Messenger MDIS, + Messenger Mosaic, Messenger Mosaic2, Messenger BDR, Messenger HIE, Messenger HIW, + Messenger LOI, Messenger SHADE, Messenger MDR, Messenger MP3, and Messenger DEM (3D). + + + Layers only loaded from the New York server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/sweden_layers.asset b/data/assets/scene/solarsystem/planets/mercury/layers/sweden_layers.asset new file mode 100644 index 0000000000..20aeff7e71 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mercury/layers/sweden_layers.asset @@ -0,0 +1,31 @@ +asset.require("./base_layers", true) +asset.require("./colorlayers/messenger_mdis_sweden", false) +asset.require("./colorlayers/messenger_mosaic_sweden", false) +asset.require("./colorlayers/messenger_mosaic2_sweden", false) +asset.require("./colorlayers/messenger_bdr_sweden", asset.enabled) +asset.require("./colorlayers/messenger_hie_sweden", false) +asset.require("./colorlayers/messenger_hiw_sweden", false) +asset.require("./colorlayers/messenger_loi_sweden", false) +asset.require("./colorlayers/messenger_shade_sweden", false) + +-- The Sweden server does not have these maps, use the Utah server for now +asset.require("./colorlayers/messenger_mdr_utah", false) +asset.require("./colorlayers/messenger_mp3_utah", false) + + + +asset.meta = { + Name = "Default Mercury Layers (Sweden)", + Version = "1.0", + Description = [[Default Mercury layers are: Aluminium Abundance, Calcium Abundance, + Iron Abundance, Magnesium Abundance, Silicon Abundance, Messenger MDIS, + Messenger Mosaic, Messenger Mosaic2, Messenger BDR, Messenger HIE, Messenger HIW, + Messenger LOI, Messenger SHADE, Messenger MDR, Messenger MP3, and Messenger DEM (3D). + + + Layers only loaded from the Sweden server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/utah_layers.asset b/data/assets/scene/solarsystem/planets/mercury/layers/utah_layers.asset new file mode 100644 index 0000000000..cf1f301309 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mercury/layers/utah_layers.asset @@ -0,0 +1,29 @@ +asset.require("./base_layers", true) +asset.require("./colorlayers/messenger_mdis_utah", false) +asset.require("./colorlayers/messenger_mosaic_utah", false) +asset.require("./colorlayers/messenger_mosaic2_utah", false) +asset.require("./colorlayers/messenger_bdr_utah", asset.enabled) +asset.require("./colorlayers/messenger_hie_utah", false) +asset.require("./colorlayers/messenger_hiw_utah", false) +asset.require("./colorlayers/messenger_loi_utah", false) +asset.require("./colorlayers/messenger_shade_utah", false) +asset.require("./colorlayers/messenger_mdr_utah", false) +asset.require("./colorlayers/messenger_mp3_utah", false) + + + +asset.meta = { + Name = "Default Mercury Layers (Utah)", + Version = "1.0", + Description = [[Default Mercury layers are: Aluminium Abundance, Calcium Abundance, + Iron Abundance, Magnesium Abundance, Silicon Abundance, Messenger MDIS, + Messenger Mosaic, Messenger Mosaic2, Messenger BDR, Messenger HIE, Messenger HIW, + Messenger LOI, Messenger SHADE, Messenger MDR, Messenger MP3, and Messenger DEM (3D). + + + Layers only loaded from the Utah server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/newyork_layers.asset b/data/assets/scene/solarsystem/planets/newyork_layers.asset new file mode 100644 index 0000000000..66f41604be --- /dev/null +++ b/data/assets/scene/solarsystem/planets/newyork_layers.asset @@ -0,0 +1,25 @@ +asset.require("./base_layers") + +asset.require("./earth/layers/newyork_layers") +asset.require("./earth/moon/layers/newyork_layers") +asset.require("./jupiter/europa/layers/newyork_layers") +asset.require("./mars/layers/newyork_layers") +asset.require("./mercury/layers/newyork_layers") +asset.require("./saturn/enceladus/layers/newyork_layers") +asset.require("./venus/layers/newyork_layers") + + + +asset.meta = { + Name = "Default Solar System Layers (New York)", + Version = "1.0", + Description = [[Adds default layers for all planets. Remove this asset and include + individual layers for planets to customize planet layers + + + Layers only loaded from the New York server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/default_layers.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/default_layers.asset index 2d36fe9a58..fe7fbadcc1 100644 --- a/data/assets/scene/solarsystem/planets/saturn/enceladus/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/default_layers.asset @@ -1,14 +1,18 @@ -asset.require("./layers/colorlayers/enceladus_texture", false) -asset.require("./layers/colorlayers/global_mosaic_100m_hpf_sweden", false) -asset.require("./layers/colorlayers/global_mosaic_100m_hpf_newyork", true) +asset.require("./layers/base_layers", false) +asset.require("./layers/sweden_layers", false) +asset.require("./layers/newyork_layers", true) asset.meta = { Name = "Default Enceladus Layers", - Version = "1.0", - Description = [[Default Enceladus layers are: Enceladus Texture and Cassini Global - Mosaic 100m HPF]], + Version = "1.1", + Description = [[Default Enceladus layers are: Enceladus Texture, + and Cassini Global Mosaic 100m HPF. + + + Layers loaded from all available servers + ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license" diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/base_layers.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/base_layers.asset new file mode 100644 index 0000000000..0385f2b6c3 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/base_layers.asset @@ -0,0 +1,12 @@ +asset.require("./colorlayers/enceladus_texture", false) + + + +asset.meta = { + Name = "Base Enceladus Layers", + Version = "1.0", + Description = "Base Enceladus layers are: Enceladus Texture", + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/newyork_layers.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/newyork_layers.asset new file mode 100644 index 0000000000..11baca14c5 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/newyork_layers.asset @@ -0,0 +1,18 @@ +asset.require("./base_layers", false) +asset.require("./colorlayers/global_mosaic_100m_hpf_newyork", asset.enabled) + + + +asset.meta = { + Name = "Default Enceladus Layers (New York)", + Version = "1.0", + Description = [[Default Enceladus layers are: Enceladus Texture, + and Cassini Global Mosaic 100m HPF. + + + Layers only loaded from the New York server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/sweden_layers.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/sweden_layers.asset new file mode 100644 index 0000000000..3908e58697 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/sweden_layers.asset @@ -0,0 +1,18 @@ +asset.require("./base_layers", false) +asset.require("./colorlayers/global_mosaic_100m_hpf_sweden", asset.enabled) + + + +asset.meta = { + Name = "Default Enceladus Layers (Sweden)", + Version = "1.0", + Description = [[Default Enceladus layers are: Enceladus Texture, + and Cassini Global Mosaic 100m HPF. + + + Layers only loaded from the Sweden server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/sweden_layers.asset b/data/assets/scene/solarsystem/planets/sweden_layers.asset new file mode 100644 index 0000000000..bc8f51ad6a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/sweden_layers.asset @@ -0,0 +1,27 @@ +asset.require("./base_layers") + +asset.require("./earth/layers/sweden_layers") +asset.require("./earth/moon/layers/sweden_layers") +asset.require("./jupiter/europa/layers/sweden_layers") +asset.require("./mars/layers/sweden_layers") +asset.require("./mercury/layers/sweden_layers") +asset.require("./saturn/enceladus/layers/sweden_layers") + +-- The Sweden server does not have these layers, use the New York server for now +asset.require("./venus/layers/newyork_layers") + + + +asset.meta = { + Name = "Default Solar System Layers (Sweden)", + Version = "1.0", + Description = [[Adds default layers for all planets. Remove this asset and include + individual layers for planets to customize planet layers + + + Layers only loaded from the Sweden server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/utah_layers.asset b/data/assets/scene/solarsystem/planets/utah_layers.asset new file mode 100644 index 0000000000..95b51f16e3 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/utah_layers.asset @@ -0,0 +1,27 @@ +asset.require("./base_layers") + +asset.require("./earth/layers/utah_layers") +asset.require("./earth/moon/layers/utah_layers") +asset.require("./mars/layers/utah_layers") +asset.require("./mercury/layers/utah_layers") +asset.require("./venus/layers/utah_layers") + +-- The Utah server does not have these layers, use the New York server for now +asset.require("./jupiter/europa/layers/newyork_layers") +asset.require("./saturn/enceladus/layers/newyork_layers") + + + +asset.meta = { + Name = "Default Solar System Layers (Utah)", + Version = "1.0", + Description = [[Adds default layers for all planets. Remove this asset and include + individual layers for planets to customize planet layers + + + Layers only loaded from the Utah server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/venus/default_layers.asset b/data/assets/scene/solarsystem/planets/venus/default_layers.asset index 957149d5a2..4347bbf910 100644 --- a/data/assets/scene/solarsystem/planets/venus/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/venus/default_layers.asset @@ -1,18 +1,18 @@ -asset.require("./layers/colorlayers/magellan_mosaic_utah", false) -asset.require("./layers/colorlayers/magellan_mosaic_newyork", false) -asset.require("./layers/colorlayers/venus_texture", false) -asset.require("./layers/colorlayers/clouds_magellan_combo", true) -asset.require("./layers/colorlayers/clouds_magellan_combo_newyork", false) - -asset.require("./layers/heightlayers/magellan_utah", true) -asset.require("./layers/heightlayers/magellan_newyork", false) +asset.require("./layers/base_layers", false) +asset.require("./layers/newyork_layers", false) +asset.require("./layers/utah_layers", true) asset.meta = { Name = "Default Venus Layers", - Version = "1.1", - Description = "Default Venus layers are: Venus Magellan Mosaic and Venus Magellan DEM", + Version = "1.2", + Description = [[Default Venus layers are: Venus Texture, Magellan Mosaic, + Clouds Magellan Combo, and Magellan Elevation (3D). + + + Layers loaded from all available servers + ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license" diff --git a/data/assets/scene/solarsystem/planets/venus/layers/base_layers.asset b/data/assets/scene/solarsystem/planets/venus/layers/base_layers.asset new file mode 100644 index 0000000000..312ac584d8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/venus/layers/base_layers.asset @@ -0,0 +1,12 @@ +asset.require("./colorlayers/venus_texture", false) + + + +asset.meta = { + Name = "Base Venus Layers", + Version = "1.0", + Description = "Base Venus layers are: Venus Texture", + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/clouds_magellan_combo.asset b/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/clouds_magellan_combo_utah.asset similarity index 92% rename from data/assets/scene/solarsystem/planets/venus/layers/colorlayers/clouds_magellan_combo.asset rename to data/assets/scene/solarsystem/planets/venus/layers/colorlayers/clouds_magellan_combo_utah.asset index 2086f4ee46..f2b4efdc1b 100644 --- a/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/clouds_magellan_combo.asset +++ b/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/clouds_magellan_combo_utah.asset @@ -11,8 +11,8 @@ local texturesPath = asset.resource({ local Layer = { - Identifier = "Clouds_Magellan_Combo", - Name = "Clouds Magellan Combo", + Identifier = "Clouds_Magellan_Combo_Utah", + Name = "Clouds Magellan Combo [Utah]", Enabled = asset.enabled, Type = "TileProviderByLevel", LevelTileProviders = { diff --git a/data/assets/scene/solarsystem/planets/venus/layers/newyork_layers.asset b/data/assets/scene/solarsystem/planets/venus/layers/newyork_layers.asset new file mode 100644 index 0000000000..45464d42a3 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/venus/layers/newyork_layers.asset @@ -0,0 +1,21 @@ +asset.require("./base_layers", false) +asset.require("./colorlayers/magellan_mosaic_newyork", false) +asset.require("./colorlayers/clouds_magellan_combo_newyork", asset.enabled) + +asset.require("./heightlayers/magellan_newyork", asset.enabled) + + + +asset.meta = { + Name = "Default Venus Layers (New York)", + Version = "1.0", + Description = [[Default Venus layers are: Venus Texture, Magellan Mosaic, + Clouds Magellan Combo, and Magellan Elevation (3D). + + + Layers only loaded from the New York server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/venus/layers/utah_layers.asset b/data/assets/scene/solarsystem/planets/venus/layers/utah_layers.asset new file mode 100644 index 0000000000..4c00a6e01d --- /dev/null +++ b/data/assets/scene/solarsystem/planets/venus/layers/utah_layers.asset @@ -0,0 +1,21 @@ +asset.require("./base_layers", false) +asset.require("./colorlayers/magellan_mosaic_utah", false) +asset.require("./colorlayers/clouds_magellan_combo_utah", asset.enabled) + +asset.require("./heightlayers/magellan_utah", asset.enabled) + + + +asset.meta = { + Name = "Default Venus Layers (Utah)", + Version = "1.0", + Description = [[Default Venus layers are: Venus Texture, Magellan Mosaic, + Clouds Magellan Combo, and Magellan Elevation (3D). + + + Layers only loaded from the Utah server + ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/include/openspace/engine/configuration.h b/include/openspace/engine/configuration.h index 9d7a64c433..b6174030bf 100644 --- a/include/openspace/engine/configuration.h +++ b/include/openspace/engine/configuration.h @@ -45,6 +45,8 @@ struct Configuration { Configuration& operator=(const Configuration&) = delete; Configuration& operator=(Configuration&&) = default; + ghoul::Dictionary createDictionary(); + std::string windowConfiguration = "${CONFIG}/single.xml"; std::string asset; std::string profile; @@ -112,6 +114,15 @@ struct Configuration { bool isConsoleDisabled = false; bool bypassLauncher = false; + enum LayerServer { + All = 0, + NewYork, + Sweden, + Utah, + None + }; + LayerServer layerServer = LayerServer::All; + std::map moduleConfigurations; struct OpenGLDebugContext { @@ -151,6 +162,9 @@ Configuration loadConfigurationFromFile(const std::filesystem::path& configurati const std::filesystem::path& settingsFile, const glm::ivec2& primaryMonitorResolution); +Configuration::LayerServer stringToLayerServer(std::string_view server); +std::string layerServerToString(Configuration::LayerServer server); + } // namespace openspace #endif // __OPENSPACE_CORE___CONFIGURATION___H__ diff --git a/include/openspace/engine/settings.h b/include/openspace/engine/settings.h index c43178def4..7ccaee7d11 100644 --- a/include/openspace/engine/settings.h +++ b/include/openspace/engine/settings.h @@ -25,6 +25,7 @@ #ifndef __OPENSPACE_CORE___SETTINGS___H__ #define __OPENSPACE_CORE___SETTINGS___H__ +#include #include #include #include @@ -42,6 +43,7 @@ struct Settings { std::optional rememberLastProfile; std::optional visibility; std::optional bypassLauncher; + std::optional layerServer; struct MRF { auto operator<=>(const MRF&) const = default; diff --git a/openspace.cfg b/openspace.cfg index 987762dc5f..28ef256f33 100644 --- a/openspace.cfg +++ b/openspace.cfg @@ -228,6 +228,12 @@ ShutdownCountdown = 3 ScreenshotUseDate = true BypassLauncher = false +LayerServer = "All" +-- LayerServer = "NewYork" +-- LayerServer = "Sweden" +-- LayerServer = "Utah" +-- LayerServer = "None" + -- OnScreenTextScaling = "framebuffer" -- PerProfileCache = true -- DisableRenderingOnMaster = true diff --git a/src/engine/configuration.cpp b/src/engine/configuration.cpp index d33f041821..cdec76b78b 100644 --- a/src/engine/configuration.cpp +++ b/src/engine/configuration.cpp @@ -283,6 +283,11 @@ namespace { // multiprojector setups where a launcher window would be undesired std::optional bypassLauncher; + // Set which layer server should be preferd to be used, the options are + // \"All\", \"NewYork\", \"Sweden\", \"Utah\" and \"None\". + std::optional layerServer [[codegen::inlist("All", "NewYork", + "Sweden", "Utah", "None")]]; + // The URL that is pinged to check which version of OpenSpace is the most current // if you don't want this request to happen, this value should not be set at all std::optional versionCheckUrl; @@ -313,6 +318,152 @@ namespace { namespace openspace { +ghoul::Dictionary Configuration::createDictionary() { + ghoul::Dictionary res; + + res.setValue("WindowConfiguration", windowConfiguration); + res.setValue("Asset", asset); + res.setValue("Profile", profile); + res.setValue("PropertyVisibility", static_cast(propertyVisibility)); + + ghoul::Dictionary globalCustomizationScriptsDict; + for (size_t i = 0; i < globalCustomizationScripts.size(); ++i) { + globalCustomizationScriptsDict.setValue( + std::to_string(i), + globalCustomizationScripts[i] + ); + } + res.setValue("GlobalCustomizationScripts", globalCustomizationScriptsDict); + + ghoul::Dictionary fontsDict; + for (auto it = fonts.begin(); it != fonts.end(); ++it) { + fontsDict.setValue(it->first, it->second); + } + res.setValue("Fonts", fontsDict); + + { + ghoul::Dictionary fontSizeDict; + fontSizeDict.setValue("FrameInfo", static_cast(fontSize.frameInfo)); + fontSizeDict.setValue("Shutdown", static_cast(fontSize.shutdown)); + fontSizeDict.setValue("Log", static_cast(fontSize.log)); + fontSizeDict.setValue("CameraInfo", static_cast(fontSize.cameraInfo)); + fontSizeDict.setValue("VersionInfo", static_cast(fontSize.versionInfo)); + + res.setValue("FontSize", fontSizeDict); + } + + { + ghoul::Dictionary loggingDict; + loggingDict.setValue("Level", logging.level); + loggingDict.setValue("ForceImmediateFlush", logging.forceImmediateFlush); + loggingDict.setValue("CapabilitiesVerbosity", logging.capabilitiesVerbosity); + + ghoul::Dictionary logsDict; + for (size_t i = 0; i < logging.logs.size(); ++i) { + logsDict.setValue(std::to_string(i), logging.logs[i]); + } + loggingDict.setValue("Logs", logsDict); + + res.setValue("Logging", loggingDict); + } + + res.setValue("ScriptLog", scriptLog); + + { + ghoul::Dictionary documentationDict; + documentationDict.setValue("Path", documentation.path); + + res.setValue("Documentation", documentationDict); + } + + res.setValue("VersionCheckUrl", versionCheckUrl); + res.setValue("UseMultithreadedInitialization", useMultithreadedInitialization); + + { + ghoul::Dictionary loadingScreenDict; + loadingScreenDict.setValue("IsShowingMessages", loadingScreen.isShowingMessages); + loadingScreenDict.setValue("IsShowingNodeNames", loadingScreen.isShowingNodeNames); + loadingScreenDict.setValue( + "IsShowingLogMessages", + loadingScreen.isShowingLogMessages + ); + + res.setValue("LoadingScreen", loadingScreenDict); + } + + res.setValue("IsCheckingOpenGLState", isCheckingOpenGLState); + res.setValue("IsLoggingOpenGLCalls", isLoggingOpenGLCalls); + res.setValue("IsPrintingEvents", isPrintingEvents); + res.setValue("ConsoleKey", ghoul::to_string(consoleKey)); + res.setValue("ShutdownCountdown", static_cast(shutdownCountdown)); + res.setValue("shouldUseScreenshotDate", shouldUseScreenshotDate); + res.setValue("OnScreenTextScaling", onScreenTextScaling); + res.setValue("UsePerProfileCache", usePerProfileCache); + res.setValue("IsRenderingOnMasterDisabled", isRenderingOnMasterDisabled); + res.setValue("GlobalRotation", static_cast(globalRotation)); + res.setValue("ScreenSpaceRotation", static_cast(screenSpaceRotation)); + res.setValue("MasterRotation", static_cast(masterRotation)); + res.setValue("IsConsoleDisabled", isConsoleDisabled); + res.setValue("BypassLauncher", bypassLauncher); + res.setValue("LayerServer", layerServerToString(layerServer)); + + ghoul::Dictionary moduleConfigurationsDict; + for (auto it = moduleConfigurations.begin(); it != moduleConfigurations.end(); ++it) { + moduleConfigurationsDict.setValue(it->first, it->second); + } + res.setValue("ModuleConfigurations", moduleConfigurationsDict); + + { + ghoul::Dictionary openGLDebugContextDict; + openGLDebugContextDict.setValue("IsActive", openGLDebugContext.isActive); + openGLDebugContextDict.setValue("PrintStacktrace", openGLDebugContext.printStacktrace); + openGLDebugContextDict.setValue("IsSynchronous", openGLDebugContext.isSynchronous); + + ghoul::Dictionary identifierFiltersDict; + for (size_t i = 0; i < openGLDebugContext.severityFilters.size(); ++i) { + { + ghoul::Dictionary identifierFilterDict; + identifierFilterDict.setValue("Type", openGLDebugContext.identifierFilters[i].type); + identifierFilterDict.setValue("Source", openGLDebugContext.identifierFilters[i].source); + identifierFilterDict.setValue( + "Identifier", + static_cast(openGLDebugContext.identifierFilters[i].identifier) + ); + + openGLDebugContextDict.setValue(std::to_string(i), identifierFilterDict); + } + } + openGLDebugContextDict.setValue("IdentifierFilters", identifierFiltersDict); + + ghoul::Dictionary severityFiltersDict; + for (size_t i = 0; i < openGLDebugContext.severityFilters.size(); ++i) { + severityFiltersDict.setValue( + std::to_string(i), + openGLDebugContext.severityFilters[i] + ); + } + openGLDebugContextDict.setValue("SeverityFilters", severityFiltersDict); + + res.setValue("OpenGLDebugContext", openGLDebugContextDict); + } + + { + ghoul::Dictionary httpProxyDict; + httpProxyDict.setValue("UsingHttpProxy", httpProxy.usingHttpProxy); + httpProxyDict.setValue("Address", httpProxy.address); + httpProxyDict.setValue("Port", static_cast(httpProxy.port)); + httpProxyDict.setValue("Authentication", httpProxy.authentication); + httpProxyDict.setValue("User", httpProxy.user); + httpProxyDict.setValue("Password", httpProxy.password); + + res.setValue("HttpProxy", httpProxyDict); + } + + res.setValue("SgctConfigNameInitialized", sgctConfigNameInitialized); + + return res; +} + void parseLuaState(Configuration& configuration) { using namespace ghoul::lua; @@ -456,6 +607,10 @@ void parseLuaState(Configuration& configuration) { } c.bypassLauncher = p.bypassLauncher.value_or(c.bypassLauncher); + + if (p.layerServer.has_value()) { + c.layerServer = stringToLayerServer(*p.layerServer); + } } void patchConfiguration(Configuration& configuration, const Settings& settings) { @@ -472,6 +627,9 @@ void patchConfiguration(Configuration& configuration, const Settings& settings) if (settings.bypassLauncher.has_value()) { configuration.bypassLauncher = *settings.bypassLauncher; } + if (settings.layerServer.has_value()) { + configuration.layerServer = *settings.layerServer; + } auto it = configuration.moduleConfigurations.find("GlobeBrowsing"); // Just in case we have a configuration file that does not specify anything // about the globebrowsing module @@ -551,4 +709,26 @@ Configuration loadConfigurationFromFile(const std::filesystem::path& configurati return result; } +openspace::Configuration::LayerServer stringToLayerServer(std::string_view server) { + using Server = openspace::Configuration::LayerServer; + if (server == "All") { return Server::All; } + else if (server == "NewYork") { return Server::NewYork; } + else if (server == "Sweden") { return Server::Sweden; } + else if (server == "Utah") { return Server::Utah; } + else if (server == "None") { return Server::None; } + else { throw ghoul::MissingCaseException(); } +} + +std::string layerServerToString(openspace::Configuration::LayerServer server) { + using Server = openspace::Configuration::LayerServer; + switch (server) { + case Server::All: return "All"; + case Server::NewYork: return "NewYork"; + case Server::Sweden: return "Sweden"; + case Server::Utah: return "Utah"; + case Server::None: return "None"; + default: throw ghoul::MissingCaseException(); + } +} + } // namespace openspace diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index aff5c8289b..2637341fef 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -1669,7 +1669,9 @@ scripting::LuaLibrary OpenSpaceEngine::luaLibrary() { codegen::lua::IsMaster, codegen::lua::Version, codegen::lua::ReadCSVFile, - codegen::lua::ResetCamera + codegen::lua::ResetCamera, + codegen::lua::Configuration, + codegen::lua::LayerServer }, { absPath("${SCRIPTS}/core_scripts.lua") diff --git a/src/engine/openspaceengine_lua.inl b/src/engine/openspaceengine_lua.inl index 8c57caf881..8bf6c7be75 100644 --- a/src/engine/openspaceengine_lua.inl +++ b/src/engine/openspaceengine_lua.inl @@ -235,4 +235,20 @@ namespace { openspace::setCameraFromProfile(*openspace::global::profile); } +/** + * Returns the whole configuration object as a Dictionary + */ +[[codegen::luawrap]] ghoul::Dictionary configuration() { + openspace::Configuration& config = *openspace::global::configuration; + return config.createDictionary(); +} + +/** + * Returns the current layer server from the configuration + */ +[[codegen::luawrap]] std::string layerServer() { + openspace::Configuration& config = *openspace::global::configuration; + return layerServerToString(config.layerServer); +} + #include "openspaceengine_lua_codegen.cpp" diff --git a/src/engine/settings.cpp b/src/engine/settings.cpp index 1f433b30ac..e1df61f429 100644 --- a/src/engine/settings.cpp +++ b/src/engine/settings.cpp @@ -74,6 +74,11 @@ namespace version1 { } settings.bypassLauncher = get_to(json, "bypass"); + std::optional layerServer = get_to(json, "layerserver"); + if (layerServer.has_value()) { + settings.layerServer = stringToLayerServer(*layerServer); + } + if (auto it = json.find("mrf"); it != json.end()) { if (!it->is_object()) { throw ghoul::RuntimeError("'mrf' is not an object"); @@ -165,6 +170,9 @@ void saveSettings(const Settings& settings, const std::filesystem::path& filenam if (settings.bypassLauncher.has_value()) { json["bypass"] = *settings.bypassLauncher; } + if (settings.layerServer.has_value()) { + json["layerserver"] = layerServerToString(*settings.layerServer); + } nlohmann::json mrf = nlohmann::json::object(); if (settings.mrf.isEnabled.has_value()) { mrf["enabled"] = *settings.mrf.isEnabled; diff --git a/tests/test_settings.cpp b/tests/test_settings.cpp index 81875594be..1a7ab36608 100644 --- a/tests/test_settings.cpp +++ b/tests/test_settings.cpp @@ -56,6 +56,7 @@ TEST_CASE("Settings Load: Empty", "[settings]") { CHECK(!settings.rememberLastProfile.has_value()); CHECK(!settings.visibility.has_value()); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -82,6 +83,7 @@ TEST_CASE("Settings Load: Really Empty", "[settings]") { CHECK(!settings.rememberLastProfile.has_value()); CHECK(!settings.visibility.has_value()); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -122,6 +124,7 @@ TEST_CASE("Settings Load: Started Before", "[settings]") { CHECK(!settings.rememberLastProfile.has_value()); CHECK(!settings.visibility.has_value()); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -164,6 +167,7 @@ TEST_CASE("Settings Load: Configuration", "[settings]") { CHECK(!settings.rememberLastProfile.has_value()); CHECK(!settings.visibility.has_value()); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -206,6 +210,7 @@ TEST_CASE("Settings Load: Configuration Remember", "[settings]") { CHECK(!settings.rememberLastProfile.has_value()); CHECK(!settings.visibility.has_value()); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -248,6 +253,7 @@ TEST_CASE("Settings Load: Profile", "[settings]") { CHECK(!settings.rememberLastProfile.has_value()); CHECK(!settings.visibility.has_value()); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -290,6 +296,7 @@ TEST_CASE("Settings Load: Profile Remember", "[settings]") { CHECK(*settings.rememberLastProfile == false); CHECK(!settings.visibility.has_value()); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -332,6 +339,7 @@ TEST_CASE("Settings Load: Visibility/NoviceUser", "[settings]") { REQUIRE(settings.visibility.has_value()); CHECK(*settings.visibility == properties::Property::Visibility::NoviceUser); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -374,6 +382,7 @@ TEST_CASE("Settings Load: Visibility/User", "[settings]") { REQUIRE(settings.visibility.has_value()); CHECK(*settings.visibility == properties::Property::Visibility::User); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -416,6 +425,7 @@ TEST_CASE("Settings Load: Visibility/AdvancedUser", "[settings]") { REQUIRE(settings.visibility.has_value()); CHECK(*settings.visibility == properties::Property::Visibility::AdvancedUser); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -458,6 +468,7 @@ TEST_CASE("Settings Load: Visibility/Developer", "[settings]") { REQUIRE(settings.visibility.has_value()); CHECK(*settings.visibility == properties::Property::Visibility::Developer); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -500,6 +511,7 @@ TEST_CASE("Settings Load: Bypass Launcher", "[settings]") { CHECK(!settings.visibility.has_value()); REQUIRE(settings.bypassLauncher.has_value()); CHECK(*settings.bypassLauncher == false); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); CHECK(!settings.mrf.location.has_value()); } @@ -517,6 +529,221 @@ TEST_CASE("Settings Save: Bypass Launcher", "[settings]") { CHECK(srcSettings == cmpSettings); } +TEST_CASE("Settings Load: LayerServer/All", "[settings]") { + constexpr std::string_view Source = R"( +{ + "version": 1, + "layerserver": "All" +} +)"; + + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_load_layerserver_all.json"; + { + std::ofstream f(file); + f << Source; + } + + Settings settings = loadSettings(file); + + CHECK(!settings.hasStartedBefore.has_value()); + CHECK(!settings.configuration.has_value()); + CHECK(!settings.rememberLastConfiguration.has_value()); + CHECK(!settings.profile.has_value()); + CHECK(!settings.rememberLastProfile.has_value()); + CHECK(!settings.visibility.has_value()); + CHECK(!settings.bypassLauncher.has_value()); + REQUIRE(settings.layerServer.has_value()); + CHECK(*settings.layerServer == Configuration::LayerServer::All); + CHECK(!settings.mrf.isEnabled.has_value()); + CHECK(!settings.mrf.location.has_value()); +} + +TEST_CASE("Settings Save: LayerServer/All", "[settings]") { + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_save_layerserver_all.json"; + + Settings srcSettings = { + .layerServer = openspace::Configuration::LayerServer::All + }; + saveSettings(srcSettings, file); + + Settings cmpSettings = loadSettings(file); + CHECK(srcSettings == cmpSettings); +} + +TEST_CASE("Settings Load: LayerServer/NewYork", "[settings]") { + constexpr std::string_view Source = R"( +{ + "version": 1, + "layerserver": "NewYork" +} +)"; + + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_load_layerserver_newyork.json"; + { + std::ofstream f(file); + f << Source; + } + + Settings settings = loadSettings(file); + + CHECK(!settings.hasStartedBefore.has_value()); + CHECK(!settings.configuration.has_value()); + CHECK(!settings.rememberLastConfiguration.has_value()); + CHECK(!settings.profile.has_value()); + CHECK(!settings.rememberLastProfile.has_value()); + CHECK(!settings.visibility.has_value()); + CHECK(!settings.bypassLauncher.has_value()); + REQUIRE(settings.layerServer.has_value()); + CHECK(*settings.layerServer == Configuration::LayerServer::NewYork); + CHECK(!settings.mrf.isEnabled.has_value()); + CHECK(!settings.mrf.location.has_value()); +} + +TEST_CASE("Settings Save: LayerServer/NewYork", "[settings]") { + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_save_layerserver_newyork.json"; + + Settings srcSettings = { + .layerServer = openspace::Configuration::LayerServer::NewYork + }; + saveSettings(srcSettings, file); + + Settings cmpSettings = loadSettings(file); + CHECK(srcSettings == cmpSettings); +} + +TEST_CASE("Settings Load: LayerServer/Sweden", "[settings]") { + constexpr std::string_view Source = R"( +{ + "version": 1, + "layerserver": "Sweden" +} +)"; + + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_load_layerserver_sweden.json"; + { + std::ofstream f(file); + f << Source; + } + + Settings settings = loadSettings(file); + + CHECK(!settings.hasStartedBefore.has_value()); + CHECK(!settings.configuration.has_value()); + CHECK(!settings.rememberLastConfiguration.has_value()); + CHECK(!settings.profile.has_value()); + CHECK(!settings.rememberLastProfile.has_value()); + CHECK(!settings.visibility.has_value()); + CHECK(!settings.bypassLauncher.has_value()); + REQUIRE(settings.layerServer.has_value()); + CHECK(*settings.layerServer == Configuration::LayerServer::Sweden); + CHECK(!settings.mrf.isEnabled.has_value()); + CHECK(!settings.mrf.location.has_value()); +} + +TEST_CASE("Settings Save: LayerServer/Sweden", "[settings]") { + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_save_layerserver_sweden.json"; + + Settings srcSettings = { + .layerServer = openspace::Configuration::LayerServer::Sweden + }; + saveSettings(srcSettings, file); + + Settings cmpSettings = loadSettings(file); + CHECK(srcSettings == cmpSettings); +} + +TEST_CASE("Settings Load: LayerServer/Utah", "[settings]") { + constexpr std::string_view Source = R"( +{ + "version": 1, + "layerserver": "Utah" +} +)"; + + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_load_layerserver_utah.json"; + { + std::ofstream f(file); + f << Source; + } + + Settings settings = loadSettings(file); + + CHECK(!settings.hasStartedBefore.has_value()); + CHECK(!settings.configuration.has_value()); + CHECK(!settings.rememberLastConfiguration.has_value()); + CHECK(!settings.profile.has_value()); + CHECK(!settings.rememberLastProfile.has_value()); + CHECK(!settings.visibility.has_value()); + CHECK(!settings.bypassLauncher.has_value()); + REQUIRE(settings.layerServer.has_value()); + CHECK(*settings.layerServer == Configuration::LayerServer::Utah); + CHECK(!settings.mrf.isEnabled.has_value()); + CHECK(!settings.mrf.location.has_value()); +} + +TEST_CASE("Settings Save: LayerServer/Utah", "[settings]") { + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_save_layerserver_utah.json"; + + Settings srcSettings = { + .layerServer = openspace::Configuration::LayerServer::Utah + }; + saveSettings(srcSettings, file); + + Settings cmpSettings = loadSettings(file); + CHECK(srcSettings == cmpSettings); +} + +TEST_CASE("Settings Load: LayerServer/None", "[settings]") { + constexpr std::string_view Source = R"( +{ + "version": 1, + "layerserver": "None" +} +)"; + + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_load_layerserver_none.json"; + { + std::ofstream f(file); + f << Source; + } + + Settings settings = loadSettings(file); + + CHECK(!settings.hasStartedBefore.has_value()); + CHECK(!settings.configuration.has_value()); + CHECK(!settings.rememberLastConfiguration.has_value()); + CHECK(!settings.profile.has_value()); + CHECK(!settings.rememberLastProfile.has_value()); + CHECK(!settings.visibility.has_value()); + CHECK(!settings.bypassLauncher.has_value()); + REQUIRE(settings.layerServer.has_value()); + CHECK(*settings.layerServer == Configuration::LayerServer::None); + CHECK(!settings.mrf.isEnabled.has_value()); + CHECK(!settings.mrf.location.has_value()); +} + +TEST_CASE("Settings Save: LayerServer/None", "[settings]") { + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_save_layerserver_none.json"; + + Settings srcSettings = { + .layerServer = openspace::Configuration::LayerServer::None + }; + saveSettings(srcSettings, file); + + Settings cmpSettings = loadSettings(file); + CHECK(srcSettings == cmpSettings); +} + TEST_CASE("Settings Load: MRF IsEnabled", "[settings]") { constexpr std::string_view Source = R"( { @@ -543,6 +770,7 @@ TEST_CASE("Settings Load: MRF IsEnabled", "[settings]") { CHECK(!settings.rememberLastProfile.has_value()); CHECK(!settings.visibility.has_value()); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); REQUIRE(settings.mrf.isEnabled.has_value()); CHECK(*settings.mrf.isEnabled == true); CHECK(!settings.mrf.location.has_value()); @@ -589,6 +817,7 @@ TEST_CASE("Settings Load: MRF Location", "[settings]") { CHECK(!settings.rememberLastProfile.has_value()); CHECK(!settings.visibility.has_value()); CHECK(!settings.bypassLauncher.has_value()); + CHECK(!settings.layerServer.has_value()); CHECK(!settings.mrf.isEnabled.has_value()); REQUIRE(settings.mrf.location.has_value()); CHECK(*settings.mrf.location == "ghi"); @@ -620,6 +849,7 @@ TEST_CASE("Settings Load: Full", "[settings]") { "profile-remember": false, "visibility": "NoviceUser", "bypass": false, + "layerserver": "All", "mrf": { "enabled": true, "location": "ghi" @@ -650,6 +880,8 @@ TEST_CASE("Settings Load: Full", "[settings]") { CHECK(*settings.visibility == properties::Property::Visibility::NoviceUser); REQUIRE(settings.bypassLauncher.has_value()); CHECK(*settings.bypassLauncher == false); + REQUIRE(settings.layerServer.has_value()); + CHECK(*settings.layerServer == Configuration::LayerServer::All); REQUIRE(settings.mrf.isEnabled.has_value()); CHECK(*settings.mrf.isEnabled == true); REQUIRE(settings.mrf.location.has_value()); @@ -668,6 +900,7 @@ TEST_CASE("Settings Save: Full", "[settings]") { .rememberLastProfile = false, .visibility = openspace::properties::Property::Visibility::NoviceUser, .bypassLauncher = false, + .layerServer = openspace::Configuration::LayerServer::All, .mrf = Settings::MRF { .isEnabled = true, .location = "ghi" @@ -804,6 +1037,42 @@ TEST_CASE("Settings Load Fail: Bypass Launcher", "[settings]") { CHECK_THROWS(loadSettings(file)); } +TEST_CASE("Settings Load Fail: LayerServer type", "[settings]") { + constexpr std::string_view Source = R"( +{ + "version": 1, + "layerserver": 1 +} +)"; + + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_load_fail_layerserver_type.json"; + { + std::ofstream f(file); + f << Source; + } + + CHECK_THROWS(loadSettings(file)); +} + +TEST_CASE("Settings Load Fail: LayerServer value", "[settings]") { + constexpr std::string_view Source = R"( +{ + "version": 1, + "layerserver": "abc" +} +)"; + + std::filesystem::path path = std::filesystem::temp_directory_path(); + std::filesystem::path file = path / "test_settings_load_fail_layerserver_value.json"; + { + std::ofstream f(file); + f << Source; + } + + CHECK_THROWS(loadSettings(file)); +} + TEST_CASE("Settings Load Fail: MRF", "[settings]") { constexpr std::string_view Source = R"( {