diff --git a/CMakeLists.txt b/CMakeLists.txt index e369c02dce..68945f167a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,8 +143,8 @@ if (UNIX) endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGLM_ENABLE_EXPERIMENTAL" CACHE STRING "" FORCE) set(OpenGL_GL_PREFERENCE "GLVND" CACHE STRING "OpenGL Preference setting necessary for linux" FORCE) - set(ASSIMP_BUILD_MINIZIP ON CACHE BOOL "Set to have assimp build minizip" FORCE) endif () + set(ASSIMP_BUILD_MINIZIP ON CACHE BOOL "Set to have assimp build minizip" FORCE) endif () add_subdirectory(ext) diff --git a/Jenkinsfile b/Jenkinsfile index c29f718631..b4b1775164 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -110,12 +110,12 @@ linux_gcc_make: { cmakeCompileOptions += ' -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS:STRING="-DGLM_ENABLE_EXPERIMENTAL"'; cmakeCompileOptions += ' -DOpenGL_GL_PREFERENCE:STRING=GLVND -DASSIMP_BUILD_MINIZIP=1'; // Not sure why the linking of OpenSpaceTest takes so long - compileHelper.build(compileHelper.Make(), compileHelper.Gcc(), cmakeCompileOptions, 'OpenSpace', 'build-make'); + compileHelper.build(compileHelper.Make(), compileHelper.Gcc(), cmakeCompileOptions, '', 'build-make'); compileHelper.recordCompileIssues(compileHelper.Gcc()); } stage('linux-gcc-make/test') { - // testHelper.runUnitTests('build/OpenSpaceTest'); - // testHelper.runUnitTests('bin/codegentest') + testHelper.runUnitTests('bin/OpenSpaceTest'); + testHelper.runUnitTests('bin/codegentest') } cleanWs() } // node('linux') @@ -132,11 +132,11 @@ linux_gcc_ninja: { def cmakeCompileOptions = moduleCMakeFlags(); cmakeCompileOptions += '-DMAKE_BUILD_TYPE=Release'; // Not sure why the linking of OpenSpaceTest takes so long - compileHelper.build(compileHelper.Ninja(), compileHelper.Gcc(), cmakeCompileOptions, 'OpenSpace', 'build-ninja'); + compileHelper.build(compileHelper.Ninja(), compileHelper.Gcc(), cmakeCompileOptions, '', 'build-ninja'); } stage('linux-gcc-ninja/test') { - // testHelper.runUnitTests('build/OpenSpaceTest'); - // testHelper.runUnitTests('bin/codegentest') + testHelper.runUnitTests('bin/OpenSpaceTest'); + testHelper.runUnitTests('bin/codegentest') } cleanWs() } // node('linux') @@ -153,12 +153,12 @@ linux_clang_make: { def cmakeCompileOptions = moduleCMakeFlags() cmakeCompileOptions += ' -DMAKE_BUILD_TYPE=Release' // Not sure why the linking of OpenSpaceTest takes so long - compileHelper.build(compileHelper.Make(), compileHelper.Clang(), cmakeCompileOptions, 'OpenSpace', 'build-make'); + compileHelper.build(compileHelper.Make(), compileHelper.Clang(), cmakeCompileOptions, '', 'build-make'); compileHelper.recordCompileIssues(compileHelper.Clang()); } stage('linux-clang-make/test') { - // testHelper.runUnitTests('build/OpenSpaceTest'); - // testHelper.runUnitTests('bin/codegentest') + testHelper.runUnitTests('bin/OpenSpaceTest'); + testHelper.runUnitTests('bin/codegentest') } cleanWs() } // node('linux') @@ -175,11 +175,11 @@ linux_clang_ninja: { def cmakeCompileOptions = moduleCMakeFlags() cmakeCompileOptions += '-DMAKE_BUILD_TYPE=Release' // Not sure why the linking of OpenSpaceTest takes so long - compileHelper.build(compileHelper.Ninja(), compileHelper.Clang(), cmakeCompileOptions, 'OpenSpace', 'build-ninja'); + compileHelper.build(compileHelper.Ninja(), compileHelper.Clang(), cmakeCompileOptions, '', 'build-ninja'); } stage('linux-clang-ninja/test') { - // testHelper.runUnitTests('build/OpenSpaceTest'); - // testHelper.runUnitTests('bin/codegentest') + testHelper.runUnitTests('bin/OpenSpaceTest'); + testHelper.runUnitTests('bin/codegentest') } cleanWs() } // node('linux') @@ -197,8 +197,7 @@ windows_msvc: { compileHelper.recordCompileIssues(compileHelper.VisualStudio()); } stage('windows-msvc/test') { - // Currently, the unit tests are failing on Windows - // testHelper.runUnitTests('bin\\Debug\\OpenSpaceTest') + testHelper.runUnitTests('bin\\Debug\\OpenSpaceTest') testHelper.runUnitTests('bin\\Debug\\codegentest') } cleanWs() @@ -236,8 +235,8 @@ macos_make: { compileHelper.build(compileHelper.Make(), compileHelper.Clang(), moduleCMakeFlags(), '', 'build-make'); } stage('macos-make/test') { - // Currently, the unit tests are crashing on OS X - // testHelper.runUnitTests('build/Debug/OpenSpaceTest') + testHelper.runUnitTests('bin/Debug/OpenSpaceTest') + testHelper.runUnitTests('bin/Debug/codegentest') } cleanWs() } // node('macos') @@ -254,8 +253,8 @@ macos_xcode: { compileHelper.build(compileHelper.Xcode(), compileHelper.Xcode(), moduleCMakeFlags(), '', 'build-xcode'); } stage('macos-xcode/test') { - // Currently, the unit tests are crashing on OS X - // testHelper.runUnitTests('build/Debug/OpenSpaceTest') + testHelper.runUnitTests('bin/Debug/OpenSpaceTest') + testHelper.runUnitTests('bin/Debug/codegentest') } cleanWs() } // node('macos') diff --git a/apps/OpenSpace/ext/launcher/include/profile/propertiesdialog.h b/apps/OpenSpace/ext/launcher/include/profile/propertiesdialog.h index b8b3c8e1a3..9db0ed0a91 100644 --- a/apps/OpenSpace/ext/launcher/include/profile/propertiesdialog.h +++ b/apps/OpenSpace/ext/launcher/include/profile/propertiesdialog.h @@ -65,6 +65,8 @@ private slots: void transitionToEditMode(); void parseSelections(); + void selectLineFromScriptLog(); + private: void createWidgets(); @@ -81,6 +83,8 @@ private: QListWidget* _list = nullptr; QPushButton* _addButton = nullptr; QPushButton* _removeButton = nullptr; + + QPushButton* _fillFromScriptLog = nullptr; QLabel* _commandLabel = nullptr; QComboBox* _commandCombo = nullptr; QLabel* _propertyLabel = nullptr; diff --git a/apps/OpenSpace/ext/launcher/src/profile/propertiesdialog.cpp b/apps/OpenSpace/ext/launcher/src/profile/propertiesdialog.cpp index bcc377f2f2..969e2f37fa 100644 --- a/apps/OpenSpace/ext/launcher/src/profile/propertiesdialog.cpp +++ b/apps/OpenSpace/ext/launcher/src/profile/propertiesdialog.cpp @@ -25,14 +25,17 @@ #include "profile/propertiesdialog.h" #include "profile/line.h" +#include #include #include #include +#include #include #include #include #include #include +#include #include #include @@ -93,6 +96,13 @@ void PropertiesDialog::createWidgets() { } layout->addWidget(new Line); { + _fillFromScriptLog = new QPushButton("Fill from ScriptLog"); + connect( + _fillFromScriptLog, &QPushButton::clicked, + this, &PropertiesDialog::selectLineFromScriptLog + ); + layout->addWidget(_fillFromScriptLog); + _commandLabel = new QLabel("Property Set Command"); layout->addWidget(_commandLabel); @@ -333,6 +343,7 @@ void PropertiesDialog::transitionFromEditMode() { } void PropertiesDialog::editBoxDisabled(bool disabled) { + _fillFromScriptLog->setDisabled(disabled); _commandLabel->setDisabled(disabled); _commandCombo->setDisabled(disabled); _propertyLabel->setDisabled(disabled); @@ -368,3 +379,89 @@ void PropertiesDialog::keyPressEvent(QKeyEvent* evt) { QDialog::keyPressEvent(evt); } +void PropertiesDialog::selectLineFromScriptLog() { + QComboBox* comboBox = new QComboBox; + + QFile file(QString::fromStdString(absPath("${LOGS}/scriptLog.txt").string())); + if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QTextStream in(&file); + while (!in.atEnd()) { + QString line = in.readLine(); + // removing return from a few statments + // these are usually generated by gui panels + line.remove(QRegularExpression("^return ")); + + if (line.isEmpty()) { + continue; + } + + if (!line.startsWith("openspace.setPropertyValue")) { + continue; + } + + comboBox->addItem(line); + } + } + + QDialog dialog; + + connect(&dialog, &QDialog::finished, [this, comboBox](int result) { + if (result == QDialog::Rejected) { + return; + } + + QString text = comboBox->currentText(); + if (!text.startsWith("openspace.setPropertyValue")) { + return; + } + + // We have a string that is of the form: + // openspace.setPropertyValue('prop', value); + + if (text.startsWith("openspace.setPropertyValueSingle")) { + using namespace std::string_view_literals; + _commandCombo->setCurrentIndex(0); + text = text.mid("openspace.setPropertyValueSingle"sv.size() + 1); // +1 for ( + } + else { + // command == "openspace.setPropertyValue" + using namespace std::string_view_literals; + _commandCombo->setCurrentIndex(1); + text = text.mid("openspace.setPropertyValue"sv.size() + 1); // +1 for ( + } + + // Remove everything past the closing brace + text = text.left(text.indexOf(")")); + QStringList textList = text.split(","); + + if (textList.size() < 2) { + return; + } + + // Remove the string markers around the property + QString property = textList[0].mid(1, textList[0].size() - 2); + + textList.removeFirst(); + QString value = textList.join(","); + + + _propertyEdit->setText(property.trimmed()); + _valueEdit->setText(value.trimmed()); + }); + + QLayout* layout = new QVBoxLayout; + QLabel* label = new QLabel("Select a line from the Script Log to add"); + layout->addWidget(label); + + layout->addWidget(comboBox); + + QDialogButtonBox* bb = new QDialogButtonBox( + QDialogButtonBox::Ok | QDialogButtonBox::Cancel + ); + connect(bb, &QDialogButtonBox::accepted, &dialog, &QDialog::accept); + connect(bb, &QDialogButtonBox::rejected, &dialog, &QDialog::reject); + layout->addWidget(bb); + + dialog.setLayout(layout); + dialog.exec(); +} diff --git a/data/assets/actions/toggle_trail.asset b/data/assets/actions/toggle_trail.asset index d3c5848d6c..0cb559b0f3 100644 --- a/data/assets/actions/toggle_trail.asset +++ b/data/assets/actions/toggle_trail.asset @@ -99,7 +99,17 @@ asset.onInitialize(function() end) asset.onDeinitialize(function() - openspace.action.removeAction(toggle_trail.Identifier) - openspace.action.removeAction(show_trail.Identifier) - openspace.action.removeAction(hide_trail.Identifier) + openspace.action.removeAction(toggle_trail) + openspace.action.removeAction(show_trail) + openspace.action.removeAction(hide_trail) end) + + +asset.meta = { + Name = "Actions - Toggle current Trails", + Version = "1.0", + Description = [[ Asset providing actions to toggle trails]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/base.asset b/data/assets/base.asset index 5f71d4896e..ffed062348 100644 --- a/data/assets/base.asset +++ b/data/assets/base.asset @@ -24,7 +24,6 @@ asset.require("util/launcher_images") asset.require("scene/milkyway/exoplanets/exoplanets_data") asset.require("scene/milkyway/exoplanets/exoplanets_textures") -local assetHelper = asset.require("util/asset_helper") asset.require("scene/digitaluniverse/2dF") asset.require("scene/digitaluniverse/2mass") asset.require("scene/digitaluniverse/6dF") diff --git a/data/assets/base_blank.asset b/data/assets/base_blank.asset index ce7bb1ef01..5b771af9ab 100644 --- a/data/assets/base_blank.asset +++ b/data/assets/base_blank.asset @@ -1,6 +1,5 @@ -- This is a blank scene that that just sets up the default menus/dasboard/keys, etc. -local assetHelper = asset.require("util/asset_helper") local propertyHelper = asset.require("util/property_helper") -- Specifying which other assets should be loaded in this scene @@ -59,9 +58,9 @@ asset.onInitialize(function () end) asset.onDeinitialize(function () - openspace.action.removeAction(toggle_trails.Identifier) + openspace.action.removeAction(toggle_trails) openspace.clearKey(toggle_trails.Key) - openspace.action.removeAction(toggle_planet_labels.Identifier) + openspace.action.removeAction(toggle_planet_labels) openspace.clearKey(toggle_planet_labels.Key) end) diff --git a/data/assets/customization/globebrowsing.asset b/data/assets/customization/globebrowsing.asset index e1307229d4..a5b5eeb090 100644 --- a/data/assets/customization/globebrowsing.asset +++ b/data/assets/customization/globebrowsing.asset @@ -87,3 +87,14 @@ asset.onInitialize(function () end end end) + + +asset.meta = { + Name = "Customization - GlobeBrowsing", + Version = "1.0", + Description = [[ This asset adds planetary images that can be downloaded separately + and placed in the OpenSpaceData folder]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/customization/gui.asset b/data/assets/customization/gui.asset index e18cd44a7f..6e7d14003f 100644 --- a/data/assets/customization/gui.asset +++ b/data/assets/customization/gui.asset @@ -6,3 +6,13 @@ asset.export("webguiDevelopmentMode", false) -- 2) Clone the repository: https://github.com/OpenSpace/OpenSpace-WebGuiFrontend -- 3) Install nodejs (including npm) -- 4) Within the repository, run `npm install` and `npm start` + + +asset.meta = { + Name = "Customization - User Interface", + Version = "1.0", + Description = [[ This asset is used by developers working on the GUI.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/dashboard/date.asset b/data/assets/dashboard/date.asset index 01ada33be2..111e8125fb 100644 --- a/data/assets/dashboard/date.asset +++ b/data/assets/dashboard/date.asset @@ -9,5 +9,17 @@ asset.onInitialize(function() end) asset.onDeinitialize(function() - openspace.dashboard.removeDashboardItem(item.Identifier) + openspace.dashboard.removeDashboardItem(item) end) + +asset.export(item) + + +asset.meta = { + Name = "Dashboard - Date", + Version = "1.0", + Description = [[ This asset provides a Date dashboard item.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/dashboard/default_dashboard.asset b/data/assets/dashboard/default_dashboard.asset index 453895ab4e..fcb7c9be8b 100644 --- a/data/assets/dashboard/default_dashboard.asset +++ b/data/assets/dashboard/default_dashboard.asset @@ -4,3 +4,13 @@ asset.require("./distance") asset.require("./framerate") asset.require("./parallelconnection") asset.require("./globelocation") + + +asset.meta = { + Name = "Dashboard - Default Items", + Version = "1.0", + Description = [[ This asset provides the default items for the dashboard.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/dashboard/distance.asset b/data/assets/dashboard/distance.asset index 6316a79948..e10cb5a54e 100644 --- a/data/assets/dashboard/distance.asset +++ b/data/assets/dashboard/distance.asset @@ -9,5 +9,17 @@ asset.onInitialize(function() end) asset.onDeinitialize(function() - openspace.dashboard.removeDashboardItem(item.Identifier) + openspace.dashboard.removeDashboardItem(item) end) + +asset.export(item) + + +asset.meta = { + Name = "Dashboard - Distance", + Version = "1.0", + Description = [[ This asset provides a Distance dashboard item.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/dashboard/framerate.asset b/data/assets/dashboard/framerate.asset index 1c28a17674..47b6b3b71b 100644 --- a/data/assets/dashboard/framerate.asset +++ b/data/assets/dashboard/framerate.asset @@ -9,5 +9,17 @@ asset.onInitialize(function() end) asset.onDeinitialize(function() - openspace.dashboard.removeDashboardItem(item.Identifier) + openspace.dashboard.removeDashboardItem(item) end) + +asset.export(item) + + +asset.meta = { + Name = "Dashboard - Framerate", + Version = "1.0", + Description = [[ This asset provides a Framerate dashboard item.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/dashboard/globelocation.asset b/data/assets/dashboard/globelocation.asset index 268e2593f7..8fd743b7f9 100644 --- a/data/assets/dashboard/globelocation.asset +++ b/data/assets/dashboard/globelocation.asset @@ -9,5 +9,17 @@ asset.onInitialize(function() end) asset.onDeinitialize(function() - openspace.dashboard.removeDashboardItem(item.Identifier) + openspace.dashboard.removeDashboardItem(item) end) + +asset.export(item) + + +asset.meta = { + Name = "Dashboard - GlobeLocation", + Version = "1.0", + Description = [[ This asset provides a GlobeLocation dashboard item.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/dashboard/parallelconnection.asset b/data/assets/dashboard/parallelconnection.asset index 2ee8bd6307..29f932fc8b 100644 --- a/data/assets/dashboard/parallelconnection.asset +++ b/data/assets/dashboard/parallelconnection.asset @@ -9,5 +9,17 @@ asset.onInitialize(function() end) asset.onDeinitialize(function() - openspace.dashboard.removeDashboardItem(item.Identifier) + openspace.dashboard.removeDashboardItem(item) end) + +asset.export(item) + + +asset.meta = { + Name = "Dashboard - ParallelConnection", + Version = "1.0", + Description = [[ This asset provides a ParallelConnection dashboard item.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/dashboard/simulationincrement.asset b/data/assets/dashboard/simulationincrement.asset index 1ced58eed5..0e72bcbf22 100644 --- a/data/assets/dashboard/simulationincrement.asset +++ b/data/assets/dashboard/simulationincrement.asset @@ -9,5 +9,18 @@ asset.onInitialize(function() end) asset.onDeinitialize(function() - openspace.dashboard.removeDashboardItem(item.Identifier) + openspace.dashboard.removeDashboardItem(item) end) + +asset.export(item) + + +asset.meta = { + Name = "Dashboard - Simulation Increment", + Version = "1.0", + Description = [[ This asset provides a dashboard item that shows the simulation + increment, meaning how fast the in-game time progresses relative to the wall-clock.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/dashboard/velocity.asset b/data/assets/dashboard/velocity.asset index 5373ee315c..2e3fea1a6b 100644 --- a/data/assets/dashboard/velocity.asset +++ b/data/assets/dashboard/velocity.asset @@ -10,5 +10,17 @@ asset.onInitialize(function() end) asset.onDeinitialize(function() - openspace.dashboard.removeDashboardItem(item.Identifier) + openspace.dashboard.removeDashboardItem(item) end) + +asset.export(item) + + +asset.meta = { + Name = "Dashboard - Velocity", + Version = "1.0", + Description = [[ This asset provides a dashboard item that shows the camera's velocity]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/examples/animation.asset b/data/assets/examples/animation.asset index e9081f483b..5805b754aa 100644 --- a/data/assets/examples/animation.asset +++ b/data/assets/examples/animation.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local transforms = asset.require("scene/solarsystem/planets/earth/transforms") @@ -181,13 +180,28 @@ local animationBounce = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - animationLoop, - animationLoopInf, - animationOnce, - animationBounceInf, - animationBounce -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(animationLoop) + openspace.addSceneGraphNode(animationLoopInf) + openspace.addSceneGraphNode(animationOnce) + openspace.addSceneGraphNode(animationBounceInf) + openspace.addSceneGraphNode(animationBounce) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(animationBounce) + openspace.removeSceneGraphNode(animationBounceInf) + openspace.removeSceneGraphNode(animationOnce) + openspace.removeSceneGraphNode(animationLoopInf) + openspace.removeSceneGraphNode(animationLoop) +end) + + +asset.export(animationLoop) +asset.export(animationLoopInf) +asset.export(animationOnce) +asset.export(animationBounceInf) +asset.export(animationBounce) -- Asset asset.meta = { @@ -196,17 +210,11 @@ asset.meta = { Description = "Simple animation example asset with an animated box model", Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = { - "animationLoop", - "animationLoopInf", - "animationOnce", - "animationBounceInf", - "animationBounce" - } + License = "MIT license" } -- Model +-- @TODO: At the moment, this overwrites the previous meta description. Probably needs a way to specify multiple meta's per file? asset.meta = { Name = "Animated Box Model", Version = "1.0", @@ -216,12 +224,5 @@ asset.meta = { License = [[ Creative Commons Attribution 4.0 International License, https://creativecommons.org/licenses/by/4.0/ - ]], - Identifiers = { - "animationLoop", - "animationLoopInf", - "animationOnce", - "animationBounceInf", - "animationBounce" - } + ]] } diff --git a/data/assets/examples/approachevents.asset b/data/assets/examples/approachevents.asset index 73914e12f5..90b049096f 100644 --- a/data/assets/examples/approachevents.asset +++ b/data/assets/examples/approachevents.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local transforms = asset.require("scene/solarsystem/planets/earth/transforms") @@ -63,6 +62,6 @@ asset.onInitialize(function() end) asset.onDeinitialize(function() - openspace.removeSceneGraphNode(obj.Identifier) - openspace.action.removeAction(generic_action.Identifier) + openspace.removeSceneGraphNode(obj) + openspace.action.removeAction(generic_action) end) diff --git a/data/assets/examples/dashboarditems.asset b/data/assets/examples/dashboarditems.asset index 056fa1f2ff..08e61ac06d 100644 --- a/data/assets/examples/dashboarditems.asset +++ b/data/assets/examples/dashboarditems.asset @@ -1,50 +1,84 @@ -local assetHelper = asset.require("util/asset_helper") +local angle = { + Type = "DashboardItemAngle", + Identifier = "Angle", + GuiName = "Angle", + ReferenceType = "Node", + ReferenceNodeName = "Earth", + DestinationType = "Node", + DestinationNodeName = "Moon" +} -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemAngle", - Identifier = "Angle", - GuiName = "Angle", - ReferenceType = "Node", - ReferenceNodeName = "Earth", - DestinationType = "Node", - DestinationNodeName = "Moon" - }, - { - Type = "DashboardItemDate", - Identifier = "Date", - GuiName = "Date" - }, - { - Type = "DashboardItemSimulationIncrement", - Identifier = "SimulationIncrement", - GuiName = "Simulation Increment" - }, - { - Type = "DashboardItemDistance", - Identifier = "Distance", - GuiName = "Distance" - }, - { - Type = "DashboardItemFramerate", - Identifier = "Framerate", - GuiName = "Framerate" - }, - { - Type = "DashboardItemParallelConnection", - Identifier = "ParallelConnection", - GuiName = "Parallel Connection" - }, - { - Type = "DashboardItemMission", - Identifier = "Mission", - GuiName = "Mission" - }, - { - Type = "DashboardItemPropertyValue", - Identifier = "asd", - GuiName = "adasd", - URI = "Scene.Earth.Renderable.Enabled", - DisplayString = "Earth is enabled: {}" - } -}) +local date = { + Type = "DashboardItemDate", + Identifier = "Date", + GuiName = "Date" +} + +local simulation_increment = { + Type = "DashboardItemSimulationIncrement", + Identifier = "SimulationIncrement", + GuiName = "Simulation Increment" +} + +local distance = { + Type = "DashboardItemDistance", + Identifier = "Distance", + GuiName = "Distance" +} + +local framerate = { + Type = "DashboardItemFramerate", + Identifier = "Framerate", + GuiName = "Framerate" +} + +local parallel_connection = { + Type = "DashboardItemParallelConnection", + Identifier = "ParallelConnection", + GuiName = "Parallel Connection" +} + +local mission = { + Type = "DashboardItemMission", + Identifier = "Mission", + GuiName = "Mission" +} + +local property_value = { + Type = "DashboardItemPropertyValue", + Identifier = "asd", + GuiName = "adasd", + URI = "Scene.Earth.Renderable.Enabled", + DisplayString = "Earth is enabled: {}" +} + +asset.onInitialize(function() + openspace.dashboard.addDashboardItem(angle) + openspace.dashboard.addDashboardItem(date) + openspace.dashboard.addDashboardItem(simulation_increment) + openspace.dashboard.addDashboardItem(distance) + openspace.dashboard.addDashboardItem(framerate) + openspace.dashboard.addDashboardItem(parallel_connection) + openspace.dashboard.addDashboardItem(mission) + openspace.dashboard.addDashboardItem(property_value) +end) + +asset.onDeinitialize(function() + openspace.dashboard.removeDashboardItem(property_value) + openspace.dashboard.removeDashboardItem(mission) + openspace.dashboard.removeDashboardItem(parallel_connection) + openspace.dashboard.removeDashboardItem(framerate) + openspace.dashboard.removeDashboardItem(distance) + openspace.dashboard.removeDashboardItem(simulation_increment) + openspace.dashboard.removeDashboardItem(date) + openspace.dashboard.removeDashboardItem(angle) +end) + +asset.export(property_value) +asset.export(mission) +asset.export(parallel_connection) +asset.export(framerate) +asset.export(distance) +asset.export(simulation_increment) +asset.export(date) +asset.export(angle) diff --git a/data/assets/examples/discs.asset b/data/assets/examples/discs.asset index 417edbc2aa..cfa461021f 100644 --- a/data/assets/examples/discs.asset +++ b/data/assets/examples/discs.asset @@ -1,5 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - -- @TODO (emmbr 2020-02-03) Potential threading issue later on? This will run on the main thread local cyanTexture = openspace.createSingleColorImage("example_disc_color1", { 0.0, 1.0, 1.0 }) local purpleTexture = openspace.createSingleColorImage("example_disc_color2", { 0.5, 0.0, 0.5 }) @@ -40,7 +38,16 @@ local FullEllipticDisc = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - BasicDisc, - FullEllipticDisc -}) + +asset.onInitialize(function() + openspace.addSceneGraphNode(BasicDisc) + openspace.addSceneGraphNode(FullEllipticDisc) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(FullEllipticDisc) + openspace.removeSceneGraphNode(BasicDisc) +end) + +asset.export(BasicDisc) +asset.export(FullEllipticDisc) diff --git a/data/assets/examples/globerotation.asset b/data/assets/examples/globerotation.asset index 6fb45e38c4..4ada35e386 100644 --- a/data/assets/examples/globerotation.asset +++ b/data/assets/examples/globerotation.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local earth = asset.require("scene/solarsystem/planets/earth/earth") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -44,4 +43,12 @@ local Example_GlobeRotation = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Example_GlobeRotation }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Example_GlobeRotation) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Example_GlobeRotation) +end) + +asset.export(Example_GlobeRotation) diff --git a/data/assets/examples/globetranslation.asset b/data/assets/examples/globetranslation.asset index b67d97c126..2150c723d6 100644 --- a/data/assets/examples/globetranslation.asset +++ b/data/assets/examples/globetranslation.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local earth = asset.require("scene/solarsystem/planets/earth/earth") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -53,7 +52,15 @@ local Example_Adaptive_Height = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - Example_Fixed_Height, - Example_Adaptive_Height -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(Example_Fixed_Height) + openspace.addSceneGraphNode(Example_Adaptive_Height) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Example_Adaptive_Height) + openspace.removeSceneGraphNode(Example_Fixed_Height) +end) + +asset.export(Example_Fixed_Height) +asset.export(Example_Adaptive_Height) diff --git a/data/assets/examples/grids.asset b/data/assets/examples/grids.asset index 6cc70afc8a..2fe816e3fb 100644 --- a/data/assets/examples/grids.asset +++ b/data/assets/examples/grids.asset @@ -1,5 +1,3 @@ -local assetHelper = asset.require("util/asset_helper) - local scale = 149597870700 -- 1 AU local radialGrid = { @@ -90,9 +88,21 @@ local boxGrid = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - radialGrid, - planarGrid, - sphericalGrid, - boxGrid -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(radialGrid) + openspace.addSceneGraphNode(planarGrid) + openspace.addSceneGraphNode(sphericalGrid) + openspace.addSceneGraphNode(boxGrid) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(boxGrid) + openspace.removeSceneGraphNode(sphericalGrid) + openspace.removeSceneGraphNode(planarGrid) + openspace.removeSceneGraphNode(radialGrid) +end) + +asset.export(radialGrid) +asset.export(sphericalGrid) +asset.export(planarGrid) +asset.export(boxGrid) diff --git a/data/assets/examples/luastatemachine.asset b/data/assets/examples/luastatemachine.asset index 788be31a4d..022a16557e 100644 --- a/data/assets/examples/luastatemachine.asset +++ b/data/assets/examples/luastatemachine.asset @@ -33,14 +33,14 @@ function previous() stateMachine.goToPreviousState() end -asset.onInitialize(function () +asset.onInitialize(function() stateMachine = stateMachineHelper.createStateMachine(states) openspace.bindKey("RIGHT", "next()") openspace.bindKey("LEFT", "previous()") end) -asset.onDeinitialize(function () +asset.onDeinitialize(function() stateMachine = nil openspace.clearKey("RIGHT") openspace.clearKey("LEFT") diff --git a/data/assets/examples/modelshader/modelshader.asset b/data/assets/examples/modelshader/modelshader.asset index 60789a9d7e..47042e7ac3 100644 --- a/data/assets/examples/modelshader/modelshader.asset +++ b/data/assets/examples/modelshader/modelshader.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local transforms = asset.require("scene/solarsystem/planets/earth/transforms") @@ -42,4 +41,12 @@ local model = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { model }) +asset.onInitialize(function() + openspace.addSceneGraphNode(model) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(model) +end) + +asset.export(model) diff --git a/data/assets/examples/primitives.asset b/data/assets/examples/primitives.asset index 1965552a95..61080e73b3 100644 --- a/data/assets/examples/primitives.asset +++ b/data/assets/examples/primitives.asset @@ -1,5 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - local scale = 149597870700 -- 1 AU local circle = { @@ -46,7 +44,15 @@ local ellipse = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - circle, - ellipse -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(circle) + openspace.addSceneGraphNode(ellipse) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(ellipse) + openspace.removeSceneGraphNode(circle) +end) + +asset.export(circle) +asset.export(ellipse) diff --git a/data/assets/examples/renderableplaneimageonline.asset b/data/assets/examples/renderableplaneimageonline.asset index bfff9da591..645eac919e 100644 --- a/data/assets/examples/renderableplaneimageonline.asset +++ b/data/assets/examples/renderableplaneimageonline.asset @@ -1,6 +1,5 @@ -- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_SPOUT enabled -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") @@ -22,5 +21,12 @@ local RenderablePlaneImageOnline = { -local objects = { RenderablePlaneImageOnline } -assetHelper.registerSceneGraphNodesAndExport(asset, objects) +asset.onInitialize(function() + openspace.addSceneGraphNode(RenderablePlaneImageOnline) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(RenderablePlaneImageOnline) +end) + +asset.export(RenderablePlaneImageOnline) diff --git a/data/assets/examples/screenspacebrowser.asset b/data/assets/examples/screenspacebrowser.asset index d6c18eb62a..d6ca2fe1c4 100644 --- a/data/assets/examples/screenspacebrowser.asset +++ b/data/assets/examples/screenspacebrowser.asset @@ -1,5 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - local spec = { Type = "ScreenSpaceBrowser", Identifier = "ScreenSpaceBrowserExample", @@ -7,4 +5,12 @@ local spec = { Url = "https://www.openspaceproject.com/" }; -assetHelper.registerScreenSpaceRenderables(asset, { spec }) +asset.onInitialize(function() + openspace.addScreenSpaceRenderable(spec) +end) + +asset.onDeinitialize(function() + openspace.removeScreenSpaceRenderable(spec) +end) + +asset.export(spec) diff --git a/data/assets/examples/screenspacespout.asset b/data/assets/examples/screenspacespout.asset index 5ca810ec42..f20f09b303 100644 --- a/data/assets/examples/screenspacespout.asset +++ b/data/assets/examples/screenspacespout.asset @@ -1,6 +1,5 @@ -- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_SPOUT enabled -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") @@ -21,5 +20,12 @@ local Spout = { -local objects = { Spout } -assetHelper.registerSceneGraphNodesAndExport(asset, objects) +asset.onInitialize(function() + openspace.addSceneGraphNode(Spout) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Spout) +end) + +asset.export(Spout) diff --git a/data/assets/examples/spheres.asset b/data/assets/examples/spheres.asset index ed56b5c300..935bb7a82a 100644 --- a/data/assets/examples/spheres.asset +++ b/data/assets/examples/spheres.asset @@ -1,4 +1,4 @@ -local assetHelper = asset.require("util/asset_helper") +local spheres = {} local i = 1 for z=1,3 do @@ -9,7 +9,7 @@ for z=1,3 do Transform = { Translation = { Type = "StaticTranslation", - Position = {x, y, z} + Position = { x, y, z } } }, Renderable = { @@ -26,8 +26,27 @@ for z=1,3 do Path = "/Other/Spheres" } } - assetHelper.registerSceneGraphNodesAndExport(asset, { sphere }) + + table.insert(spheres, sphere) i = i + 1 end end end + + +asset.onInitialize(function() + for _, n in ipairs(spheres) do + openspace.addSceneGraphNode(n) + end +end) + +asset.onDeinitialize(function() + for _, n in ipairs(spheres) do + openspace.removeSceneGraphNode(n) + end +end) + + +for _, n in ipairs(spheres) do + asset.export(n) +end diff --git a/data/assets/examples/temperature_land_highres.asset b/data/assets/examples/temperature_land_highres.asset index b34baebc90..eb09de6b08 100644 --- a/data/assets/examples/temperature_land_highres.asset +++ b/data/assets/examples/temperature_land_highres.asset @@ -40,11 +40,16 @@ local layer_folder = { Description = [[ Temporal coverage: 01 Jan 1981 - 31 Dec 2020.]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_prototype) openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_folder) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_folder) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_prototype) +end) + asset.export("layer", layer_prototype) asset.meta = { diff --git a/data/assets/examples/urlsynchronization.asset b/data/assets/examples/urlsynchronization.asset index 3cae4f2179..dcc1848591 100644 --- a/data/assets/examples/urlsynchronization.asset +++ b/data/assets/examples/urlsynchronization.asset @@ -1,7 +1,5 @@ -- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_SYNC enabled -local assetHelper = asset.require("util/asset_helper") - asset.syncedResource({ Name = "Example Single", Type = "UrlSynchronization", diff --git a/data/assets/examples/volume/generated/cartesian.asset b/data/assets/examples/volume/generated/cartesian.asset index 5673b0d869..1b6fbb4b1b 100644 --- a/data/assets/examples/volume/generated/cartesian.asset +++ b/data/assets/examples/volume/generated/cartesian.asset @@ -4,7 +4,6 @@ -- the volume data itself needs to be generated, -- using the task 'data/tasks/volume/generate_cartesian.task' -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local sunRadius = 695508000 @@ -34,5 +33,12 @@ local volume = { } } -local objects = { volume } -assetHelper.registerSceneGraphNodes(asset, objects) \ No newline at end of file +asset.onInitialize(function() + openspace.addSceneGraphNode(volume) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(volume) +end) + +asset.export(volume) diff --git a/data/assets/examples/volume/generated/cartesiansequence.asset b/data/assets/examples/volume/generated/cartesiansequence.asset index 537a4bbbc0..3430cc9b9f 100644 --- a/data/assets/examples/volume/generated/cartesiansequence.asset +++ b/data/assets/examples/volume/generated/cartesiansequence.asset @@ -4,35 +4,41 @@ -- the volume data itself needs to be generated, -- using the task 'data/tasks/volume/generate_cartesian_sequence.task' -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local sunRadius = 695508000 local volume = { - Identifier = "GeneratedVolume", - Parent = transforms.SolarSystemBarycenter.Identifier, - Renderable = { - Type = "RenderableTimeVaryingVolume", - SourceDirectory = asset.localResource("cartesiansequence"), - TransferFunction = asset.localResource("../transferfunction.txt"), - StepSize = 0.01, - MinValue = 0, - MaxValue = 1, - GridType = "Cartesian", - SecondsBefore = 50*365*24*60*60, -- 50 years before - SecondsAfter = 50*365*24*60*60 -- 50 years after - }, - GUI = { - Path = "/Examples" - }, - Transform = { - Scale = { - Type = "StaticScale", - Scale = 1000 * sunRadius - } + Identifier = "GeneratedVolume", + Parent = transforms.SolarSystemBarycenter.Identifier, + Renderable = { + Type = "RenderableTimeVaryingVolume", + SourceDirectory = asset.localResource("cartesiansequence"), + TransferFunction = asset.localResource("../transferfunction.txt"), + StepSize = 0.01, + MinValue = 0, + MaxValue = 1, + GridType = "Cartesian", + SecondsBefore = 50*365*24*60*60, -- 50 years before + SecondsAfter = 50*365*24*60*60 -- 50 years after + }, + GUI = { + Path = "/Examples" + }, + Transform = { + Scale = { + Type = "StaticScale", + Scale = 1000 * sunRadius } + } } -local objects = { volume } -assetHelper.registerSceneGraphNodes(asset, objects) +asset.onInitialize(function() + openspace.addSceneGraphNode(volume) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(volume) +end) + +asset.export(volume) diff --git a/data/assets/examples/volume/generated/spherical.asset b/data/assets/examples/volume/generated/spherical.asset index 2acb6b9887..e80d514272 100644 --- a/data/assets/examples/volume/generated/spherical.asset +++ b/data/assets/examples/volume/generated/spherical.asset @@ -4,35 +4,41 @@ -- the volume data itself needs to be generated, -- using the task 'data/tasks/volume/generate_spherical.task' -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local astronomicalUnit = 149597870700 local volume = { - Identifier = "GeneratedVolume", - Parent = transforms.SolarSystemBarycenter.Identifier, - Renderable = { - Type = "RenderableTimeVaryingVolume", - SourceDirectory = asset.localResource("spherical"), - TransferFunction = asset.localResource("../transferfunction.txt"), - StepSize = 0.01, - MinValue = 0, - MaxValue = 1, - GridType = "Spherical", - SecondsBefore = 50*365*24*60*60, -- 50 years before - SecondsAfter = 50*365*24*60*60 -- 50 years after - }, - GUI = { - Path = "/Examples" - }, - Transform = { - Scale = { - Type = "StaticScale", - Scale = astronomicalUnit - } + Identifier = "GeneratedVolume", + Parent = transforms.SolarSystemBarycenter.Identifier, + Renderable = { + Type = "RenderableTimeVaryingVolume", + SourceDirectory = asset.localResource("spherical"), + TransferFunction = asset.localResource("../transferfunction.txt"), + StepSize = 0.01, + MinValue = 0, + MaxValue = 1, + GridType = "Spherical", + SecondsBefore = 50*365*24*60*60, -- 50 years before + SecondsAfter = 50*365*24*60*60 -- 50 years after + }, + GUI = { + Path = "/Examples" + }, + Transform = { + Scale = { + Type = "StaticScale", + Scale = astronomicalUnit } + } } -local objects = { volume } -assetHelper.registerSceneGraphNodes(asset, objects) \ No newline at end of file +asset.onInitialize(function() + openspace.addSceneGraphNode(volume) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(volume) +end) + +asset.export(volume) diff --git a/data/assets/examples/volume/toyvolume.asset b/data/assets/examples/volume/toyvolume.asset index 713b69fff7..3312e03844 100644 --- a/data/assets/examples/volume/toyvolume.asset +++ b/data/assets/examples/volume/toyvolume.asset @@ -1,6 +1,5 @@ -- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_TOYVOLUME enabled -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local ToyVolume = { @@ -18,5 +17,12 @@ local ToyVolume = { } } -local objects = { ToyVolume } -assetHelper.registerSceneGraphNodesAndExport(asset, objects) +asset.onInitialize(function() + openspace.addSceneGraphNode(ToyVolume) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(ToyVolume) +end) + +asset.export(ToyVolume) diff --git a/data/assets/global/localbookmarks.asset b/data/assets/global/localbookmarks.asset index a6727928b5..3543a8cbb7 100644 --- a/data/assets/global/localbookmarks.asset +++ b/data/assets/global/localbookmarks.asset @@ -1,5 +1,20 @@ -local assetHelper = asset.require("util/asset_helper") local bookmarkHelper = asset.require("util/generate_bookmarks") local nodes = bookmarkHelper.getBookmarks("Local Bookmarks", "${ASSETS}/customization/localbookmarks.csv") -assetHelper.registerSceneGraphNodesAndExport(asset, nodes); + + +asset.onInitialize(function() + for _, n in ipairs(nodes) do + openspace.addSceneGraphNode(n) + end +end) + +asset.onDeinitialize(function() + for _, n in ipairs(nodes) do + openspace.removeSceneGraphNode(n) + end +end) + +for _, n in ipairs(nodes) do + asset.export(n) +end diff --git a/data/assets/global/openspacebookmarks.asset b/data/assets/global/openspacebookmarks.asset index b9780b50b6..c02f546fd9 100644 --- a/data/assets/global/openspacebookmarks.asset +++ b/data/assets/global/openspacebookmarks.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local bookmarkHelper = asset.require("util/generate_bookmarks") local dataProvider = "http://data.openspaceproject.com/files/bookmarks/v1/bookmarks.csv" @@ -23,6 +22,10 @@ end) asset.onDeinitialize(function () for _, n in ipairs(nodes) do - openspace.removeSceneGraphNode(n.Identifier); + openspace.removeSceneGraphNode(n); end end) + +for _, n in ipairs(nodes) do + asset.export(n); +end \ No newline at end of file diff --git a/data/assets/gui/images.asset b/data/assets/gui/images.asset index 7f55b59f0e..315fc0ff64 100644 --- a/data/assets/gui/images.asset +++ b/data/assets/gui/images.asset @@ -1,7 +1,5 @@ -- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_SYNC enabled -local assetHelper = asset.require("util/asset_helper") - asset.syncedResource({ Type = "UrlSynchronization", Name = "Icons", diff --git a/data/assets/scene/digitaluniverse/2dF.asset b/data/assets/scene/digitaluniverse/2dF.asset index 13cd896ac5..bbd601d532 100644 --- a/data/assets/scene/digitaluniverse/2dF.asset +++ b/data/assets/scene/digitaluniverse/2dF.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "2dF Textures", Type = "HttpSynchronization", @@ -53,15 +49,24 @@ local object = { } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "2dF Galaxies", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for the The Two-degree Field (2dF) Survey.]], Author = "Brian Abbott (AMNH), Eric Gawiser (Rutgers U)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"2dF"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/2mass.asset b/data/assets/scene/digitaluniverse/2mass.asset index e9ca7bdc7b..a28e1a21c6 100644 --- a/data/assets/scene/digitaluniverse/2mass.asset +++ b/data/assets/scene/digitaluniverse/2mass.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "2MASS Textures", Type = "HttpSynchronization", @@ -49,16 +45,24 @@ local object = { } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "2MASS Galaxies", - Version = "1.0", + Version = "1.1", Description = [[ Digital Universe asset for the Two Micron All-Sky Survey (2MASS) survey]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"2MASS"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/6dF.asset b/data/assets/scene/digitaluniverse/6dF.asset index 3b61dd0221..3d84f0f4d1 100644 --- a/data/assets/scene/digitaluniverse/6dF.asset +++ b/data/assets/scene/digitaluniverse/6dF.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "6dF Textures", Type = "HttpSynchronization", @@ -51,15 +47,23 @@ local object = { } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "6dF Galaxies", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for The Six-degree Field (6dF) Galaxy Survey]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"6dF"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/abell.asset b/data/assets/scene/digitaluniverse/abell.asset index c6be3a84c3..c218cf6620 100644 --- a/data/assets/scene/digitaluniverse/abell.asset +++ b/data/assets/scene/digitaluniverse/abell.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Abell Textures", Type = "HttpSynchronization", @@ -60,15 +56,23 @@ local object = { } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Abell Galaxy Clusters", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for The Abell catalog]], Author = "Stuart Levy (NCSA/UIUC), Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"Abell"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/alternatestarlabels.asset b/data/assets/scene/digitaluniverse/alternatestarlabels.asset index b01cad1fe1..a72d00012e 100644 --- a/data/assets/scene/digitaluniverse/alternatestarlabels.asset +++ b/data/assets/scene/digitaluniverse/alternatestarlabels.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local speck = asset.syncedResource({ Name = "Alternate Star Labels Speck Files", Type = "HttpSynchronization", @@ -37,14 +33,23 @@ local object = { } +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + + + asset.meta = { Name = "Stars Labels - Alternate", - Version = "1.0", + Version = "1.1", Description = [[Digital Universe asset for alternate start labels]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"StarLabelsAlternate"} + License = "AMNH Digital Universe" } - -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) diff --git a/data/assets/scene/digitaluniverse/backgroundradiation.asset b/data/assets/scene/digitaluniverse/backgroundradiation.asset index b49e753be1..a246be8503 100644 --- a/data/assets/scene/digitaluniverse/backgroundradiation.asset +++ b/data/assets/scene/digitaluniverse/backgroundradiation.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local speck = asset.syncedResource({ Name = "Background Radiation Speck Files", Type = "HttpSynchronization", @@ -123,14 +119,30 @@ local Halpha = { } -assetHelper.registerSceneGraphNodesAndExport(asset, { - wmap, cbe, planck, Halpha -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(wmap) + openspace.addSceneGraphNode(cbe) + openspace.addSceneGraphNode(planck) + openspace.addSceneGraphNode(Halpha) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Halpha) + openspace.removeSceneGraphNode(planck) + openspace.removeSceneGraphNode(cbe) + openspace.removeSceneGraphNode(wmap) +end) + +asset.export(wmap) +asset.export(cbe) +asset.export(planck) +asset.export(Halpha) + asset.meta = { Name = "Background Radiation", - Version = "2.0", + Version = "2.1", Description = [[Various AllSky images for the Milky Way and observable Universe. Included: Wilkinson Microwave Anisotropy Probe (WMAP), Cosmic Background Explorer, Planck, and H Alpha

Data Reference: Planck/ESA and the Planck @@ -138,6 +150,5 @@ asset.meta = { Finkbeiner (Princeton)]], Author = "Brian Abbott (AMNH), OpenSpace Team", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"WMAP", "CBE", "Planck", "HAlpha"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/backgroundradiation_multiverse.asset b/data/assets/scene/digitaluniverse/backgroundradiation_multiverse.asset index 51560008fe..5202e908c0 100644 --- a/data/assets/scene/digitaluniverse/backgroundradiation_multiverse.asset +++ b/data/assets/scene/digitaluniverse/backgroundradiation_multiverse.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Background Radiation Textures", Type = "HttpSynchronization", @@ -130,20 +126,34 @@ local multiverse_planck_4 = { } -assetHelper.registerSceneGraphNodesAndExport(asset, { - multiverse_planck_1, multiverse_planck_2, multiverse_planck_3, multiverse_planck_4 -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(multiverse_planck_1) + openspace.addSceneGraphNode(multiverse_planck_2) + openspace.addSceneGraphNode(multiverse_planck_3) + openspace.addSceneGraphNode(multiverse_planck_4) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(multiverse_planck_4) + openspace.removeSceneGraphNode(multiverse_planck_3) + openspace.removeSceneGraphNode(multiverse_planck_2) + openspace.removeSceneGraphNode(multiverse_planck_1) +end) + +asset.export(multiverse_planck_1) +asset.export(multiverse_planck_2) +asset.export(multiverse_planck_3) +asset.export(multiverse_planck_4) + asset.meta = { Name = "Multiverse Background Radiation", - Version = "2.0", + Version = "2.1", Description = [[ Non-physical representation of the location of hypothetical cosmic microwave background radiation images how they would be observed from other locations in the universe.
This is not a measured dataset!]], Author = "Brian Abbott (AMNH), OpenSpace Team", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = { "PlanckMultiverse1", "PlanckMultiverse2", - "PlanckMultiverse3", "PlanckMultiverse4" } + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/clusters.asset b/data/assets/scene/digitaluniverse/clusters.asset index 0e8cae16ff..6945184d6d 100644 --- a/data/assets/scene/digitaluniverse/clusters.asset +++ b/data/assets/scene/digitaluniverse/clusters.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local speck = asset.syncedResource({ Name = "Clusters Speck Files", Type = "HttpSynchronization", @@ -40,15 +36,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Galaxy Clusters Labels", - Version = "1.0", + Version = "1.1", Description = [[Digital Universe asset for Galaxy Clusters]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"GalaxyClusterLabels"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/constellationbounds.asset b/data/assets/scene/digitaluniverse/constellationbounds.asset index 8a253de6d9..94dad6b98c 100644 --- a/data/assets/scene/digitaluniverse/constellationbounds.asset +++ b/data/assets/scene/digitaluniverse/constellationbounds.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local data = asset.syncedResource({ Name = "Constellation Bounds Data", Type = "HttpSynchronization", @@ -42,16 +38,24 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Constellation Bounds", - Version = "1.0", + Version = "1.1", Description = [[DU asset providing a Spherical mesh dividing the sky into regions that fit the constellations.]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"ConstellationBounds"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/constellations.asset b/data/assets/scene/digitaluniverse/constellations.asset index f65c00b905..f17e4602c8 100644 --- a/data/assets/scene/digitaluniverse/constellations.asset +++ b/data/assets/scene/digitaluniverse/constellations.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local speck = asset.syncedResource({ Name = "Constellation Speck Files", Type = "HttpSynchronization", @@ -60,15 +56,26 @@ local constellations = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { constellationsExtragalactic, constellations }) +asset.onInitialize(function() + openspace.addSceneGraphNode(constellationsExtragalactic) + openspace.addSceneGraphNode(constellations) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(constellations) + openspace.removeSceneGraphNode(constellationsExtragalactic) +end) + +asset.export(constellationsExtragalactic) +asset.export(constellations) + asset.meta = { Name = "Constellations", - Version = "1.0", + Version = "1.1", Description = [[Digital Universe asset for constellation lines]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"Constellations", "ConstellationsExtragalactic"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/deepsky.asset b/data/assets/scene/digitaluniverse/deepsky.asset index 8109316997..98abecfa7f 100644 --- a/data/assets/scene/digitaluniverse/deepsky.asset +++ b/data/assets/scene/digitaluniverse/deepsky.asset @@ -1,5 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - local textures = asset.syncedResource({ Name = "Deep Sky Objects Textures", Type = "HttpSynchronization", @@ -92,15 +90,26 @@ local deepSkyImages = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { deepSkyPoints, deepSkyImages }) +asset.onInitialize(function() + openspace.addSceneGraphNode(deepSkyPoints) + openspace.addSceneGraphNode(deepSkyImages) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(deepSkyImages) + openspace.removeSceneGraphNode(deepSkyPoints) +end) + +asset.export(deepSkyPoints) +asset.export(deepSkyImages) + asset.meta = { Name = "Deep Sky Objects Images", - Version = "1.0", + Version = "1.1", Description = [[Digital Universe asset for Deep Sky Objects and their Images]], Author = "Nate Greenstein, Matt Everhart, Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"DeepSkyObjects", "DeepSkyObjectsImages"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/digitaluniverse.asset b/data/assets/scene/digitaluniverse/digitaluniverse.asset index f4bc5e7465..f0b6bc530a 100644 --- a/data/assets/scene/digitaluniverse/digitaluniverse.asset +++ b/data/assets/scene/digitaluniverse/digitaluniverse.asset @@ -34,3 +34,14 @@ asset.require("./superclusters") asset.require("./supernovaremnants") asset.require("./tully") asset.require("./voids") + + +asset.meta = { + Name = "Digital Universe", + Version = "1.0", + Description = [[This asset is a meta asset, containing all the assets from the AMNH + Digital Universe.]], + Author = "Brian Abbott (AMNH)", + URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", + License = "AMNH Digital Universe" +} diff --git a/data/assets/scene/digitaluniverse/dwarfs.asset b/data/assets/scene/digitaluniverse/dwarfs.asset index 1a026472e2..b2903447d5 100644 --- a/data/assets/scene/digitaluniverse/dwarfs.asset +++ b/data/assets/scene/digitaluniverse/dwarfs.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Brown Dwarf Textures", Type = "HttpSynchronization", @@ -62,15 +58,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Brown Dwarfs", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for Brown Dwarfs]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"Dwarfs"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/exoplanets.asset b/data/assets/scene/digitaluniverse/exoplanets.asset index 2da69322c6..f144c2f4bd 100644 --- a/data/assets/scene/digitaluniverse/exoplanets.asset +++ b/data/assets/scene/digitaluniverse/exoplanets.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Exoplanets Textures", Type = "HttpSynchronization", @@ -50,15 +46,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Exoplanets", - Version = "1.0", + Version = "1.1", Description = [[Digital Universe asset for Exoplanets]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"Exoplanets"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/globularclusters.asset b/data/assets/scene/digitaluniverse/globularclusters.asset index e63b2d4579..0c0fe1259a 100644 --- a/data/assets/scene/digitaluniverse/globularclusters.asset +++ b/data/assets/scene/digitaluniverse/globularclusters.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Globular Clusters Textures", Type = "HttpSynchronization", @@ -54,12 +50,21 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Globular Clusters", - Version = "2.0", + Version = "2.1", Description = [[Census: 157 globular clusters. DU Version 2.6. Globular star clusters are gravitationally bound groups of 100,000 to 1 million stars. They are compact, spherical “balls” of stars with very high stellar densities in their centers (stars @@ -73,6 +78,5 @@ asset.meta = { Properties of Galactic Globular Clusters, C. Francis+ (U Cambridge)]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"GlobularClusters"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/grids.asset b/data/assets/scene/digitaluniverse/grids.asset index 433069b89a..91a8619ba7 100644 --- a/data/assets/scene/digitaluniverse/grids.asset +++ b/data/assets/scene/digitaluniverse/grids.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local earth_transforms = asset.require("scene/solarsystem/planets/earth/transforms") @@ -513,16 +512,35 @@ local plane20Gly = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - radio, oort, ecliptic, eclipticLabels, equatorial, equatorialLabels, galactic, - galacticLabels, plane1ld, plane1lm, plane1ly, plane10ly, plane100ly, plane1kly, - plane10kly, plane100kly, plane1Mly, plane10Mly, plane100Mly, plane20Gly -}) +local nodes = { + radio, oort, ecliptic, eclipticLabels, equatorial, equatorialLabels, + galactic, galacticLabels, plane1ld, plane1lm, plane1ly, plane10ly, + plane100ly, plane1kly, plane10kly, plane100kly, plane1Mly, plane10Mly, plane100Mly, + plane20Gly +} + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + local node = nodes[i] + openspace.removeSceneGraphNode(node) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end + asset.meta = { Name = "Grids", - Version = "2.0", + Version = "2.1", Description = [[Various grids for showing size reference. Included: 10,000 light year grid, 10 light year grid, 20 billion light year grid, 10 million light year grid, 100 light year grid, 100 million light year grid, Ecliptic Coordinate Sphere @@ -532,9 +550,5 @@ asset.meta = { 1,000 light year grid, 1 million light year grid, 1 light year grid]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"RadioSphere", "OortSphere", "EclipticSphere", "EclipticSphereLabels", - "Equatorial", "EquatorialSphereLabels", "GalacticSphere", "GalacticSphereLabels", - "1ldGrid", "1lmGrid", "1lyGrid", "10lyGrid", "100lyGrid", "1klyGrid", "10klyGrid", - "100klyGrid", "1MlyGrid", "10MlyGrid", "100MlyGrid", "20GlyGrid"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/groups.asset b/data/assets/scene/digitaluniverse/groups.asset index 62b2eecd3f..bd41977d09 100644 --- a/data/assets/scene/digitaluniverse/groups.asset +++ b/data/assets/scene/digitaluniverse/groups.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local speck = asset.syncedResource({ Name = "Galaxy Groups Speck Files", Type = "HttpSynchronization", @@ -40,15 +36,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Galaxy Group Labels", - Version = "1.0", + Version = "1.1", Author = "Brian Abbott (AMNH)", Description = [[Digital Universe asset for Galaxy Groups]], URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"NearbyGalaxyGroups"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/h2regions.asset b/data/assets/scene/digitaluniverse/h2regions.asset index d81999a271..033bc25d14 100644 --- a/data/assets/scene/digitaluniverse/h2regions.asset +++ b/data/assets/scene/digitaluniverse/h2regions.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "HII Regions Textures", Type = "HttpSynchronization", @@ -52,15 +48,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "HII Regions", - Version = "1.0", + Version = "1.1", Description = [[Digital Universe asset for HII Regions]], Author = "Carter Emmart, Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"HIIRegions"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/hdf.asset b/data/assets/scene/digitaluniverse/hdf.asset index f76fac43d7..77b599a8ec 100644 --- a/data/assets/scene/digitaluniverse/hdf.asset +++ b/data/assets/scene/digitaluniverse/hdf.asset @@ -1,5 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - local circle = asset.syncedResource({ Name = "Circle", Type = "HttpSynchronization", @@ -48,14 +46,22 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Hubble Ultra Deep Field", - Version = "1.1", + Version = "1.2", Description = "Hubble Ultra Deep Field galaxy survey", Author = "Frank Summers (STScI), Brian Abbott (AMNH)", - Identifiers = {"HubbleDeepField"}, URL = "http://www.haydenplanetarium.org/universe", License = [[ Copyright (c) American Museum of Natural History. All rights reserved.

diff --git a/data/assets/scene/digitaluniverse/kepler.asset b/data/assets/scene/digitaluniverse/kepler.asset index 9f7e5c4ff5..3e744c0ea7 100644 --- a/data/assets/scene/digitaluniverse/kepler.asset +++ b/data/assets/scene/digitaluniverse/kepler.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Kepler Textures", Type = "HttpSynchronization", @@ -48,15 +44,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Kepler Planetary Candidates", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for Kepler Planetary Candidates]], Author = "Brian Abbott, Emily Rice, and Jason No (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"KeplerPlanetaryCandidates"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/localdwarfs.asset b/data/assets/scene/digitaluniverse/localdwarfs.asset index d9c8c6212e..a8a515032f 100644 --- a/data/assets/scene/digitaluniverse/localdwarfs.asset +++ b/data/assets/scene/digitaluniverse/localdwarfs.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Local Dwarfs Textures", Type = "HttpSynchronization", @@ -54,15 +50,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Local Group", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for the Local Goup]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"LocalDwarfGalaxies"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/milkyway.asset b/data/assets/scene/digitaluniverse/milkyway.asset index 34bf613fee..4b35bf87a6 100644 --- a/data/assets/scene/digitaluniverse/milkyway.asset +++ b/data/assets/scene/digitaluniverse/milkyway.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local planeTextures = asset.syncedResource({ Name = "Milky Way Plane Textures", Type = "HttpSynchronization", @@ -47,16 +43,24 @@ local plane = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { plane }) +asset.onInitialize(function() + openspace.addSceneGraphNode(plane) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(plane) +end) + +asset.export(plane) + asset.meta = { Name = "MilkyWay Galaxy", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset containt 2D image of the MilkyWay. For extragalactic viewing]], Author = "Brian Abbott, Carter Emmart (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"MilkyWayGalaxyImage"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/milkyway_arm_labels.asset b/data/assets/scene/digitaluniverse/milkyway_arm_labels.asset index 3e4294b20a..77a27c60c5 100644 --- a/data/assets/scene/digitaluniverse/milkyway_arm_labels.asset +++ b/data/assets/scene/digitaluniverse/milkyway_arm_labels.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local planeTextures = asset.syncedResource({ Name = "Milky Way Plane Textures", Type = "HttpSynchronization", @@ -44,12 +40,21 @@ local plane = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { plane }) +asset.onInitialize(function() + openspace.addSceneGraphNode(plane) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(plane) +end) + +asset.export(plane) + asset.meta = { Name = "Milky Way Arms Labels", - Version = "1.0", + Version = "1.1", Description = [[ Image with arm labels for the Milky Way galaxy]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", @@ -72,6 +77,5 @@ asset.meta = { WARRANTY of any kind. We provide the Atlas as is and take no responsibility for any damage resulting from the use of this Atlas. The entire risk as to the quality and performance of this product is with the user.

For more information, - please visit http://www.haydenplanetarium.org/universe]], - Identifiers = {"MilkyWayGalaxyArmLabelsImage"} + please visit http://www.haydenplanetarium.org/universe]] } diff --git a/data/assets/scene/digitaluniverse/milkyway_label.asset b/data/assets/scene/digitaluniverse/milkyway_label.asset index 062ca05f62..f58709f484 100644 --- a/data/assets/scene/digitaluniverse/milkyway_label.asset +++ b/data/assets/scene/digitaluniverse/milkyway_label.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local homespeck = asset.syncedResource({ Name = "Home Speck File", Type = "HttpSynchronization", @@ -40,15 +36,23 @@ local homeLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { homeLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(homeLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(homeLabel) +end) + +asset.export(homeLabel) + asset.meta = { Name = "Home Label", - Version = "1.0", + Version = "1.1", Description = [[Label for the Milky Way titled "Home", sided for the galactic level]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"HomeLabel"} + License = "MIT license" } diff --git a/data/assets/scene/digitaluniverse/milkyway_sphere.asset b/data/assets/scene/digitaluniverse/milkyway_sphere.asset index 7a5d3c1971..50f458decd 100644 --- a/data/assets/scene/digitaluniverse/milkyway_sphere.asset +++ b/data/assets/scene/digitaluniverse/milkyway_sphere.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local sphereTextures = asset.syncedResource({ Name = "Milky Way Sphere Textures", Type = "HttpSynchronization", @@ -38,15 +34,23 @@ local sphere = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { sphere }) +asset.onInitialize(function() + openspace.addSceneGraphNode(sphere) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(sphere) +end) + +asset.export(sphere) + asset.meta = { Name = "Milky Way Galaxy Sphere", - Version = "2.0", + Version = "2.1", Description = [[All sky image of the Milky Way]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"MilkyWay"} + License = "MIT license" } diff --git a/data/assets/scene/digitaluniverse/obassociations.asset b/data/assets/scene/digitaluniverse/obassociations.asset index 3e2ece6db1..23844471ef 100644 --- a/data/assets/scene/digitaluniverse/obassociations.asset +++ b/data/assets/scene/digitaluniverse/obassociations.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "OB Associations Textures", Type = "HttpSynchronization", @@ -56,15 +52,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "OB Associations", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for OB Associations]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"OBAssociations"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/openclusters.asset b/data/assets/scene/digitaluniverse/openclusters.asset index 057aacb5b8..5478007c81 100644 --- a/data/assets/scene/digitaluniverse/openclusters.asset +++ b/data/assets/scene/digitaluniverse/openclusters.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Open Clusters Textures", Type = "HttpSynchronization", @@ -52,15 +48,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Open Star Clusters", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for Open Star Clusters]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"OpenStarClusters"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/planetarynebulae.asset b/data/assets/scene/digitaluniverse/planetarynebulae.asset index 23e0eccd09..64416512c0 100644 --- a/data/assets/scene/digitaluniverse/planetarynebulae.asset +++ b/data/assets/scene/digitaluniverse/planetarynebulae.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Planetary Nebulae Textures", Type = "HttpSynchronization", @@ -49,15 +45,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Planetary Nebulae", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for Planetary Nebulae]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"PlanetaryNebulae"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/pulsars.asset b/data/assets/scene/digitaluniverse/pulsars.asset index 0a53462ce7..64f0cd36c3 100644 --- a/data/assets/scene/digitaluniverse/pulsars.asset +++ b/data/assets/scene/digitaluniverse/pulsars.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Pulsars Textures", Type = "HttpSynchronization", @@ -53,15 +49,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Pulsars", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for Pulsars.]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"Pulsars"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/quasars.asset b/data/assets/scene/digitaluniverse/quasars.asset index 0a50114c2d..5518be3d09 100644 --- a/data/assets/scene/digitaluniverse/quasars.asset +++ b/data/assets/scene/digitaluniverse/quasars.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Quasars Textures", Type = "HttpSynchronization", @@ -45,15 +41,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Quasars", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for Quasars.]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"Quasars"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/sdss.asset b/data/assets/scene/digitaluniverse/sdss.asset index c855534515..f03c9d81e6 100644 --- a/data/assets/scene/digitaluniverse/sdss.asset +++ b/data/assets/scene/digitaluniverse/sdss.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Sloan Digital Sky Survey Textures", Type = "HttpSynchronization", @@ -59,15 +55,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Sloan Digital Sky Survey", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for The Sloan Digital Sky Survey (SDSS).]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"SloanDigitalSkySurvey"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/starlabels.asset b/data/assets/scene/digitaluniverse/starlabels.asset index eb8f049642..d3c1c4cced 100644 --- a/data/assets/scene/digitaluniverse/starlabels.asset +++ b/data/assets/scene/digitaluniverse/starlabels.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local speck = asset.syncedResource({ Name = "Star Labels Speck Files", Type = "HttpSynchronization", @@ -30,15 +26,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Star Labels", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for labels of the stars.]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"StarsLabels"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/starorbits.asset b/data/assets/scene/digitaluniverse/starorbits.asset index ccded58ce2..e5748af0a9 100644 --- a/data/assets/scene/digitaluniverse/starorbits.asset +++ b/data/assets/scene/digitaluniverse/starorbits.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local earth_transforms = asset.require("scene/solarsystem/planets/earth/transforms") @@ -163,22 +162,38 @@ local pM_J13420Orbit = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { +local nodes = { sunOrbit, barnardsOrbit, pM_J13420Orbit, lSRJ0822Orbit, lSR1826Orbit, lacaille9352Orbit, kapteynsOrbit -}) +} + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + local node = nodes[i] + openspace.removeSceneGraphNode(node) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end + asset.meta = { Name = "Star Orbits", - Version = "1.0", + Version = "1.1", Description = [[Select Star Orbital paths that delineate their trajectory around the Milky Way over 1 billion years into the future. Included: Sun, Barnards, Kapteyns, Lacaille 9352, LSR1826+3014, LSRJ0822+1700, PM_J13420-3415.

Data Reference: Sebastien Lepine (AMNH)]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"SunOrbit", "BarnardsOrbit", "KapteynsOrbit", "pM_J13420Orbit", - "LSR1826Orbit", "LSRJ0822Orbit", "lacaille9352Orbit"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/stars.asset b/data/assets/scene/digitaluniverse/stars.asset index 27f950183c..26e959dd23 100644 --- a/data/assets/scene/digitaluniverse/stars.asset +++ b/data/assets/scene/digitaluniverse/stars.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local speck = asset.syncedResource({ Name = "Stars Speck Files", Type = "HttpSynchronization", @@ -98,15 +94,26 @@ local sunstar = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { stars, sunstar }) +asset.onInitialize(function() + openspace.addSceneGraphNode(stars) + openspace.addSceneGraphNode(sunstar) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(sunstar) + openspace.removeSceneGraphNode(stars) +end) + +asset.export(stars) +asset.export(sunstar) + asset.meta = { Name = "Stars", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for the stars.]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"Stars"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/superclusters.asset b/data/assets/scene/digitaluniverse/superclusters.asset index b183856ae3..bcf9dca7cc 100644 --- a/data/assets/scene/digitaluniverse/superclusters.asset +++ b/data/assets/scene/digitaluniverse/superclusters.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Galaxy Superclusters Textures", Type = "HttpSynchronization", @@ -48,15 +44,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Galaxy Superclusters", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for Galaxy Superclusters.]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"GalaxySuperclusters"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/supernovaremnants.asset b/data/assets/scene/digitaluniverse/supernovaremnants.asset index 9f5cf72062..cf15dbacfb 100644 --- a/data/assets/scene/digitaluniverse/supernovaremnants.asset +++ b/data/assets/scene/digitaluniverse/supernovaremnants.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Supernova Remnants Textures", Type = "HttpSynchronization", @@ -48,15 +44,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Supernova Remnants", - Version = "2.0", + Version = "2.1", Description = [[Digital Universe asset for Supernova Remnants.]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"SupernovaRemnants"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/tully.asset b/data/assets/scene/digitaluniverse/tully.asset index d36e0a9224..abe1dc2918 100644 --- a/data/assets/scene/digitaluniverse/tully.asset +++ b/data/assets/scene/digitaluniverse/tully.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Tully Textures", Type = "HttpSynchronization", @@ -110,16 +106,27 @@ local tullyImages = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { tullyPoints, tullyImages }) +asset.onInitialize(function() + openspace.addSceneGraphNode(tullyPoints) + openspace.addSceneGraphNode(tullyImages) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(tullyImages) + openspace.removeSceneGraphNode(tullyPoints) +end) + +asset.export(tullyPoints) +asset.export(tullyImages) + asset.meta = { Name = "Tully Galaxies", - Version = "3.0", + Version = "3.1", Description = [[Digital Universe asset for Tully Galaxies, including point cloud and images.]], Author = "Stuart Levy (NCSA/UIUC), Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"TullyGalaxies" , "TullyGalaxiesImages"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/digitaluniverse/voids.asset b/data/assets/scene/digitaluniverse/voids.asset index db1bfba976..c7d85f257c 100644 --- a/data/assets/scene/digitaluniverse/voids.asset +++ b/data/assets/scene/digitaluniverse/voids.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local speck = asset.syncedResource({ Name = "Voids Speck Files", Type = "HttpSynchronization", @@ -40,15 +36,23 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Voids", - Version = "2.0", + Version = "2.1", Author = "Brian Abbott (AMNH)", Description = [[Digital Universe asset for Cosmic voids.]], URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"Voids"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/milkyway/constellations/constellation_art.asset b/data/assets/scene/milkyway/constellations/constellation_art.asset index c036605476..e123e299f6 100644 --- a/data/assets/scene/milkyway/constellations/constellation_art.asset +++ b/data/assets/scene/milkyway/constellations/constellation_art.asset @@ -65,7 +65,8 @@ local createConstellations = function (baseIdentifier, guiPath, constellationfil Tag = { "ConstellationArtImage", group }, GUI = { Name = name .. " Image", - Path = "/Milky Way/" .. guiPath + Path = "/Milky Way/" .. guiPath, + Description = name .. " Constellation Image" } } table.insert(genConstellations, aconstellation); @@ -156,15 +157,18 @@ asset.onDeinitialize(function () openspace.removeSceneGraphNode(n.Identifier); end - openspace.action.removeAction(show_art.Identifier) - openspace.action.removeAction(hide_art.Identifier) - openspace.action.removeAction(disable_art.Identifier) + openspace.action.removeAction(show_art) + openspace.action.removeAction(hide_art) + openspace.action.removeAction(disable_art) end) +for _, n in ipairs(nodes) do + asset.export(n) +end asset.meta = { Name = "Constellation Images", - Version = "1.0", + Version = "1.1", Description = "Artistic images depicting the constellations", Author = "James Hedberg", URL = "http://jameshedberg.com", diff --git a/data/assets/scene/milkyway/gaia/apogee.asset b/data/assets/scene/milkyway/gaia/apogee.asset index 5c5eaca933..8691d0fa5f 100644 --- a/data/assets/scene/milkyway/gaia/apogee.asset +++ b/data/assets/scene/milkyway/gaia/apogee.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local speck = asset.syncedResource({ Name = "Apogee Speck Files", Type = "HttpSynchronization", @@ -24,7 +20,7 @@ local textures = asset.syncedResource({ }) local gaia_abundance_apogee = { - Identifier = "Gaia Abundance Apogee", + Identifier = "GaiaAbundanceApogee", Renderable = { Type = "RenderableStars", Enabled = false, @@ -52,8 +48,29 @@ local gaia_abundance_apogee = { } }, GUI = { - Path = "/Milky Way/Gaia" + Path = "/Milky Way/Gaia", + Name = "Gaia Abundance Apogee", + Description = "Data set of stars color coded by metallicity." } } -assetHelper.registerSceneGraphNodesAndExport(asset, { gaia_abundance_apogee }) +asset.onInitialize(function() + openspace.addSceneGraphNode(gaia_abundance_apogee) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(gaia_abundance_apogee) +end) + +asset.export(gaia_abundance_apogee) + + + +asset.meta = { + Name = "Gaia Abundance Apogee", + Version = "1.0", + Description = [[This asset contains a RenderableStars dataset with metallicity data.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT License" +} diff --git a/data/assets/scene/milkyway/gaia/gaia_dr2_download_stars.asset b/data/assets/scene/milkyway/gaia/gaia_dr2_download_stars.asset index 9c8bcbf1a0..85f8ae35ee 100644 --- a/data/assets/scene/milkyway/gaia/gaia_dr2_download_stars.asset +++ b/data/assets/scene/milkyway/gaia/gaia_dr2_download_stars.asset @@ -28,3 +28,14 @@ end) asset.export("GaiaDR2_618M", gaia618DestinationExtracted) asset.export("GaiaFullDataset", gaiaFull) + + +asset.meta = { + Name = "GaiaDR2 Download Stars", + Version = "1.1", + Description = [[This asset contains code to sync gaia subsets from the OpenSpace + servers. Edit this file to choose which subsets to sync. WARNING can use 150GB], + Author = "ESA/Gaia/DPAC", + URL = "https://gea.esac.esa.int/archive/documentation/GDR2/index.html", + License = [[The Gaia data are open and free to use, provided credit is given to 'ESA/Gaia/DPAC'. In general, access to, and use of, ESA's Gaia Archive (hereafter called 'the website') constitutes acceptance of the following general terms and conditions. Neither ESA nor any other party involved in creating, producing, or delivering the website shall be liable for any direct, incidental, consequential, indirect, or punitive damages arising out of user access to, or use of, the website. The website does not guarantee the accuracy of information provided by external sources and accepts no responsibility or liability for any consequences arising from the use of such data.]] +} diff --git a/data/assets/scene/milkyway/gaia/gaiastars.asset b/data/assets/scene/milkyway/gaia/gaiastars.asset index de6a84a71a..a3f761a349 100644 --- a/data/assets/scene/milkyway/gaia/gaiastars.asset +++ b/data/assets/scene/milkyway/gaia/gaiastars.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - -- Download a preprocessed binary octree of Radial Velocity subset values per star (preprocessed into 8 binary files). local starsFolder = asset.syncedResource({ Name = "Gaia Stars RV", @@ -55,8 +51,29 @@ local GaiaStars = { }, GUI = { Name = "Gaia Stars", - Path = "/Milky Way" + Path = "/Milky Way", + Description = "Radial Velocity subset of GaiaDR2." } } -assetHelper.registerSceneGraphNodesAndExport(asset, { GaiaStars }) +asset.onInitialize(function() + openspace.addSceneGraphNode(GaiaStars) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(GaiaStars) +end) + +asset.export(GaiaStars) + + + +asset.meta = { + Name = "Gaia Stars", + Version = "1.0", + Description = [[This asset contains a subset of GaiaDR2. This subset contains 7.5M stars which have + accurate values for a number of columns. ]], + Author = "ESA/Gaia/DPAC", + URL = "https://gea.esac.esa.int/archive/documentation/GDR2/index.html", + License = [[The Gaia data are open and free to use, provided credit is given to 'ESA/Gaia/DPAC'. In general, access to, and use of, ESA's Gaia Archive (hereafter called 'the website') constitutes acceptance of the following general terms and conditions. Neither ESA nor any other party involved in creating, producing, or delivering the website shall be liable for any direct, incidental, consequential, indirect, or punitive damages arising out of user access to, or use of, the website. The website does not guarantee the accuracy of information provided by external sources and accepts no responsibility or liability for any consequences arising from the use of such data.]] +} diff --git a/data/assets/scene/milkyway/gaia/galah.asset b/data/assets/scene/milkyway/gaia/galah.asset index a311ed25ba..69c7a162c9 100644 --- a/data/assets/scene/milkyway/gaia/galah.asset +++ b/data/assets/scene/milkyway/gaia/galah.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local speck = asset.syncedResource({ Name = "Galah Speck Files", Type = "HttpSynchronization", @@ -24,7 +20,7 @@ local textures = asset.syncedResource({ }) local gaia_abundance_galah = { - Identifier = "Gaia Abundance Galah", + Identifier = "GaiaAbundanceGalah", Renderable = { Type = "RenderableStars", Enabled = false, @@ -52,8 +48,29 @@ local gaia_abundance_galah = { } }, GUI = { - Path = "/Milky Way/Gaia" + Path = "/Milky Way/Gaia", + Name = "Gaia Abundance Galah", + Description = "Data set of stars color coded by metallicity." } } -assetHelper.registerSceneGraphNodesAndExport(asset, { gaia_abundance_galah }) +asset.onInitialize(function() + openspace.addSceneGraphNode(gaia_abundance_galah) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(gaia_abundance_galah) +end) + +asset.export(gaia_abundance_galah) + + + +asset.meta = { + Name = "Gaia Abundance Galah", + Version = "1.0", + Description = [[This asset contains a RenderableStars dataset with metallicity data.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT License" +} diff --git a/data/assets/scene/milkyway/milkyway/eso.asset b/data/assets/scene/milkyway/milkyway/eso.asset index 556e19a1a8..6d8d40b2e7 100644 --- a/data/assets/scene/milkyway/milkyway/eso.asset +++ b/data/assets/scene/milkyway/milkyway/eso.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "ESO Milky Way Textures", Type = "HttpSynchronization", @@ -31,8 +27,30 @@ local object = { }, GUI = { Name = "Milky Way (ESO)", - Path = "/Milky Way/Milky Way" + Path = "/Milky Way/Milky Way", + Description = "Milky Way Galaxy image (alternate)" } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + + + + +asset.meta = { + Name = "MilkyWay Galaxy (ESO)", + Version = "1.0", + Description = [[This asset contains an alternate to the Digital Universe image for the + Milky Way from ESO.]], + Author = "ESO/S. Brunier", + URL = "https://www.eso.org/public/usa/images/eso0932a/", + License = "Creative Commons Attribution 4.0 International License" +} diff --git a/data/assets/scene/milkyway/milkyway/volume.asset b/data/assets/scene/milkyway/milkyway/volume.asset index af427e384e..f18095b080 100644 --- a/data/assets/scene/milkyway/milkyway/volume.asset +++ b/data/assets/scene/milkyway/milkyway/volume.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") @@ -46,21 +45,30 @@ local MilkyWayVolumeGalaxy = { }, GUI = { Path = "/Milky Way", - Name = "Milky Way Volume" + Name = "Milky Way Volume", + Description = [[Volumetric rendering of Milky Way galaxy based on simulation from + NAOJ.]] } } -local objects = { MilkyWayVolumeGalaxy } -assetHelper.registerSceneGraphNodesAndExport(asset, objects) +asset.onInitialize(function() + openspace.addSceneGraphNode(MilkyWayVolumeGalaxy) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MilkyWayVolumeGalaxy) +end) + +asset.export(MilkyWayVolumeGalaxy) + asset.meta = { Name = "Milky Way Volume", - Version = "1.0", - Description = [[Volumetric rendering of Milky Way galaxy based on simulation from + Version = "1.1", + Description = [[Volumetric rendering of Milky Way galaxy based on simulations from NAOJ.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT License", - Identifiers = {"MilkyWayVolume"} + License = "MIT License" } diff --git a/data/assets/scene/milkyway/objects/orionnebula/cluster.asset b/data/assets/scene/milkyway/objects/orionnebula/cluster.asset index e10e6c024a..283fe5b2fd 100644 --- a/data/assets/scene/milkyway/objects/orionnebula/cluster.asset +++ b/data/assets/scene/milkyway/objects/orionnebula/cluster.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") @@ -51,16 +50,24 @@ local OrionClusterStars = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { OrionClusterStars }) +asset.onInitialize(function() + openspace.addSceneGraphNode(OrionClusterStars) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(OrionClusterStars) +end) + +asset.export(OrionClusterStars) + asset.meta = { Name = "Orion Nebula Star Cluster", - Version = "1.0", + Version = "1.1", Description = [[ Digital Universe asset for the Orion star cluster. To be used in conjunction with nebula model. Use orionnebula.asset to include both.]], Author = "AMNH Digital Universe", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"OrionClusterStars"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/milkyway/objects/orionnebula/nebula.asset b/data/assets/scene/milkyway/objects/orionnebula/nebula.asset index f22b31f319..2c6bf0c8cd 100644 --- a/data/assets/scene/milkyway/objects/orionnebula/nebula.asset +++ b/data/assets/scene/milkyway/objects/orionnebula/nebula.asset @@ -1,9 +1,19 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local transforms = asset.require("./transforms") -local center = sunTransforms.SolarSystemBarycenter.Identifier; -local LIGHTS = assetHelper.getDefaultLightSources(center); +local LIGHTS = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + { + Identifier = "Camera", + Type = "CameraLightSource", + Intensity = 0.5 + } +} local sync = asset.syncedResource({ Name = "Orion Nebula Model", @@ -72,7 +82,6 @@ local OrionNebulaModel = { GUI = { Name = "Orion Nebula Model", Path = "/Milky Way/Orion", - Hidden = true, Description = "Orion Nebula 3D model. See Orion Nebula for description." } } @@ -135,23 +144,34 @@ local OrionNebulaProplydsModel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - NebulaHolder, - OrionNebulaModel, - OrionNebulaShocksModel, - OrionNebulaProplydsModel -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(NebulaHolder) + openspace.addSceneGraphNode(OrionNebulaModel) + openspace.addSceneGraphNode(OrionNebulaShocksModel) + openspace.addSceneGraphNode(OrionNebulaProplydsModel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(OrionNebulaProplydsModel) + openspace.removeSceneGraphNode(OrionNebulaShocksModel) + openspace.removeSceneGraphNode(OrionNebulaModel) + openspace.removeSceneGraphNode(NebulaHolder) +end) + +asset.export(NebulaHolder) +asset.export(OrionNebulaModel) +asset.export(OrionNebulaShocksModel) +asset.export(OrionNebulaProplydsModel) + asset.meta = { Name = "Orion Nebula Model", - Version = "1.0", + Version = "1.1", Description = [[ Digital Universe asset for the Orion nebula 3D model. This asset contains seperate models for the nebula, proplyds and shocks. To be used in conjunction with orion star cluster. Use orionnebula.asset to include both.]], Author = "AMNH Digital Universe", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", - License = "AMNH Digital Universe", - Identifiers = {"OrionNebulaHolder", "OrionNebulaModel", "OrionNebulaProplydsModel", - "OrionNebulaShocksModel"} + License = "AMNH Digital Universe" } diff --git a/data/assets/scene/milkyway/objects/orionnebula/orionnebula.asset b/data/assets/scene/milkyway/objects/orionnebula/orionnebula.asset index 014c4bc8c4..e045e3efa3 100644 --- a/data/assets/scene/milkyway/objects/orionnebula/orionnebula.asset +++ b/data/assets/scene/milkyway/objects/orionnebula/orionnebula.asset @@ -1,2 +1,13 @@ asset.require("./cluster") asset.require("./nebula") + + +asset.meta = { + Name = "Orion Nebula", + Version = "1.0", + Description = [[This asset is a meta asset, containing all the assets for the Orion + Nebula from the AMNH Digital Universe. This includes a 3D model and a star cluster.]], + Author = "Brian Abbott (AMNH)", + URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", + License = "AMNH Digital Universe" +} diff --git a/data/assets/scene/milkyway/objects/orionnebula/transforms.asset b/data/assets/scene/milkyway/objects/orionnebula/transforms.asset index 7f9c77e7dd..e66deb40db 100644 --- a/data/assets/scene/milkyway/objects/orionnebula/transforms.asset +++ b/data/assets/scene/milkyway/objects/orionnebula/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local PARSEC_CONSTANT = 3.0856776E16; @@ -24,4 +23,24 @@ local NebulaPosition = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { NebulaPosition }) +asset.onInitialize(function() + openspace.addSceneGraphNode(NebulaPosition) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(NebulaPosition) +end) + +asset.export(NebulaPosition) + + + +asset.meta = { + Name = "Orion Nebula Transforms", + Version = "1.0", + Description = [[This asset contains the position of the Orion Nebula. Generally you + would not include this asset as other assets would include it.]], + Author = "Brian Abbott (AMNH)", + URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", + License = "AMNH Digital Universe" +} diff --git a/data/assets/scene/milkyway/stars/denver.asset b/data/assets/scene/milkyway/stars/denver.asset index faaa1d2a47..68775657c9 100644 --- a/data/assets/scene/milkyway/stars/denver.asset +++ b/data/assets/scene/milkyway/stars/denver.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local textures = asset.syncedResource({ Name = "Stars Textures", Type = "HttpSynchronization", @@ -50,7 +46,16 @@ local object = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/charon.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/charon.asset index 7298e18c74..3bf85ec695 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/charon.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/charon.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("../transforms") asset.require("spice/base") asset.require("../trail") @@ -51,7 +50,16 @@ local Charon = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Charon }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Charon) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Charon) +end) + +asset.export(Charon) + asset.meta = { diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/charon_trail.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/charon_trail.asset index 0b045f1f5e..a968585271 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/charon_trail.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/charon_trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("../transforms") asset.require("spice/base") @@ -29,7 +28,16 @@ local CharonTrailBarycentric = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { CharonTrailBarycentric }) +asset.onInitialize(function() + openspace.addSceneGraphNode(CharonTrailBarycentric) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(CharonTrailBarycentric) +end) + +asset.export(CharonTrailBarycentric) + asset.meta = { diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/layers/colorlayers/greyscale_usgs.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/layers/colorlayers/greyscale_usgs.asset index e1905776cf..5215db8749 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/layers/colorlayers/greyscale_usgs.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/charon/layers/colorlayers/greyscale_usgs.asset @@ -10,6 +10,10 @@ asset.onInitialize(function () openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/layers/colorlayers/greyscale_usgs.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/layers/colorlayers/greyscale_usgs.asset index 69ce144c80..da5b929028 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/layers/colorlayers/greyscale_usgs.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/layers/colorlayers/greyscale_usgs.asset @@ -10,6 +10,10 @@ asset.onInitialize(function () openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) @@ -20,10 +24,10 @@ asset.meta = { nearly all of the highest-resolution images obtained by the Long-Range Reconnaissance Imager (LORRI) and the Multispectral Visible Imaging Camera (MVIC) on New Horizons.The mosaic is the most detailed and comprehensive global view yet - of Pluto’s surface using New Horizons data. It includes topography data of the - hemisphere visible to New Horizons during the spacecraft’s closest approach. The + of Pluto's surface using New Horizons data. It includes topography data of the + hemisphere visible to New Horizons during the spacecraft's closest approach. The topography is derived from digital stereo-image mapping tools that measure the - parallax – or the difference in the apparent relative positions – of features on + parallax - or the difference in the apparent relative positions - of features on the surface obtained at different viewing angles during the encounter. Scientists use these parallax displacements of high and low terrain to estimate landform heights.The mosaic is available in Equirectangular projection at an equatorial diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/hydra.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/hydra.asset index bf3ad123fa..9198141277 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/hydra.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/hydra.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("../transforms") local kernels = asset.require("../kernels").PlutoKernels @@ -53,7 +52,19 @@ local HydraTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Hydra, HydraTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Hydra) + openspace.addSceneGraphNode(HydraTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(HydraTrail) + openspace.removeSceneGraphNode(Hydra) +end) + +asset.export(Hydra) +asset.export(HydraTrail) + asset.meta = { diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/kerberos.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/kerberos.asset index 5183ca60d5..f683b9585a 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/kerberos.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/kerberos.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("../transforms") local kernels = asset.require("../kernels").PlutoKernels @@ -52,7 +51,19 @@ local KerberosTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Kerberos, KerberosTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Kerberos) + openspace.addSceneGraphNode(KerberosTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(KerberosTrail) + openspace.removeSceneGraphNode(Kerberos) +end) + +asset.export(Kerberos) +asset.export(KerberosTrail) + asset.meta = { diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/nix.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/nix.asset index 3ea1a994ed..6135bf34b7 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/nix.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/nix.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("../transforms") local kernels = asset.require("../kernels").PlutoKernels @@ -52,7 +51,19 @@ local NixTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Nix, NixTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Nix) + openspace.addSceneGraphNode(NixTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(NixTrail) + openspace.removeSceneGraphNode(Nix) +end) + +asset.export(Nix) +asset.export(NixTrail) + asset.meta = { diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/styx.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/styx.asset index f154179247..4e9963e062 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/styx.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/minor/styx.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("../transforms") local kernels = asset.require("../kernels").PlutoKernels @@ -51,7 +50,19 @@ local StyxTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Styx, StyxTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Styx) + openspace.addSceneGraphNode(StyxTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(StyxTrail) + openspace.removeSceneGraphNode(Styx) +end) + +asset.export(Styx) +asset.export(StyxTrail) + asset.meta = { diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto.asset index e323d1a5de..e99138aec2 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") asset.require("spice/base") asset.require("./trail") @@ -66,11 +65,24 @@ local PlutoLabel = { Tag = { "solarsystem_labels" }, GUI = { Name = "Pluto Label", - Path = "/Solar System/Dwarf Planets/Pluto" + Path = "/Solar System/Dwarf Planets/Pluto", + Description = "Label for Pluto, visible at the solarsystem overview zoom level" } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Pluto, PlutoLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Pluto) + openspace.addSceneGraphNode(PlutoLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(PlutoLabel) + openspace.removeSceneGraphNode(Pluto) +end) + +asset.export(Pluto) +asset.export(PlutoLabel) + asset.meta = { diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto_trail.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto_trail.asset index 52363d1bca..cb2d53bb7f 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto_trail.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto_trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") asset.require("spice/base") @@ -25,7 +24,16 @@ local PlutoTrailBarycentric = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { PlutoTrailBarycentric }) +asset.onInitialize(function() + openspace.addSceneGraphNode(PlutoTrailBarycentric) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(PlutoTrailBarycentric) +end) + +asset.export(PlutoTrailBarycentric) + asset.meta = { @@ -35,6 +43,5 @@ asset.meta = { NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"PlutoBarycentricTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto_trail_kepler.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto_trail_kepler.asset index 3b8a7a063c..151b01b629 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto_trail_kepler.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/pluto_trail_kepler.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") local kernels = asset.require("./kernels").PlutoKernels @@ -33,7 +32,17 @@ local PlutoKeplerianTrail = { Description = "Keplerian trail of Pluto. Contains full orbit." } } -assetHelper.registerSceneGraphNodesAndExport(asset, { PlutoKeplerianTrail }) + +asset.onInitialize(function() + openspace.addSceneGraphNode(PlutoKeplerianTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(PlutoKeplerianTrail) +end) + +asset.export(PlutoKeplerianTrail) + asset.meta = { @@ -43,8 +52,7 @@ asset.meta = { JPL Horizons.]], Author = "OpenSpace Team", URL = "https://ssd.jpl.nasa.gov/sbdb.cgi?sstr=pluto", - License = "JPL/NASA", - Identifiers = {"PlutoKeplerianTrail"} + License = "JPL/NASA" } diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset index 8487d98ec5..cf52ef3310 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") local kernels = asset.require("./kernels").PlutoKernels @@ -29,7 +28,16 @@ local PlutoBarycenterTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { PlutoBarycenterTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(PlutoBarycenterTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(PlutoBarycenterTrail) +end) + +asset.export(PlutoBarycenterTrail) + asset.meta = { diff --git a/data/assets/scene/solarsystem/dwarf_planets/pluto/transforms.asset b/data/assets/scene/solarsystem/dwarf_planets/pluto/transforms.asset index a21f1e8cf6..2fb6e88c21 100644 --- a/data/assets/scene/solarsystem/dwarf_planets/pluto/transforms.asset +++ b/data/assets/scene/solarsystem/dwarf_planets/pluto/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local kernels = asset.require("./kernels").PlutoKernels asset.require("spice/base") @@ -22,7 +21,16 @@ local PlutoBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { PlutoBarycenter }) +asset.onInitialize(function() + openspace.addSceneGraphNode(PlutoBarycenter) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(PlutoBarycenter) +end) + +asset.export(PlutoBarycenter) + asset.meta = { diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/carringtonToHEEQRotation.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/carringtonToHEEQRotation.asset index 3335e1a3bf..9fcb6c35c5 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/carringtonToHEEQRotation.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/carringtonToHEEQRotation.asset @@ -14,3 +14,13 @@ local CarringtonLongitudeToHEEQ180Rotation = { } asset.export("CarringtonLongitudeToHEEQ180Rotation", CarringtonLongitudeToHEEQ180Rotation) + + +asset.meta = { + Name = "Carrington Longitude To HEEQ180 Rotation", + Version = "1.0", + Description = [[ Contains a rotation for HEEQ180 to be used by another file]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/density_volume.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/density_volume.asset index 61262f1621..872be14c05 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/density_volume.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/density_volume.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local propertyHelper = asset.require("util/property_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -56,11 +55,16 @@ local toggle_volume = { asset.onInitialize(function () openspace.action.registerAction(toggle_volume) + openspace.addSceneGraphNode(densityVolume) end) + asset.onDeinitialize(function () - openspace.action.removeAction(toggle_volume.Identifier) + openspace.removeSceneGraphNode(densityVolume) + openspace.action.removeAction(toggle_volume) end) -assetHelper.registerSceneGraphNodesAndExport(asset, { densityVolume }) + +asset.export(densityVolume) + asset.meta = { Name = "Predictive Science Inc. Volume Rendering Bastille Day", @@ -68,6 +72,5 @@ asset.meta = { Description = [[Volumetric rendering for the bastille day CME event]], Author = "CCMC, OpenSpace team", URL = "https://dx.doi.org/10.3847/1538-4357/aab36d", - License = "CC-BY", - Identifier = {"MAS-MHD-Density-bastille-day-2000"} + License = "CC-BY" } diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/fieldlines.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/fieldlines.asset index 0d284f051d..5d0fefa82b 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/fieldlines.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/fieldlines.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local heliosphereTransforms = asset.require("scene/solarsystem/sun/transforms_heliosphere") local propertyHelper = asset.require("util/property_helper") local rot = asset.require("./carringtonToHEEQRotation.asset") @@ -59,11 +58,16 @@ local toggle_fieldlines = { asset.onInitialize(function () openspace.action.registerAction(toggle_fieldlines) + openspace.addSceneGraphNode(fieldlines) end) + asset.onDeinitialize(function () - openspace.action.removeAction(toggle_fieldlines.Identifier) + openspace.removeSceneGraphNode(fieldlines) + openspace.action.removeAction(toggle_fieldlines) end) -assetHelper.registerSceneGraphNodesAndExport(asset, { fieldlines }) + +asset.export(fieldlines) + asset.meta = { Name = "Predictive Science Inc. Fieldlines Bastille Day", @@ -71,6 +75,5 @@ asset.meta = { Description = [[Magnetic fieldlines for the bastille day CME event]], Author = "CCMC, Jonathan Grangien, Matthias Berg", URL = "https://dx.doi.org/10.3847/1538-4357/aab36d", - License = "CC-BY", - Identifier = {"MAS-MHD-Fieldlines-bastille-day-2000"} + License = "CC-BY" } diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodes.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodes.asset index 8ce98c3646..7285f5f46d 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodes.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodes.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local heliosphereTransforms = asset.require("scene/solarsystem/sun/transforms_heliosphere") local propertyHelper = asset.require("util/property_helper") local rot = asset.require("./carringtonToHEEQRotation.asset") @@ -41,11 +40,16 @@ local toggle_fluxnodes = { asset.onInitialize(function () openspace.action.registerAction(toggle_fluxnodes) + openspace.addSceneGraphNode(fluxNodes) end) + asset.onDeinitialize(function () - openspace.action.removeAction(toggle_fluxnodes.Identifier) + openspace.removeSceneGraphNode(fluxNodes) + openspace.action.removeAction(toggle_fluxnodes) end) -assetHelper.registerSceneGraphNodesAndExport(asset, { fluxNodes }) + +asset.export(fluxNodes) + asset.meta = { Name = "Predictive Science Inc. Flux nodes Bastille Day", @@ -53,6 +57,5 @@ asset.meta = { Description = [[Flux nodes for the bastille day CME event]], Author = "CCMC, Christian Adamsson, Emilie Ho", URL = "https://dx.doi.org/10.3847/1538-4357/aab36d", - License = "CC-BY", - Identifier = {"MAS-MHD-FluxNodes-bastille-day-2000"} + License = "CC-BY" } diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodescutplane.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodescutplane.asset index c08a6a1905..82b43eb7d9 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodescutplane.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodescutplane.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local propertyHelper = asset.require("util/property_helper") local transforms = asset.require("scene/solarsystem/sun/transforms_heliosphere") local rot = asset.require("./carringtonToHEEQRotation.asset") @@ -84,12 +83,20 @@ local toggle_meridial = { asset.onInitialize(function () openspace.action.registerAction(toggle_equatorial) openspace.action.registerAction(toggle_meridial) + openspace.addSceneGraphNode(EquatorialCutplane) + openspace.addSceneGraphNode(MeridialCutplane) end) + asset.onDeinitialize(function () - openspace.action.removeAction(toggle_equatorial.Identifier) - openspace.action.removeAction(toggle_meridial.Identifier) + openspace.removeSceneGraphNode(MeridialCutplane) + openspace.removeSceneGraphNode(EquatorialCutplane) + openspace.action.removeAction(toggle_equatorial) + openspace.action.removeAction(toggle_meridial) end) -assetHelper.registerSceneGraphNodesAndExport(asset, { EquatorialCutplane, MeridialCutplane}) + +asset.export(EquatorialCutplane) +asset.export(MeridialCutplane) + asset.meta = { Name = "Predictive Science Inc. Cutplanes Bastille Days", @@ -97,6 +104,5 @@ asset.meta = { Description = [[Cutplanes for the bastille day CME event]], Author = "CCMC, Christian Adamsson, Emilie Ho", URL = "https://dx.doi.org/10.3847/1538-4357/aab36d", - License = "CC-BY", - Identifier = {"MeridialCutplane-bastille-day-2000", "EquatorialCutplane-bastille-day-2000"} + License = "CC-BY" } diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodeslegend.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodeslegend.asset index 47c837e730..753ac1bebb 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodeslegend.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/fluxnodeslegend.asset @@ -1,5 +1,4 @@ asset.require("spice/base") -local assetHelper = asset.require("util/asset_helper") local TexturesPath = asset.syncedResource({ Type = "HttpSynchronization", @@ -46,9 +45,9 @@ asset.onInitialize(function() end) asset.onDeinitialize(function () - openspace.removeScreenSpaceRenderable(legend.Identifier) - openspace.action.removeAction(show_legend.Identifier) - openspace.action.removeAction(hide_legend.Identifier) + openspace.removeScreenSpaceRenderable(legend) + openspace.action.removeAction(show_legend) + openspace.action.removeAction(hide_legend) end) asset.meta = { @@ -57,6 +56,5 @@ asset.meta = { Description = [[Screen space renderable image legend of flux nodes for the bastille day CME event]], Author = "Christian Adamsson, Emilie Ho", URL = "https://dx.doi.org/10.3847/1538-4357/aab36d", - License = "MIT", - Identifier = {"LegendFluxNodes-bastille-day-2000"} + License = "MIT" } diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/lightindicator.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/lightindicator.asset index 96980132f4..b2dc819872 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/lightindicator.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/lightindicator.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") @@ -27,7 +26,16 @@ local travelSpeedIndicator = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { travelSpeedIndicator }) +asset.onInitialize(function() + openspace.addSceneGraphNode(travelSpeedIndicator) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(travelSpeedIndicator) +end) + +asset.export(travelSpeedIndicator) + asset.meta = { Name = "Light travel from sun to earth", @@ -35,6 +43,5 @@ asset.meta = { Description = [[Speed of light indicator from sun to earth]], Author = "CCMC, Christian Adamsson, Emilie Ho", URL = "", - License = "MIT", - Identifier = {"TravelSpeedIndicator-2000"} + License = "MIT" } diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram.asset index 8d83f6729d..3a1624a691 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram.asset @@ -17,6 +17,5 @@ asset.meta = { Description = [[Magnetograms of the sun as texture color layers]], Author = "Jonathan Grangien, Matthias Berg", URL = "https://dx.doi.org/10.3847/1538-4357/aab36d", - License = "CC-BY", - Identifier = {"Sun"} + License = "CC-BY" } diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram_textures.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram_textures.asset index c6b8df79c5..57af19002f 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram_textures.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram_textures.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sun = asset.require("scene/solarsystem/sun/sun") -- synced directories @@ -52,9 +51,19 @@ end) asset.onDeinitialize(function () for i, imagename in ipairs(magnetograms) do - openspace.globebrowsing.deleteLayer( - "Sun", "ColorLayers", "magnetogram-" .. i - ) + openspace.globebrowsing.deleteLayer("Sun", "ColorLayers", "magnetogram-" .. i) end - openspace.action.removeAction(switch_color_layer.Identifier) + openspace.action.removeAction(switch_color_layer) end) + + +asset.meta = { + Name = "Bastille Day magnetogram textures", + Version = "1.0", + Description = [[ This asset adds multiple magnetogram textures to the Sun. In addition + it provides an action to cycle through the textures. See magnetogram.asset for details + of the textures.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/interstellar/c-2019_q4_borisov.asset b/data/assets/scene/solarsystem/interstellar/c-2019_q4_borisov.asset index 86f48785f6..d91107b531 100644 --- a/data/assets/scene/solarsystem/interstellar/c-2019_q4_borisov.asset +++ b/data/assets/scene/solarsystem/interstellar/c-2019_q4_borisov.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local trajectory = asset.syncedResource({ @@ -24,7 +23,9 @@ local C2019Q4BorisovTrail = { }, GUI = { Name = "C/2019 Q4 Borisov Trail", - Path = "/Solar System/Interstellar" + Path = "/Solar System/Interstellar", + Description = [[Trail of C-2019 Q4 Borisov from 2015 JAN 01 00:00:00 + to 2024 JAN 01 00:00:00. Data from JPL Horizons]] } } @@ -39,16 +40,30 @@ local C2019Q4BorisovPosition = { }, GUI = { Name = "C/2019 Q4 Borisov", - Path = "/Solar System/Interstellar" + Path = "/Solar System/Interstellar", + Description = [[Position of C-2019 Q4 Borisov from 2015 JAN 01 00:00:00 + to 2024 JAN 01 00:00:00. Data from JPL Horizons]] } } -assetHelper.registerSceneGraphNodesAndExport(asset, { C2019Q4BorisovPosition, C2019Q4BorisovTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(C2019Q4BorisovPosition) + openspace.addSceneGraphNode(C2019Q4BorisovTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(C2019Q4BorisovTrail) + openspace.removeSceneGraphNode(C2019Q4BorisovPosition) +end) + +asset.export(C2019Q4BorisovPosition) +asset.export(C2019Q4BorisovTrail) + asset.meta = { Name = "C/2019 Q4 Borisov", - Version = "1.0", + Version = "1.1", Description = [[ This asset contains the trail and position of C-2019 Q4 Borisov from 2015 JAN 01 00:00:00 to 2024 JAN 01 00:00:00. Data from JPL Horizons']], diff --git a/data/assets/scene/solarsystem/interstellar/oumuamua.asset b/data/assets/scene/solarsystem/interstellar/oumuamua.asset index d3a9abc32b..f27050c12f 100644 --- a/data/assets/scene/solarsystem/interstellar/oumuamua.asset +++ b/data/assets/scene/solarsystem/interstellar/oumuamua.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local trajectory = asset.syncedResource({ @@ -25,7 +24,9 @@ local OumuamuaTrail = { }, GUI = { Name = "'Oumuamua Trail", - Path = "/Solar System/Interstellar" + Path = "/Solar System/Interstellar", + Description = [[Trail of 'Oumuamua from 2014 JAN 01 00:00:00 to 2023 JAN 01 00:00:00. + Data from JPL Horizons']], } } @@ -40,16 +41,30 @@ local OumuamuaPosition = { }, GUI = { Name = "'Oumuamua", - Path = "/Solar System/Interstellar" + Path = "/Solar System/Interstellar", + Description = [[ Position of 'Oumuamua from 2014 JAN 01 00:00:00 to 2023 JAN 01 + 00:00:00. Data from JPL Horizons']], } } -assetHelper.registerSceneGraphNodesAndExport(asset, { OumuamuaPosition, OumuamuaTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(OumuamuaPosition) + openspace.addSceneGraphNode(OumuamuaTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(OumuamuaTrail) + openspace.removeSceneGraphNode(OumuamuaPosition) +end) + +asset.export(OumuamuaPosition) +asset.export(OumuamuaTrail) + asset.meta = { Name = "'Oumuamua", - Version = "1.0", + Version = "1.1", Description = [[ This asset contains the trail and position of 'Oumuamua from 2014 JAN 01 00:00:00 to 2023 JAN 01 00:00:00. Data from JPL Horizons']], Author = "OpenSpace Team", diff --git a/data/assets/scene/solarsystem/missions/apollo/11/apollo11.asset b/data/assets/scene/solarsystem/missions/apollo/11/apollo11.asset index f88fef0bd7..dae3c4e762 100644 --- a/data/assets/scene/solarsystem/missions/apollo/11/apollo11.asset +++ b/data/assets/scene/solarsystem/missions/apollo/11/apollo11.asset @@ -1,4 +1,3 @@ -local asset_helper = asset.require("util/asset_helper") local sun_transforms = asset.require("scene/solarsystem/sun/transforms") local moon_transforms = asset.require("scene/solarsystem/planets/earth/moon/moon") @@ -68,7 +67,19 @@ local Apollo11Model = { Renderable = { Type = "RenderableModel", GeometryFile = models .. "Apollo_CSM_shrunk_rotated_xy_double_size.obj", - LightSources = asset_helper.getDefaultLightSources(sun_transforms.SolarSystemBarycenter.Identifier) + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sun_transforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + { + Identifier = "Camera", + Type = "CameraLightSource", + Intensity = 0.5 + } + } }, GUI = { Name = "Apollo 11 CSM", @@ -185,7 +196,19 @@ local Apollo11LemDescentModel = { GeometryFile = lem_model .. "lmremoved.obj", SpecularIntensity = 0.0, RotationVector = { 273.750,28.0,309.85 }, - LightSources = asset_helper.getDefaultLightSources(sun_transforms.SolarSystemBarycenter.Identifier) + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sun_transforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + { + Identifier = "Camera", + Type = "CameraLightSource", + Intensity = 0.5 + } + } }, GUI = { Name = "Apollo 11 Descent Lem", @@ -211,7 +234,19 @@ local Apollo11LemLandedModel = { GeometryFile = lem_model .. "LM-2_ver2clean.obj", SpecularIntensity = 0.0, RotationVector = { 273.750,28.0,309.85 }, - LightSources = asset_helper.getDefaultLightSources(sun_transforms.SolarSystemBarycenter.Identifier) + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sun_transforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + { + Identifier = "Camera", + Type = "CameraLightSource", + Intensity = 0.5 + } + } }, GUI = { Name = "Apollo 11 Landed Lem", @@ -219,7 +254,7 @@ local Apollo11LemLandedModel = { } } -local exportList = { +local nodes = { Apollo11Position, Apollo11LemPosition, Apollo11Model, @@ -229,4 +264,19 @@ local exportList = { Apollo11LemTrail, } -asset_helper.registerSceneGraphNodesAndExport(asset, exportList) +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + local node = nodes[i] + openspace.removeSceneGraphNode(node) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end diff --git a/data/assets/scene/solarsystem/missions/apollo/11/lem.asset b/data/assets/scene/solarsystem/missions/apollo/11/lem.asset index cca59d8db6..c49cc38245 100644 --- a/data/assets/scene/solarsystem/missions/apollo/11/lem.asset +++ b/data/assets/scene/solarsystem/missions/apollo/11/lem.asset @@ -1,5 +1,4 @@ -- a11_lem.asset -local asset_helper = asset.require("util/asset_helper") local sun_transforms = asset.require("scene/solarsystem/sun/transforms") local moon_asset = asset.require("scene/solarsystem/planets/earth/moon/moon") @@ -43,7 +42,19 @@ local Apollo11LemModel = { Type = "RenderableModel", GeometryFile = lem_model .. "LM-2_ver2clean.obj", RotationVector = { 91.044090, 171.229706, 111.666664 }, - LightSources = asset_helper.getDefaultLightSources(sun_transforms.SolarSystemBarycenter.Identifier) + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sun_transforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + { + Identifier = "Camera", + Type = "CameraLightSource", + Intensity = 0.5 + } + } }, GUI = { Name = "Apollo 11 Lem", @@ -51,4 +62,15 @@ local Apollo11LemModel = { } } -asset_helper.registerSceneGraphNodesAndExport(asset, { Apollo11Lem, Apollo11LemModel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Apollo11Lem) + openspace.addSceneGraphNode(Apollo11LemModel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Apollo11LemModel) + openspace.removeSceneGraphNode(Apollo11Lem) +end) + +asset.export(Apollo11Lem) +asset.export(Apollo11LemModel) diff --git a/data/assets/scene/solarsystem/missions/apollo/15/apollo15.asset b/data/assets/scene/solarsystem/missions/apollo/15/apollo15.asset index b45c0086e5..2b5595e354 100644 --- a/data/assets/scene/solarsystem/missions/apollo/15/apollo15.asset +++ b/data/assets/scene/solarsystem/missions/apollo/15/apollo15.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local moon_transforms = asset.require("scene/solarsystem/planets/earth/moon/moon") local sun_transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -102,6 +101,15 @@ local Apollo15Trail = { } } -local list = { Apollo15, Apollo15Trail } - -assetHelper.registerSceneGraphNodesAndExport(asset, list) +asset.onInitialize(function() + openspace.addSceneGraphNode(Apollo15) + openspace.addSceneGraphNode(Apollo15Trail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Apollo15Trail) + openspace.removeSceneGraphNode(Apollo15) +end) + +asset.export(Apollo15) +asset.export(Apollo15Trail) diff --git a/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation2.asset b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation2.asset index 1a5c6aedd1..3fe739e62c 100644 --- a/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation2.asset +++ b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation2.asset @@ -1,5 +1,4 @@ local sun_transforms = asset.require("scene/solarsystem/sun/transforms") -local asset_helper = asset.require("util/asset_helper") local moon_asset = asset.require("scene/solarsystem/planets/earth/moon/moon") local models = asset.syncedResource({ @@ -149,8 +148,25 @@ local Station2Boulder3Model = { } } -asset_helper.registerSceneGraphNodesAndExport(asset, { +local nodes = { Station2Boulder1Holder, Station2Boulder1Model, Station2Boulder2Holder, Station2Boulder2Model, Station2Boulder3Holder, Station2Boulder3Model -}) +} + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + local node = nodes[i] + openspace.removeSceneGraphNode(node) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end diff --git a/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation6.asset b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation6.asset index becc0e2811..16f8218fa8 100644 --- a/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation6.asset +++ b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation6.asset @@ -1,5 +1,4 @@ local sun_transforms = asset.require("scene/solarsystem/sun/transforms") -local asset_helper = asset.require("util/asset_helper") local moon_asset = asset.require("scene/solarsystem/planets/earth/moon/moon") local models = asset.syncedResource({ @@ -150,6 +149,24 @@ local Station6Frag3Model = { } } -asset_helper.registerSceneGraphNodesAndExport(asset, { - Station6Frag1Holder, Station6Frag1Model, Station6Frag23Holder, Station6Frag2Model, Station6Frag3Model, -}) +local nodes = { + Station6Frag1Holder, Station6Frag1Model, Station6Frag23Holder, Station6Frag2Model, + Station6Frag3Model, +} + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + local node = nodes[i] + openspace.removeSceneGraphNode(node) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end diff --git a/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation7.asset b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation7.asset index 4fa8b779f7..94c253e830 100644 --- a/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation7.asset +++ b/data/assets/scene/solarsystem/missions/apollo/17/bouldersstation7.asset @@ -1,5 +1,4 @@ local sun_transforms = asset.require("scene/solarsystem/sun/transforms") -local asset_helper = asset.require("util/asset_helper") local moon_asset = asset.require("scene/solarsystem/planets/earth/moon/moon") local models = asset.syncedResource({ @@ -65,6 +64,15 @@ local Station7BoulderModel = { } } -asset_helper.registerSceneGraphNodesAndExport(asset, { - Station7BoulderHolder, Station7BoulderModel -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(Station7BoulderHolder) + openspace.addSceneGraphNode(Station7BoulderModel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Station7BoulderModel) + openspace.removeSceneGraphNode(Station7BoulderHolder) +end) + +asset.export(Station7BoulderHolder) +asset.export(Station7BoulderModel) diff --git a/data/assets/scene/solarsystem/missions/apollo/17/lem.asset b/data/assets/scene/solarsystem/missions/apollo/17/lem.asset index 16512ded45..d9d6c7b76e 100644 --- a/data/assets/scene/solarsystem/missions/apollo/17/lem.asset +++ b/data/assets/scene/solarsystem/missions/apollo/17/lem.asset @@ -1,4 +1,3 @@ -local asset_helper = asset.require("util/asset_helper") local sun_transforms = asset.require("scene/solarsystem/sun/transforms") local moon_asset = asset.require("scene/solarsystem/planets/earth/moon/moon") @@ -42,7 +41,19 @@ local Apollo17LemModel = { GeometryFile = model .. "LM-2_ver2clean.obj", SpecularIntensity = 0.0, RotationVector = { 110.255219,171.229706,126.666664 }, - LightSources = asset_helper.getDefaultLightSources(sun_transforms.SolarSystemBarycenter.Identifier) + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sun_transforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + { + Identifier = "Camera", + Type = "CameraLightSource", + Intensity = 0.5 + } + } }, GUI = { Name = "Apollo 17 Lem", @@ -50,4 +61,15 @@ local Apollo17LemModel = { } } -asset_helper.registerSceneGraphNodesAndExport(asset, { Apollo17Lem, Apollo17LemModel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Apollo17Lem) + openspace.addSceneGraphNode(Apollo17LemModel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Apollo17LemModel) + openspace.removeSceneGraphNode(Apollo17Lem) +end) + +asset.export(Apollo17Lem) +asset.export(Apollo17LemModel) diff --git a/data/assets/scene/solarsystem/missions/apollo/8/launch_model.asset b/data/assets/scene/solarsystem/missions/apollo/8/launch_model.asset index 598ee1d5e2..a2844520ce 100644 --- a/data/assets/scene/solarsystem/missions/apollo/8/launch_model.asset +++ b/data/assets/scene/solarsystem/missions/apollo/8/launch_model.asset @@ -1,4 +1,3 @@ -local asset_helper = asset.require("util/asset_helper") local earth_transforms = asset.require("scene/solarsystem/planets/earth/transforms") local sun_transforms = asset.require("scene/solarsystem/sun/transforms") local kernels = asset.require("./kernels").kernels @@ -71,6 +70,15 @@ local Apollo8LaunchModel = { } } -local list = { Apollo8Launch, Apollo8LaunchModel } - -asset_helper.registerSceneGraphNodesAndExport(asset, list) +asset.onInitialize(function() + openspace.addSceneGraphNode(Apollo8Launch) + openspace.addSceneGraphNode(Apollo8LaunchModel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Apollo8LaunchModel) + openspace.removeSceneGraphNode(Apollo8Launch) +end) + +asset.export(Apollo8Launch) +asset.export(Apollo8LaunchModel) diff --git a/data/assets/scene/solarsystem/missions/apollo/8/model.asset b/data/assets/scene/solarsystem/missions/apollo/8/model.asset index ad3ec538b6..4d43b54084 100644 --- a/data/assets/scene/solarsystem/missions/apollo/8/model.asset +++ b/data/assets/scene/solarsystem/missions/apollo/8/model.asset @@ -1,4 +1,3 @@ -local asset_helper = asset.require("util/asset_helper") local earth_transforms = asset.require("scene/solarsystem/planets/earth/transforms") local sun_transforms = asset.require("scene/solarsystem/sun/transforms") local kernels = asset.require("./kernels").kernels @@ -99,6 +98,18 @@ local Apollo8Pivot = { } } -local list = { Apollo8, Apollo8Model, Apollo8Pivot } - -asset_helper.registerSceneGraphNodesAndExport(asset, list) +asset.onInitialize(function() + openspace.addSceneGraphNode(Apollo8) + openspace.addSceneGraphNode(Apollo8Model) + openspace.addSceneGraphNode(Apollo8Pivot) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Apollo8Pivot) + openspace.removeSceneGraphNode(Apollo8Model) + openspace.removeSceneGraphNode(Apollo8) +end) + +asset.export(Apollo8) +asset.export(Apollo8Model) +asset.export(Apollo8Pivot) diff --git a/data/assets/scene/solarsystem/missions/apollo/8/trails.asset b/data/assets/scene/solarsystem/missions/apollo/8/trails.asset index 3ef9b58431..f94415d757 100644 --- a/data/assets/scene/solarsystem/missions/apollo/8/trails.asset +++ b/data/assets/scene/solarsystem/missions/apollo/8/trails.asset @@ -1,5 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - local earth_transforms = asset.require("scene/solarsystem/planets/earth/transforms") local moon_transforms = asset.require("scene/solarsystem/planets/earth/moon/moon") local kernels = asset.require("./kernels").kernels @@ -79,4 +77,18 @@ local EarthBarycenterTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { LaunchTrail, MoonTrail, EarthBarycenterTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(LaunchTrail) + openspace.addSceneGraphNode(MoonTrail) + openspace.addSceneGraphNode(EarthBarycenterTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(EarthBarycenterTrail) + openspace.removeSceneGraphNode(MoonTrail) + openspace.removeSceneGraphNode(LaunchTrail) +end) + +asset.export(LaunchTrail) +asset.export(MoonTrail) +asset.export(EarthBarycenterTrail) diff --git a/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset b/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset index 050bb1eb61..d8bba76038 100644 --- a/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset +++ b/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset @@ -2,8 +2,6 @@ -- The insignias are invisible by default, but can be enabled using shown or hidden using -- the exported functions `showInsignias(interpolationDuration)` and `hideInsignias(interpolationDuration)`. -local asset_helper = asset.require("util/asset_helper") - local insigniasPath = asset.syncedResource({ Name = "Apollo Insignias", Type = "HttpSynchronization", @@ -106,18 +104,30 @@ local hide_apollo_labels = { asset.onInitialize(function () openspace.action.registerAction(show_apollo_labels) openspace.action.registerAction(hide_apollo_labels) + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end end) asset.onDeinitialize(function () - openspace.action.removeAction(show_apollo_labels.Identifier) - openspace.action.removeAction(hide_apollo_labels.Identifier) + for i = #nodes, 1, -1 do + local node = nodes[i] + openspace.removeSceneGraphNode(node) + end + + openspace.action.removeAction(show_apollo_labels) + openspace.action.removeAction(hide_apollo_labels) end) -asset.export("showInsignia", function (missinNumber, interpolationDuration) +for _, node in ipairs(nodes) do + asset.export(node) +end + +asset.export("showInsignia", function (missionNumber, interpolationDuration) openspace.setPropertyValue("Scene.Apollo" .. missionNumber .. "Insignia.Renderable.Opacity", 1, interpolationDuration) end) -asset.export("hideInsignia", function (missinNumber, interpolationDuration) +asset.export("hideInsignia", function (missionNumber, interpolationDuration) openspace.setPropertyValue("Scene.Apollo" .. missionNumber .. "Insignia.Renderable.Opacity", 0, interpolationDuration) end) @@ -128,5 +138,3 @@ end) asset.export("hideInsignias", function (interpolationDuration) openspace.setPropertyValue("Scene.Apollo*Insignia.Renderable.Opacity", 0, interpolationDuration) end) - -asset_helper.registerSceneGraphNodesAndExport(asset, nodes) diff --git a/data/assets/scene/solarsystem/missions/dawn/ceres.asset b/data/assets/scene/solarsystem/missions/dawn/ceres.asset index 1f8419b17f..27dcf52e74 100644 --- a/data/assets/scene/solarsystem/missions/dawn/ceres.asset +++ b/data/assets/scene/solarsystem/missions/dawn/ceres.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") @@ -85,4 +84,15 @@ local CeresTrail = { } -assetHelper.registerSceneGraphNodesAndExport(asset, { Ceres, CeresTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Ceres) + openspace.addSceneGraphNode(CeresTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(CeresTrail) + openspace.removeSceneGraphNode(Ceres) +end) + +asset.export(Ceres) +asset.export(CeresTrail) diff --git a/data/assets/scene/solarsystem/missions/dawn/dawn.asset b/data/assets/scene/solarsystem/missions/dawn/dawn.asset index 51c19451ce..2a52df35f7 100644 --- a/data/assets/scene/solarsystem/missions/dawn/dawn.asset +++ b/data/assets/scene/solarsystem/missions/dawn/dawn.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -789,11 +788,28 @@ local DawnFramingCamera2 = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { +local nodes = { Dawn, DawnSolarArray1, DawnSolarArray2, DawnTrail, DawnFramingCamera1, DawnFramingCamera2 -}) +} + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + local node = nodes[i] + openspace.removeSceneGraphNode(node) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end diff --git a/data/assets/scene/solarsystem/missions/dawn/vesta.asset b/data/assets/scene/solarsystem/missions/dawn/vesta.asset index 371157dd98..4c7cf140a2 100644 --- a/data/assets/scene/solarsystem/missions/dawn/vesta.asset +++ b/data/assets/scene/solarsystem/missions/dawn/vesta.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") @@ -138,4 +137,15 @@ local VestaTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Vesta, VestaTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Vesta) + openspace.addSceneGraphNode(VestaTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(VestaTrail.Identifier) + openspace.removeSceneGraphNode(Vesta.Identifier) +end) + +asset.export(Vesta) +asset.export(VestaTrail) diff --git a/data/assets/scene/solarsystem/missions/gaia/dashboard.asset b/data/assets/scene/solarsystem/missions/gaia/dashboard.asset index 841db1d58e..0097a82b26 100644 --- a/data/assets/scene/solarsystem/missions/gaia/dashboard.asset +++ b/data/assets/scene/solarsystem/missions/gaia/dashboard.asset @@ -1,12 +1,17 @@ -local assetHelper = asset.require("util/asset_helper") -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemDistance", - Identifier = "GaiaEarthDistance", - GuiName = "Gaia Earth Distance", - SourceType = "Node", - SourceNodeName = "Gaia", - DestinationType = "Node Surface", - DestinationNodeName = "Earth" - } -}) +local distance = { + Type = "DashboardItemDistance", + Identifier = "GaiaEarthDistance", + GuiName = "Gaia Earth Distance", + SourceType = "Node", + SourceNodeName = "Gaia", + DestinationType = "Node Surface", + DestinationNodeName = "Earth" +} + +asset.onInitialize(function () + openspace.dashboard.addDashboardItem(distance) +end) + +asset.onDeinitialize(function () + openspace.dashboard.removeDashboardItem(distance) +end) diff --git a/data/assets/scene/solarsystem/missions/gaia/gaia.asset b/data/assets/scene/solarsystem/missions/gaia/gaia.asset index 014f1a01c3..8ca3f82004 100644 --- a/data/assets/scene/solarsystem/missions/gaia/gaia.asset +++ b/data/assets/scene/solarsystem/missions/gaia/gaia.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -52,4 +51,12 @@ local Gaia = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Gaia }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Gaia) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Gaia) +end) + +asset.export(Gaia) diff --git a/data/assets/scene/solarsystem/missions/gaia/trail.asset b/data/assets/scene/solarsystem/missions/gaia/trail.asset index 59cfc6b8e3..8f55d68768 100644 --- a/data/assets/scene/solarsystem/missions/gaia/trail.asset +++ b/data/assets/scene/solarsystem/missions/gaia/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -60,4 +59,15 @@ local GaiaTrailEclip = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { GaiaTrail, GaiaTrailEclip } ) +asset.onInitialize(function() + openspace.addSceneGraphNode(GaiaTrail) + openspace.addSceneGraphNode(GaiaTrailEclip) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(GaiaTrailEclip) + openspace.removeSceneGraphNode(GaiaTrail) +end) + +asset.export(GaiaTrail) +asset.export(GaiaTrailEclip) diff --git a/data/assets/scene/solarsystem/missions/gaia/transforms.asset b/data/assets/scene/solarsystem/missions/gaia/transforms.asset index 80ee2bcfd2..41531abbc3 100644 --- a/data/assets/scene/solarsystem/missions/gaia/transforms.asset +++ b/data/assets/scene/solarsystem/missions/gaia/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") @@ -24,4 +23,12 @@ local GaiaPosition = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { GaiaPosition }) +asset.onInitialize(function() + openspace.addSceneGraphNode(GaiaPosition) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(GaiaPosition) +end) + +asset.export(GaiaPosition) diff --git a/data/assets/scene/solarsystem/missions/insight/edl.asset b/data/assets/scene/solarsystem/missions/insight/edl.asset index 073b6345dd..94ce725f7c 100644 --- a/data/assets/scene/solarsystem/missions/insight/edl.asset +++ b/data/assets/scene/solarsystem/missions/insight/edl.asset @@ -1,6 +1,6 @@ asset.require("spice/base") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") -local assetHelper = asset.require("util/asset_helper") +local mars = asset.require("scene/solarsystem/planets/mars/mars") local models = asset.syncedResource({ Name = "Insight Models Chutes", @@ -156,7 +156,7 @@ local RotationKeyframes = { local InsightParent = { Identifier = "InsightParent", - Parent = "Mars", + Parent = mars.Identifier, Transform = { Translation ={ Type = "TimelineTranslation", @@ -741,7 +741,7 @@ local Insight_Panels_Deployed_tex2 = { Start = panelDeployTime, }, GUI = { - Hidden = true, + -- Hidden = true, Name = "Insight panels_deploy_tex2", Path = "/Solar System/Missions/Insight" } @@ -796,7 +796,7 @@ local Insight_Trail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { +local nodes = { InsightParent, Insight, Insight_Entry_CapsuleA, Insight_Entry_Capsule_Ring, Insight_Entry_Capsule_Plugs, Insight_Entry_Heatshield, Insight_Parachute_0, Insight_Parachute_Cords_0, Insight_Parachute_20, Insight_Parachute_Cords_20, @@ -808,4 +808,20 @@ assetHelper.registerSceneGraphNodesAndExport(asset, { Insight_Panels_Stowed_tex, Insight_Panels_Stowed_tex2, Insight_Panels_Stowed_AO01, Insight_Panels_Deployed_tex, Insight_Panels_Deployed_tex2, Insight_Panels_Deployed_AO06, Insight_Trail -}) +} + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end diff --git a/data/assets/scene/solarsystem/missions/juno/juno.asset b/data/assets/scene/solarsystem/missions/juno/juno.asset index ac58358871..6436bcaaae 100644 --- a/data/assets/scene/solarsystem/missions/juno/juno.asset +++ b/data/assets/scene/solarsystem/missions/juno/juno.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/planets/jupiter/transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -152,7 +151,19 @@ local Juno = { Type = "RenderableModel", GeometryFile = model .. "Juno.obj", ModelTransform = RotationMatrix, - LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier) + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + { + Identifier = "Camera", + Type = "CameraLightSource", + Intensity = 0.5 + } + } }, TimeFrame = { Type = "TimeFrameInterval", @@ -186,4 +197,15 @@ local JunoTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Juno, JunoTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Juno) + openspace.addSceneGraphNode(JunoTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(JunoTrail) + openspace.removeSceneGraphNode(Juno) +end) + +asset.export(Juno) +asset.export(JunoTrail) diff --git a/data/assets/scene/solarsystem/missions/jwst/hudf.asset b/data/assets/scene/solarsystem/missions/jwst/hudf.asset index 2c67026d85..afb0edc882 100644 --- a/data/assets/scene/solarsystem/missions/jwst/hudf.asset +++ b/data/assets/scene/solarsystem/missions/jwst/hudf.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/planets/earth/transforms") local jwstTransforms = asset.require("./transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -76,15 +75,25 @@ local HUDFJWSTLine = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { HUDFPosition, HUDFImage, HUDFJWSTLine }) - asset.onInitialize(function() openspace.addScreenSpaceRenderable(HUDFImage) + + openspace.addSceneGraphNode(HUDFPosition) + openspace.addSceneGraphNode(HUDFImage) + openspace.addSceneGraphNode(HUDFJWSTLine) end) asset.onDeinitialize(function() - openspace.removeScreenSpaceRenderable(HUDFImage.Identifier) + openspace.removeSceneGraphNode(HUDFPosition) + openspace.removeSceneGraphNode(HUDFImage) + openspace.removeSceneGraphNode(HUDFJWSTLine) + + openspace.removeScreenSpaceRenderable(HUDFImage) end) +asset.export(HUDFJWSTLine) +asset.export(HUDFImage) +asset.export(HUDFPosition) + asset.meta = { Name = "Hubble Ultra Deep Field Image and Line", Version = "1.0", diff --git a/data/assets/scene/solarsystem/missions/jwst/jwst.asset b/data/assets/scene/solarsystem/missions/jwst/jwst.asset index e6c8fe87f2..e9beaf77de 100644 --- a/data/assets/scene/solarsystem/missions/jwst/jwst.asset +++ b/data/assets/scene/solarsystem/missions/jwst/jwst.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local transforms = asset.require("./transforms") asset.require("spice/base") @@ -152,12 +151,24 @@ local JWSTLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - JWSTBand, - JWSTModel, - JWSTFov, - JWSTLabel -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(JWSTBand) + openspace.addSceneGraphNode(JWSTModel) + openspace.addSceneGraphNode(JWSTFov) + openspace.addSceneGraphNode(JWSTLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(JWSTLabel) + openspace.removeSceneGraphNode(JWSTFov) + openspace.removeSceneGraphNode(JWSTModel) + openspace.removeSceneGraphNode(JWSTBand) +end) + +asset.export(JWSTBand) +asset.export(JWSTModel) +asset.export(JWSTFov) +asset.export(JWSTLabel) asset.meta = { Name = "James Webb Space Telescope", diff --git a/data/assets/scene/solarsystem/missions/jwst/timelapse.asset b/data/assets/scene/solarsystem/missions/jwst/timelapse.asset index 8662fad7ca..c29ff6a383 100644 --- a/data/assets/scene/solarsystem/missions/jwst/timelapse.asset +++ b/data/assets/scene/solarsystem/missions/jwst/timelapse.asset @@ -1,5 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - -- JWST timelapse timeline local timelapse = [[ openspace.scriptScheduler.loadScheduledScript( @@ -398,30 +396,32 @@ local togglePlayDirection = { IsLocal = false } +local text = { + Type = "DashboardItemText", + Identifier = "JWSTStateText", + GuiName = "JWST State Dashboard Text", + Text = "" +} + asset.onInitialize(function() openspace.action.registerAction(playForwards) openspace.action.registerAction(playBackwards) openspace.action.registerAction(clearPlay) openspace.action.registerAction(togglePlayDirection) + openspace.dashboard.addDashboardItem(text) end) asset.onDeinitialize(function () openspace.scriptScheduler.clear() - openspace.action.removeAction(playForwards.Identifier) - openspace.action.removeAction(playBackwards.Identifier) - openspace.action.removeAction(clearPlay.Identifier) - openspace.action.removeAction(togglePlayDirection.Identifier) + openspace.dashboard.removeDashboardItem(text) + openspace.action.removeAction(playForwards) + openspace.action.removeAction(playBackwards) + openspace.action.removeAction(clearPlay) + openspace.action.removeAction(togglePlayDirection) end) -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemText", - Identifier = "JWSTStateText", - GuiName = "JWST State Dashboard Text", - Text = "" - } -}) + asset.meta = { Name = "James Webb Space Telescope Timelapse", diff --git a/data/assets/scene/solarsystem/missions/jwst/trail.asset b/data/assets/scene/solarsystem/missions/jwst/trail.asset index 65c900abfb..1d08a449fa 100644 --- a/data/assets/scene/solarsystem/missions/jwst/trail.asset +++ b/data/assets/scene/solarsystem/missions/jwst/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/planets/earth/lagrange_points/L2") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -115,11 +114,22 @@ local JWSTSunTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - JWSTTrailLaunch, - JWSTTrailOrbit, - JWSTSunTrail -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(JWSTTrailLaunch) + openspace.addSceneGraphNode(JWSTTrailOrbit) + openspace.addSceneGraphNode(JWSTSunTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(JWSTSunTrail) + openspace.removeSceneGraphNode(JWSTTrailOrbit) + openspace.removeSceneGraphNode(JWSTTrailLaunch) +end) + +asset.export(JWSTTrailLaunch) +asset.export(JWSTTrailOrbit) +asset.export(JWSTSunTrail) + asset.meta = { Name = "James Webb Space Telescope Trails", diff --git a/data/assets/scene/solarsystem/missions/jwst/transforms.asset b/data/assets/scene/solarsystem/missions/jwst/transforms.asset index 8d1858bbef..a2a94168b1 100644 --- a/data/assets/scene/solarsystem/missions/jwst/transforms.asset +++ b/data/assets/scene/solarsystem/missions/jwst/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -74,10 +73,19 @@ asset.onInitialize(function() ) end) -assetHelper.registerSceneGraphNodesAndExport(asset, { - JWSTPosition, - JWSTRotation -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(JWSTPosition) + openspace.addSceneGraphNode(JWSTRotation) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(JWSTRotation) + openspace.removeSceneGraphNode(JWSTPosition) +end) + +asset.export(JWSTPosition) +asset.export(JWSTRotation) + asset.meta = { Name = "James Webb Space Telescope Transforms", diff --git a/data/assets/scene/solarsystem/missions/messenger/dashboard.asset b/data/assets/scene/solarsystem/missions/messenger/dashboard.asset index 0dc3362949..b460d104d9 100644 --- a/data/assets/scene/solarsystem/missions/messenger/dashboard.asset +++ b/data/assets/scene/solarsystem/missions/messenger/dashboard.asset @@ -1,13 +1,17 @@ -local assetHelper = asset.require("util/asset_helper") +local distance = { + Type = "DashboardItemDistance", + Identifier = "MessengerDistance", + GuiName = "Messenger - Mercury Distance", + SourceType = "Node", + SourceNodeName = "Messenger", + DestinationType = "Node", + DestinationNodeName = "Mercury" +} -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemDistance", - Identifier = "MessengerDistance", - GuiName = "Messenger - Mercury Distance", - SourceType = "Node", - SourceNodeName = "Messenger", - DestinationType = "Node", - DestinationNodeName = "Mercury" - } -}) +asset.onInitialize(function() + openspace.dashboard.addDashboardItem(distance) +end) + +asset.onDeinitialize(function() + openspace.dashboard.removeDashboardItem(distance) +end) diff --git a/data/assets/scene/solarsystem/missions/messenger/mercurymagnetosphere.asset b/data/assets/scene/solarsystem/missions/messenger/mercurymagnetosphere.asset index 1425f5d5f5..576f0b8ed6 100644 --- a/data/assets/scene/solarsystem/missions/messenger/mercurymagnetosphere.asset +++ b/data/assets/scene/solarsystem/missions/messenger/mercurymagnetosphere.asset @@ -1,5 +1,4 @@ -- mercurymagnetosphere.asset -local assetHelper = asset.require("util/asset_helper") local mercuryTransforms = asset.require("scene/solarsystem/planets/mercury/transforms") local localFolder = asset.syncedResource({ @@ -54,4 +53,12 @@ local Magnetosphere = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Magnetosphere }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Magnetosphere) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Magnetosphere) +end) + +asset.export(Magnetosphere) diff --git a/data/assets/scene/solarsystem/missions/messenger/messengerSC.asset b/data/assets/scene/solarsystem/missions/messenger/messengerSC.asset index 804849fcda..eca89f4eff 100644 --- a/data/assets/scene/solarsystem/missions/messenger/messengerSC.asset +++ b/data/assets/scene/solarsystem/missions/messenger/messengerSC.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local mercuryTransforms = asset.require("scene/solarsystem/planets/mercury/transforms") @@ -58,7 +57,19 @@ local RotationMatrix = { } -local LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier) +local LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + { + Identifier = "Camera", + Type = "CameraLightSource", + Intensity = 0.5 + } +} local Messenger = { Identifier = "Messenger", @@ -187,7 +198,7 @@ local MessengerTrail = { } -assetHelper.registerSceneGraphNodesAndExport(asset, { +local nodes = { Messenger, MessengerProbeBlack, MessengerProbeFoil, @@ -195,4 +206,20 @@ assetHelper.registerSceneGraphNodesAndExport(asset, { MessengerProbeMetal, MessengerProbePanels, MessengerTrail -}) +} + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end diff --git a/data/assets/scene/solarsystem/missions/newhorizons/charon.asset b/data/assets/scene/solarsystem/missions/newhorizons/charon.asset index 7ec0ea178a..52ad91c9be 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/charon.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/charon.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -114,8 +113,18 @@ local CharonShadow = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - CharonProjection, - CharonText, - CharonShadow -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(CharonProjection) + openspace.addSceneGraphNode(CharonText) + openspace.addSceneGraphNode(CharonShadow) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(CharonShadow) + openspace.removeSceneGraphNode(CharonText) + openspace.removeSceneGraphNode(CharonProjection) +end) + +asset.export(CharonProjection) +asset.export(CharonText) +asset.export(CharonShadow) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/dashboard.asset b/data/assets/scene/solarsystem/missions/newhorizons/dashboard.asset index c922ccbfbc..3d668bd2cd 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/dashboard.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/dashboard.asset @@ -1,24 +1,34 @@ -local assetHelper = asset.require("util/asset_helper") +local spacing = { + Type = "DashboardItemSpacing", + Identifier = "NewHorizonsSpacing", + GuiName = "New Horizons Spacing", + Spacing = 25 +} -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemSpacing", - Identifier = "NewHorizonsSpacing", - GuiName = "New Horizons Spacing", - Spacing = 25 - }, - { - Type = "DashboardItemDistance", - Identifier = "NewHorizonsPlutoDistance", - GuiName = "New Horizons Pluto Distance", - SourceType = "Node", - SourceNodeName = "NewHorizons", - DestinationType = "Node Surface", - DestinationNodeName = "PlutoProjection" - }, - { - Type = "DashboardItemInstruments", - Identifier = "NewHorizonsInstruments", - GuiName = "NewHorizons Instruments" - } -}) +local distance = { + Type = "DashboardItemDistance", + Identifier = "NewHorizonsPlutoDistance", + GuiName = "New Horizons Pluto Distance", + SourceType = "Node", + SourceNodeName = "NewHorizons", + DestinationType = "Node Surface", + DestinationNodeName = "PlutoProjection" +} + +local instruments = { + Type = "DashboardItemInstruments", + Identifier = "NewHorizonsInstruments", + GuiName = "NewHorizons Instruments" +} + +asset.onInitialize(function() + openspace.dashboard.addDashboardItem(spacing) + openspace.dashboard.addDashboardItem(distance) + openspace.dashboard.addDashboardItem(instruments) +end) + +asset.onDeinitialize(function() + openspace.dashboard.removeDashboardItem(instruments) + openspace.dashboard.removeDashboardItem(distance) + openspace.dashboard.removeDashboardItem(spacing) +end) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/fov.asset b/data/assets/scene/solarsystem/missions/newhorizons/fov.asset index 7766d509d6..63bae74bd6 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/fov.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/fov.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") @@ -368,7 +367,7 @@ local Rex = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { +local nodes = { Lorri, RalphLeisa, RalphMvicPan1, @@ -381,4 +380,21 @@ assetHelper.registerSceneGraphNodesAndExport(asset, { AliceAirglow, AliceSoc, Rex -}) +} + +asset.onInitialize(function () + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function () + for i = #nodes, 1, -1 do + local node = nodes[i] + openspace.removeSceneGraphNode(node) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end diff --git a/data/assets/scene/solarsystem/missions/newhorizons/label.asset b/data/assets/scene/solarsystem/missions/newhorizons/label.asset index 3551b4244d..646aec1f8f 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/label.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/label.asset @@ -1,12 +1,14 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local transforms = asset.require("./transforms") local NewHorizonsModel = asset.require("./model") - -local textures = NewHorizonsModel.NewHorizonsTextures -local models = NewHorizonsModel.NewHorizonsModels +local models = asset.syncedResource({ + Name = "New Horizons Model", + Type = "HttpSynchronization", + Identifier = "newhorizons_model", + Version = 2 +}) local Labels = { Identifier = "Labels", @@ -22,4 +24,12 @@ local Labels = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Labels }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Labels) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Labels) +end) + +asset.export(Labels) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/model.asset b/data/assets/scene/solarsystem/missions/newhorizons/model.asset index b460d0022d..465f9cdf33 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/model.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/model.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -34,5 +33,12 @@ local NewHorizons = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { NewHorizons }) -asset.export("NewHorizonsModels", models) +asset.onInitialize(function() + openspace.addSceneGraphNode(NewHorizons) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(NewHorizons) +end) + +asset.export(NewHorizons) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/newhorizons.asset b/data/assets/scene/solarsystem/missions/newhorizons/newhorizons.asset index f51a44d596..5b54845b72 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/newhorizons.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/newhorizons.asset @@ -12,9 +12,9 @@ local mission = asset.localResource("newhorizons.mission") local missionName asset.onInitialize(function() - missionName = openspace.loadMission(mission) + missionName = openspace.loadMission(mission) end) asset.onDeinitialize(function() - openspace.unloadMission(missionName) + openspace.unloadMission(missionName) end) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/othermoons.asset b/data/assets/scene/solarsystem/missions/newhorizons/othermoons.asset index 931ca930e5..0c0c7124a9 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/othermoons.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/othermoons.asset @@ -2,7 +2,6 @@ local Hydra = asset.require("scene/solarsystem/dwarf_planets/pluto/minor/hydra") local Kerberos = asset.require("scene/solarsystem/dwarf_planets/pluto/minor/kerberos") local Nix = asset.require("scene/solarsystem/dwarf_planets/pluto/minor/nix") local Styx = asset.require("scene/solarsystem/dwarf_planets/pluto/minor/styx") -local assetHelper = asset.require("util/asset_helper") local hydraTextures = asset.syncedResource({ Name = "Hydra Textures", @@ -118,9 +117,21 @@ local StyxText = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - HydraText, - KerberosText, - NixText, - StyxText -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(HydraText) + openspace.addSceneGraphNode(KerberosText) + openspace.addSceneGraphNode(NixText) + openspace.addSceneGraphNode(StyxText) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(StyxText) + openspace.removeSceneGraphNode(NixText) + openspace.removeSceneGraphNode(KerberosText) + openspace.removeSceneGraphNode(HydraText) +end) + +asset.export(HydraText) +asset.export(KerberosText) +asset.export(NixText) +asset.export(StyxText) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset b/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset index 23d31b783a..234234b79c 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local NewHorizonsKernels = asset.require("./kernels").NewHorizonsKernels @@ -243,9 +242,21 @@ local PlutoShadow = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - PlutoProjection, - PlutoBarycenterLabel, - PlutoText, - PlutoShadow -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(PlutoProjection) + openspace.addSceneGraphNode(PlutoBarycenterLabel) + openspace.addSceneGraphNode(PlutoText) + openspace.addSceneGraphNode(PlutoShadow) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(PlutoShadow) + openspace.removeSceneGraphNode(PlutoText) + openspace.removeSceneGraphNode(PlutoBarycenterLabel) + openspace.removeSceneGraphNode(PlutoProjection) +end) + +asset.export(PlutoProjection) +asset.export(PlutoBarycenterLabel) +asset.export(PlutoText) +asset.export(PlutoShadow) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/trail.asset b/data/assets/scene/solarsystem/missions/newhorizons/trail.asset index f1735b381e..aa07cc3711 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/trail.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") @@ -29,6 +28,12 @@ local TrailAtPluto = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - TrailAtPluto -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(TrailAtPluto) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(TrailAtPluto) +end) + +asset.export(TrailAtPluto) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/transforms.asset b/data/assets/scene/solarsystem/missions/newhorizons/transforms.asset index c136a5d82c..8e4dd6d0a4 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/transforms.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local kernels = asset.require("./kernels") @@ -46,7 +45,15 @@ local NewHorizonsPosition = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - PlutoBarycenterAccurate, - NewHorizonsPosition -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(PlutoBarycenterAccurate) + openspace.addSceneGraphNode(NewHorizonsPosition) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(NewHorizonsPosition) + openspace.removeSceneGraphNode(PlutoBarycenterAccurate) +end) + +asset.export(PlutoBarycenterAccurate) +asset.export(NewHorizonsPosition) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset b/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset index cd4cee476d..67c0350bb5 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/bennu.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -43,4 +42,12 @@ local Bennu = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, {Bennu}) +asset.onInitialize(function() + openspace.addSceneGraphNode(Bennu) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Bennu) +end) + +asset.export(Bennu) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/bennu_projection.asset b/data/assets/scene/solarsystem/missions/osirisrex/bennu_projection.asset index b3eca5f6c6..c4d0935813 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/bennu_projection.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/bennu_projection.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -106,4 +105,15 @@ local BennuTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { BennuProjection, BennuTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(BennuProjection) + openspace.addSceneGraphNode(BennuTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(BennuTrail) + openspace.removeSceneGraphNode(BennuProjection) +end) + +asset.export(BennuProjection) +asset.export(BennuTrail) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/dashboard.asset b/data/assets/scene/solarsystem/missions/osirisrex/dashboard.asset index e009935284..723ef7967b 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/dashboard.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/dashboard.asset @@ -1,24 +1,34 @@ -local assetHelper = asset.require("util/asset_helper") +local spacing = { + Type = "DashboardItemSpacing", + Identifier = "OsirisRexSpacing", + GuiName = "OSIRIS-REx Spacing", + Spacing = 25 +} -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemSpacing", - Identifier = "OsirisRexSpacing", - GuiName = "OSIRIS-REx Spacing", - Spacing = 25 - }, - { - Type = "DashboardItemDistance", - Identifier = "OsirisRexBennuDistance", - GuiName = "OSIRIS-REx Bennu Distance", - SourceType = "Node", - SourceNodeName = "OsirisRex", - DestinationType = "Node", - DestinationNodeName = "BennuBarycenter" - }, - { - Type = "DashboardItemInstruments", - Identifier = "OsirisRexInstruments", - GuiName = "OSIRIS-REx Instruments", - } -}) +local distance = { + Type = "DashboardItemDistance", + Identifier = "OsirisRexBennuDistance", + GuiName = "OSIRIS-REx Bennu Distance", + SourceType = "Node", + SourceNodeName = "OsirisRex", + DestinationType = "Node", + DestinationNodeName = "BennuBarycenter" +} + +local instruments = { + Type = "DashboardItemInstruments", + Identifier = "OsirisRexInstruments", + GuiName = "OSIRIS-REx Instruments", +} + +asset.onInitialize(function() + openspace.dashboard.addDashboardItem(spacing) + openspace.dashboard.addDashboardItem(distance) + openspace.dashboard.addDashboardItem(instruments) +end) + +asset.onDeinitialize(function() + openspace.dashboard.removeDashboardItem(instruments) + openspace.dashboard.removeDashboardItem(distance) + openspace.dashboard.removeDashboardItem(spacing) +end) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/imageplane.asset b/data/assets/scene/solarsystem/missions/osirisrex/imageplane.asset index 808b9e121a..97837c5c87 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/imageplane.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/imageplane.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") local textures = asset.syncedResource({ @@ -40,4 +39,12 @@ local ImagePlane = { } -assetHelper.registerSceneGraphNodesAndExport(asset, { ImagePlane }) +asset.onInitialize(function() + openspace.addSceneGraphNode(ImagePlane) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(ImagePlane) +end) + +asset.export(ImagePlane) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/model.asset b/data/assets/scene/solarsystem/missions/osirisrex/model.asset index c8ab8466bc..e8798f5c07 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/model.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/model.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") @@ -156,10 +155,26 @@ local PolyCamFov = { -- } -- } -assetHelper.registerSceneGraphNodesAndExport(asset, { +local nodes = { OsirisRex, PolyCam, Rexis, PolyCamFov, -- RexisFov -}) +} + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end diff --git a/data/assets/scene/solarsystem/missions/osirisrex/script_schedule.asset b/data/assets/scene/solarsystem/missions/osirisrex/script_schedule.asset index c2d4049f7e..94736fd02a 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/script_schedule.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/script_schedule.asset @@ -13,6 +13,6 @@ asset.onInitialize(function () end) -asset.onDeinitialize(function () +asset.onDeinitialize(function() openspace.scriptScheduler.clear() end) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/trail.asset b/data/assets/scene/solarsystem/missions/osirisrex/trail.asset index 0d92f79a0d..fa15af8c29 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/trail.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") @@ -71,8 +70,18 @@ local OsirisRexTrailBennu = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - OsirisRexTrailEarth, - OsirisRexTrailSolarSystem, - OsirisRexTrailBennu -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(OsirisRexTrailEarth) + openspace.addSceneGraphNode(OsirisRexTrailSolarSystem) + openspace.addSceneGraphNode(OsirisRexTrailBennu) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(OsirisRexTrailBennu) + openspace.removeSceneGraphNode(OsirisRexTrailSolarSystem) + openspace.removeSceneGraphNode(OsirisRexTrailEarth) +end) + +asset.export(OsirisRexTrailEarth) +asset.export(OsirisRexTrailSolarSystem) +asset.export(OsirisRexTrailBennu) diff --git a/data/assets/scene/solarsystem/missions/osirisrex/transforms.asset b/data/assets/scene/solarsystem/missions/osirisrex/transforms.asset index db898123fa..9875a0058e 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/transforms.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") @@ -21,4 +20,12 @@ local BennuBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { BennuBarycenter }) +asset.onInitialize(function() + openspace.addSceneGraphNode(BennuBarycenter) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(BennuBarycenter) +end) + +asset.export(BennuBarycenter) diff --git a/data/assets/scene/solarsystem/missions/perseverance/model.asset b/data/assets/scene/solarsystem/missions/perseverance/model.asset index 1c020618e3..797219ad74 100644 --- a/data/assets/scene/solarsystem/missions/perseverance/model.asset +++ b/data/assets/scene/solarsystem/missions/perseverance/model.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local trail = asset.require("./trail") local marsTransforms = asset.require("scene/solarsystem/planets/mars/transforms") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -66,8 +65,18 @@ local Body = { } -assetHelper.registerSceneGraphNodesAndExport(asset, { - Perseverance, - PerseveranceModel, - Body -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(Perseverance) + openspace.addSceneGraphNode(PerseveranceModel) + openspace.addSceneGraphNode(Body) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Body) + openspace.removeSceneGraphNode(PerseveranceModel) + openspace.removeSceneGraphNode(Perseverance) +end) + +asset.export(Perseverance) +asset.export(PerseveranceModel) +asset.export(Body) diff --git a/data/assets/scene/solarsystem/missions/perseverance/trail.asset b/data/assets/scene/solarsystem/missions/perseverance/trail.asset index 7dd964578c..78162687ab 100644 --- a/data/assets/scene/solarsystem/missions/perseverance/trail.asset +++ b/data/assets/scene/solarsystem/missions/perseverance/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local marsTransforms = asset.require("scene/solarsystem/planets/mars/transforms") @@ -91,8 +90,18 @@ local PerseveranceTrailMars = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - PerseveranceNode, - PerseveranceTrailSun, - PerseveranceTrailMars -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(PerseveranceNode) + openspace.addSceneGraphNode(PerseveranceTrailSun) + openspace.addSceneGraphNode(PerseveranceTrailMars) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(PerseveranceTrailMars) + openspace.removeSceneGraphNode(PerseveranceTrailSun) + openspace.removeSceneGraphNode(PerseveranceNode) +end) + +asset.export(PerseveranceNode) +asset.export(PerseveranceTrailSun) +asset.export(PerseveranceTrailMars) diff --git a/data/assets/scene/solarsystem/missions/pioneer/pioneer10.asset b/data/assets/scene/solarsystem/missions/pioneer/pioneer10.asset index d0b5b6ab23..16ddc5bbba 100644 --- a/data/assets/scene/solarsystem/missions/pioneer/pioneer10.asset +++ b/data/assets/scene/solarsystem/missions/pioneer/pioneer10.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local model = asset.require("scene/solarsystem/missions/pioneer/pioneermodel") @@ -59,7 +58,19 @@ local Pioneer10Trail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Pioneer10, Pioneer10Trail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Pioneer10) + openspace.addSceneGraphNode(Pioneer10Trail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Pioneer10Trail) + openspace.removeSceneGraphNode(Pioneer10) +end) + +asset.export(Pioneer10) +asset.export(Pioneer10Trail) + asset.meta = { diff --git a/data/assets/scene/solarsystem/missions/pioneer/pioneer11.asset b/data/assets/scene/solarsystem/missions/pioneer/pioneer11.asset index 4a7ea159b1..66a42455f0 100644 --- a/data/assets/scene/solarsystem/missions/pioneer/pioneer11.asset +++ b/data/assets/scene/solarsystem/missions/pioneer/pioneer11.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local model = asset.require("scene/solarsystem/missions/pioneer/pioneermodel") @@ -62,7 +61,19 @@ local Pioneer11Trail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Pioneer11, Pioneer11Trail, }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Pioneer11) + openspace.addSceneGraphNode(Pioneer11Trail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Pioneer11Trail) + openspace.removeSceneGraphNode(Pioneer11) +end) + +asset.export(Pioneer11) +asset.export(Pioneer11Trail) + asset.meta = { diff --git a/data/assets/scene/solarsystem/missions/pioneer/pioneermodel.asset b/data/assets/scene/solarsystem/missions/pioneer/pioneermodel.asset index c9934e52a6..1efdc30dfa 100644 --- a/data/assets/scene/solarsystem/missions/pioneer/pioneermodel.asset +++ b/data/assets/scene/solarsystem/missions/pioneer/pioneermodel.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local modelFolder = asset.syncedResource({ @@ -11,9 +10,19 @@ local modelFolder = asset.syncedResource({ local ModelRenderable = { Type = "RenderableModel", GeometryFile = modelFolder .. "pioneer.fbx", - LightSources = assetHelper.getDefaultLightSources( - sunTransforms.SolarSystemBarycenter.Identifier - ) + LightSources = { + { + Type = "SceneGraphLightSource", + Identifier = "Sun", + Node = sunTransforms.SolarSystemBarycenter.Identifier, + Intensity = 1.0 + }, + { + Identifier = "Camera", + Type = "CameraLightSource", + Intensity = 0.5 + } + } } asset.export("PioneerModel", ModelRenderable) diff --git a/data/assets/scene/solarsystem/missions/rosetta/67p.asset b/data/assets/scene/solarsystem/missions/rosetta/67p.asset index e9510a26e0..1d412a61cd 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/67p.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/67p.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") @@ -140,11 +139,20 @@ end) -assetHelper.registerSceneGraphNodesAndExport(asset, { - Barycenter, - Comet67P, - Trail67P -}) - -asset.export("Barycenter", Barycenter) -asset.export("Comet67P", Comet67P) \ No newline at end of file +asset.onInitialize(function() + openspace.addSceneGraphNode(Barycenter) + openspace.addSceneGraphNode(Comet67P) + openspace.addSceneGraphNode(Trail67P) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Trail67P) + openspace.removeSceneGraphNode(Comet67P) + openspace.removeSceneGraphNode(Barycenter) +end) + +asset.export("Barycenter", Barycenter) -- @TODO: This double export should disappear +asset.export(Barycenter) +asset.export("Comet67P", Comet67P) -- @TODO: This double export should disappear +asset.export(Comet67P) +asset.export(Trail67P) diff --git a/data/assets/scene/solarsystem/missions/rosetta/dashboard.asset b/data/assets/scene/solarsystem/missions/rosetta/dashboard.asset index 70ee5c7107..4bb458e8f0 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/dashboard.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/dashboard.asset @@ -1,24 +1,34 @@ -local assetHelper = asset.require("util/asset_helper") +local spacing = { + Type = "DashboardItemSpacing", + Identifier = "RosettaSpacing", + GuiName = "Rosetta Spacing", + Spacing = 25 +} -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemSpacing", - Identifier = "RosettaSpacing", - GuiName = "Rosetta Spacing", - Spacing = 25 - }, - { - Type = "DashboardItemDistance", - Identifier = "Rosetta67PDistance", - GuiName = "Rosetta 67P Distance", - SourceType = "Node", - SourceNodeName = "Rosetta", - DestinationType = "Node", - DestinationNodeName = "67P" - }, - { - Type = "DashboardItemInstruments", - Identifier = "RosettaInstruments", - GuiName = "Rosetta Instruments", - } -}) +local distance = { + Type = "DashboardItemDistance", + Identifier = "Rosetta67PDistance", + GuiName = "Rosetta 67P Distance", + SourceType = "Node", + SourceNodeName = "Rosetta", + DestinationType = "Node", + DestinationNodeName = "67P" +} + +local instruments = { + Type = "DashboardItemInstruments", + Identifier = "RosettaInstruments", + GuiName = "Rosetta Instruments", +} + +asset.onInitialize(function() + openspace.dashboard.addDashboardItem(spacing) + openspace.dashboard.addDashboardItem(distance) + openspace.dashboard.addDashboardItem(instruments) +end) + +asset.onDeinitialize(function() + openspace.dashboard.removeDashboardItem(instruments) + openspace.dashboard.removeDashboardItem(distance) + openspace.dashboard.removeDashboardItem(spacing) +end) diff --git a/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset b/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset index 0f023708f6..3b195a7201 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local transforms = asset.require("./67p") @@ -452,7 +451,7 @@ local PhilaeTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { +local nodes = { Rosetta, RosettaModel, RosettaBlackFoil, @@ -477,4 +476,20 @@ assetHelper.registerSceneGraphNodesAndExport(asset, { RosettaCometTrail, PhilaeTrail -}) +} + +asset.onInitialize(function () + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function () + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node); +end diff --git a/data/assets/scene/solarsystem/missions/voyager/dashboard.asset b/data/assets/scene/solarsystem/missions/voyager/dashboard.asset index 757fe3524d..be4e9c3b51 100644 --- a/data/assets/scene/solarsystem/missions/voyager/dashboard.asset +++ b/data/assets/scene/solarsystem/missions/voyager/dashboard.asset @@ -1,22 +1,29 @@ -local assetHelper = asset.require("util/asset_helper") +local distance_voyager1 = { + Type = "DashboardItemDistance", + Identifier = "Voyager1Distance", + GuiName = "Voyager 1 - Earth Distance", + SourceType = "Node", + SourceNodeName = "Voyager_1", + DestinationType = "Node", + DestinationNodeName = "Earth" +} -assetHelper.registerDashboardItems(asset, { - { - Type = "DashboardItemDistance", - Identifier = "Voyager1Distance", - GuiName = "Voyager 1 - Earth Distance", - SourceType = "Node", - SourceNodeName = "Voyager_1", - DestinationType = "Node", - DestinationNodeName = "Earth" - }, - { - Type = "DashboardItemDistance", - Identifier = "Voyager2Distance", - GuiName = "Voyager 2 - Earth Distance", - SourceType = "Node", - SourceNodeName = "Voyager_2", - DestinationType = "Node", - DestinationNodeName = "Earth" - } -}) +local distance_voyager2 = { + Type = "DashboardItemDistance", + Identifier = "Voyager2Distance", + GuiName = "Voyager 2 - Earth Distance", + SourceType = "Node", + SourceNodeName = "Voyager_2", + DestinationType = "Node", + DestinationNodeName = "Earth" +} + +asset.onInitialize(function() + openspace.dashboard.addDashboardItem(distance_voyager1) + openspace.dashboard.addDashboardItem(distance_voyager2) +end) + +asset.onDeinitialize(function() + openspace.dashboard.removeDashboardItem(distance_voyager2) + openspace.dashboard.removeDashboardItem(distance_voyager1) +end) diff --git a/data/assets/scene/solarsystem/missions/voyager/voyager1.asset b/data/assets/scene/solarsystem/missions/voyager/voyager1.asset index 3ee11e611d..e690425bd2 100644 --- a/data/assets/scene/solarsystem/missions/voyager/voyager1.asset +++ b/data/assets/scene/solarsystem/missions/voyager/voyager1.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local models = asset.syncedResource({ @@ -220,7 +219,7 @@ local VoyagerTrailCruiseSaturnInf = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { +local nodes = { Voyager1, Voyager1Main, Voyager1Antenna, @@ -229,4 +228,20 @@ assetHelper.registerSceneGraphNodesAndExport(asset, { VoyagerTrailCruiseJupiterSaturn, VoyagerTrailEncounterSaturn, VoyagerTrailCruiseSaturnInf -}) +} + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end diff --git a/data/assets/scene/solarsystem/missions/voyager/voyager2.asset b/data/assets/scene/solarsystem/missions/voyager/voyager2.asset index 62c53d508b..a392b37528 100644 --- a/data/assets/scene/solarsystem/missions/voyager/voyager2.asset +++ b/data/assets/scene/solarsystem/missions/voyager/voyager2.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -316,7 +315,7 @@ local VoyagerTrailCruiseNeptuneInf = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { +local nodes = { Voyager2, Voyager2Main, Voyager2Antenna, @@ -329,4 +328,20 @@ assetHelper.registerSceneGraphNodesAndExport(asset, { VoyagerTrailCruiseUranusNeptune, VoyagerTrailEncounterNeptune, VoyagerTrailCruiseNeptuneInf -}) +} + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end diff --git a/data/assets/scene/solarsystem/missions/voyagerpioneer/voyager1_2__pioneer10_11.asset b/data/assets/scene/solarsystem/missions/voyagerpioneer/voyager1_2__pioneer10_11.asset index 6a2527f094..622ebcee9a 100644 --- a/data/assets/scene/solarsystem/missions/voyagerpioneer/voyager1_2__pioneer10_11.asset +++ b/data/assets/scene/solarsystem/missions/voyagerpioneer/voyager1_2__pioneer10_11.asset @@ -1,5 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - local sampleInterval = 24*60*60 local voyager1 = { @@ -102,7 +100,25 @@ local pioneer11 ={ } } -assetHelper.registerSceneGraphNodesAndExport(asset, { voyager1, voyager2, pioneer10, pioneer11 }) +asset.onInitialize(function() + openspace.addSceneGraphNode(voyager1) + openspace.addSceneGraphNode(voyager2) + openspace.addSceneGraphNode(pioneer10) + openspace.addSceneGraphNode(pioneer11) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(pioneer11) + openspace.removeSceneGraphNode(pioneer10) + openspace.removeSceneGraphNode(voyager2) + openspace.removeSceneGraphNode(voyager1) +end) + +asset.export(voyager1) +asset.export(voyager2) +asset.export(pioneer10) +asset.export(pioneer11) + asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/earth/atmosphere.asset b/data/assets/scene/solarsystem/planets/earth/atmosphere.asset index 9c464b1519..4fa2ed9f1e 100644 --- a/data/assets/scene/solarsystem/planets/earth/atmosphere.asset +++ b/data/assets/scene/solarsystem/planets/earth/atmosphere.asset @@ -1,5 +1,4 @@ local transforms = asset.require("./earth") -local assetHelper = asset.require("util/asset_helper") @@ -89,15 +88,23 @@ local Atmosphere = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Atmosphere }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Atmosphere) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Atmosphere) +end) + +asset.export(Atmosphere) + asset.meta = { Name = "Earth Atmosphere", - Version = "1.0", + Version = "1.1", Description = [[ RenderableAtmosphere for Earth.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = { "EarthAtmosphere" } + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/earth/earth.asset b/data/assets/scene/solarsystem/planets/earth/earth.asset index 3cee780b96..737f7a3b02 100644 --- a/data/assets/scene/solarsystem/planets/earth/earth.asset +++ b/data/assets/scene/solarsystem/planets/earth/earth.asset @@ -1,5 +1,4 @@ local transforms = asset.require("./transforms") -local assetHelper = asset.require("util/asset_helper") local labelsPath = asset.syncedResource({ Name = "Earth Labels", @@ -74,7 +73,19 @@ local EarthLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Earth, EarthLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Earth) + openspace.addSceneGraphNode(EarthLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(EarthLabel) + openspace.removeSceneGraphNode(Earth) +end) + +asset.export(Earth) +asset.export(EarthLabel) + asset.meta = { @@ -83,6 +94,5 @@ asset.meta = { Description = [[ Earth is a special planet with special needs ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Earth", "EarthLabel"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset index e4591244db..6651180d63 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -63,7 +62,26 @@ local L1Label = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - L1, - L1Label -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(L1) + openspace.addSceneGraphNode(L1Label) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(L1Label) + openspace.removeSceneGraphNode(L1) +end) + +asset.export(L1) +asset.export(L1Label) + + + +asset.meta = { + Name = "Lagrange point L1", + Version = "1.0", + Description = [[ Lagrange point L1 node and label]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset index bf7eecb072..38547dbc7d 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -127,10 +126,38 @@ local L2SunLine = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { +local nodes = { L2Small, L2, L2SunLine, L2SmallLabel, L2Label -}) +} + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end + + + +asset.meta = { + Name = "Lagrange point L2", + Version = "1.0", + Description = [[ Lagrange point L2 large and small nodes, sun line, and large and small + labels. ]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset index 3ff07dd9c1..10bb6e3ec5 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -63,7 +62,26 @@ local L4Label = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - L4, - L4Label -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(L4) + openspace.addSceneGraphNode(L4Label) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(L4Label) + openspace.removeSceneGraphNode(L4) +end) + +asset.export(L4) +asset.export(L4Label) + + + +asset.meta = { + Name = "Lagrange point L4", + Version = "1.0", + Description = [[ Lagrange point L4 node and label]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset index 5de0504897..1ce894fd56 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -63,7 +62,26 @@ local L5Label = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - L5, - L5Label -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(L5) + openspace.addSceneGraphNode(L5Label) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(L5Label) + openspace.removeSceneGraphNode(L5) +end) + +asset.export(L5) +asset.export(L5Label) + + + +asset.meta = { + Name = "Lagrange point L5", + Version = "1.0", + Description = [[ Lagrange point L5 node and label]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/lagrange_points.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/lagrange_points.asset index a995d9ae6d..b64c1639b3 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/lagrange_points.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/lagrange_points.asset @@ -1,4 +1,14 @@ -asset.require("scene/solarsystem/planets/earth/lagrange_points/L1") -asset.require("scene/solarsystem/planets/earth/lagrange_points/L2") -asset.require("scene/solarsystem/planets/earth/lagrange_points/L4") -asset.require("scene/solarsystem/planets/earth/lagrange_points/L5") +asset.require("./L1") +asset.require("./L2") +asset.require("./L4") +asset.require("./L5") + + +asset.meta = { + Name = "Earth Lagrange Points", + Version = "1.0", + Description = [[ Meta asset to include all the Earth Lagrange points. Includes L1, L2, L4 and L5.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/amsr2_gcom_w1_sea_ice_concentration_temporal.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/amsr2_gcom_w1_sea_ice_concentration_temporal.asset index 98388e8e7b..91385be077 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/amsr2_gcom_w1_sea_ice_concentration_temporal.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/amsr2_gcom_w1_sea_ice_concentration_temporal.asset @@ -26,20 +26,24 @@ local layer = { of 12 km. (Description from NASA Worldview)]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "AMSR2 GCOM W1 Sea Ice Concentration (Temporal)", - Version = "1.0", + Version = "1.1", Description = [[ GIBS hosted layer created with openspace.globebrowsing.createTemporalGibsGdalXml ]], Author = "NASA EOSDIS Global Imagery Browse Services", URL = "https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs", - License = "NASA", - Identifiers = {"AMSR2_GCOM_W1_Sea_Ice_Concentration_Temporal"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/aqua_modis_temporal.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/aqua_modis_temporal.asset index 4807d05cd1..e29b98f735 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/aqua_modis_temporal.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/aqua_modis_temporal.asset @@ -31,20 +31,24 @@ local layer = { and the temporal resolution is daily. (Description from NASA Worldview)]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Aqua Modis (Temporal)", - Version = "1.0", + Version = "1.1", Description = [[ GIBS hosted layer created with openspace.globebrowsing.createTemporalGibsGdalXml ]], Author = "NASA EOSDIS Global Imagery Browse Services", URL = "https://earthdata.nasa.gov/eosdis/science-system-description/eosdis-components/gibs", - License = "NASA", - Identifiers = {"Aqua_Modis_Temporal"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/bmng_sweden.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/bmng_sweden.asset index eb8a17beb1..6e83e007aa 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/bmng_sweden.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/bmng_sweden.asset @@ -8,20 +8,24 @@ local layer = { This map is hosted on the OpenSpace servers in Sweden]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Blue Marble Next Generation (Sweden)", - Version = "1.0", + Version = "1.1", Description = [[ Web loaded full resolution map of Blue Marble Next Generation. This map is hosted on the OpenSpace servers in Sweden]], Author = "OpenSpace Team", URL = "https://visibleearth.nasa.gov/collection/1484/blue-marble", - License = "NASA", - Identifiers = {"BMNG_Sweden"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/bmng_utah.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/bmng_utah.asset index 28ec33a0b8..1c56eea33a 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/bmng_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/bmng_utah.asset @@ -8,20 +8,24 @@ local layer = { This map is hosted on the OpenSpace servers in Utah]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Blue Marble Next Generation (Utah)", - Version = "1.0", + Version = "1.1", Description = [[ Web loaded full resolution map of Blue Marble Next Generation. This map is hosted on the OpenSpace servers in Utah]], Author = "OpenSpace Team", URL = "https://visibleearth.nasa.gov/collection/1484/blue-marble", - License = "NASA", - Identifiers = {"BMNG_Utah"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_imagery_world_2D.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_imagery_world_2D.asset index e7f8695c7f..d9b0535964 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_imagery_world_2D.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_imagery_world_2D.asset @@ -15,19 +15,23 @@ local layer = { (Description from URL)]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "ESRI Imagery World 2D", - Version = "1.0", + Version = "1.1", Description = [[Older 2D imager map layer for Earth. This layer is hosted by ESRI.]], Author = "ESRI", URL = "https://www.arcgis.com/home/item.html?id=21b4ba14d9e5472d97afcbb819f7368e", - License = "Esri Master License Agreement", - Identifiers = {"ESRI_Imagery_World_2D"} + License = "Esri Master License Agreement" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_viirs_combo.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_viirs_combo.asset index 374d067466..2ada31b94e 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_viirs_combo.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_viirs_combo.asset @@ -46,20 +46,24 @@ local layer = { Imagery. "VIIRS SNPP (Temporal)" is faded out at tile level 4]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "ESRI VIIRS Combo", - Version = "1.0", + Version = "1.1", Description = [[Level based layer combining "VIIRS SNPP (Temporal)" and ESRI World Imagery. "VIIRS SNPP (Temporal)" is faded out at tile level 4]], Author = "OpenSpace Tem", URL = "http://www.openspaceproject.com", - License = "MIT License", - Identifiers = {"ESRI_VIIRS_Combo"} + License = "MIT License" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_world_imagery.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_world_imagery.asset index bc3fae5e92..366b716326 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_world_imagery.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_world_imagery.asset @@ -16,19 +16,23 @@ local layer = { ~1:280 scale. (Description from URL)]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "ESRI World Imagery", - Version = "1.0", + Version = "1.1", Description = [[Main web loaded map layer for Earth. This layer is hosted by ESRI.]], Author = "ESRI", URL = "https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9", - License = "Esri Master License Agreement", - Identifiers = {"ESRI_World_Imagery"} + License = "Esri Master License Agreement" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/fallbacks/blue_marble.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/fallbacks/blue_marble.asset index e1051ce567..e068c4a668 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/fallbacks/blue_marble.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/fallbacks/blue_marble.asset @@ -19,11 +19,10 @@ asset.export("layer", layer) asset.meta = { Name = "Blue Marble", - Version = "1.0", + Version = "1.1", Description = [[ Fallback layer for earth image if no internet is available. Contains Blue Marble Next Generation ]], Author = "OpenSpace Team", URL = "https://visibleearth.nasa.gov/collection/1484/blue-marble", - License = "NASA", - Identifiers = {"Blue_Marble"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_g1sst_sea_surface_temperature_temporal.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_g1sst_sea_surface_temperature_temporal.asset index 9bf43d88d2..09327fd249 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_g1sst_sea_surface_temperature_temporal.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_g1sst_sea_surface_temperature_temporal.asset @@ -23,21 +23,25 @@ local layer = { Author = "NASA EOSDIS Global Imagery Browse Services" } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "GHRSST L4 MUR Sea Surface Temperature (Temporal)", - Version = "1.0", + Version = "1.1", Description = [[ GIBS hosted layer created with openspace.globebrowsing.createTemporalGibsGdalXml ]], Author = "NASA EOSDIS Global Imagery Browse Services", URL = "https://earthdata.nasa.gov/eosdis/science-system-description/" .. "eosdis-components/gibs", - License = "NASA", - Identifiers = {"GHRSST_L4_G1SST_Sea_Surface_Temperature_Temporal"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_mur_sea_surface_temperature_temporal.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_mur_sea_surface_temperature_temporal.asset index 4efb087717..7379b12da1 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_mur_sea_surface_temperature_temporal.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_mur_sea_surface_temperature_temporal.asset @@ -22,21 +22,25 @@ local layer = { is 1 km, and the temporal resolution is daily.]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "GHRSST L4 MUR Sea Surface Temperature (Temporal)", - Version = "1.0", + Version = "1.1", Description = [[ GIBS hosted layer created with openspace.globebrowsing.createTemporalGibsGdalXml ]], Author = "NASA EOSDIS Global Imagery Browse Services", URL = "https://earthdata.nasa.gov/eosdis/science-system-description/".. "eosdis-components/gibs", - License = "NASA", - Identifiers = {"GHRSST_L4_MUR_Sea_Surface_Temperature_Temporal"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/modis_terra_chlorophyll_a_temporal.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/modis_terra_chlorophyll_a_temporal.asset index c4377b380e..5df5ecb4a6 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/modis_terra_chlorophyll_a_temporal.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/modis_terra_chlorophyll_a_temporal.asset @@ -22,21 +22,25 @@ local layer = { is 1 km, and the temporal resolution is daily.]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "MODIS Terra Chlorophyll A (Temporal)", - Version = "1.0", + Version = "1.1", Description = [[ GIBS hosted layer created with openspace.globebrowsing.createTemporalGibsGdalXml ]], Author = "NASA EOSDIS Global Imagery Browse Services", URL = "https://earthdata.nasa.gov/eosdis/science-system-description/" .. "eosdis-components/gibs", - License = "NASA", - Identifiers = {"MODIS_Terra_Chlorophyll_A_Temporal"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/terra_modis_temporal.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/terra_modis_temporal.asset index fa39b2eff3..7b114f69c0 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/terra_modis_temporal.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/terra_modis_temporal.asset @@ -22,21 +22,25 @@ local layer = { is 1 km, and the temporal resolution is daily.]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Terra Modis (Temporal)", - Version = "1.0", + Version = "1.1", Description = [[ GIBS hosted layer created with openspace.globebrowsing.createTemporalGibsGdalXml ]], Author = "NASA EOSDIS Global Imagery Browse Services", URL = "https://earthdata.nasa.gov/eosdis/science-system-description/".. "eosdis-components/gibs", - License = "NASA", - Identifiers = {"Terra_Modis_Temporal"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/viirs_snpp_temporal.asset b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/viirs_snpp_temporal.asset index d1bb41c089..10a7ee86cf 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/viirs_snpp_temporal.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/colorlayers/viirs_snpp_temporal.asset @@ -22,21 +22,25 @@ local layer = { is 0.25 km, and the temporal resolution is daily.]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "VIIRS SNPP (Temporal)", - Version = "1.0", + Version = "1.1", Description = [[ This layer has the best daily Earth Image. GIBS hosted layer created with openspace.globebrowsing.createTemporalGibsGdalXml ]], Author = "NASA EOSDIS Global Imagery Browse Services", URL = "https://earthdata.nasa.gov/eosdis/science-system-description/" .. "eosdis-components/gibs", - License = "NASA", - Identifiers = {"VIIRS_SNPP_Temporal"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/fallbacks/blue_marble_height.asset b/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/fallbacks/blue_marble_height.asset index 8c011649d3..48c53c1afa 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/fallbacks/blue_marble_height.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/fallbacks/blue_marble_height.asset @@ -17,11 +17,10 @@ asset.export("layer", layer) asset.meta = { Name = "Earth Bluemarble Height", - Version = "1.0", + Version = "1.1", Description = [[ Fallback layer for earth height if no internet is available. Contains Blue Marble Next Generation Topographic]], Author = "NASA", URL = "https://visibleearth.nasa.gov/collection/1484/blue-marble", - License = "NASA", - Identifiers = {"Earth_Bluemarble_Height"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.asset b/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.asset index 4fa05ae8d5..3763b8cfb5 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.asset @@ -1,5 +1,4 @@ local globeIdentifier = asset.require("../../earth").Earth.Identifier - local fallBackLayer = asset.require("./fallbacks/blue_marble_height").layer local layer = { @@ -15,19 +14,23 @@ local layer = { data from the USGS elsewhere. Vertical units are measured in meters.]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "HeightLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "HeightLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "World Elevation (3D)", - Version = "1.0", + Version = "1.1", Description = [[Main web loaded height layer for Earth. This layer is hosted by ESRI.]], Author = "ESRI", URL = "https://www.arcgis.com/home/item.html?id=1b48cd3b6276416784fe90a68c580a89", - License = "Esri Master License Agreement", - Identifiers = {"Terrain_tileset"} + License = "Esri Master License Agreement" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_2012.asset b/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_2012.asset index 2dbb1e8f35..6ec0c09712 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_2012.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_2012.asset @@ -11,19 +11,23 @@ local layer = { in this global view. ]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "NightLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "NightLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Earth at Night 2012", - Version = "1.0", + Version = "1.1", Description = [[Main web loaded night layer for Earth. This layer is hosted by GIBS.]], Author = "OpenSpace Team", URL = "https://visibleearth.nasa.gov/images/79765/night-lights-2012-map", - License = "NASA", - Identifiers = {"Earth_at_Night_2012"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_temporal.asset b/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_temporal.asset index bd3c7f6cfb..3453f13b32 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_temporal.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_temporal.asset @@ -38,20 +38,24 @@ local layer = { temporal resolution is daily. (Description from NASA Worldview)]], } -asset.onInitialize(function () - openspace.globebrowsing.addLayer(globeIdentifier, "NightLayers", layer) +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "NightLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "NightLayers", layer) end) asset.export("layer", layer) + asset.meta = { Name = "Earth at Night (Temporal)", - Version = "1.0", + Version = "1.1", Description = [[Temporal layer for earth with daily night image. This layer is a GIBS hosted layer created with openspace.globebrowsing.createTemporalGibsGdalXml ]], Author = "OpenSpace Team", URL = "https://worldview.earthdata.nasa.gov/?l=VIIRS_SNPP_DayNightBand_ENCC", - License = "NASA", - Identifiers = {"Earth_at_Night_Temporal"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/fallbacks/earth_night_texture.asset b/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/fallbacks/earth_night_texture.asset index e2af3ebc65..e4e20aceb4 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/fallbacks/earth_night_texture.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/nightlayers/fallbacks/earth_night_texture.asset @@ -17,10 +17,9 @@ asset.export("layer", layer) asset.meta = { Name = "Blue Marble Night", - Version = "1.0", + Version = "1.1", Description = [[ Fallback layer for earth night image if no internet is available. ]], Author = "OpenSpace Team", URL = "https://visibleearth.nasa.gov/collection/1484/blue-marble", - License = "NASA", - Identifiers = {"Earth_Night_Texture"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/planets/earth/layers/overlays/coastlines.asset b/data/assets/scene/solarsystem/planets/earth/layers/overlays/coastlines.asset index 0d90a261a7..ab44e00901 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/overlays/coastlines.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/overlays/coastlines.asset @@ -5,8 +5,23 @@ local layer = { FilePath = asset.localResource("coastlines.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Earth Coastlines Layer", + Version = "1.0", + Description = [[ Coastlines layer for Earth globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/overlays/reference_features.asset b/data/assets/scene/solarsystem/planets/earth/layers/overlays/reference_features.asset index b6fe2f8f86..3232549cec 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/overlays/reference_features.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/overlays/reference_features.asset @@ -6,8 +6,23 @@ local layer = { FilePath = asset.localResource("reference_features.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Earth Reference Features", + Version = "1.0", + Description = [[ Reference Features layer for Earth globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/overlays/reference_labels.asset b/data/assets/scene/solarsystem/planets/earth/layers/overlays/reference_labels.asset index 1e6f76b759..254303aae0 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/overlays/reference_labels.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/overlays/reference_labels.asset @@ -6,8 +6,23 @@ local layer = { FilePath = asset.localResource("reference_labels.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Earth Reference Labels", + Version = "1.0", + Description = [[ Reference Labels layer for Earth globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/overlays/size_reference.asset b/data/assets/scene/solarsystem/planets/earth/layers/overlays/size_reference.asset index b208fa7e69..7bec98489d 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/overlays/size_reference.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/overlays/size_reference.asset @@ -8,8 +8,23 @@ local layer ={ Radii = earthAsset.Renderable.Radii } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Earth Size Reference", + Version = "1.0", + Description = [[ Size reference layer for Earth globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/overlays/tile_indices.asset b/data/assets/scene/solarsystem/planets/earth/layers/overlays/tile_indices.asset index b19df9addd..0b863335b9 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/overlays/tile_indices.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/overlays/tile_indices.asset @@ -6,8 +6,23 @@ local layer = { Type = "TileIndexTileLayer" } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Earth Tile Indices", + Version = "1.0", + Description = [[ Tile index layer for Earth globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/watermasks/gebco_sweden.asset b/data/assets/scene/solarsystem/planets/earth/layers/watermasks/gebco_sweden.asset index 3ce00a16ba..5a916507a1 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/watermasks/gebco_sweden.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/watermasks/gebco_sweden.asset @@ -6,8 +6,23 @@ local layer = { FilePath = asset.localResource("gebco_sweden.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "WaterMasks", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "WaterMasks", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Gebco WaterMask Layer (Sweden)", + Version = "1.0", + Description = [[ WaterMask layer for Earth globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/watermasks/gebco_utah.asset b/data/assets/scene/solarsystem/planets/earth/layers/watermasks/gebco_utah.asset index b1bb493ac3..531fd5647a 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/watermasks/gebco_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/watermasks/gebco_utah.asset @@ -6,8 +6,23 @@ local layer = { FilePath = asset.localResource("gebco_utah.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "WaterMasks", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "WaterMasks", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Gebco WaterMask Layer (Utah)", + Version = "1.0", + Description = [[ WaterMask layer for Earth globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/layers/watermasks/modis_water_mask.asset b/data/assets/scene/solarsystem/planets/earth/layers/watermasks/modis_water_mask.asset index b3568ab86c..bfa47738a4 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/watermasks/modis_water_mask.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/watermasks/modis_water_mask.asset @@ -6,8 +6,24 @@ local layer = { FilePath = asset.localResource("modis_water_mask.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "WaterMasks", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "WaterMasks", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "MODIS Water Mask", + Version = "1.0", + Description = [[ MODIS Water Mask layer for Earth globe.]], + Author = "NASA EOSDIS Global Imagery Browse Services", + URL = "https://earthdata.nasa.gov/eosdis/science-system-description/".. + "eosdis-components/gibs", + License = "NASA" +} diff --git a/data/assets/scene/solarsystem/planets/earth/magnetosphere/magnetosphere.asset b/data/assets/scene/solarsystem/planets/earth/magnetosphere/magnetosphere.asset index 757b7eb718..cb9afd3d94 100644 --- a/data/assets/scene/solarsystem/planets/earth/magnetosphere/magnetosphere.asset +++ b/data/assets/scene/solarsystem/planets/earth/magnetosphere/magnetosphere.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms_magnetosphere") local transferFunction = asset.localResource("./CMR-illuminance2.txt") @@ -37,14 +36,22 @@ local earthMagnetosphere = { }, } -assetHelper.registerSceneGraphNodesAndExport(asset, { earthMagnetosphere }) +asset.onInitialize(function() + openspace.addSceneGraphNode(earthMagnetosphere) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(earthMagnetosphere) +end) + +asset.export(earthMagnetosphere) + asset.meta = { Name = "Static generic magnetosphere of fieldlines", - Version = "1.0", + Version = "1.1", Description = "Magnetic fieldlines for the bastille day CME event", Author = "CCMC", URL = "", - License = "", - Identifier = {"EarthMagnetosphere"} + License = "CC-BY" } diff --git a/data/assets/scene/solarsystem/planets/earth/magnetosphere/transforms_magnetosphere.asset b/data/assets/scene/solarsystem/planets/earth/magnetosphere/transforms_magnetosphere.asset index d39e7abd5d..99491ba857 100644 --- a/data/assets/scene/solarsystem/planets/earth/magnetosphere/transforms_magnetosphere.asset +++ b/data/assets/scene/solarsystem/planets/earth/magnetosphere/transforms_magnetosphere.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/planets/earth/transforms") asset.require("spice/base") @@ -22,14 +21,22 @@ local GSMReferenceFrame = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { GSMReferenceFrame }) +asset.onInitialize(function() + openspace.addSceneGraphNode(GSMReferenceFrame) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(GSMReferenceFrame) +end) + +asset.export(GSMReferenceFrame) + asset.meta = { Name = "Earth magnetosphere transforms", - Version = "1.0", + Version = "1.1", Description = "Earth transforms: GSMReferenceFrame. Geocentric Solar Magnetospheric", Author = "CCMC", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"GSMReferenceFrame"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/earth/markers.asset b/data/assets/scene/solarsystem/planets/earth/markers.asset index 4625701381..1d52f4682f 100644 --- a/data/assets/scene/solarsystem/planets/earth/markers.asset +++ b/data/assets/scene/solarsystem/planets/earth/markers.asset @@ -1,5 +1,4 @@ local transforms = asset.require("./transforms") -local assetHelper = asset.require("util/asset_helper") local texturesPath = asset.syncedResource({ @@ -27,15 +26,23 @@ local EarthMarker = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { EarthMarker }) +asset.onInitialize(function() + openspace.addSceneGraphNode(EarthMarker) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(EarthMarker) +end) + +asset.export(EarthMarker) + asset.meta = { Name = "Earth marker", - Version = "1.0", + Version = "1.1", Description = [[ Earth marker with name, sized for Solar System view]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"EarthMarker"} + 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 add0650eb8..8508881a65 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/default_layers.asset @@ -24,3 +24,13 @@ asset.onInitialize(function () openspace.setPropertyValueSingle("Scene.Moon.Renderable.Layers.HeightLayers." .. heightLayer.layer.Identifier .. ".Enabled", true) end) + + +asset.meta = { + Name = "Default Moon layers", + Version = "1.0", + Description = [[This asset adds the default layers to the Moon globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_sweden.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_sweden.asset index e3c4f63c36..36bbfc62c1 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_sweden.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_sweden.asset @@ -7,11 +7,31 @@ local layer = { Settings = { Gamma = 1.14, Multiplier = 1.4 - } + }, + Description = [[The Clementine Ultraviolet/Visible (UVVIS) Version 2 mosaic is a + grayscale data set representing the albedo (brightness of the lunar surface) as + measured at the 750 nanometer (nm) wavelength by the UVVIS camera (Lee, et al., 2009). + Resolution of this mosaic is 118 meters per pixel (m).]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Clem Uvvis [Sweden]", + Version = "1.1", + Description = [[Moon Clementine UVVIS Global Mosaic 118m v2 map of the Moon. This map + is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/Clementine/UVVIS/Lunar_Clementine_UVVIS_750nm_Global_Mosaic_118m_v2", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_utah.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_utah.asset index 751ca6b5b7..47de662ddf 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_utah.asset @@ -7,11 +7,32 @@ local layer = { Settings = { Gamma = 1.14, Multiplier = 1.4 - } + }, + Description = [[The Clementine Ultraviolet/Visible (UVVIS) Version 2 mosaic is a + grayscale data set representing the albedo (brightness of the lunar surface) as + measured at the 750 nanometer (nm) wavelength by the UVVIS camera (Lee, et al., 2009). + Resolution of this mosaic is 118 meters per pixel (m).]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + + +asset.meta = { + Name = "Clem Uvvis [Utah]", + Version = "1.1", + Description = [[Moon Clementine UVVIS Global Mosaic 118m v2 map of the Moon. This map + is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/Clementine/UVVIS/Lunar_Clementine_UVVIS_750nm_Global_Mosaic_118m_v2", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/kaguya_sweden.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/kaguya_sweden.asset index 7a7329961f..b38d54fe8f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/kaguya_sweden.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/kaguya_sweden.asset @@ -7,11 +7,30 @@ local layer = { Settings = { Gamma = 1.0, Multiplier = 1.23 - } + }, + Description = [[This near-global mosaic was generated using data from the SELenological + and Engineering Explorer (SELENE) “Kaguya” Terrain Camera (TC) instrument. TC source + data originated as map-projected tiles at ~10 meters per pixel (m) spatial resolution.]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Kaguya [Sweden]", + Version = "1.1", + Description = [[Moon SELENE Kaguya TC Global Orthomosaic 474m v2 layer for Moon globe. + This map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/Kaguya/TC/Ortho/v02/Lunar_Kaguya_TC_Ortho_Global_64ppd_v02", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/kaguya_utah.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/kaguya_utah.asset index 89526f0da0..42ccc9394e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/kaguya_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/kaguya_utah.asset @@ -7,11 +7,30 @@ local layer = { Settings = { Gamma = 1.0, Multiplier = 1.23 - } + }, + Description = [[This near-global mosaic was generated using data from the SELenological + and Engineering Explorer (SELENE) “Kaguya” Terrain Camera (TC) instrument. TC source + data originated as map-projected tiles at ~10 meters per pixel (m) spatial resolution.]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Kaguya [Utah]", + Version = "1.1", + Description = [[Moon SELENE Kaguya TC Global Orthomosaic 474m v2 layer for Moon globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/Kaguya/TC/Ortho/v02/Lunar_Kaguya_TC_Ortho_Global_64ppd_v02", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_sweden.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_sweden.asset index 628fb8bfbd..e874b43ce9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_sweden.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_sweden.asset @@ -1,13 +1,37 @@ -local globeIdentifier = asset.require("../../moon").Moon.Identifier +local globeIdentifier = asset.require("./../../moon").Moon.Identifier local layer = { Identifier = "Lola_Clr_Shade_Sweden", - Name = "Lola Color Shade [Sweden]", + Name = "LRO LOLA Color Shaded Relief 388m v4 [Sweden]", + Description = [[This is a colorized shaded-relief of a original polar digital elevation + model (DEM) from the Lunar Orbiter Laser Altimeter (LOLA; Smith et al., 2010), an + instrument on the National Aeronautics and Space Agency (NASA) Lunar Reconnaissance + Orbiter (LRO) spacecraft (Tooley et al., 2010). The DEM is a shape map (radius) of the + Moon at a resolution 100 meters per pixel (m) based on altimetry data acquired through + September, 2011 by the LOLA instrument. The ground tracks were interpolated using the + Generic Mapping Tools programs "surface" and "grdblend". Map values are referred to a + radius of 1,737,400 m.]], FilePath = asset.localResource("lola_clr_shade_sweden.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Lola Color Shade [Sweden]", + Version = "1.1", + Description = [[Moon LRO LOLA Color Shaded Relief 388m v4 layer for Moon globe. This + map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/LMMP/LOLA-derived/Lunar_LRO_LOLA_ClrShade_Global_128ppd_v04", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_utah.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_utah.asset index 5fd79d6640..c7a6b62336 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_utah.asset @@ -1,13 +1,37 @@ -local globeIdentifier = asset.require("../../moon").Moon.Identifier +local globeIdentifier = asset.require("./../../moon").Moon.Identifier local layer = { Identifier = "Lola_Clr_Shade_Utah", - Name = "Lola Color Shade [Utah]", + Name = "LRO LOLA Color Shaded Relief 388m v4 [Utah]", + Description = [[This is a colorized shaded-relief of a original polar digital elevation + model (DEM) from the Lunar Orbiter Laser Altimeter (LOLA; Smith et al., 2010), an + instrument on the National Aeronautics and Space Agency (NASA) Lunar Reconnaissance + Orbiter (LRO) spacecraft (Tooley et al., 2010). The DEM is a shape map (radius) of the + Moon at a resolution 100 meters per pixel (m) based on altimetry data acquired through + September, 2011 by the LOLA instrument. The ground tracks were interpolated using the + Generic Mapping Tools programs "surface" and "grdblend". Map values are referred to a + radius of 1,737,400 m.]], FilePath = asset.localResource("lola_clr_shade_utah.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Lola Color Shade [Utah]", + Version = "1.1", + Description = [[Moon LRO LOLA Color Shaded Relief 388m v4 layer for Moon globe. This + map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/LMMP/LOLA-derived/Lunar_LRO_LOLA_ClrShade_Global_128ppd_v04", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_shade_sweden.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_shade_sweden.asset index 966942a6ee..0b28493b38 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_shade_sweden.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_shade_sweden.asset @@ -3,11 +3,35 @@ local globeIdentifier = asset.require("../../moon").Moon.Identifier local layer = { Identifier = "Lola_Shade_Sweden", Name = "Lola Shade [Sweden]", + Description = [[This is a shaded-relief of a original polar digital elevation model + (DEM) from the Lunar Orbiter Laser Altimeter (LOLA; Smith et al., 2010), an instrument + on the National Aeronautics and Space Agency (NASA) Lunar Reconnaissance Orbiter (LRO) + spacecraft (Tooley et al., 2010). The DEM is a shape map (radius) of the Moon at a + resolution 100 meters per pixel (m) based on altimetry data acquired through September, + 2011 by the LOLA instrument. The ground tracks were interpolated using the Generic + Mapping Tools programs "surface" and "grdblend". Map values are referred to a radius + of 1,737,400 m.]], FilePath = asset.localResource("lola_shade_sweden.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Lola Shade [Sweden]", + Version = "1.1", + Description = [[Moon LRO LOLA Shaded Relief 237m v4 layer for Moon globe. This + map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/LMMP/LOLA-derived/Lunar_LRO_LOLA_Shade_Global_128ppd_v04", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_shade_utah.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_shade_utah.asset index 48770a2e8e..4faaae1cb6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_shade_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_shade_utah.asset @@ -3,11 +3,36 @@ local globeIdentifier = asset.require("../../moon").Moon.Identifier local layer = { Identifier = "Lola_Shade_Utah", Name = "Lola Shade [Utah]", + Description = [[This is a shaded-relief of a original polar digital elevation model + (DEM) from the Lunar Orbiter Laser Altimeter (LOLA; Smith et al., 2010), an instrument + on the National Aeronautics and Space Agency (NASA) Lunar Reconnaissance Orbiter (LRO) + spacecraft (Tooley et al., 2010). The DEM is a shape map (radius) of the Moon at a + resolution 100 meters per pixel (m) based on altimetry data acquired through September, + 2011 by the LOLA instrument. The ground tracks were interpolated using the Generic + Mapping Tools programs "surface" and "grdblend". Map values are referred to a radius + of 1,737,400 m.]], FilePath = asset.localResource("lola_shade_utah.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + + +asset.meta = { + Name = "Lola Shade [Utah]", + Version = "1.1", + Description = [[Moon LRO LOLA Shaded Relief 237m v4 layer for Moon globe. This + map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/LMMP/LOLA-derived/Lunar_LRO_LOLA_Shade_Global_128ppd_v04", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/uvvishybrid_sweden.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/uvvishybrid_sweden.asset index 25222c0c59..16d8613ddc 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/uvvishybrid_sweden.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/uvvishybrid_sweden.asset @@ -7,11 +7,35 @@ local layer = { Settings = { Gamma = 0.52, Multiplier = 0.65 - } + }, + Description = [[The is a blend (or overlay) of the U.S. Geological Survey (USGS) + Clementine Ultraviolet/Visible (UVVIS) V2 mosaic and the original USGS Lunar Orbiter + mosaic. The Clementine 750 nm Version 2 mosaic is a grayscale data set representing the + albedo (brightness of the lunar surface) as measured at the 750 nm wavelength by the + UVVIS camera. The original base map was radiometrically and geometrically controlled, + photometrically modeled global image mosaic compiled using more than 43,000 images + from the 750 nanometer filter observations of the UVVIS (Lee et al., 2009).]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + + +asset.meta = { + Name = "Uvvis Hybrid [Sweden]", + Version = "1.1", + Description = [[Moon Lunar Orbiter - Clementine UVVISv2 Hybrid Mosaic 59m v1 + map of the Moon. This map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/Lunar-Orbiter/Lunar_LO_UVVISv2_Hybrid_Mosaic_Global_59m", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/uvvishybrid_utah.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/uvvishybrid_utah.asset index 84f808d321..3ee8388aa2 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/uvvishybrid_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/uvvishybrid_utah.asset @@ -7,11 +7,34 @@ local layer = { Settings = { Gamma = 0.52, Multiplier = 0.65 - } + }, + Description = [[The is a blend (or overlay) of the U.S. Geological Survey (USGS) + Clementine Ultraviolet/Visible (UVVIS) V2 mosaic and the original USGS Lunar Orbiter + mosaic. The Clementine 750 nm Version 2 mosaic is a grayscale data set representing the + albedo (brightness of the lunar surface) as measured at the 750 nm wavelength by the + UVVIS camera. The original base map was radiometrically and geometrically controlled, + photometrically modeled global image mosaic compiled using more than 43,000 images + from the 750 nanometer filter observations of the UVVIS (Lee et al., 2009).]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Uvvis Hybrid [Utah]", + Version = "1.1", + Description = [[Moon Lunar Orbiter - Clementine UVVISv2 Hybrid Mosaic 59m v1 + map of the Moon. This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/Lunar-Orbiter/Lunar_LO_UVVISv2_Hybrid_Mosaic_Global_59m", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/wac_sweden.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/wac_sweden.asset index 217e580e8f..32f71977d8 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/wac_sweden.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/wac_sweden.asset @@ -1,15 +1,41 @@ -local mapServiceConfigs = asset.localResource("../../map_service_configs/LiU/WAC.wms") local globeIdentifier = asset.require("../../moon").Moon.Identifier local layer = { Identifier = "WAC_Sweden", Name = "WAC [Sweden]", + Description = [[Lunar Reconnaissance Orbiter Camera (LROC) Wide Angle + Camera (WAC) aboard the Lunar Reconnaissance Orbiter (LRO) has + allowed the instrument team to create a global mosaic comprised of + over 15,000 images acquired between November 2009 and February 2011. + The WAC maps the whole Moon in one month, however the solar incidence + angle at the equator changes about 28° from the beginning to the end + of the month. To even out the incidence angle variations (generally + angles between 55-75 degrees), this morphology mosaic (at 643 nm), + is comprised of data collected over three periods (1/20/2010 to + 1/28/2010, 5/30/2010 to 6/6/2010, 7/24/2010 to 7/31/2010). + (Description from URL).]], FilePath = asset.localResource("wac_sweden.wms"), Settings = { Gamma = 0.84 } } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "WAC [Sweden]", + Version = "1.1", + Description = [[Wide Angle Color map of the Moon. This map is hosted on + the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/LRO/LROC_WAC/Lunar_LRO_LROC-WAC_Mosaic_global_100m_June2013", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/wac_utah.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/wac_utah.asset index d97d9508cc..34c6fbd21d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/wac_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/wac_utah.asset @@ -4,11 +4,38 @@ local layer = { Identifier = "WAC_Utah", Name = "WAC [Utah]", FilePath = asset.localResource("wac_utah.wms"), - Settings = { Gamma = 0.84 } + Settings = { Gamma = 0.84 }, + Description = [[Lunar Reconnaissance Orbiter Camera (LROC) Wide Angle + Camera (WAC) aboard the Lunar Reconnaissance Orbiter (LRO) has + allowed the instrument team to create a global mosaic comprised of + over 15,000 images acquired between November 2009 and February 2011. + The WAC maps the whole Moon in one month, however the solar incidence + angle at the equator changes about 28° from the beginning to the end + of the month. To even out the incidence angle variations (generally + angles between 55-75 degrees), this morphology mosaic (at 643 nm), + is comprised of data collected over three periods (1/20/2010 to + 1/28/2010, 5/30/2010 to 6/6/2010, 7/24/2010 to 7/31/2010). + (Description from URL).]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "WAC [Utah]", + Version = "1.1", + Description = [[Wide Angle Color map of the Moon. This map is hosted on + the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/LRO/LROC_WAC/Lunar_LRO_LROC-WAC_Mosaic_global_100m_June2013", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_sweden.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_sweden.asset index f1c2d9e023..3591bb2d7d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_sweden.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_sweden.asset @@ -8,8 +8,24 @@ local layer = { Settings = { Multiplier = 0.5 } } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "HeightLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "HeightLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Lola DEM [Sweden]", + Version = "1.1", + Description = [[Moon LRO LOLA DEM 118m v1 layer for Moon globe. This map is hosted on + the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/LRO/LOLA/Lunar_LRO_LOLA_Global_LDEM_118m_Mar2014", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_utah.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_utah.asset index f886538ae3..fc1f0ca69b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_utah.asset @@ -5,11 +5,33 @@ local layer = { Name = "Lola DEM [Utah]", FilePath = asset.localResource("loladem_utah.wms"), TilePixelSize = 64, - Settings = { Multiplier = 0.5 } + Settings = { Multiplier = 0.5 }, + Description = [[This digital elevation model (DEM) is based on data from the Lunar + Orbiter Laser Altimeter (LOLA; Smith et al., 2010), an instrument on the National + Aeronautics and Space Agency (NASA) Lunar Reconnaissance Orbiter (LRO) spacecraft + (Tooley et al., 2010). The created DEM represents more than 6.5 billion measurements + gathered between July 2009 and July 2013, adjusted for consistency in the coordinate + system described below, and then converted to lunar radii (Mazarico et al., 2012).]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "HeightLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "HeightLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Lola DEM [Utah]", + Version = "1.1", + Description = [[Moon LRO LOLA DEM 118m v1 layer for Moon globe. This map is hosted on + the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Moon/LRO/LOLA/Lunar_LRO_LOLA_Global_LDEM_118m_Mar2014", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/overlays/size_reference.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/overlays/size_reference.asset index 4ac336a5ab..5f8e2a2513 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/overlays/size_reference.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/overlays/size_reference.asset @@ -8,8 +8,23 @@ local layer = { Radii = moonAsset.Renderable.Radii } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Moon Size Reference", + Version = "1.0", + Description = [[ Size reference layer for Moon globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/moon/moon.asset b/data/assets/scene/solarsystem/planets/earth/moon/moon.asset index 83fd4e7898..3d95a8d507 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/moon.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/moon.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/planets/earth/transforms") local sunAsset = asset.require("scene/solarsystem/sun/sun") local earthAsset = asset.require("../earth") @@ -57,15 +56,23 @@ local Moon = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Moon }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Moon) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Moon) +end) + +asset.export(Moon) + asset.meta = { Name = "Moon", - Version = "1.0", + Version = "1.1", Description = [[ Moon globe with labels. ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Moon"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/earth/moon/trail.asset b/data/assets/scene/solarsystem/planets/earth/moon/trail.asset index 6ebdb7020b..a5be241b0f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/trail.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("../transforms") asset.require("spice/base") @@ -25,16 +24,24 @@ local MoonTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { MoonTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(MoonTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MoonTrail) +end) + +asset.export(MoonTrail) + asset.meta = { Name = "Moon Trail", - Version = "1.0", + Version = "1.1", Description = [[ Moon Trail - This asset contains the trail of the Moon. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"MoonTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2000_carbon_monoxide.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2000_carbon_monoxide.asset new file mode 100644 index 0000000000..2ad26a23d2 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2000_carbon_monoxide.asset @@ -0,0 +1,70 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Carbon Monoxide - 2000" +local Identifier = "noaa-sos-atmosphere-carbon_monoxide" +local Description = [[ Carbon monoxide is known as "The Silent Killer" because it is a +colorless, odorless, tasteless gas that is poisonous to humans and other oxygen breathing +organisms. It is also naturally occurring in the atmosphere. Only in high concentrations +is carbon monoxide deadly. At the Earth's surface the concentration of carbon monoxide is +100 ppb (parts per billion), however, in urban areas it can get up to 10 ppm (parts per +million) or 100 times higher. One of the main anthropogenic sources of carbon monoxide in +the atmosphere is emissions from automobiles. In areas with heavy traffic the carbon +monoxide can be measured at 50 ppm. The natural sources of carbon monoxide include +volcanoes and brush burning. Between the anthropogenic and natural sources, scientists +estimate that the annual production of carbon monoxide is 2-5 gigatons. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/carbon-monoxide-2000/" + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "1024.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2004_ir_hurricane.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2004_ir_hurricane.asset new file mode 100644 index 0000000000..46c3081a6a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2004_ir_hurricane.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Hurricane Season - 2004" +local Identifier = "noaa-sos-atmosphere-2004_ir_hurricane" +local Description = [[ The 2004 hurricane season started on July 31 with Hurricane Alex +and continued all the way through to December 2 with Tropical Storm Otto. The season +featured 15 tropical storms, 9 of which became hurricanes, and 6 of those were classified +as major hurricanes. This over-active hurricane season tallied up a bill of $42 billion +in damages, which at the time was record high. Florida took the brunt of the damage with +4 major hurricanes making landfall in the state. Two of the hurricanes, Frances and +Jeanne, landed in almost the same location on the east coast of Florida only 3 weeks +apart. It is estimated that one in every five homes in Florida was damaged in the 2004 +hurricane season. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-2004/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "cylir_%Y%m%d_%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2005_hurricane-grayir.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2005_hurricane-grayir.asset new file mode 100644 index 0000000000..0f33967b5f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2005_hurricane-grayir.asset @@ -0,0 +1,76 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Hurricane Season - 2005" +local Identifier = "noaa-sos-atmosphere-2005_hurricane-grayir" +local Description = [[ "This hurricane season shattered records that have stood for +decades - most named storms, most hurricanes and most category five storms. Arguably, it +was the most devastating hurricane season the country has experienced in modern times," +said retired Navy Vice Adm. Conrad C. Lautenbacher, Jr., Ph.D., undersecretary of +commerce for oceans and atmosphere and NOAA administrator. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-2005/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "ir_combined_%Y%m%d_%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-5.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-6.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-7.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-8.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-9.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-10.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-11.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-12.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-13.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-14.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-15.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-16.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-17.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2005_hurricane-wvsst.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2005_hurricane-wvsst.asset new file mode 100644 index 0000000000..45e5d246ec --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2005_hurricane-wvsst.asset @@ -0,0 +1,60 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Hurricane Season: Water Vapor and SST - 2005" +local Identifier = "noaa-sos-atmosphere-2005_hurricane-wvsst" +local Description = [[ "This hurricane season shattered records that have stood for +decades - most named storms, most hurricanes and most category five storms. Arguably, it +was the most devastating hurricane season the country has experienced in modern times," +said retired Navy Vice Adm. Conrad C. Lautenbacher, Jr., Ph.D., undersecretary of +commerce for oceans and atmosphere and NOAA administrator. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-water-vapor-and-sst-2005/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "GI-WV-%y%j-%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2012_hurricane.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2012_hurricane.asset new file mode 100644 index 0000000000..e5ff06d806 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2012_hurricane.asset @@ -0,0 +1,87 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Hurricane Season - 2012" +local Identifier = "noaa-sos-atmosphere-2012_hurricane" +local Description = [[ "It was an extremely devastating and destructive storm, hopefully +one that people will only see once in their lifetime," National Weather Service +meteorologist, Joe Pollina, said of Hurricane Sandy. The 2012 Atlantic Hurricane season +was tied with 1887, 1995, 2010 and 2011 as the third most active year in recorded +history, producing nineteen tropical cyclones and named storms, ten hurricanes and two +major hurricanes. Annual Atlantic hurricane predictions by NOAA and Colorado State +University fell short of the actual numbers despite raising their numbers after a record +active start to the season, which began on June 1st and ended on November 30th. The +Eastern Pacific season was moderately active. This dataset names all the Atlantic and +Pacific named tropical storms and hurricanes in 2012 from the Linear IR Satellite data +recorded by geostationary satellites. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-2012/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local namesDestination = syncedDirectory .. "names" +local satDestination = syncedDirectory .. "sat" + + +local layer_names = { + Identifier = Identifier .. "-names", + Name = Name .. " (Names)", + Type = "ImageSequenceTileLayer", + FolderPath = namesDestination, + Description = Description +} + +local layer_sat = { + Identifier = Identifier .. "-sat", + Name = Name .. " (Satellites)", + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = satDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "linear_rgb_cyl_%Y%m%d_%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(namesDestination) then + openspace.printInfo("Extracting " .. Name .. "Names") + openspace.unzipFile(syncedDirectory .. "names.zip", namesDestination, true) + end + + if not openspace.directoryExists(satDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "sat-1.zip", satDestination, true) + openspace.unzipFile(syncedDirectory .. "sat-2.zip", satDestination, true) + openspace.unzipFile(syncedDirectory .. "sat-3.zip", satDestination, true) + openspace.unzipFile(syncedDirectory .. "sat-4.zip", satDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_names) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_sat) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_names) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_sat) +end) + +asset.export(layer_names) +asset.export(layer_sat) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aerosol_blackcarbon.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aerosol_blackcarbon.asset new file mode 100644 index 0000000000..3ad4154a15 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aerosol_blackcarbon.asset @@ -0,0 +1,74 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Aerosols: Black Carbon" +local Identifier = "noaa-sos-atmosphere-aerosol-blackcarbon" +local Description = [[ With so many uncertainties attached to climate change, it is +important to look at all of the factors. As early as 1896, scientists have been analyzing +the presence of black carbon in the atmosphere. This group of three datasets looks at the +presence of aerosols in the Earth's atmosphere. The first dataset contains only black +carbon optical thickness, the second has sulfate optical thickness and the third has a +combination of both black carbon and sulfate optical thickness. The data is from January +31, 2007 and extends out 120 hours through February 4, 2007. Black carbon is commonly +known as soot. It is generated from burning fossil fuels and biomass fuels. Soot is the +result of incomplete combustion, especially of coal, diesel fuels, biofuels and other +biomass burnings. Sulfate is the result of sulfur dioxide and sulfur trioxide interacting +with other compounds in the atmosphere. Sulfate aerosols in the atmosphere are associated +with the combustion of fossil fuels and also the eruption of volcanoes like Mt. +Pinatubo. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/aerosols-black-carbon/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048_png.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aerosol_blackcarbon_and_sulfate.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aerosol_blackcarbon_and_sulfate.asset new file mode 100644 index 0000000000..881bdd51fc --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aerosol_blackcarbon_and_sulfate.asset @@ -0,0 +1,74 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Aerosols: Black Carbon and Sulfate" +local Identifier = "noaa-sos-atmosphere-aerosol-blackcarbon_and_sulfate" +local Description = [[ With so many uncertainties attached to climate change, it is +important to look at all of the factors. As early as 1896, scientists have been analyzing +the presence of black carbon in the atmosphere. This group of three datasets looks at the +presence of aerosols in the Earth's atmosphere. The first dataset contains only black +carbon optical thickness, the second has sulfate optical thickness and the third has a +combination of both black carbon and sulfate optical thickness. The data is from January +31, 2007 and extends out 120 hours through February 4, 2007. Black carbon is commonly +known as soot. It is generated from burning fossil fuels and biomass fuels. Soot is the +result of incomplete combustion, especially of coal, diesel fuels, biofuels and other +biomass burnings. Sulfate is the result of sulfur dioxide and sulfur trioxide interacting +with other compounds in the atmosphere. Sulfate aerosols in the atmosphere are associated +with the combustion of fossil fuels and also the eruption of volcanoes like Mt. +Pinatubo. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/aerosols-black-carbon-and-sulfate/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048_png.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aerosol_sulfate.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aerosol_sulfate.asset new file mode 100644 index 0000000000..afadb4a0d9 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aerosol_sulfate.asset @@ -0,0 +1,74 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Aerosols: Sulfate" +local Identifier = "noaa-sos-atmosphere-aerosol-sulfate" +local Description = [[ With so many uncertainties attached to climate change, it is +important to look at all of the factors. As early as 1896, scientists have been analyzing +the presence of black carbon in the atmosphere. This group of three datasets looks at the +presence of aerosols in the Earth's atmosphere. The first dataset contains only black +carbon optical thickness, the second has sulfate optical thickness and the third has a +combination of both black carbon and sulfate optical thickness. The data is from January +31, 2007 and extends out 120 hours through February 4, 2007. Black carbon is commonly +known as soot. It is generated from burning fossil fuels and biomass fuels. Soot is the +result of incomplete combustion, especially of coal, diesel fuels, biofuels and other +biomass burnings. Sulfate is the result of sulfur dioxide and sulfur trioxide interacting +with other compounds in the atmosphere. Sulfate aerosols in the atmosphere are associated +with the combustion of fossil fuels and also the eruption of volcanoes like Mt. +Pinatubo. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/aerosols-sulfate/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048_png.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/airtraffic.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/airtraffic.asset new file mode 100644 index 0000000000..682e46efaa --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/airtraffic.asset @@ -0,0 +1,59 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Air Traffic" +local Identifier = "noaa-sos-atmosphere-air_traffic" +local Description = [[ "On any given day, more than 87,000 flights are in the skies in +the United States. Only one-third are commercial carriers, like American, United or +Southwest. On an average day, air traffic controllers handle 28,537 commercial flights +(major and regional airlines), 27,178 general aviation flights (private planes), 24,548 +air taxi flights (planes for hire), 5,260 military flights and 2,148 air cargo flights +(Federal Express, UPS, etc.). At any given moment, roughly 5,000 planes are in the skies +above the United States. In one year, controllers handle an average of 64 million +takeoffs and landings." - From the National Air Traffic Controllers Association webpage ]] +local URL = "https://sos.noaa.gov/catalog/datasets/air-traffic/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/all_sats.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/all_sats.asset new file mode 100644 index 0000000000..b49e04a9b8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/all_sats.asset @@ -0,0 +1,62 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Satellites: Paths and Positions" +local Identifier = "noaa-sos-atmosphere-all_sats" +local Description = [[ Satellites are a key tool for scientists to monitor and observe +the Earth's atmosphere from space. Geostationary satellites orbit around the Earth at the +same rate as the Earth rotates so that the satellites are over the same spot on Earth all +the time. This allows them to collect a continuous stream of data for one location so +that "movies" of the data can be made. The satellites are positioned 22,300 miles above +the Earth's surface in order to view the Earth's full disk and to maintain their +geostationary orbit. Geostationary satellites travel at about 7000mph in order to +maintain their geostationary orbit. In addition to geostationary satellites, scientists +also use polar orbiting satellites. These satellites circle the Earth, crossing the poles +on each orbit. Typically, polar orbiting satellites are about 500 miles above the Earth's +surface. The satellites travel at almost 17,000mph, allowing them to orbit the Earth in +roughly 100 minutes. A polar orbiting satellite is able to cover the whole Earth in less +than one day. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/satellites-paths-and-positions/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aqua_swath.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aqua_swath.asset new file mode 100644 index 0000000000..74287aa4e4 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/aqua_swath.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Polar Orbiting: Aqua Satellite and MODIS Swath" +local Identifier = "noaa-sos-atmosphere-aqua_swath" +local Description = [[ Satellites are important to scientists because the instruments on +board can provide almost daily global coverage of the Earth that would otherwise not be +available. There are six instruments on board NASA's Aqua satellite. One of them is +MODIS, the Moderate Resolution Imaging Spectroradiometer. MODIS measures 36 spectral +frequencies of light, which provide a wealth of information about the physical properties +of the atmosphere and the biological and physical properties of the oceans and land. The +Aqua satellite with MODIS attached was launched May 4, 2002. Since then, Aqua has been +circling the Earth at an altitude of 438 miles (705 kilometers) every 99 minutes in a +polar orbit passing within 10 degrees of each pole every orbit. The orbit is +sun-synchronous, which means that the satellite passes over the same spot of the Earth at +about the same local time everyday. Aqua crosses the equator from south to north at about +1:30 pm local time. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-aqua-satellite-and-modis-swath/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/carbonflux.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/carbonflux.asset new file mode 100644 index 0000000000..cca5f5a1f4 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/carbonflux.asset @@ -0,0 +1,60 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Carbon Flux" +local Identifier = "noaa-sos-atmosphere-carbonflux" +local Description = [[ The Global Monitoring Division at NOAA diligently monitors carbon +dioxide and other trace gases in the atmosphere. One of the methods they use to sample +trace gases is collecting flasks of air from around the world that can be tested. They +have several other means for collecting samples as well. In this data set, the NOAA GMD +sampling network as of 2005 is portrayed. Circles are flask sampling locations, stars are +aircraft sites (12 flasks per flight are filled) and ships, which are only visible as +they race from Australia and New Zealand to the US west coast or Japan, or from Cape Town +to the US east coast. The coloration in the dataset represents the fluxes constructed by +the ocean, biosphere, and fossil fuel modules of the NOAA ESRL data assimilation system +for CO2 and related trace gases. The data set shows daily average fluxes constructed from +3-hour model output. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-aqua-satellite-and-modis-swath/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2160.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/carbontracker_2000_2100-fixed_scale.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/carbontracker_2000_2100-fixed_scale.asset new file mode 100644 index 0000000000..f03e14c136 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/carbontracker_2000_2100-fixed_scale.asset @@ -0,0 +1,112 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "CarbonTracker: Fixed Scale" +local Identifier = "noaa-sos-atmosphere-carbontracker_2000_2100-fixed_scale" +local Description = [[ "NOAA encourages science that adds benefit to society and the +environment. CarbonTracker does both." said retired Navy Vice Admiral Conrad +Lautenbacher, Ph.D., former undersecretary of commerce for oceans and atmosphere and NOAA +administrator. CarbonTracker is a system to keep track of carbon dioxide uptake and +release at the Earth's surface over time. It was developed by the Carbon Cycle Greenhouse +Gases group at NOAA's Earth System Research Laboratory. As a scientific tool, +CarbonTracker has helped improve the understanding of carbon uptake and release from the +land and oceans, and how those sources and sinks are responding to the changing climate, +increasing levels of atmospheric CO2 (the CO2 fertilization effect), and human management +of land and oceans. CarbonTracker relies on the long-term monitoring of atmospheric CO2 +performed by the NOAA Global Monitoring Division and international partners. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/carbon-tracker-fixed-scale/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local fieldDestination = syncedDirectory .. "field" +local obsDestination = syncedDirectory .. "obs" +local colorbarDestination = syncedDirectory .. "colorbar" + + +local layer_field = { + Identifier = Identifier .. "-field", + Name = Name .. " (Field)", + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = fieldDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "co2wx_%Y%m%d.png" + }, + Description = Description +} + +local layer_obs = { + Identifier = Identifier .. "-obs", + Name = Name .. " (Observed)", + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = obsDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "co2wx_%Y%m%d.obs.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + -- @TODO: We need a temporal provider for ScreenSpaceImages to handle this + TexturePath = colorbarDestination .. "/" .. "co2wx_20000101.cpt.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(fieldDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "field-1.zip", fieldDestination, true) + openspace.unzipFile(syncedDirectory .. "field-2.zip", fieldDestination, true) + openspace.unzipFile(syncedDirectory .. "field-3.zip", fieldDestination, true) + end + + if not openspace.directoryExists(obsDestination) then + openspace.printInfo("Extracting " .. Name .. " Observed") + openspace.unzipFile(syncedDirectory .. "obs.zip", obsDestination, true) + end + + if not openspace.directoryExists(colorbarDestination) then + openspace.printInfo("Extracting " .. Name .. " Colorbar") + openspace.unzipFile(syncedDirectory .. "colorbar.zip", colorbarDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_field) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_obs) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_field) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_obs) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer_field) +asset.export(layer_obs) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/carbontracker_2000_2100-sliding_scale.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/carbontracker_2000_2100-sliding_scale.asset new file mode 100644 index 0000000000..b6102f9191 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/carbontracker_2000_2100-sliding_scale.asset @@ -0,0 +1,113 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "CarbonTracker: Sliding Scale" +local Identifier = "noaa-sos-atmosphere-carbontracker_2000_2100-sliding_scale" +local Description = [[ "NOAA encourages science that adds benefit to society and the +environment. CarbonTracker does both." said retired Navy Vice Admiral Conrad +Lautenbacher, Ph.D., former undersecretary of commerce for oceans and atmosphere and NOAA +administrator. CarbonTracker is a system to keep track of carbon dioxide uptake and +release at the Earth's surface over time. It was developed by the Carbon Cycle Greenhouse +Gases group at NOAA's Earth System Research Laboratory. As a scientific tool, +CarbonTracker has helped improve the understanding of carbon uptake and release from the +land and oceans, and how those sources and sinks are responding to the changing climate, +increasing levels of atmospheric CO2 (the CO2 fertilization effect), and human management +of land and oceans. CarbonTracker relies on the long-term monitoring of atmospheric CO2 +performed by the NOAA Global Monitoring Division and international partners. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/carbon-tracker-sliding-scale/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local fieldDestination = syncedDirectory .. "field" +local obsDestination = syncedDirectory .. "obs" +local colorbarDestination = syncedDirectory .. "colorbar" + +local layer_field = { + Identifier = Identifier .. "-field", + Name = Name .. " (Field)", + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = fieldDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "co2wx_%Y%m%d.png" + }, + Description = Description +} + +local layer_obs = { + Identifier = Identifier .. "-obs", + Name = Name .. " (Observed)", + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = obsDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "co2wx_%Y%m%d.obs.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + -- @TODO: We need a temporal provider for ScreenSpaceImages to handle this + TexturePath = colorbarDestination .. "/" .. "co2wx_20000101.cpt.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(fieldDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "field-1.zip", fieldDestination, true) + openspace.unzipFile(syncedDirectory .. "field-2.zip", fieldDestination, true) + openspace.unzipFile(syncedDirectory .. "field-3.zip", fieldDestination, true) + openspace.unzipFile(syncedDirectory .. "field-4.zip", fieldDestination, true) + openspace.unzipFile(syncedDirectory .. "field-5.zip", fieldDestination, true) + end + + if not openspace.directoryExists(obsDestination) then + openspace.printInfo("Extracting " .. Name .. " Observed") + openspace.unzipFile(syncedDirectory .. "obs.zip", obsDestination, true) + end + + if not openspace.directoryExists(colorbarDestination) then + openspace.printInfo("Extracting " .. Name .. " Colorbar") + openspace.unzipFile(syncedDirectory .. "colorbar.zip", colorbarDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_field) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_obs) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_field) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_obs) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer_field) +asset.export(layer_obs) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/climate_niche.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/climate_niche.asset new file mode 100644 index 0000000000..d54b10fdc2 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/climate_niche.asset @@ -0,0 +1,98 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Human Climate Niche - 2020 and 2070" +local Identifier = "noaa-sos-atmosphere-climate_niche" +local Description = [[ The human climate niche are areas on Earth where humans have +historically lived due to favorable climate conditions related to temperature and +precipitation. For the past 6000 years, humans have mostly lived in the same climate +conditions as they do now. In addition to humans, this climate niche is also where the +production of crops and livestock typically takes place. The optimal mean annual +temperature of this identified niche is around 52 °F to 59 °F (~11 °C to 15 °C). But as +the climate changes, the areas that fit within the human climate niche will change as +well. This dataset identifies the current human climate niche, with land shaded to show +which areas are more or less suitable for people, and then projects the future human +climate niche in 2070 based on the climate projection scenario of RCP 8.5. Also included +as an additional layer that can be turned on and off is a map that shows the areas where +the mean annual temperature is greater than 84 °F (29 °C). Currently, only 0.8% of the +global land surface has a mean annual temperature greater than 84 °F, but in 2070 that is +projected to cover 19% of the global land and impact an estimated 3.5 billion people. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/human-climate-niche-2020-and-2070/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_precip_2020 = { + Identifier = Identifier .. "-2020", + Name = Name .. " (2020)", + FilePath = syncedDirectory .. "temp-precip-2020-current-4096.png", + Description = Description +} + +local layer_precip_2070 = { + Identifier = Identifier .. "-2070", + Name = Name .. " (2070)", + FilePath = syncedDirectory .. "temp-precip-2070-rcp85-4096.png", + Description = Description +} + +local layer_mat_2020 = { + Identifier = Identifier .. "-mat2020", + Name = Name .. " (MAT 2020)", + FilePath = syncedDirectory .. "MAT-29-2020-4096.png", + Description = Description +} + +local layer_mat_2070 = { + Identifier = Identifier .. "-mat2070", + Name = Name .. " (MAT 2070)", + FilePath = syncedDirectory .. "MAT-29-2070-4096.png", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "niche-scale.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_precip_2020) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_precip_2070) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_mat_2020) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_mat_2070) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_precip_2020) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_precip_2070) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_mat_2020) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_mat_2070) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer_precip_2020) +asset.export(layer_precip_2070) +asset.export(layer_mat_2020) +asset.export(layer_mat_2070) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/co_gmd.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/co_gmd.asset new file mode 100644 index 0000000000..c43a8b36e1 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/co_gmd.asset @@ -0,0 +1,85 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Carbon Monoxide - 2008 - 2011" +local Identifier = "noaa-sos-atmosphere-co_gmd" +local Description = [[ Carbon Monoxide (CO) is a colorless, odorless gas existing in the +atmosphere at levels between 40 and 150 parts per billion (ppb). About 40% of that is +produced by burning (combustion) of fossil fuels (coal, oil and natural gas) and biomass +(for example, wood in forest fires). CO is the primary consumer of oxidant OH, the +"cleansing agent" of the atmosphere. For example, OH "cleanses the air" by converting +atmospheric methane (CH4) to CO2, which reduces its global warming potential because +methane is a stronger greenhouse gas. OH also breaks down a whole host of other compounds +such as benzene, isoprene and halocarbons, which would otherwise give rise to smog and +reduce air quality. Therefore, an excess of atmospheric CO leads to a reduction of OH's +cleansing capacity. Another reason for measuring CO concentrations is that it is an +indicator of combustion, such as forest fires and urban emissions. A large forest fire or +emissions from heavy traffic can produce CO concentrations of 200 - 5000 ppb. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/carbon-monoxide-2008-2011/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "co_field_extended_%Y%m%d%H%M.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "3600-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "3600-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "3600-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "3600-4.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "3600-5.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "3600-6.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/fim_chem.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/fim_chem.asset new file mode 100644 index 0000000000..48435ad71d --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/fim_chem.asset @@ -0,0 +1,69 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Aerosols: FIM Chem Model" +local Identifier = "noaa-sos-atmosphere-fim_chem" +local Description = [[ The Flow Following Finite Volume Icosahedral Model (FIM) was +developed by NOAA to produce weather forecasts. In fact, weather forecasts from the FIM +model are available for SOS here. Building upon the success of the FIM model, the +FIM-Chem model was created. The FIM-Chem is the FIM model with chemistry and aerosol +modules added. Aerosols are one of the biggest uncertainties in climate models due to +their varied affects on radiation and cloud physics. The FIM-Chem allows researchers to +forecast and study the behavior of aerosols in the atmosphere, leading to the potential +for better Earth system modeling for climate prediction. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/aerosols-fim-chem-model/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "composite.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/fossil_fuel.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/fossil_fuel.asset new file mode 100644 index 0000000000..a1d8bcd6e1 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/fossil_fuel.asset @@ -0,0 +1,82 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Fossil Fuel: CO2 Release - 2011-2012" +local Identifier = "noaa-sos-atmosphere-fossil_fuel" +local Description = [[ This dataset shows the result of emitting carbon dioxide from +fossil fuel burning into the atmosphere over two years. A computer model of the +atmosphere called TM5 was used to create this powerful visualization. TM5 simulates the +movement of atmospheric gases globally, using winds and atmospheric mixing as derived +from the global weather forecast. The model has been used for the main greenhouse gases +carbon dioxide (CO2), methane (CH4), and nitrous oxide (N2O), chemically active species +such as ozone (O3), and various aerosols. Like CarbonTracker, a measurement and modeling +system to keep track of carbon sources and sinks around the world, this dataset was +developed by the Carbon Cycle Greenhouse Gases group at NOAA's Earth System Research +Laboratory. Unlike CarbonTracker, this simulation does not use information from actual +observations and instead visualizes the transport of fossil fuel emissions. +Visualizations such as this dataset and CarbonTracker, aim to improve our understanding +of atmospheric carbon and how various sources and sinks may respond to the changing +climate, increasing levels of atmospheric CO2 (via the CO2 fertilization effect), and +human management of global resources. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/fossil-fuel-co2-release-2011-2012/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "%Y%m%d_fossil.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "3100.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/fukushima.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/fukushima.asset new file mode 100644 index 0000000000..bd55933421 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/fukushima.asset @@ -0,0 +1,68 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Fukushima Radioactive Aerosol Dispersion Model" +local Identifier = "noaa-sos-atmosphere-fukushima" +local Description = [[ The Hybrid Single-Particle Lagrangian Integrated Trajectory +(HYSPLIT) model was developed by NOAA to follow the transport and dispersion of +pollutants in the atmosphere. In HYSPLIT, the computation is composed of four components: +transport by the mean wind, turbulent dispersion, scavenging and decay. A large number of +pollutant particles, which by convention are called "particles" but are just +computational "points" (particles or gases), are released at the source location and +passively follow the wind. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/fukushima-radioactive-aerosol-dispersion-model/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2054.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/geo_sat.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/geo_sat.asset new file mode 100644 index 0000000000..141e7ad099 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/geo_sat.asset @@ -0,0 +1,60 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Geostationary Satellites" +local Identifier = "noaa-sos-atmosphere-geo_sat" +local Description = [[ Geostationary satellites are a key tool for scientists to monitor +and observe the Earth's atmosphere. They are called geostationary due to their movement. +Geostationary satellites orbit around the Earth at the same rate as the Earth rotates so +that the satellites are over the same spot on Earth all the time. This allows them to +collect a continuous stream of data for one location so that "movies" of the data can be +made. The satellites are positioned 22,300 miles above the Earth's surface in order to +view the Earth's full disk and to maintain their geostationary orbit. Geostationary +satellites travel at about 7000mph in order to maintain their geostationary orbit. Over +the United States there are two such satellites, the GOES (Geostationary Operational +Environmental Satellite) - East and GOES-West. There are many such satellites +worldwide. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/geostationary-satellites/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/geo_scan.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/geo_scan.asset new file mode 100644 index 0000000000..7e8d774ded --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/geo_scan.asset @@ -0,0 +1,60 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Geostationary Satellites: Scanning Pattern" +local Identifier = "noaa-sos-atmosphere-geo_scan" +local Description = [[ Geostationary satellites are a key tool for scientists to monitor +and observe the Earth's atmosphere. They are called geostationary due to their movement. +Geostationary satellites orbit around the Earth at the same rate as the Earth rotates so +that the satellites are over the same spot on Earth all the time. This allows them to +collect a continuous stream of data for one location so that "movies" of the data can be +made. The satellites are positioned 22,300 miles above the Earth's surface in order to +view the Earth's full disk and to maintain their geostationary orbit. Geostationary +satellites travel at about 7000mph in order to maintain their geostationary orbit. Over +the United States there are two such satellites, the GOES (Geostationary Operational +Environmental Satellite) - East and GOES-West. There are many such satellites +worldwide. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/geostationary-satellites-scanning-pattern/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/giss_temp_anom.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/giss_temp_anom.asset new file mode 100644 index 0000000000..e87538d6af --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/giss_temp_anom.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Temperature Anomaly: (NASA) - 1884 - 2012" +local Identifier = "noaa-sos-atmosphere-giss_temp_anom" +local Description = [[ These maps, developed by NASA's Goddard Institute for Space +Studies (GISS), depict how much various regions of the world have warmed or cooled when +compared with a base period of 1951-1980. They show temperature anomalies, or changes, +not absolute temperature. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/temperature-anomaly-nasa-1884-2012/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2012.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/globe-insolation.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/globe-insolation.asset new file mode 100644 index 0000000000..f1655c3a67 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/globe-insolation.asset @@ -0,0 +1,75 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Solar Insolation - Monthly (NASA)" +local Identifier = "noaa-sos-atmosphere-globe-insolation" +local Description = [[ These maps show where and how much sunlight fell on Earth's +surface during each month in 2018. Scientists call this measure solar insolation. Knowing +how much of the Sun's energy reaches the surface helps scientists understand weather and +climate patterns as well as patterns of plant growth around our world. Solar insolation +maps are also useful to engineers who design solar panels and batteries designed to +convert energy from the Sun into electricity to power appliances in our homes and work +places. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/solar-insolation-monthly-nasa/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "CERES_INSOL_M_%Y-%m.PNG" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "1440.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/globe-rainfall.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/globe-rainfall.asset new file mode 100644 index 0000000000..2f15dee165 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/globe-rainfall.asset @@ -0,0 +1,75 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Solar Rainfall - Monthly (NASA)" +local Identifier = "noaa-sos-atmosphere-globe-rainfall" +local Description = [[ Globally, rain is the main source of fresh water for plants and +animals rainfall is essential for life across Earth's landscapes. In addition to moving +tremendous amounts of water through Earth's atmosphere, rain clouds also move tremendous +amounts of energy. When water evaporates from the surface and rises as vapor into the +atmosphere, it carries heat from the sun-warmed surface with it. Later, when the water +vapor condenses to form cloud droplets and rain, the heat is released into the +atmosphere. This heating is a major part of Earth's energy budget and climate. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/rainfall-monthly-nasa/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "TRMM_3B43M_%Y-%m.PNG" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "1440.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/harvey-clouds_precip.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/harvey-clouds_precip.asset new file mode 100644 index 0000000000..1eb5f35caf --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/harvey-clouds_precip.asset @@ -0,0 +1,86 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Hurricane Harvey: Clouds with Precipitation - 2017" +local Identifier = "noaa-sos-atmosphere-harvey-clouds_precip" +local Description = [[ Hurricane Harvey was an extremely destructive Atlantic hurricane +which became the first major hurricane to make landfall in the U.S. since Wilma in 2005. +In a four-day period, many areas of eastern Texas received over 40 inches of rain as the +system meandered along the gulf coast causing catastrophic flooding. With a record of +51.88 inches, Harvey is the wettest tropical hurricane on record in the contiguous U.S. +The resulting floods inundated hundreds of thousands of homes, displaces more than +30,000 people, and prompted more than 17,000 rescues. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-harvey-clouds-with-precipitation-2017/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "combined_image_%Y%m%d_%H%M.jpg" + }, + Description = Description +} + +local colorbar_rain = { + Identifier = Identifier .. "-rain", + Name = Name .. " (Rain)", + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "rainbar_white.png", + FaceCamera = false, + CartesianPosition = { -0.5, -0.5, -2.0 } +} + +local colorbar_snow = { + Identifier = Identifier .. "-snow", + Name = Name .. " (Snow)", + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "snowbar_white.png", + FaceCamera = false, + CartesianPosition = { 0.5, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar_rain); + openspace.addScreenSpaceRenderable(colorbar_snow); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar_rain) + openspace.removeScreenSpaceRenderable(colorbar_snow) +end) + +asset.export(layer) +asset.export(colorbar_rain) +asset.export(colorbar_snow) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/hurricane_season_2017.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/hurricane_season_2017.asset new file mode 100644 index 0000000000..83a4548b29 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/hurricane_season_2017.asset @@ -0,0 +1,68 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Hurricane Season - 2017" +local Identifier = "noaa-sos-atmosphere-hurricane_season_2017" +local Description = [[ After a long lull in major hurricanes striking the U.S. +(2005 - 2017), the 2017 season was an extremely destructive season, featuring 17 named +storms in just the Atlantic Ocean, tying it with 1936 as the fifth-most active season +since records began in 1851. All ten of the Atlantic hurricanes occurred in a row, the +greatest number of consecutive hurricanes in the satellite era. In addition, it is by far +the costliest season on record, with a preliminary total of over $368.66 billion (USD) in +damages, which is more than double the cost of 2005's total, and nearly all of which was +due to three of the season's major hurricanes — Harvey, Irma, and Maria. All three +occurred within one month in August - September, sending disaster aide efforts reeling +and calling on volunteers for help. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-2017/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "linear_rgb_cyl_%Y%m%d_%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/hurricane_season_2017_wvsst.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/hurricane_season_2017_wvsst.asset new file mode 100644 index 0000000000..b5d44492dc --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/hurricane_season_2017_wvsst.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Hurricane Season: Water Vapor and SST - 2017" +local Identifier = "noaa-sos-atmosphere-hurricane_season_2017_wvsst" +local Description = [[ After a long lull in major hurricanes striking the U.S. +(2005 - 2017), the 2017 season was an extremely destructive season, featuring 17 named +storms in just the Atlantic Ocean, tying it with 1936 as the fifth-most active season +since records began in 1851. All ten of the Atlantic hurricanes occurred in a row, the +greatest number of consecutive hurricanes in the satellite era. In addition, it is by far +the costliest season on record, with a preliminary total of over $368.66 billion (USD) in +damages, which is more than double the cost of 2005's total, and nearly all of which was +due to three of the season's major hurricanes — Harvey, Irma, and Maria. All three +occurred within one month in August - September, sending disaster aide efforts reeling +and calling on volunteers for help. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-water-vapor-and-sst-2017/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "wvsst-%y%j-%H.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/hurricane_tracks-cumulative.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/hurricane_tracks-cumulative.asset new file mode 100644 index 0000000000..aa6165382b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/hurricane_tracks-cumulative.asset @@ -0,0 +1,46 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Hurricane Tracks: Cumulative - 1950 - 2020" +local Identifier = "noaa-sos-atmosphere-hurricane_tracks-cumulative" +local Description = [[ Tracking historical hurricanes is an important way for hurricane +researchers to learn about the paths of future hurricanes. Because of this, records of +hurricane paths are archived and studied. Not all hurricanes follow the same path, but +there are certainly noticeable trends for hurricane paths. Many computer models that have +been created to predict hurricane paths include the historical data in their models. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-tracks-cumulative-1950-2005/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/isaac.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/isaac.asset new file mode 100644 index 0000000000..e410f821c1 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/isaac.asset @@ -0,0 +1,86 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Hurricane Isaac - 2012" +local Identifier = "noaa-sos-atmosphere-isaac" +local Description = [[ Hurricane Isaac formed as a tropical depression east of the Lesser +Antilles on August 21 and that same day was upgraded to a tropical storm. As a tropical +storm Hurricane Isaac passed over Hispaniola and Cuba, killing many people. It them +entered the Gulf of Mexico. Shortly before making landfall near the mouth of the +Mississippi River, Tropical Storm Isaac strengthened and became Hurricane Isaac on August +28. Isaac actually made landfall twice, briefly returning offshore after its first +landfall before returning to land. Isaac was a very slow moving storm after landfall and +brought significant amounts of rain to the southeastern United States. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-isaac-2012/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local radarDestination = syncedDirectory .. "radar" +local satDestination = syncedDirectory .. "sat" + +local layer_radar = { + Identifier = Identifier .. "-radar", + Name = Name .. " (Radar)", + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = radarDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "%y%j%H%M.png" + }, + Description = Description +} + +local layer_sat = { + Identifier = Identifier .. "-sat", + Name = Name .. " (Sat)", + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = satDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "linear_rgb_cyl_%Y%m%d_%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(radarDestination) then + openspace.printInfo("Extracting " .. Name .. " Radar") + openspace.unzipFile(syncedDirectory .. "radar.zip", radarDestination, true) + end + + if not openspace.directoryExists(satDestination) then + openspace.printInfo("Extracting " .. Name .. " Sat") + openspace.unzipFile(syncedDirectory .. "sat.zip", satDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_radar) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_sat) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_radar) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_sat) +end) + +asset.export(layer_radar) +asset.export(layer_sat) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/iss_track.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/iss_track.asset new file mode 100644 index 0000000000..da67b4c29a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/iss_track.asset @@ -0,0 +1,52 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "International Space Station Track" +local Identifier = "noaa-sos-atmosphere-iss_track" +local Description = [[ The first piece of the International Space Station was sent into +orbit in 1998. Following two more pieces, astronauts first entered the space station in +November of 2000. Since then, the space station has been continuously inhabited by at +least 2 people. The station is currently designed to house 3 crew members. The +International Space Station is a cooperative space research facility being constructed +cooperatively by many nations. Several space organizations had planned their own space +stations and the groups decided to merge and work together. The original space station +was a combination of NASA's Space Station Freedom, Russia's Mir-2, and the European +Space Agency's Columbus. The project now involves NASA, the Russian Space agency, RKA; +the European Space Agency, ESA; the Japanese Space agency, JAXA; and the Canadian Space +agency, CSA. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/international-space-station-track/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/land_temp.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/land_temp.asset new file mode 100644 index 0000000000..5240adfa05 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/land_temp.asset @@ -0,0 +1,62 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Land Surface Temperature - 1950 - 1999" +local Identifier = "noaa-sos-atmosphere-land_temp" +local Description = [[ The temperature of the air varies dramatically in both time and +space. Because the Earth's rotational axis is at a 23° tilt, the Northern Hemisphere and +Southern Hemisphere simultaneously experience opposite seasons. This dataset displays the +gridded, monthly, historical terrestrial air temperature from 1950 - 1999. The original +data is from the Global Historical Climatology Network, which is part of NOAA's National +Climatic Data Center. The data was interpolated by the Center for Climatic Research at +the University of Delaware. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/international-space-station-track/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "cyl_%Y_%m.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/lightning.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/lightning.asset new file mode 100644 index 0000000000..ab7228928e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/lightning.asset @@ -0,0 +1,62 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Lightning Flash Rate" +local Identifier = "noaa-sos-atmosphere-lightning" +local Description = [[ Typically, more than 2,000 thunderstorms are active throughout the +world at a given moment, producing on the order of 100 flashes per second. NASA has two +different sensors on satellites that measuring flash frequency, the Optical Transient +Detector, OTD, and the Lightning Imaging Sensor, LIS. Data from the OTD from 1995 - 2000 +and the LIS from 1998 - 2005 has been combined and averaged to create an average annual +lightning flash rate map. 11 year of data is included to remove any anomalies that might +be present in just one year. The color variations in the map display the average annual +number of lightning flashes per square kilometer. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/lightning-flash-rate/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "2048.jpg", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.jpg", + FaceCamera = false, + Scale = 0.05, + CartesianPosition = { 0.75, 0.0, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/ltg_vaisala.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/ltg_vaisala.asset new file mode 100644 index 0000000000..e5e8368b91 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/ltg_vaisala.asset @@ -0,0 +1,80 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Lightning Detection - Jun 2011 - Aug 2012" +local Identifier = "noaa-sos-atmosphere-ltg_vaisala" +local Description = [[ The Global Lightning Dataset GLD360 network detects between 1 and +3 million lightning events around the world every day of the year. Lightning activity is +not uniformly distributed across the globe. About ten times as many flashes occur over +land than over the oceans, and the majority of global lightning is concentrated in the +tropics. Over the course of a year, highest flash rate regions follow the inclination of +the sun. The northern hemisphere sees more activity during June through August; the +southern hemisphere has higher flash rates in January through March. These seasonal +patterns can be clearly seen in these images, which show the total number of events +detected in each month per square kilometer. The color scale ranges from less than .01 +lightning pulses per square kilometer in the corresponding month to over 20 pulses per +square kilometer. Each color range corresponds to a factor of two of increase in the +number of events. This dataset runs from June 2011 through August 2012. ]] +local URL = "c" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "%Y_%m-1.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.1, + CartesianPosition = { 0.75, 0.0, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2160.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nasa_sats.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nasa_sats.asset new file mode 100644 index 0000000000..085c54d657 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nasa_sats.asset @@ -0,0 +1,59 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Polar Orbiting: NASA A-Train Satellites" +local Identifier = "noaa-sos-atmosphere-nasa_sats" +local Description = [[ In order to enable coordinated science observations, the Earth +Observations System has created the A-Train. When finally completed in 2008, the A-Train +will consist of 6 polar-orbiting satellites that travel just minutes apart in a line. +Four of the satellites are NASA satellites, one is a French Centre National d'Etudes +Spatiales (CNES) satellite, and the other is a joint satellite between NASA and CNES. The +satellites have low polar orbits 438 miles (705 km) above Earth at an inclination of 98 +degrees. Together, their overlapping science instruments give a comprehensive picture of +Earth weather and climate. The "A" in the A-Train is for "afternoon" because the lead +satellite, Aqua, crosses the equator at the mean local time of approximately 1:30pm. Five +of the satellites are currently in orbit, and the sixth satellite is scheduled to be +launched in 2008. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-nasa-a-train-satellites/" + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nccs_models-carbon.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nccs_models-carbon.asset new file mode 100644 index 0000000000..869b7da8fc --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nccs_models-carbon.asset @@ -0,0 +1,69 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Carbon Dioxide Concentration: GEOS-5 Model" +local Identifier = "noaa-sos-atmosphere-nccs_models-carbon" +local Description = [[ Models create a dynamic portrait of the Earth through numerical +experiments that simulate our current knowledge of the dynamical and physical processes +governing weather and climate variability. This new simulation of carbon dioxide in +Earth's atmosphere provides an ultra-high-resolution look at how the key greenhouse gas +moves around the globe and fluctuates in volume throughout the year. These three close-up +views show how local geography affects the transport of carbon dioxide in the +atmosphere. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/carbon-dioxide-concentration-geos-5-model/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.4, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nccs_models-chem.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nccs_models-chem.asset new file mode 100644 index 0000000000..6865c8e6df --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nccs_models-chem.asset @@ -0,0 +1,99 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Atmospheric Chemistry: GEOS-5 Model" +local Identifier = "noaa-sos-atmosphere-nccs_models-chem" +local Description = [[ Models create a dynamic portrait of the Earth through numerical +experiments that simulate our current knowledge of the dynamical and physical processes +governing weather and climate variability. The simulation visualized here captures how +winds lift up aerosols from the Earth's surface and transport them around the globe +during the period September 1, 2006 to March 17, 2007. Such simulations allow scientists +to identify the sources and pathways of these tiny particulates that influence weather +and climate. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/atmospheric-chemistry-geos-5-model/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "chem_%Y-%m-%d_%H-%M.png" + }, + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "geos-5-legend.jpg", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4000-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-4.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-5.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-6.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-7.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-8.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-9.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-10.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-11.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-12.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-13.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-14.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-15.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-16.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-17.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-18.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-19.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-20.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-21.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-22.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-23.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-24.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-25.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-26.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nccs_models-winds.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nccs_models-winds.asset new file mode 100644 index 0000000000..adfae393cd --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/nccs_models-winds.asset @@ -0,0 +1,87 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Winds: GEOS-5 Model" +local Identifier = "noaa-sos-atmosphere-nccs_models-winds" +local Description = [[ Models create a dynamic portrait of the Earth through numerical +experiments that simulate our current knowledge of the dynamical and physical processes +governing weather and climate variability. The simulation visualized here captures the +speed of winds at the tropopause, about 6-9 miles above the Earth's surface during the +period September 1, 2006 to March 17, 2007. Such simulations allow scientists to view the +intensity and turbulence of the polar and sub-tropic jet streams, which carry weather +around the globe. Red, orange and yellow are used for the fastest moving air. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/winds-geos-5-model/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "winds_%Y-%m-%d_%H-%M.png" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4000-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-4.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-5.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-6.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-7.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-8.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-9.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-10.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-11.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-12.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-13.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-14.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-15.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-16.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-17.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-18.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-19.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-20.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-21.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-22.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-23.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-24.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-25.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4000-26.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/no2_omsi.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/no2_omsi.asset new file mode 100644 index 0000000000..bb418c4895 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/no2_omsi.asset @@ -0,0 +1,75 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Nitrogen Dioxide" +local Identifier = "noaa-sos-atmosphere-no2_omsi" +local Description = [[ Nitrogen dioxide (NO2) is a key component of urban air pollution. +The nitrogen oxides ("NOx" of which NO2 is one component) are emitted from any combustion +process. Coal- and gas-fired power plants and vehicles constitute the major anthropogenic +(human-produced) sources. Forest fires and lightning are natural sources of NO2, but +globally it is clear that anthropogenic sources dominate. High levels of NO2 are +significant as they are associated with: 1) haze that reduces visibility; 2) irritation +of the eyes, nose, throat, and lungs; 3) acid rain; 4) reduced terrestrial plant growth; +5) oxygen-depleting algal blooms; and 6) corrosion of building materials. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/nitrogen-dioxide/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "NO2monthlymean_%Y%m.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "color_bar.jpg", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2880.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/noaa_sat-tracks.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/noaa_sat-tracks.asset new file mode 100644 index 0000000000..ecf42296d5 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/noaa_sat-tracks.asset @@ -0,0 +1,53 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Polar Orbiting: NOAA Satellite Tracks" +local Identifier = "noaa-sos-atmosphere-noaa_sat-tracks" +local Description = [[ NOAA has four POES, Polar Operational Environmental Satellites, +currently in orbit. The satellites are named chronologically, based on launch date. NOAA +15 was launched in 1998, NOAA 16 was launched in 2000, NOAA 17 was launched in 2002 and +NOAA 18 was launched in 2005. In May and August of 2007 two older satellites, NOAA 14 and +NOAA 12 respectively, were decommissioned. These satellites orbit the Earth in such a way +that they pass over the poles. Each orbit takes approximately 102.1 minutes, allowing the +satellites to circle the Earth about 14.1 times each day. The polar orbit enables the +satellites to collect daily global data for land, ocean, and atmospheric applications. +This data is used a large variety of environmental monitoring applications such as +weather analysis and forecasting, climate research and prediction, global sea surface +temperature measurements, ocean dynamics research, global vegetation analysis and many +other applications. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-noaa-satellite-tracks/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/pclim.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/pclim.asset new file mode 100644 index 0000000000..e4cb0d05b4 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/pclim.asset @@ -0,0 +1,66 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Temperature Anomaly: Yearly - 500 - 2006 (Paleoclimate Evidence)" +local Identifier = "noaa-sos-atmosphere-pclim" +local Description = [[ This animation shows annual average temperature anomalies +(departure from normal) over the globe for the past 1,500 years compared to the average +temperature (normal) from 1961-1990. This data collected from over 1,000 paleoclimate +proxies. Areas shaded red are warmer than normal while areas shaded blue are cooler than +normal. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/temperature-anomaly-yearly-500-2006-paleoclimate-evidence/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.jpg", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "raw.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/poes_sat.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/poes_sat.asset new file mode 100644 index 0000000000..3fc4209024 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/poes_sat.asset @@ -0,0 +1,63 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Polar Orbiting: NOAA-17 Satellite Coverage" +local Identifier = "noaa-sos-atmosphere-poes_sat" +local Description = [[ Satellites allow scientists to observe the Earth from above the +atmosphere. The National Oceanic and Atmospheric Administration, NOAA, has several +different types of satellites, including geostationary and polar orbiting satellites. +These datasets show the path of Polar-orbiting Operational Environmental Satellites, or +POES for short. NOAA has two POES in operation currently, a morning and afternoon +satellite. The morning satellite crosses the equator on the sun-light side of the Earth +in the morning, and the afternoon satellite crosses in the afternoon. Both satellites +orbit the Earth 14.1 times per day. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-noaa-17-satellite-coverage/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "poes_cover_%Y%j%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/reanalysis-antarctic.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/reanalysis-antarctic.asset new file mode 100644 index 0000000000..d058d8dfc5 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/reanalysis-antarctic.asset @@ -0,0 +1,81 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Precipitable Water - Antarctic Expedition - 1902 - 1903" +local Identifier = "noaa-sos-atmosphere-reanalysis-antarctic" +local Description = [[ Until 2010, the longest globally-complete estimate of the +four-dimensional atmospheric circulation was from a dataset produced jointly by NOAA's +National Centers for Environmental Prediction and the National Center for Atmospheric +Research: the NCEP-NCAR Reanalysis. This dataset of computer-generated weather map +reconstructions or "reanalyses" starts from 1948, leaving many important climate events +such as 1930's Dust Bowl drought uncovered. To expand the coverage of global gridded +reanalyses, the 20th Century Reanalysis Project is an effort led by NOAA's Earth System +Research Laboratory Physical Sciences Division and the University of Colorado CIRES +Climate Diagnostics Center to produce a reanalysis dataset spanning the entire twentieth +century, assimilating only surface observations of synoptic pressure, monthly sea surface +temperature and sea ice distribution. The pressure observations have been assembled +through international cooperation under the auspices of the Atmospheric Circulation +Reconstructions over the Earth initiative, ACRE, and working groups of the Global Climate +Observing System and World Climate Research Program. The Project uses a +recently-developed Ensemble Filter data assimilation method which directly yields each +six-hourly reanalysis field or weather map as the most likely state of the global +atmosphere, and also estimates uncertainty in that map. This dataset will provide the +first estimates of global tropospheric variability spanning 1871 to present at six-hourly +temporal resolution and 2 degree longitude by 2 degree latitude resolution. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/precipitable-water-antarctic-expedition-1902-1903/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/reanalysis-elnino.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/reanalysis-elnino.asset new file mode 100644 index 0000000000..55a561d92a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/reanalysis-elnino.asset @@ -0,0 +1,81 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Precipitable Water - El Nino - 1917 - 1919" +local Identifier = "noaa-sos-atmosphere-reanalysis-elnino" +local Description = [[ Until 2010, the longest globally-complete estimate of the +four-dimensional atmospheric circulation was from a dataset produced jointly by NOAA's +National Centers for Environmental Prediction and the National Center for Atmospheric +Research: the NCEP-NCAR Reanalysis. This dataset of computer-generated weather map +reconstructions or "reanalyses" starts from 1948, leaving many important climate events +such as 1930's Dust Bowl drought uncovered. To expand the coverage of global gridded +reanalyses, the 20th Century Reanalysis Project is an effort led by NOAA's Earth System +Research Laboratory Physical Sciences Division and the University of Colorado CIRES +Climate Diagnostics Center to produce a reanalysis dataset spanning the entire twentieth +century, assimilating only surface observations of synoptic pressure, monthly sea surface +temperature and sea ice distribution. The pressure observations have been assembled +through international cooperation under the auspices of the Atmospheric Circulation +Reconstructions over the Earth initiative, ACRE, and working groups of the Global Climate +Observing System and World Climate Research Program. The Project uses a +recently-developed Ensemble Filter data assimilation method which directly yields each +six-hourly reanalysis field or weather map as the most likely state of the global +atmosphere, and also estimates uncertainty in that map. This dataset will provide the +first estimates of global tropospheric variability spanning 1871 to present at six-hourly +temporal resolution and 2 degree longitude by 2 degree latitude resolution. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/precipitable-water-el-nino-1917-1919/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/reanalysis-hurricane.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/reanalysis-hurricane.asset new file mode 100644 index 0000000000..ece40e4edc --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/reanalysis-hurricane.asset @@ -0,0 +1,81 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Precipitable Water - Galveston Hurricane - 1900" +local Identifier = "noaa-sos-atmosphere-reanalysis-hurricane" +local Description = [[ Until 2010, the longest globally-complete estimate of the +four-dimensional atmospheric circulation was from a dataset produced jointly by NOAA's +National Centers for Environmental Prediction and the National Center for Atmospheric +Research: the NCEP-NCAR Reanalysis. This dataset of computer-generated weather map +reconstructions or "reanalyses" starts from 1948, leaving many important climate events +such as 1930's Dust Bowl drought uncovered. To expand the coverage of global gridded +reanalyses, the 20th Century Reanalysis Project is an effort led by NOAA's Earth System +Research Laboratory Physical Sciences Division and the University of Colorado CIRES +Climate Diagnostics Center to produce a reanalysis dataset spanning the entire twentieth +century, assimilating only surface observations of synoptic pressure, monthly sea surface +temperature and sea ice distribution. The pressure observations have been assembled +through international cooperation under the auspices of the Atmospheric Circulation +Reconstructions over the Earth initiative, ACRE, and working groups of the Global Climate +Observing System and World Climate Research Program. The Project uses a +recently-developed Ensemble Filter data assimilation method which directly yields each +six-hourly reanalysis field or weather map as the most likely state of the global +atmosphere, and also estimates uncertainty in that map. This dataset will provide the +first estimates of global tropospheric variability spanning 1871 to present at six-hourly +temporal resolution and 2 degree longitude by 2 degree latitude resolution. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/precipitable-water-galveston-hurricane-1900/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048_png.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/sandy.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/sandy.asset new file mode 100644 index 0000000000..e22de7049b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/sandy.asset @@ -0,0 +1,58 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Hurricane Sandy: Linear IR - Oct. 2012" +local Identifier = "noaa-sos-atmosphere-sandy" +local Description = [[ Hurricane Sandy was a memorable and disastrous storm that hit the +Caribbean islands and the Mid-Atlantic States in October of 2012.It was the second +costliest storm in U.S. history, after Hurricane Katrina. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/precipitable-water-galveston-hurricane-1900/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "linear_rgb_cyl_%Y%m%d_%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/sunsync_sat.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/sunsync_sat.asset new file mode 100644 index 0000000000..ddd7a16019 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/sunsync_sat.asset @@ -0,0 +1,63 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Polar Orbiting: NOAA-17 and NOAA-18" +local Identifier = "noaa-sos-atmosphere-sunsync_sat" +local Description = [[ Satellites allow scientists to observe the Earth from above the +atmosphere. The National Oceanic and Atmospheric Administration, NOAA, has several +different types of satellites, including geostationary and polar orbiting satellites. +These datasets show the path of Polar-orbiting Operational Environmental Satellites, or +POES for short. NOAA has two POES in operation currently, a morning and afternoon +satellite. The morning satellite crosses the equator on the sun-light side of the Earth +in the morning, and the afternoon satellite crosses in the afternoon. Both satellites +orbit the Earth 14.1 times per day. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-noaa-17-and-noaa-18/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "sunsync_%Y%j%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/temp_anom.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/temp_anom.asset new file mode 100644 index 0000000000..b1c3b1417b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/temp_anom.asset @@ -0,0 +1,79 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Temperature Anomaly: Yearly (NOAA) - 1880 - Present" +local Identifier = "noaa-sos-atmosphere-temp_anom" +local Description = [[ This animation shows Earth's surface temperature from 1880 through +2019 compared to the 20th century average. Maps are based on data from NOAA's National +Climatic Data Center. In 2016, the combined land and ocean surface temperature was 1.69°F +(0.94°C) above the 20th century average, making the year the warmest since records began +in 1880. This is the third consecutive year a new global annual temperature record has +been set. The first eight months of 2016 set monthly temperatures records and the last +four months were ranked among the top five for each month's temperature records. To date, +all 16 years of the 21st century rank among the seventeen warmest on record (1998 is +currently the eighth warmest.) The five warmest years have all occurred since 2010. 2017 +was the third warmest, slightly cooler than the previous two. 2018 was the fourth +warmest. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/temperature-anomaly-yearly-noaa-1880-present/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "ANOM.yearly.%Y.color.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096_new.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/tropical_widening.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/tropical_widening.asset new file mode 100644 index 0000000000..30018e37be --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/tropical_widening.asset @@ -0,0 +1,56 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tropical Widening" +local Identifier = "noaa-sos-atmosphere-tropical_widening" +local Description = [[ This dataset was developed as part of the EarthNow project, and +shows the changes in the tropical zone boundaries over the last three decades. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tropical-widening/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "2048.png", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.jpg", + FaceCamera = false, + Scale = 0.175, + CartesianPosition = { 0.0, -0.3, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/typhoon_haiyan-wvsst.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/typhoon_haiyan-wvsst.asset new file mode 100644 index 0000000000..1e685a4c34 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/typhoon_haiyan-wvsst.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Typhoon Haiyan: Water Vapor and SST - Oct - Nov 2013" +local Identifier = "noaa-sos-atmosphere-typhoon_haiyan-wvsst" +local Description = [[ Typhoon Haiyan, also known in the Phillippines as Typhoon Yolanda, +may be the strongest recorded tropical cyclone to make landfall with sustained speeds up +to 195 mph. If confirmed, it would beat the previous record holder, Hurricane Camille +(1969). This dataset is taken from the Real-Time Linear IR satellite dataset and +Real-time: SST from October 30th to November 12th, 2013. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/typhoon-haiyan-water-vapor-and-sst-oct-nov-2013/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local track = { + Identifier = Identifier .. "-track", + Name = Name .. " (Track)", + FilePath = syncedDirectory .. "track.png", + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", track) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", track) +end) + +asset.export(layer) +asset.export(track) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/typhoon_haiyan.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/typhoon_haiyan.asset new file mode 100644 index 0000000000..f22d909709 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/typhoon_haiyan.asset @@ -0,0 +1,70 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Typhoon Haiyan - Oct - Nov 2013" +local Identifier = "noaa-sos-atmosphere-typhoon_haiyan" +local Description = [[ Typhoon Haiyan, also known in the Phillippines as Typhoon Yolanda, +may be the strongest recorded tropical cyclone to make landfall with sustained speeds up +to 195 mph. If confirmed, it would beat the previous record holder, Hurricane Camille +(1969). This dataset is taken from the Real-Time Linear IR satellite dataset from October +30th to November 12th, 2013. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/typhoon-haiyan-oct-nov-2013/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "linear_rgb_cyl_%Y%m%d_%H%M.jpg" + }, + Description = Description +} + +local track = { + Identifier = Identifier .. "-track", + Name = Name .. " (Track)", + FilePath = syncedDirectory .. "track.png", + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", track) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", track) +end) + +asset.export(layer) +asset.export(track) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/volcano_ash.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/volcano_ash.asset new file mode 100644 index 0000000000..55eb70e0e7 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/volcano_ash.asset @@ -0,0 +1,60 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Volcanic Ash Eruption: Iceland" +local Identifier = "noaa-sos-atmosphere-volcano_ash" +local Description = [[ Eyjafjallajokull, a glacier covered volcano in southern Iceland, +erupted explosively on April 14, 2010. The name Eyjafjallajokull is Icelandic for +"island-mountain glacier." The volcano initially erupted on March 20, but this original +eruption was much smaller and only caused a brief evacuation of the local area. The April +14 event was 10 to 20 times more powerful and had international impacts. Locally, the +eruption and resulting lava melted the surrounding glacier, causing major flooding. +Internationally, air traffic was impacted for several days following the eruption. The +volcano ejected ash over 30,000ft into the atmosphere, causing significant disruptions to +the European and Trans-Atlantic air travel. Airspace over much of northern Europe was +closed from April 15 through April 23 for concerns over the abrasive volcanic ash causing +engine failures. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/volcanic-ash-eruption-iceland/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2992.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/agriculture-cropland.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/agriculture-cropland.asset new file mode 100644 index 0000000000..ba03bb84af --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/agriculture-cropland.asset @@ -0,0 +1,70 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "NOAA Science on a Sphere. Agriculture: Cropland Intensity" +local Identifier = "noaa-sos-land-agriculture-cropland" +local Description = [[ These visualizations, created by the University of Minnesota's +Institute on the Environment, show the global land use intensity for pastureland and +cropland. Cropland is land devoted to growing plants for humans use for food, material, +or fuel. Pastureland is land used for raising and grazing animals. Altogether, cropland +covers about 16 million square kilometers, an area of land approximately the size of +South America. Global pastureland occupies more than 30 million square kilometers, about +the area of Africa. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/agriculture-cropland-intensity/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_countries = { + Identifier = Identifier .. "-countries", + Name = Name .. " (w/ countries)", + FilePath = syncedDirectory .. "4096_countries.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(layer_countries) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/agriculture-pastureland.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/agriculture-pastureland.asset new file mode 100644 index 0000000000..3fda0f5946 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/agriculture-pastureland.asset @@ -0,0 +1,70 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "NOAA Science on a Sphere. Agriculture: Pastureland Intensity" +local Identifier = "noaa-sos-land-agriculture-pastureland" +local Description = [[ These visualizations, created by the University of Minnesota's +Institute on the Environment, show the global land use intensity for pastureland and +cropland. Cropland is land devoted to growing plants for humans use for food, material, +or fuel. Pastureland is land used for raising and grazing animals. Altogether, cropland +covers about 16 million square kilometers, an area of land approximately the size of +South America. Global pastureland occupies more than 30 million square kilometers, about +the area of Africa. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/agriculture-pastureland-intensity/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_countries = { + Identifier = Identifier .. "-countries", + Name = Name .. " (w/ countries)", + FilePath = syncedDirectory .. "4096_countries.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(layer_countries) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/birds.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/birds.asset new file mode 100644 index 0000000000..9d98b04ba8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/birds.asset @@ -0,0 +1,66 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + +local Name = "NOAA Science on a Sphere. Bird Migration Patterns - Western Hemisphere" +local Identifier = "noaa-sos-land-birds" +local Description = [[ This dataset shows the migration of 118 species of terrestrial +bird populations in the Western Hemisphere. Each dot represents the estimated location of +the center of each species' population for each day of the year. These estimations come +from millions of observations from the eBird citizen-science database. eBird is a +real-time, online checklist program, launched in 2002 by the Cornell Lab of Ornithology +and National Audubon Society, that allows birdwatchers to enter their observations. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/bird-migration-patterns-western-hemisphere/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "birds.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-blue_marble.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-blue_marble.asset new file mode 100644 index 0000000000..82ab35c64f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-blue_marble.asset @@ -0,0 +1,48 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "NOAA Science on a Sphere. Blue Marble: without Clouds" +local Identifier = "noaa-sos-land-blue_marble-blue_marble" +local Description = [[ The Blue Marble is an incredibly detailed, true-color depiction of +the Earth. NASA is responsible for this dataset made from a compilation of satellite +images throughout 2001. Most of the information came from NASA's MODIS, the Moderate +Resolution Imaging Spectroradiometer, which is attached to the Terra satellite 435 miles +above Earth. The background image of the land and oceans was created using data from June +through September of 2001. This could not be done in a single day or even a week because +on any given day clouds are blocking a significant portion of the surface. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-without-clouds/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-blue_marble_topo.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-blue_marble_topo.asset new file mode 100644 index 0000000000..80ae191923 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-blue_marble_topo.asset @@ -0,0 +1,61 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Blue Marble: with Topography - Seasonal" +local Identifier = "noaa-sos-land-blue_marble-next_gen-topo" +local Description = [[ The Blue Marble is an incredibly detailed, true-color depiction of +the Earth. The Blue Marble Next Generation is an update on the original that has greater +detail. "The original Blue Marble was a composite of four months of MODIS observations +with a spatial resolution (level of detail) of 1 square kilometer per pixel. Blue Marble: +Next Generation offers a years worth of monthly composites at a spatial resolution of +500 meters.". ]] +local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-with-topography-seasonal/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "world.%Y%m.3x5400x2700.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "5400.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-blue_marble_topo_bathy.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-blue_marble_topo_bathy.asset new file mode 100644 index 0000000000..d45c913042 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-blue_marble_topo_bathy.asset @@ -0,0 +1,61 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Blue Marble: with Topography and Bathymetry" +local Identifier = "noaa-sos-land-blue_marble-next_gen-topo_bathy" +local Description = [[ The Blue Marble is an incredibly detailed, true-color depiction of +the Earth. The Blue Marble Next Generation is an update on the original that has greater +detail. "The original Blue Marble was a composite of four months of MODIS observations +with a spatial resolution (level of detail) of 1 square kilometer per pixel. Blue Marble: +Next Generation offers a years worth of monthly composites at a spatial resolution of +500 meters.". ]] +local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-with-topography-seasonal/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "world.topo.bathy.%Y%m.3x5400x2700.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "5400.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-nightlights.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-nightlights.asset new file mode 100644 index 0000000000..c978409898 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-nightlights.asset @@ -0,0 +1,66 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Blue Marble and Nighttime Lights" +local Identifier = "noaa-sos-land-bluemarble_nightlights" +local Description = [[ This dataset shows the Earth with daytime and nighttime views of +the Earth, to demonstrate how only half of the Earth is illumintated at one time. The +Blue Marble is an incredibly detailed, true-color depiction of the Earth, and is shown on +the daylight side of the Earth in this dataset. NASA is responsible for The Blue Marble, +made from a compilation of satellite images throughout 2001. Most of the information came +from NASA's MODIS, the Moderate Resolution Imaging Spectroradiometer, which is attached +to the Terra satellite 435 miles above Earth. The background image of the land and oceans +was created using data from June through September of 2001. This could not be done in a +single day or even a week because on any given day clouds are blocking a significant +portion of the surface. The cloud image is a composite of three days worth of data. The +first two days of data were collected in the visible wavelength and the third day was +needed to get a view of the clouds over the poles using thermal infrared imagery. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-and-nighttime-lights/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-5.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-6.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-seasonal_blue_marble.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-seasonal_blue_marble.asset new file mode 100644 index 0000000000..f9076a3a43 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/blue_marble-seasonal_blue_marble.asset @@ -0,0 +1,62 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Blue Marble - Seasonal" +local Identifier = "noaa-sos-land-seasonal_blue_marble" +local Description = [[ The Blue Marble is an incredibly detailed, true-color depiction of +the Earth. NASA is responsible for this dataset made from a compilation of satellite +images throughout 2001. Most of the information came from NASA's MODIS, the Moderate +Resolution Imaging Spectroradiometer, which is attached to the Terra satellite 435 miles +above Earth. The background image of the land and oceans was created using data from June +through September of 2001. This could not be done in a single day or even a week because +on any given day clouds are blocking a significant portion of the surface. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-seasonal/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "world%Y%jx4kx2k.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/dams-global.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/dams-global.asset new file mode 100644 index 0000000000..9fa2b53633 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/dams-global.asset @@ -0,0 +1,54 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Dams and Reservoirs - 1800 - 2010" +local Identifier = "noaa-sos-land-dams-global" +local Description = [[ Humans have manipulated rivers for thousands of years, but over +the last 200 years dams on rivers have become rampant. Reservoirs and dams are +constructed for water storage, to reduce the risk of river flooding, and for the +generation of power. They are one of the major footprints of humans on Earth and change +the world's hydrological cycle. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/dams-and-reservoirs-1800-2010/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer_images = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_images) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_images) +end) + +asset.export(layer_images) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/dams-mississippi.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/dams-mississippi.asset new file mode 100644 index 0000000000..83bd8e4534 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/dams-mississippi.asset @@ -0,0 +1,54 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Dams and Reservoirs: Mississippi River - 1800 - 2010" +local Identifier = "noaa-sos-land-dams-mississippi" +local Description = [[ This dataset illustrates the construction of dams in the +Mississippi River Basin from 1800 to the present. We display all dams listed in the +Global Reservoir and Dam Database (GRanD). All dams that have a reservoir with a storage +capacity of more than 0.1 cubic kilometers are included, and many smaller dams were added +where data were available. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/dams-and-reservoirs-mississippi-river-1800-2010/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/dams-yangtze.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/dams-yangtze.asset new file mode 100644 index 0000000000..6a6a3e6320 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/dams-yangtze.asset @@ -0,0 +1,54 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Dams and Reservoirs: Yangtze - 1800 - 2010" +local Identifier = "noaa-sos-land-dams-yangtze" +local Description = [[ Humans have manipulated rivers for thousands of years, but over +the last 200 years dams on rivers have become rampant. Reservoirs and dams are +constructed for water storage, to reduce the risk of river flooding, and for the +generation of power. They are one of the major footprints of humans on Earth and change +the world's hydrological cycle. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/dams-and-reservoirs-yangtze-1800-2010/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/day_night-06z_only.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/day_night-06z_only.asset new file mode 100644 index 0000000000..21d4a962f2 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/day_night-06z_only.asset @@ -0,0 +1,62 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Day/Night Terminator (daily)" +local Identifier = "noaa-sos-land-day_night-06z_only" +local Description = [[ The line that separates day and night is called the terminator. It +is also referred to as the "grey line" and the "twilight zone." It is a fuzzy line due to +our atmosphere bending sunlight. In fact, the atmosphere bends sunlight by half a degree, +which is about 37 miles (60 km). It is commonly thought that while half of the Earth is +covered in darkness, the other half is covered in sunlight. This is actually not true +because of the bending of the sunlight results in the land covered by sunlight having +greater area than the land covered by darkness. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/daynight-terminator-daily/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "daynite_%Y%j%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/day_night-full_year.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/day_night-full_year.asset new file mode 100644 index 0000000000..ca3ee5b8c8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/day_night-full_year.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Day/Night Terminator (hourly)" +local Identifier = "noaa-sos-land-day_night-full_year" +local Description = [[ The line that separates day and night is called the terminator. It +is also referred to as the "grey line" and the "twilight zone." It is a fuzzy line due to +our atmosphere bending sunlight. In fact, the atmosphere bends sunlight by half a degree, +which is about 37 miles (60 km). It is commonly thought that while half of the Earth is +covered in darkness, the other half is covered in sunlight. This is actually not true +because of the bending of the sunlight results in the land covered by sunlight having +greater area than the land covered by darkness. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/daynight-terminator-hourly/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "daynite_%Y%j%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "2048-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "2048-3.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/day_night-oneday.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/day_night-oneday.asset new file mode 100644 index 0000000000..18727ba3c3 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/day_night-oneday.asset @@ -0,0 +1,56 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Day/Night Terminator (single day)" +local Identifier = "noaa-sos-land-day_night-oneday" +local Description = [[ The line that separates day and night is called the terminator. It +is also referred to as the "grey line" and the "twilight zone." It is a fuzzy line due to +our atmosphere bending sunlight. In fact, the atmosphere bends sunlight by half a degree, +which is about 37 miles (60 km). It is commonly thought that while half of the Earth is +covered in darkness, the other half is covered in sunlight. This is actually not true +because of the bending of the sunlight results in the land covered by sunlight having +greater area than the land covered by darkness. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/daynight-terminator-single-day/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-1992_2002.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-1992_2002.asset new file mode 100644 index 0000000000..efb3d03922 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-1992_2002.asset @@ -0,0 +1,57 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Nighttime Lights Comparison - 1992 and 2002" +local Identifier = "noaa-sos-land-earth_night-1992_2002" +local Description = [[ The data was recorded by the Defense Meteorological Satellite +Program (DMSP) in the National Geophysical Data Center (NGDC), now part of NOAA National +Centers for Environmental Information (NCEI). The data was collected using polar orbiting +satellites that provide full cover of the globe twice a day. The satellites have an +Operation Linescan system which allows them to detect low levels of visible-near infrared +radiance at night. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights-comparison-1992-and-2002/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_1992 = { + Identifier = Identifier .. "-1992", + Name = Name .. " (1992)", + FilePath = syncedDirectory .. "Nightlights_1992.jpg", + Description = Description +} + +local layer_2002 = { + Identifier = Identifier .. "-2002", + Name = Name .. " (2002)", + FilePath = syncedDirectory .. "Nightlights_2002.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_1992) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_2002) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_1992) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_2002) +end) + +asset.export(layer_1992) +asset.export(layer_2002) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-1992_2008.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-1992_2008.asset new file mode 100644 index 0000000000..d4e2851d92 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-1992_2008.asset @@ -0,0 +1,47 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Nighttime Lights Comparison - 1992, 2000, and 2008" +local Identifier = "noaa-sos-land-earth_night-1992_2008" +local Description = [[ The data was recorded by the Defense Meteorological Satellite +Program (DMSP) in the National Geophysical Data Center (NGDC), now part of NOAA National +Centers for Environmental Information (NCEI). The data was collected using polar orbiting +satellites that provide full cover of the globe twice a day. The satellites have an +Operation Linescan system which allows them to detect low levels of visible-near +infrared radiance at night. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights-comparison-1992-2000-and-2008/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "8000.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-1992_2009.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-1992_2009.asset new file mode 100644 index 0000000000..01a235a422 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-1992_2009.asset @@ -0,0 +1,59 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Nighttime Lights Comparison - 1992 and 2009" +local Identifier = "noaa-sos-land-earth_night-1992_2009" +local Description = [[ The data was recorded by the Defense Meteorological Satellite +Program (DMSP) in the National Geophysical Data Center (NGDC), now part of NOAA National +Centers for Environmental Information (NCEI). The data was collected using polar orbiting +satellites that provide full cover of the globe twice a day. The satellites have an +Operation Linescan system which allows them to detect low levels of visible-near infrared +radiance at night. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights-comparison-1992-and-2009/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "5000.png", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-2012.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-2012.asset new file mode 100644 index 0000000000..66785d457d --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-2012.asset @@ -0,0 +1,45 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Nighttime Lights - 2012" +local Identifier = "noaa-sos-land-earth_night-2012" +local Description = [[ Earth at Night has been an SOS-user favorite dataset for many +years. Black Marble 2012 is the newest version of the spectacular view of our planet from +near-Earth orbit at night, which is the result of a partnership between NOAA, NASA, and +the Department of Defense. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights-2012/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "3600.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-color_nightlights.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-color_nightlights.asset new file mode 100644 index 0000000000..ed2b6c3dd2 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-color_nightlights.asset @@ -0,0 +1,50 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Nighttime Lights (colorized)" +local Identifier = "noaa-sos-land-earth_night-color_nightlights" +local Description = [[ The data was recorded by the Defense Meteorological Satellite +Program (DMSP) in the National Geophysical Data Center (NGDC), now part of NOAA National +Centers for Environmental Information (NCEI). The data was collected using polar orbiting +satellites that provide full cover of the globe twice a day. The satellites have an +Operation Linescan system which allows them to detect low levels of visible-near infrared +radiance at night. With this data, it is possible to detect clouds illuminated by +moonlight, lights from cities and towns, industrial sites, gas flares, fires, lightning, +and aurora. The Nighttime Lights of the World data set was complied from Defense +Meteorological Satellite Program (DMSP) data spanning October 1994 - March 1995. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights-colorized/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-nightlights.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-nightlights.asset new file mode 100644 index 0000000000..9505ff905f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earth_night-nightlights.asset @@ -0,0 +1,50 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Nighttime Lights" +local Identifier = "noaa-sos-land-earth_night-nightlights" +local Description = [[ The data was recorded by the Defense Meteorological Satellite +Program (DMSP) in the National Geophysical Data Center (NGDC), now part of NOAA National +Centers for Environmental Information (NCEI). The data was collected using polar orbiting +satellites that provide full cover of the globe twice a day. The satellites have an +Operation Linescan system which allows them to detect low levels of visible-near infrared +radiance at night. With this data, it is possible to detect clouds illuminated by +moonlight, lights from cities and towns, industrial sites, gas flares, fires, lightning, +and aurora. The Nighttime Lights of the World data set was complied from Defense +Meteorological Satellite Program (DMSP) data spanning October 1994 - March 1995. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4800.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquake-1980_1995_quakes.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquake-1980_1995_quakes.asset new file mode 100644 index 0000000000..96944d0dcd --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquake-1980_1995_quakes.asset @@ -0,0 +1,102 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Earthquakes: Cumulative - 1980 - 1995" +local Identifier = "noaa-sos-land-earthquake-1980_1995_quakes" +local Description = [[ It is estimated that there are 500,000 detectable earthquakes in +the world each year. Of those, 100,000 can be felt and 100 of them cause damage. Anything +that causes seismic waves to radiate throughout the Earth is an earthquake. The cause of +earthquakes can be natural, such as one tectonic plate slipping below another, or +anthropogenic (cause by humans), such as drilling for fossil fuels, extraction of +minerals, huge explosions, and the collapse of large buildings. Because most natural +earthquakes occur due to slipping plates, the boundaries between tectonic plates are "hot +spots" for earthquakes. In the Pacific Ocean, the Pacific Plate is referred to as the +Ring of Fire because this is one of the most active plates where earthquakes and +volcanoes frequently occur. In order to rate the strength and magnitude of earthquakes, +the Richter magnitude scale was created. It is a base-10 logarithm scale of ground motion +100km from the epicenter. Every whole-number increase in magnitude means the amplitude of +the seismic wave is ten times greater. 4.0 - 4.9 on the scale is considered light, with +some shaking of indoor items and significant damage unlikely. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/earthquakes-cumulative-1980-1995/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local legend = { + Identifier = Identifier .. "-legend", + Name = Name .. " (Legend)", + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + Scale = 0.3, + CartesianPosition = { 0.0, -0.6, -2.0 } +} + +local quakebar = { + Identifier = Identifier .. "-quake", + Name = Name .. " (Quake)", + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "quakebar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.3, -2.0 } +} + +local quakebar_combined = { + Identifier = Identifier .. "-combined", + Name = Name .. " (Combined)", + Type = "ScreenSpaceImageLocal", + Enabled = false, + TexturePath = syncedDirectory .. "quakebar_combined.png", + FaceCamera = false, + Scale = 0.6, + CartesianPosition = { 0.5, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "1024.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); + openspace.addScreenSpaceRenderable(quakebar); + openspace.addScreenSpaceRenderable(quakebar_combined); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) + openspace.removeScreenSpaceRenderable(quakebar) + openspace.removeScreenSpaceRenderable(quakebar_combined) +end) + +asset.export(layer) +asset.export(legend) +asset.export(quakebar) +asset.export(quakebar_combined) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquake-2001_2015.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquake-2001_2015.asset new file mode 100644 index 0000000000..ddb01347e0 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquake-2001_2015.asset @@ -0,0 +1,103 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Earthquakes - 2001-2015" +local Identifier = "noaa-sos-land-earthquake-2001_2015" +local Description = [[ This animation shows every recorded earthquake in sequence as they +occurred from January 1, 2001, through December 31, 2015, at a rate of 30 days per +second. The earthquake hypocenters first appear as flashes then remain as colored circles +before shrinking with time so as not to obscure subsequent earthquakes. The size of the +circle represents the earthquake magnitude while the color represents its depth within +the earth. At the end of the animation it will first show all quakes in this 15-year +period. Next, it will show only those earthquakes greater than magnitude 6.5, the +smallest earthquake size known to make a tsunami. Finally it will only show those +earthquakes with magnitudes of magnitude 8.0 or larger, the "great" earthquakes most +likely to pose a tsunami threat when they occur under the ocean or near a coastline and +when they are shallow within the earth (less than 100 km or 60 mi. deep). ]] +local URL = "https://sos.noaa.gov/catalog/datasets/earthquakes-2001-2015/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_allquakes = { + Identifier = Identifier .. "-allquakes", + Name = Name .. " (All Quakes)", + FilePath = syncedDirectory .. "All_Quakes_2001-2015_4k.jpg", + Description = Description +} + +local layer_quake_basemap = { + Identifier = Identifier .. "-quake-basemap", + Name = Name .. " (Quake Basemap)", + FilePath = syncedDirectory .. "quake_basemap_4k.jpg", + Description = Description +} + +local layer_tsunami_basemap = { + Identifier = Identifier .. "-tsunami-basemap", + Name = Name .. " (Tsunami Basemap)", + FilePath = syncedDirectory .. "Tsunami_basemap_4k.jpg", + Description = Description +} + +local layer_quakes_gte6_5 = { + Identifier = Identifier .. "-gte6_5", + Name = Name .. " (GTE 6.5)", + FilePath = syncedDirectory .. "Quakes_gte6.5_2001-2015_4k.jpg", + Description = Description +} + +local layer_quakes_gte8 = { + Identifier = Identifier .. "-gte8", + Name = Name .. " (GTE 8.0)", + FilePath = syncedDirectory .. "Quakes_gte8_2001-2015_4k.jpg", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "Earthquake_Legend.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_allquakes) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quake_basemap) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_tsunami_basemap) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quakes_gte6_5) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quakes_gte8) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_allquakes) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quake_basemap) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_tsunami_basemap) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quakes_gte6_5) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quakes_gte8) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer_allquakes) +asset.export(layer_quake_basemap) +asset.export(layer_tsunami_basemap) +asset.export(layer_quakes_gte6_5) +asset.export(layer_quakes_gte8) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquakes_1901_2000.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquakes_1901_2000.asset new file mode 100644 index 0000000000..6d6bc694b8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquakes_1901_2000.asset @@ -0,0 +1,104 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Earthquakes of the 20th Century" +local Identifier = "noaa-sos-land-earthquakes_1901_2000" +local Description = [[ This animation shows every recorded earthquake in sequence as they +occurred from January 1, 1901, through December 31, 2000, at a rate of 1 year per second. +The earthquake hypocenters first appear as flashes then remain as colored circles before +shrinking with time so as not to obscure subsequent earthquakes. The size of the circle +represents the earthquake magnitude while the color represents its depth within the +earth. At the end of the animation it will first show all quakes in this 100-year period. +Next, it will show only those earthquakes greater than magnitude 6.5, the smallest +earthquake size known to make a tsunami. It will then show only those earthquakes with +magnitudes of 8.0 or larger, the "great" earthquakes most likely to pose a tsunami +threat when they occur under the ocean or near a coastline and when they are shallow +within the earth (less than 100 km or 60 mi. deep). The animation concludes by showing +the plate boundary faults responsible for the majority of all of these earthquakes. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/earthquakes-of-the-20th-century/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_allquakes = { + Identifier = Identifier .. "-allquakes", + Name = Name .. " (All Quakes)", + FilePath = syncedDirectory .. "All_Quakes_1901-2000_4k.jpg", + Description = Description +} + +local layer_quake_basemap = { + Identifier = Identifier .. "-quake-basemap", + Name = Name .. " (Quake Basemap)", + FilePath = syncedDirectory .. "quake_basemap_4k.jpg", + Description = Description +} + +local layer_plate_boundaries = { + Identifier = Identifier .. "-plate_boundaries", + Name = Name .. " (Plate Boundaries)", + FilePath = syncedDirectory .. "Plate_Boundaries_4k.jpg", + Description = Description +} + +local layer_quakes_gte6_5 = { + Identifier = Identifier .. "-gte6_5", + Name = Name .. " (GTE 6.5)", + FilePath = syncedDirectory .. "Quakes_gte6.5_1901-2000_4k.jpg", + Description = Description +} + +local layer_quakes_gte8 = { + Identifier = Identifier .. "-gte8", + Name = Name .. " (GTE 8.0)", + FilePath = syncedDirectory .. "Quakes_gte8_1901-2000_4k.jpg", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "Earthquake_Legend.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_allquakes) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quake_basemap) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_plate_boundaries) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quakes_gte6_5) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quakes_gte8) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_allquakes) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quake_basemap) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_plate_boundaries) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quakes_gte6_5) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quakes_gte8) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer_allquakes) +asset.export(layer_quake_basemap) +asset.export(layer_plate_boundaries) +asset.export(layer_quakes_gte6_5) +asset.export(layer_quakes_gte8) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquakes_and_eruptions.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquakes_and_eruptions.asset new file mode 100644 index 0000000000..ae627a2654 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earthquakes_and_eruptions.asset @@ -0,0 +1,68 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Earthquakes and Eruptions - 1960 - 2010" +local Identifier = "noaa-sos-land-earthquakes_and_eruptions" +local Description = [[ Most of Earth's earthquakes and volcanic eruptions occur at the +boundaries of the tectonic plates. This dataset shows all earthquakes of magnitude 5.0 or +greater from 1960 through 2010. The earthquakes are illustrated with a large white dot at +the time of the event. The size of the dot is proportional to the magnitude of the +earthquake. A musical tone is generated for the larger events. The larger the earthquake, +the lower the tone. The white dots eventually turn gray and slowly shrink to single-pixel +dots. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/earthquakes-and-eruptions-1960-2010/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "eqmaglegend.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earths_magnetism_magnetic_lines.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earths_magnetism_magnetic_lines.asset new file mode 100644 index 0000000000..3adb02b9c7 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earths_magnetism_magnetic_lines.asset @@ -0,0 +1,67 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Earth's Magnetic Lines" +local Identifier = "noaa-sos-land-earths_magnetism_magnetic_lines" +local Description = [[ Earth is like a giant magnet with a North and South Pole. However, +the magnetic North and South Pole are not aligned with the Geographic North and South +Pole. The Geographic North Pole is defined by the latitude 90° N and is the axis of the +Earth's rotation. The Magnetic North Pole is where the Earth's magnetic field points +vertically downward. The Earth creates its own magnetic field from the electric currents +created in the liquid iron-nickel core. In order to illustrate the earth's magnetic +field, three datasets for Earth's Magnetism have been created. All of these datasets show +the changes in the magnetic field from 1590 - 2010. The first dataset shows the magnetic +field lines at the surface of the Earth. The magnetic poles are indicated by stars. The +blue lines show where the magnetic field dips into the Earth and the red lines show where +the magnetic field emerges from the Earth. Where the field lines are horizontal to the +Earth, between the red and blue lines, is the magnetic equator shaded yellow. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/earths-magnetic-lines/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "%Y.png" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earths_magnetism_magnets.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earths_magnetism_magnets.asset new file mode 100644 index 0000000000..f75ed1f5c8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/earths_magnetism_magnets.asset @@ -0,0 +1,67 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Earth's Magnetic Field (compass needles)" +local Identifier = "noaa-sos-land-earths_magnetism_magnets" +local Description = [[ Earth is like a giant magnet with a North and South Pole. However, +the magnetic North and South Pole are not aligned with the Geographic North and South +Pole. The Geographic North Pole is defined by the latitude 90° N and is the axis of the +Earth's rotation. The Magnetic North Pole is where the Earth's magnetic field points +vertically downward. The Earth creates its own magnetic field from the electric currents +created in the liquid iron-nickel core. In order to illustrate the earth's magnetic +field, three datasets for Earth's Magnetism have been created. All of these datasets show +the changes in the magnetic field from 1590 - 2010. The first dataset shows the magnetic +field lines at the surface of the Earth. The magnetic poles are indicated by stars. The +blue lines show where the magnetic field dips into the Earth and the red lines show where +the magnetic field emerges from the Earth. Where the field lines are horizontal to the +Earth, between the red and blue lines, is the magnetic equator shaded yellow. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/earths-magnetic-field-compass-needles/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "%Y.png" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo1.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo1.asset new file mode 100644 index 0000000000..49cd39f781 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo1.asset @@ -0,0 +1,63 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "ETOPO1: Topography and Bathymetry" +local Identifier = "noaa-sos-land-etopo1" +local Description = [[ ETOPO1 is a 1 arc-minute global relief model of Earth's surface +that integrates land topography and ocean bathymetry. It was built from numerous global +and regional data sets, and is available in "Ice Surface" (top of Antarctic and Greenland +ice sheets) and "Bedrock" (base of the ice sheets) versions. The "Ice Surface" version is +available for Science On a Sphere. This dataset is a higher resolution version of +ETOPO2, which is a 2 arc-minute global relief model of Earth's surface. An arc-minute is +1/60 of a degree. Scientists use high resolution maps like ETOPO1 to improve accuracy in +tsunami forecasting, modeling, and warnings, and also to enhance ocean circulation +modeling and Earth visualization. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/etopo1-topography-and-bathymetry/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "etopo1_color_scale.png", + FaceCamera = false, + Scale = 0.1, + CartesianPosition = { 0.5, 0.0, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_bright.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_bright.asset new file mode 100644 index 0000000000..4a96a9f8be --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_bright.asset @@ -0,0 +1,48 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "ETOPO2: Topography and Bathymetry (bright colors)" +local Identifier = "noaa-sos-land-etopo2-earth_bright" +local Description = [[ Many datasets have been created by utilizing the ETOPO2 dataset, +which was generated from digital databases of seafloor and land elevations on a 2-minute +latitude/longitude grid (1 minute of latitude = 1 nautical mile, or 1.15 statute miles). +The ETOPO2 is a combination of satellite altimetry observations, shipboard echo-sounding +measurements, data from the Digital Bathymetric Data Base Variable Resolution and data +from the GLOBE project which has a global digital elevation model. Earth Color Enhanced +uses green, yellow, orange, red and white to denote increasing elevation of the land. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/etopo2-topography-and-bathymetry-bright-colors/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "10800.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_color.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_color.asset new file mode 100644 index 0000000000..27170de3d9 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_color.asset @@ -0,0 +1,48 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "ETOPO2: Topography and Bathymetry (color enhanced)" +local Identifier = "noaa-sos-land-etopo2-earth_color" +local Description = [[ Many datasets have been created by utilizing the ETOPO2 dataset, +which was generated from digital data bases of seafloor and land elevations on a 2-minute +latitude/longitude grid (1 minute of latitude = 1 nautical mile, or 1.15 statute mile). +The ETOPO2 is a combination of satellite altimetry observations, shipboard echo-sounding +measurements, data from the Digital Bathymetric Data Base Variable Resolution and data +from the GLOBE project which has a global digital elevation model. This dataset uses +green, yellow, orange, red and white to denote increasing elevation of the land. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/etopo2-topography-and-bathymetry-color-enhanced/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "7200.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_shaded.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_shaded.asset new file mode 100644 index 0000000000..384ee6b197 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_shaded.asset @@ -0,0 +1,48 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "ETOPO2: Topography and Bathymetry (shaded colors)" +local Identifier = "noaa-sos-land-etopo2-earth_shaded" +local Description = [[ Many datasets have been created by utilizing the ETOPO2 dataset. +This dataset was generated from digital data bases of seafloor and land elevations on a +2-minute latitude/longitude grid (1 minute of latitude = 1 nautical mile, or 1.15 statute +mile). ETOPO2 is a combination of satellite altimetry observations, shipboard +echo-sounding measurements, data from the Digital Bathymetric Data Base Variable +Resolution and data from the GLOBE project which has a global digital elevation +model. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/etopo2-topography-and-bathymetry-shaded-colors/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "5400.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_topo.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_topo.asset new file mode 100644 index 0000000000..62d71c1ac1 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-earth_topo.asset @@ -0,0 +1,51 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "ETOPO2: Topography and Bathymetry (natural colors)" +local Identifier = "noaa-sos-land-etopo2-earth_topo" +local Description = [[ Many datasets have been created by utilizing the ETOPO2 dataset, +which was generated from digital data bases of seafloor and land elevations on a 2-minute +latitude/longitude grid (1 minute of latitude = 1 nautical mile, or 1.15 statute mile). +The ETOPO2 is a combination of satellite altimetry observations, shipboard echo-sounding +measurements, data from the Digital Bathymetric Data Base Variable Resolution and data +from the GLOBE project which has a global digital elevation model. The topography and +bathymetry side of the Hot Topo dataset was created with this digital data base, as well +as the datasets EarthLiteColor, EarthOne, and Earth Land/Bathymetry. EarthOne and Earth +Land/Bathymetry are shaded in relatively true color, while Hot Topo and EarthLiteColor +use green, yellow, orange, red and white to denote increasing elevation of the land. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/etopo2-topography-and-bathymetry-natural-colors/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-landsat.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-landsat.asset new file mode 100644 index 0000000000..fa87c57fc3 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/etopo2-landsat.asset @@ -0,0 +1,47 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "ETOPO2: Bathymetry" +local Identifier = "noaa-sos-land-etopo2-landsat" +local Description = [[ Many datasets have been created by utilizing the ETOPO2 dataset, +which was generated from digital data bases of seafloor and land elevations on a 2-minute +latitude/longitude grid (1 minute of latitude = 1 nautical mile, or 1.15 statute mile). +The ETOPO2 is a combination of satellite altimetry observations, shipboard echo-sounding +measurements, data from the Digital Bathymetric Data Base Variable Resolution and data +from the GLOBE project which has a global digital elevation model. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/etopo2-bathymetry/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/fire.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/fire.asset new file mode 100644 index 0000000000..ed8c9256bd --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/fire.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Fires - 2009" +local Identifier = "noaa-sos-land-fire" +local Description = [[ In order to monitor the fires occurring globally, a special sensor +has been mounted on the Terra and Aqua satellites. The sensor, named the Moderate +Resolution Imaging Spectroradiometer (MODIS), is able to provide daily satellite images +of the Earth's landmasses in near real-time using the MODIS Rapid Response System. There +are many uses for the data collected from MODIS, such as monitoring global fires by +detecting the abnormally high temperature anomalies at the surface. When a location is +much warmer than the surrounding area, it suggests the presence of a fire or a lava flow. +It is important to know the size, location and intensity of fires because of the damage +that they can cause, and also to help scientists understand the emissions from the fires +and their short- and long-term effects on ecosystems. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/fires-2009/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "firemap.%Y%j-%Y%j.4096x2048.png" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/fire_veg.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/fire_veg.asset new file mode 100644 index 0000000000..db585df313 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/fire_veg.asset @@ -0,0 +1,82 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Fire Observations and Vegetation - 2002 - 2011" +local Identifier = "noaa-sos-land-fire_veg" +local Description = [[ This dataset leads viewers on a narrated global tour of fire +detections beginning in July 2002 and ending July 2011. The dataset also includes +vegetation and snow cover data to show how fires respond to seasonal changes. The tour +begins in Australia in 2002 by showing a network of massive grassland fires spreading +across interior Australia as well as the greener Eucalyptus forests in the northern and +eastern part of the continent. The tour then shifts to Asia where large numbers of +agricultural fires are visible first in China in June 2004, then across a huge swath of +Europe and western Russia in August, and then across India and Southeast Asia through the +early part of 2005. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/fire-observations-and-vegetation-2002-2011/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar_fire = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "fire_colorbar.png", + FaceCamera = false, + CartesianPosition = { -0.5, -0.5, -2.0 } +} + +local colorbar_veg = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "veg_colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.5, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar_fire); + openspace.addScreenSpaceRenderable(colorbar_veg); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar_fire) + openspace.removeScreenSpaceRenderable(colorbar_veg) +end) + +asset.export(layer) +asset.export(colorbar_fire) +asset.export(colorbar_veg) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-displaced_250.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-displaced_250.asset new file mode 100644 index 0000000000..9ff08367f8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-displaced_250.asset @@ -0,0 +1,61 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Flood Events: Displaced 250 or More People - 2000 - 2009" +local Identifier = "noaa-sos-land-flooding-displaced_250" +local Description = [[ Flooding is the nation's most common, costly and deadly natural +hazard. Heavy rain is the most frequent cause of floods, but there are many other natural +triggers, including hurricanes, tidal surges, ice jams and snow melt. Floods and flash +floods have happened in all 50 states in the USA. Flooding in river basins is a natural +part of the river's processes, serving to improve water quality and provide essential +habitat to species, among other benefits. Flooding is a matter of scientific interest, as +well as cultural significance, and is critical to land-use planning and policy. It is +also a vital concern to the safety and welfare of communities in flood prone areas +including those who live along waterways and coasts. People from all walks of life are +vulnerable to the effects of flooding. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/flood-events-displaced-250-or-more-people-2000-2009/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "3600.png", + Description = Description +} + +local layer_night = { + Identifier = Identifier .. "-night", + Name = Name .. " (Night)", + FilePath = syncedDirectory .. "4096_night.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_night) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_night) +end) + +asset.export(layer) +asset.export(layer_night) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-fatal.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-fatal.asset new file mode 100644 index 0000000000..2509643d4a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-fatal.asset @@ -0,0 +1,61 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Flood Events: 50 or More Fatalities - 2000 - 2009" +local Identifier = "noaa-sos-land-flooding-fatal" +local Description = [[ Flooding is the nation's most common, costly and deadly natural +hazard. Heavy rain is the most frequent cause of floods, but there are many other natural +triggers, including hurricanes, tidal surges, ice jams and snow melt. Floods and flash +floods have happened in all 50 states in the USA. Flooding in river basins is a natural +part of the river's processes, serving to improve water quality and provide essential +habitat to species, among other benefits. Flooding is a matter of scientific interest, +as well as cultural significance, and is critical to land-use planning and policy. It is +also a vital concern to the safety and welfare of communities in flood prone areas +including those who live along waterways and coasts. People from all walks of life are +vulnerable to the effects of flooding. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/flood-events-50-or-more-fatalities-2000-2009/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "3600.png", + Description = Description +} + +local layer_night = { + Identifier = Identifier .. "-night", + Name = Name .. " (Night)", + FilePath = syncedDirectory .. "4096_night.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_night) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_night) +end) + +asset.export(layer) +asset.export(layer_night) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-heavy_rain.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-heavy_rain.asset new file mode 100644 index 0000000000..ed53372d60 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-heavy_rain.asset @@ -0,0 +1,61 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Flood Events: Due to Heavy Rain - 2000 - 2009" +local Identifier = "noaa-sos-land-flooding-heavy_rain" +local Description = [[ Flooding is the nation's most common, costly and deadly natural +hazard. Heavy rain is the most frequent cause of floods, but there are many other natural +triggers, including hurricanes, tidal surges, ice jams and snow melt. Floods and flash +floods have happened in all 50 states in the USA. Flooding in river basins is a natural +part of the river's processes, serving to improve water quality and provide essential +habitat to species, among other benefits. Flooding is a matter of scientific interest, as +well as cultural significance, and is critical to land-use planning and policy. It is +also a vital concern to the safety and welfare of communities in flood prone areas +including those who live along waterways and coasts. People from all walks of life are +vulnerable to the effects of flooding. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/flood-events-due-to-heavy-rain-2000-2009/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "3600.png", + Description = Description +} + +local layer_night = { + Identifier = Identifier .. "-night", + Name = Name .. " (Night)", + FilePath = syncedDirectory .. "4096_night.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_night) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_night) +end) + +asset.export(layer) +asset.export(layer_night) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-major_floods.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-major_floods.asset new file mode 100644 index 0000000000..b48561778d --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/flooding-major_floods.asset @@ -0,0 +1,61 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Flood Events - 2000 - 2009" +local Identifier = "noaa-sos-land-flooding-major_floods" +local Description = [[ Flooding is the nation's most common, costly and deadly natural +hazard. Heavy rain is the most frequent cause of floods, but there are many other natural +triggers, including hurricanes, tidal surges, ice jams and snow melt. Floods and flash +floods have happened in all 50 states in the USA. Flooding in river basins is a natural +part of the river's processes, serving to improve water quality and provide essential +habitat to species, among other benefits. Flooding is a matter of scientific interest, as +well as cultural significance, and is critical to land-use planning and policy. It is +also a vital concern to the safety and welfare of communities in flood prone areas +including those who live along waterways and coasts. People from all walks of life are +vulnerable to the effects of flooding. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/flood-events-2000-2009/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +local layer_floods = { + Identifier = Identifier .. "-floods", + Name = Name .. " (Floods)", + FilePath = syncedDirectory .. "flood_3600.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_floods) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_floods) +end) + +asset.export(layer) +asset.export(layer_floods) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/food_v_feed.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/food_v_feed.asset new file mode 100644 index 0000000000..eef748d7f0 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/food_v_feed.asset @@ -0,0 +1,68 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Agriculture: Food vs. Feed" +local Identifier = "noaa-sos-land-food_v_feed" +local Description = [[ Not all cropland is used for producing food directly for people. A +lot of the food crops grown are actually used as feed for animals. This map shows which +regions produce crops that are mostly consumed directly by humans (in green), which +regions produce about the same amount of human food and animal feed (in orange), and +where most of the crops are used as animal feed (in red). ]] +local URL = "https://sos.noaa.gov/catalog/datasets/agriculture-food-vs-feed/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_countries = { + Identifier = Identifier .. "-countries", + Name = Name .. " (w/ countries)", + FilePath = syncedDirectory .. "4096_countries.png", + Description = Description +} + +local label = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "label.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.addScreenSpaceRenderable(label); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.removeScreenSpaceRenderable(label) +end) + +asset.export(layer) +asset.export(layer_countries) +asset.export(label) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/forests.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/forests.asset new file mode 100644 index 0000000000..9dbeb29be1 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/forests.asset @@ -0,0 +1,114 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Forest Change (Extent, Gain, and Loss) - 2000 - 2014" +local Identifier = "noaa-sos-land-forests" +local Description = [[ This dataset shows annual tree cover extent,gain, and loss from +the year 2001 to 2014, at 30 meter resolution, as colored layers that can be seen +together or one at a time as individual layers that can be toggled on and off. Green is +used to represent tree cover in 2000, red shows tree cover loss between 2001-2014, +blue shows tree cover gain between 2001-2014, and purple is gain and loss together due to +replanting after loss has occurred. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/forest-change-extent-gain-and-loss-2000-2014/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_combined = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "combined.png", + Description = Description +} + +local layer_extent = { + Identifier = Identifier .. "-extent", + Name = Name .. " (Extent)", + FilePath = syncedDirectory .. "extent.png", + Description = Description +} + +local layer_gain = { + Identifier = Identifier .. "-gain", + Name = Name .. " (Gain)", + FilePath = syncedDirectory .. "gain.png", + Description = Description +} + +local layer_loss = { + Identifier = Identifier .. "-loss", + Name = Name .. " (Loss)", + FilePath = syncedDirectory .. "loss.png", + Description = Description +} + +local layer_map = { + Identifier = Identifier .. "-map", + Name = Name .. " (Map)", + FilePath = syncedDirectory .. "map.png", + Description = Description +} + +local label = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "forest_label.png", + FaceCamera = false, + Scale = 0.13, + CartesianPosition = { 0.5, 0.0, -2.0 } +} + +local label1 = { + Identifier = Identifier .. "-alt", + Name = Name .. " (alt)", + Type = "ScreenSpaceImageLocal", + Enabled = false, + TexturePath = syncedDirectory .. "forest_label1.png", + FaceCamera = false, + Scale = 0.13, + CartesianPosition = { 0.5, 0.0, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_combined) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_extent) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_gain) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_loss) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_map) + openspace.addScreenSpaceRenderable(label); + openspace.addScreenSpaceRenderable(label1); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_combined) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_extent) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_gain) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_loss) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_map) + openspace.removeScreenSpaceRenderable(label) + openspace.removeScreenSpaceRenderable(label1) +end) + +asset.export(layer_combined) +asset.export(layer_extent) +asset.export(layer_gain) +asset.export(layer_loss) +asset.export(layer_map) +asset.export(label) +asset.export(label1) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/geomag_tracklines.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/geomag_tracklines.asset new file mode 100644 index 0000000000..b4a90051dc --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/geomag_tracklines.asset @@ -0,0 +1,60 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Geomagnetic Tracklines" +local Identifier = "noaa-sos-land-geomag_tracklines" +local Description = [[ Earth is like a giant magnet with a North and South Pole. However, +the magnetic North and South Pole are not aligned with the Geographic North and South +Pole. The Geographic North Pole is defined by the latitude 90° N and is the axis of the +Earth's rotation. The Magnetic North Pole is where the Earth's magnetic field points +vertically downward. The Earth creates its own magnetic field from the electric currents +created in the liquid iron-nickel core. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/geomagnetic-tracklines/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + Scale = 0.2, + CartesianPosition = { 0.75, 0.0, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/global_vegetation.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/global_vegetation.asset new file mode 100644 index 0000000000..913cbbb992 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/global_vegetation.asset @@ -0,0 +1,100 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Vegetation: Seasonal Changes - Apr 2012 - Apr 2013" +local Identifier = "noaa-sos-land-global_vegetation" +local Description = [[ Although 75% of the planet is a relatively unchanging ocean of +blue, the remaining 25% of Earth's surface is a dynamic green. Data from the NASA/NOAA +Suomi NPP satellite is able to show these subtle differences in greenness using the +Visible-Infrared Imager/Radiometer Suite (VIIRS) instrument on board the satellite. This +dataset highlights our ever-changing planet, using a highly detailed vegetation index +data from the satellite, developed by scientists at NOAA. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/vegetation-seasonal-changes-apr-2012-apr-2013/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images/" +local colorbarDestination = syncedDirectory .. "colorbar/" + +local background1layer = { + Identifier = Identifier .. "-background-14a", + Name = Name .. " (Background Week 14a)", + FilePath = syncedDirectory .. "2012_week14a.png", + Description = Description +} + +local background2layer = { + Identifier = Identifier .. "-background-14", + Name = Name .. " (Background Week 14)", + FilePath = syncedDirectory .. "2012week14.png", + Description = Description +} + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "%Yweek%U.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + -- @TODO: We need a temporal provider for ScreenSpaceImages to handle this + TexturePath = colorbarDestination .. "NDVIColor00001.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name .. " Images") + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + if not openspace.directoryExists(colorbarDestination) then + openspace.printInfo("Extracting " .. Name .. " Colorbar") + openspace.unzipFile(syncedDirectory .. "colorbar.zip", colorbarDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", background1layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", background2layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", background2layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", background1layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(background2layer) +asset.export(background1layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/gray_earth.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/gray_earth.asset new file mode 100644 index 0000000000..a41f2b561d --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/gray_earth.asset @@ -0,0 +1,58 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Gray Earth" +local Identifier = "noaa-sos-land-gray_earth" +local Description = [[ This dataset provides a view of the topography and bathymetry of +Earth by shading the continents and sea floor. Gray Earth also shows major continental +river systems and drainages. + +Longest Rivers in the world on each continent: + Africa - Nile - 4,132 miles (6,650 km) + South America - Amazon 4,000 miles (6,437 km) + Asia - Yangtze - 3,915 miles(6,300 km) + North America - Missouri - 2,540 miles (4,088 km) + Australia - Murray - 1,558 miles (2,508 km) + Europe - Volga - 2,266 miles (3,645) + +According to the dataset source, Natural Earth Data, the relief shading and hypsography +(study of Earth's topography; measurement and mapping of land elevations) are derived +from the modified SRTM - Shuttle Radar Topography Mission - Plus elevation data at 1km +resolution. Daniel Huffman, University of Wisconsin, Madison created the regionally +equalized hypsography that forms the foundation of the Gray Earth imagery. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/gray-earth/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/hot_topo.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/hot_topo.asset new file mode 100644 index 0000000000..6ecf7c0e63 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/hot_topo.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Topography and Bathymetry with Nighttime Lights" +local Identifier = "noaa-sos-land-hot_topo" +local Description = [[ This planet Earth visualization shows a rotating planet in order +to display both a nighttime and daytime view. The daytime side of the visualization shows +the bathymetry and topography of the globe. Color coding is used to distinguish between +the elevations. Red and gray represent the highest terrain on the land, green and yellow +represent the lowest. In the ocean, the darker colors are the deeper ocean floors while +the lighter colors indicate shallower areas as well as mountain ranges on the sea floor. +The very light blue shading in the ocean, near the land forms, is generally the shallow +continental shelf. Some interesting features that can be seen are the mountain ranges in +the oceans, such as the mid-Atlantic Ridge in the middle of the Atlantic Ocean, which is +spreading. Also in the ocean is the Marianas Trench, which is south of Japan. This trench +is the deepest location in the ocean with an amazing depth of 36,201 feet, almost 7 +miles. On land, the Himalayas are a noteworthy feature, as they are the home of Mount +Everest, the tallest point on earth at a height of 29,035 feet, almost 5.5 miles. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/topography-and-bathymetry-with-nighttime-lights/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/irsat_nightlights.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/irsat_nightlights.asset new file mode 100644 index 0000000000..5efc1ec693 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/irsat_nightlights.asset @@ -0,0 +1,56 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Day/Night Terminator (with clouds)" +local Identifier = "noaa-sos-land-irsat_nightlights" +local Description = [[ The line that separates day and night is called the terminator. It +is also referred to as the "grey line" and the "twilight zone." It is a fuzzy line due to +our atmosphere bending sunlight. In fact, the atmosphere bends sunlight by half a degree, +which is about 37 miles (60 km). It is commonly thought that while half of the Earth is +covered in darkness, the other half is covered in sunlight. This is actually not true +because of the bending of the sunlight results in the land covered by sunlight having +greater area than the land covered by darkness. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/daynight-terminator-with-clouds/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/japan_quake.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/japan_quake.asset new file mode 100644 index 0000000000..6666c4758a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/japan_quake.asset @@ -0,0 +1,68 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Japan Earthquake - March 2011" +local Identifier = "noaa-sos-land-japan_quake" +local Description = [[ On March 11, 2011 at 2:45 local time, a 9.0 magnitude earthquake +occurred 81 miles (130 km) off the east coast of Sendai, Japan, triggering a massive +tsunami. It is estimated that the initial tsunami wave took 10 to 30 minutes to make its +first landfall. Forecasted wave heights were up to 33 ft (10 m) and there were many +reports of tsunami waves three stories high in parts of Japan. Across the Pacific Ocean, +many countries issued evacuations along the coasts because of the predicted tsunami +waves. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/japan-earthquake-march-2011/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend_annotated.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/koppen_climate-koppen_1901_2100.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/koppen_climate-koppen_1901_2100.asset new file mode 100644 index 0000000000..28856391ee --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/koppen_climate-koppen_1901_2100.asset @@ -0,0 +1,81 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Koppen-Geiger Climate Changes - 1901 - 2100" +local Identifier = "noaa-sos-land-koppen_climate-koppen_1901_2100" +local Description = [[ Köppen climate classification is a widely used vegetation-based +empirical climate classification system developed by German botanist-climatologist +Wladimir Köppen. It's based on the idea that climate is best defined by native +vegetation. The formulas used in the classification correspond to those of the vegetation +zones (biomes) that were being mapped for the first time in the late 19th century. It was +first published in 1884 and was revised until 1940 with collaboration by German +climatologist Rudolf Geiger. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/koppen-geiger-climate-changes-1901-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.jpg", + FaceCamera = false, + Scale = 0.375, + CartesianPosition = { -0.75, -0.5, -2.0 } +} + +local legend1 = { + Identifier = Identifier .. "-1", + Name = Name .. " (1)", + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend2.png", + FaceCamera = false, + CartesianPosition = { 0.75, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); + openspace.addScreenSpaceRenderable(legend1); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) + openspace.removeScreenSpaceRenderable(legend1) +end) + +asset.export(layer) +asset.export(legend) +asset.export(legend1) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/koppen_climate-koppen_2007.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/koppen_climate-koppen_2007.asset new file mode 100644 index 0000000000..a6f5a2121e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/koppen_climate-koppen_2007.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Koppen-Geiger Climate Classification - 2007" +local Identifier = "noaa-sos-land-koppen_climate-koppen_2007" +local Description = [[ Köppen climate classification is a widely used vegetation-based +empirical climate classification system developed by German botanist-climatologist +Wladimir Köppen. It's based on the idea that climate is best defined by native +vegetation. The formulas used in the classification correspond to those of the vegetation +zones (biomes) that were being mapped for the first time in the late 19th century. It was +first published in 1884 and was revised until 1940 with collaboration by German +climatologist Rudolf Geiger.This particular revision is from 2007. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/koppen-geiger-climate-classification-2007/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + Scale = 0.375, + CartesianPosition = { -0.75, -0.5, -2.0 } +} + +local legend1 = { + Identifier = Identifier .. "-alt", + Name = Name .. " (alt)", + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend2.png", + FaceCamera = false, + CartesianPosition = { 0.75, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); + openspace.addScreenSpaceRenderable(legend1); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) + openspace.removeScreenSpaceRenderable(legend1) +end) + +asset.export(layer) +asset.export(legend) +asset.export(legend1) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_cover-animation.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_cover-animation.asset new file mode 100644 index 0000000000..fcfb6cdb22 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_cover-animation.asset @@ -0,0 +1,74 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Land Cover (animation)" +local Identifier = "noaa-sos-land-land_cover-animation" +local Description = [[ The Moderate Resolution Imaging Spectroradiometer (MODIS) +instrument on NASA's Terra satellite provides scientists with a new view of the Earth. +Using data collected by MODIS, researchers at Boston University were able to create these +land cover maps. Understanding the land cover of Earth aids policy makers involved in +natural resource management. The maps are also critical for scientists as they study +changes in the Earth system and as they model the Earth system. For example, in order to +calculate the carbon budget for the Earth system, scientists can use these maps to +determine the extent of vegetation covering the land surface that is absorbing carbon +dioxide. Each of the varying land types have different impacts on the Earth system. Snow +and ice cover cool the planet by reflecting sunlight back to space, forests absorb huge +amounts of carbon dioxide, and croplands and urban areas reflect the human impact on the +Earth. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/land-cover-animation/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local label = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "lcc_ribbon_label.jpg", + FaceCamera = false, + Scale = 0.75, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "3600.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(label); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(label) +end) + +asset.export(layer) +asset.export(label) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_cover-ribbon.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_cover-ribbon.asset new file mode 100644 index 0000000000..2616e54f2e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_cover-ribbon.asset @@ -0,0 +1,66 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Land Cover (map with ribbon of labels)" +local Identifier = "noaa-sos-land-land_cover-ribbon" +local Description = [[ The Moderate Resolution Imaging Spectroradiometer (MODIS) +instrument on NASA's Terra satellite provides scientists with a new view of the Earth. +Using data collected by MODIS, researchers at Boston University were able to create these +land cover maps. Understanding the land cover of Earth aids policy makers involved in +natural resource management. The maps are also critical for scientists as they study +changes in the Earth system and as they model the Earth system. For example, in order to +calculate the carbon budget for the Earth system, scientists can use these maps to +determine the extent of vegetation covering the land surface that is absorbing carbon +dioxide. Each of the varying land types have different impacts on the Earth system. Snow +and ice cover cool the planet by reflecting sunlight back to space, forests absorb huge +amounts of carbon dioxide, and croplands and urban areas reflect the human impact on the +Earth. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/land-cover-map-with-ribbon-of-labels/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "2048.jpg", + Description = Description +} + +local label = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "lcc_ribbon_label.jpg", + FaceCamera = false, + Scale = 0.75, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(label); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(label) +end) + +asset.export(layer) +asset.export(label) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_cover-slideshow.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_cover-slideshow.asset new file mode 100644 index 0000000000..b1d66802af --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_cover-slideshow.asset @@ -0,0 +1,102 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Land Cover (map with slideshow of labels)" +local Identifier = "noaa-sos-land-land_cover-slideshow" +local Description = [[ The Moderate Resolution Imaging Spectroradiometer (MODIS) +instrument on NASA's Terra satellite provides scientists with a new view of the Earth. +Using data collected by MODIS, researchers at Boston University were able to create these +land cover maps. Understanding the land cover of Earth aids policy makers involved in +natural resource management. The maps are also critical for scientists as they study +changes in the Earth system and as they model the Earth system. For example, in order to +calculate the carbon budget for the Earth system, scientists can use these maps to +determine the extent of vegetation covering the land surface that is absorbing carbon +dioxide. Each of the varying land types have different impacts on the Earth system. Snow +and ice cover cool the planet by reflecting sunlight back to space, forests absorb huge +amounts of carbon dioxide, and croplands and urban areas reflect the human impact on the +Earth. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/land-cover-map-with-slideshow-of-labels/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local labelsDestination = syncedDirectory .. "labels/" + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "2048.jpg", + Description = Description +} + +function create_label(number) + return { + Identifier = Identifier .. "-" .. number, + Name = Name .. " (" .. number .. ")", + Type = "ScreenSpaceImageLocal", + TexturePath = labelsDestination .. "lcc_" .. number .. ".jpg", + Enabled = false, + FaceCamera = false, + CartesianPosition = { 0.75, 0.0, -2.0 } + } +end + +local label_01 = create_label("01") +local label_02 = create_label("02") +local label_03 = create_label("03") +local label_04 = create_label("04") +local label_05 = create_label("05") +local label_06 = create_label("06") +local label_07 = create_label("07") +local label_08 = create_label("08") +local label_09 = create_label("09") +local label_10 = create_label("10") +local label_11 = create_label("11") +local label_12 = create_label("12") +local label_13 = create_label("13") +local label_14 = create_label("14") +local label_15 = create_label("15") +local label_16 = create_label("16") + +local labels = { + label_01, label_02, label_03, label_04, label_05, label_06, label_07, label_08, + label_09, label_10, label_11, label_12, label_13, label_14, label_15, label_16 +} + +asset.onInitialize(function() + if not openspace.directoryExists(labelsDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "labels.zip", labelsDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + + for _,v in ipairs(labels) do + openspace.addScreenSpaceRenderable(v) + end +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer.Identifier) + for _,v in ipairs(labels) do + openspace.removeScreenSpaceRenderable(v) + end +end) + +for _,v in ipairs(labels) do + asset.export(v) +end + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_production-cropland_current.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_production-cropland_current.asset new file mode 100644 index 0000000000..fc4ff07c5e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_production-cropland_current.asset @@ -0,0 +1,70 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Agriculture: Cropland Yield (current)" +local Identifier = "noaa-sos-land-land_production-cropland_current" +local Description = [[ A major component of the 2 Billion More Coming to Dinner film, +this dataset shows the current yield for the three top global crops, corn, wheat and +rice, measured in tons per hectare. Similarly, Cropland Yield - Potential, illustrates +the potential yield for a given area, determined by using the productivity of another +region with analogous environmental conditions and optimized water and nutrient input as +a benchmark. For both maps, darker areas show smaller yields, while bright pink areas +indicate higher yields. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/agriculture-cropland-yield-current/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_countries = { + Identifier = Identifier .. "-countries", + Name = Name .. " (w/ countries)", + FilePath = syncedDirectory .. "4096_countries.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(layer_countries) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_production-cropland_potential.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_production-cropland_potential.asset new file mode 100644 index 0000000000..9392161945 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_production-cropland_potential.asset @@ -0,0 +1,69 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Agriculture: Cropland Yield (potential)" +local Identifier = "noaa-sos-land-land_production-cropland_potential" +local Description = [[ A major component of the 2 Billion More Coming to Dinner film, +these datasets show current and potential yields for the three top crops, corn, wheat and +rice, measured in tons per hectare. Potential yield for a given area is determined by +using the productivity of another region with analogous environmental conditions and +optimized water and nutrient input as a benchmark. In this map, darker areas show smaller +yields, while bright pink areas indicate higher yields. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/agriculture-cropland-yield-potential/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_countries = { + Identifier = Identifier .. "-countries", + Name = Name .. " (w/ countries)", + FilePath = syncedDirectory .. "4096_countries.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(layer_countries) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_production-production_gap.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_production-production_gap.asset new file mode 100644 index 0000000000..38eca7acc1 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_production-production_gap.asset @@ -0,0 +1,69 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Agriculture: Cropland Production Gap" +local Identifier = "noaa-sos-land-land_production-production_gap" +local Description = [[ A major component of the 2 Billion More Coming to Dinner film, +these datasets show current and potential yields for the three top global crops, corn, +wheat and rice, measured in tons per hectare. Potential yield for a given area is +determined by using the productivity of another region with analogous environmental +conditions and optimized water and nutrient input as a benchmark. In both maps, darker +areas show smaller yields, while bright pink areas indicate higher yields. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/agriculture-cropland-yield-potential/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_countries = { + Identifier = Identifier .. "-countries", + Name = Name .. " (w/ countries)", + FilePath = syncedDirectory .. "4096_countries.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_countries) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(layer_countries) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_ratio.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_ratio.asset new file mode 100644 index 0000000000..0e3640c252 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/land_ratio.asset @@ -0,0 +1,51 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Land to Sea Ratio" +local Identifier = "noaa-sos-land-land_ratio" +local Description = [[ In this dataset, we witness the world map transform into a graph +that shows the ratio of land and sea at different latitudes. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/land-to-sea-ratio/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/latitude_longitude.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/latitude_longitude.asset new file mode 100644 index 0000000000..11036a362d --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/latitude_longitude.asset @@ -0,0 +1,74 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Latitude Longitude Layers" +local Identifier = "noaa-sos-land-latitude_longitude" +local Description = [[ Showing the relationship of latitude and longitude lines on Earth, +this dataset is useful when talking about geographical features or areas, GPS and the +introduction of map reading and exploration. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/latitude-longitude-layers/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_base = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "2048-base.png", + Description = Description +} + +local layer_combined = { + Identifier = Identifier .. "-combined", + Name = Name .. " (Combined)", + FilePath = syncedDirectory .. "2048-flat-combined.png", + Description = Description +} + +local layer_latitude = { + Identifier = Identifier .. "-latitude", + Name = Name .. " (Latitude)", + FilePath = syncedDirectory .. "2048-layer-latitude.png", + Description = Description +} + +local layer_longitude = { + Identifier = Identifier .. "-longitude", + Name = Name .. " (Longitude)", + FilePath = syncedDirectory .. "2048-layer-longitude.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_combined) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_latitude) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_longitude) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_combined) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_latitude) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_longitude) +end) + +asset.export(layer_base) +asset.export(layer_combined) +asset.export(layer_latitude) +asset.export(layer_longitude) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/magnetic_declination.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/magnetic_declination.asset new file mode 100644 index 0000000000..1fc9ff9c66 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/magnetic_declination.asset @@ -0,0 +1,69 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Earth's Magnetic Declination" +local Identifier = "noaa-sos-land-magnetic_declination" +local Description = [[ Earth is like a giant magnet with a North and South Pole. However, +the magnetic North and South Pole are not aligned with the Geographic North and South +Pole. The Geographic North Pole is defined by the latitude 90° N and is the axis of the +Earth's rotation. The Magnetic North Pole is where the Earth's magnetic field points +vertically downward. The Earth creates its own magnetic field from the electric currents +created in the liquid iron-nickel core. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/earths-magnetic-declination/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- @TODO: This dataset is not using equirectangular projection, so it will look + -- strange on the planet right now + + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "%Y.png" + }, + Description = Description +} + +asset.onInitialize(function() + openspace.printWarning( + "The 'Magnetic Declination' map currently has an unsupported projection and thus " .. + "will look strange when projected onto the spherical Earth" + ) + + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/nightsky.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/nightsky.asset new file mode 100644 index 0000000000..de70f1fb0a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/nightsky.asset @@ -0,0 +1,56 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Light Pollution - Artificial Sky Brightness" +local Identifier = "noaa-sos-land-nightsky" +local Description = [[ Light pollution in urban centers creates a sky glow that can blot +out the stars. The brighter the area in this map the harder it is to see stars and +constellations in the night sky. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/light-pollution-artificial-sky-brightness/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "nightsky_lights_legend.jpg", + FaceCamera = false, + CartesianPosition = { 0.75, 0.0, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/nuclear_earthquake.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/nuclear_earthquake.asset new file mode 100644 index 0000000000..1f8cc09835 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/nuclear_earthquake.asset @@ -0,0 +1,106 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Earthquakes and Nuclear Power Plants" +local Identifier = "noaa-sos-land-nuclear_earthquake" +local Description = [[ Earthquakes have been occurring on Earth since its formation. They +occur when tectonic plates that are sliding against or past each other build up enough +tension to slip, causing the rock to settle into a new position and the ground to shake. +The United States Geological Survey predicts that 500,000 earthquakes happen every year, +although most go undetected because they are so small or so far away from populated +areas. 10,000 of them can be felt by humans and 100 of them cause damage. Unfortunately, +scientists have not yet discovered a reliably precise way to predict earthquakes, and +there is debate over whether such a thing is even possible. Current prediction methods +involve measuring the tension that has been bled off by past earthquakes and how often +earthquakes have occurred at that location before. Due to the fact that the instruments +that can measure tension and accurate seismographs are a recent invention, earthquake +prediction continues to be inaccurate and imprecise. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/earthquakes-and-nuclear-power-plants/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer_base = { + Identifier = Identifier .. "-base", + Name = Name .. " (Base)", + FilePath = syncedDirectory .. "2048.jpg", + Description = Description +} + +local layer_all = { + Identifier = Identifier .. "-all", + Name = Name .. " (All)", + FilePath = syncedDirectory .. "all_earthquakes.png", + Description = Description +} + +local layer_new = { + Identifier = Identifier .. "-new", + Name = Name .. " (New)", + FilePath = syncedDirectory .. "new.jpg", + Description = Description +} + +local layer_nuclear = { + Identifier = Identifier .. "-nuclear", + Name = Name .. " (Nuclear)", + FilePath = syncedDirectory .. "nuclear_plants.png", + Description = Description +} + +local layer_images = { + Identifier = Identifier .. "-images", + Name = Name .. " (Images)", + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + Scale = 0.175, + CartesianPosition = { 1.0, 0.0, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_all) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_new) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_nuclear) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_all) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_new) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_nuclear) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer_base) +asset.export(layer_all) +asset.export(layer_new) +asset.export(layer_nuclear) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/paleo_map.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/paleo_map.asset new file mode 100644 index 0000000000..512eec1107 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/paleo_map.asset @@ -0,0 +1,176 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "PALEOMAP PaleoAtlas 0 - 750 Million Years Ago" +local Identifier = "noaa-sos-land-paleomap" +local Description = [[ The PALEOMAP PaleoAtlas for GPlates consists of 91 paleogeographic +maps spanning the Phanerozoic and late Neoproterozoic. The PaleoAtlas can be directly +loaded into GPlates as a Time Dependent Raster file. The paleogeographic maps in the +PaleoAtlas illustrate the ancient configuration of the ocean basins and continents, as +well as important topographic and bathymetric features such as mountains, lowlands, +shallow sea, continental shelves, and deep oceans. This tutorial also describes how the +maps in the PaleoAtlas were made, documents the sources of information used to make the +paleogeographic maps, and provides instructions how to plot user-defined paleodata on the +paleogeographic maps using the program PaleoDataPlotter. + +For any questions about the resource, please email: Christopher Scotese ]] +local URL = "https://sos.noaa.gov/catalog/datasets/paleomap-paleoatlas-0-750-million-years-ago/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layers_names = { + "Map01a_PALEOMAP_PaleoAtlas_000", + "Map02a_Last_Glacial_Maximum_001", + "Map03a_Pliocene_004", + "Map04a_Messinian_Event_006", + "Map05a_Late_Miocene_010", + "Map06a_Middle_Miocene_015", + "Map07a_Early_Miocene_020", + "Map08a_Late_Oligocene_025", + "Map09a_Early_Oligocene_030", + "Map10a_Late_Eocene_035", + "Map11a_MIddle_Eocene_040", + "Map12a_early_Middle_Eocene_045", + "Map13a_Early_Eocene_050", + "Map14a_PETM_055", + "Map15a_Paleocene_060", + "Map16a_KT_Boundary_066", + "Map17a_LtK_Maastrichtian_070", + "Map18a_LtK_Late_Campanian_075", + "Map19a_LtK_Early_Campanian_080", + "Map21a_LtK_Turonian_090", + "Map22a_LtK_Cenomanian_095", + "Map23a_EK_Late_Albian_100", + "Map24a_EK_Middle_Albian_105", + "Map25a_EK_Early_Albian_110", + "Map26a_EK_Late_Aptian_115", + "Map27a_EK_Early_Albian_120", + "Map28a_EK_Barremian_125", + "Map29a_EK_Hauterivian_130", + "Map30a_EK_Valangian_135", + "Map31a_EK_Berriasian_140", + "Map32a_Jurassic-Cretaceous_Boundary_145", + "Map33a_LtJ_Tithonian_150", + "Map34a_LtJ_Kimmeridgian_155", + "Map35a_LtJ_Oxfordian_160", + "Map36a_MJ_Callovian_165", + "Map37a_MJ_Bajocian&Bathonian_170", + "Map38a_MJ_Aalenian_175", + "Map39a_EJ_Toarcian_180", + "Map40a_EJ_Pliensbachian_185", + "Map41a_EJ_Sinemurian_190", + "Map42a_EJ_Hettangian_195", + "Map43a_Triassic-Jurassic_Boundary_200", + "Map44a_LtTr_Norian_210", + "Map45a_LtTr_Carnian_220", + "Map46a_MTr_Ladinian_230", + "Map47a_MTr_Anisian_240", + "Map48a_ETr_Induan-Olenekian_245", + "Map49a_Permo-Triassic_Boundary_250", + "Map50a_LtP_Lopingian_255", + "Map51a_LtP_Capitanian_260", + "Map52a_MP_Roadian&Wordian_270", + "Map53a_EP_Kungurian_275", + "Map54a_EP_Artinskian_280", + "Map55a_EP_Sakmarian_290", + "Map56a_EP_Asselian_295", + "Map57a_LtCarb_Gzhelian_300", + "Map58a_LtCarb_Kasimovian_305", + "Map59a_LtCarb_Moscovian_310", + "Map60a_LtCarb_Bashkirian_315", + "Map61a_ECarb_Serpukhovian_320", + "Map62a_ECarb_Late_Visean_330", + "Map63a_ECarb_Early_Visean_340", + "Map64a_ECarb_Tournaisian_350", + "Map65a_Devono-Carboniferous_Boundary_360", + "Map66a_LtD_Famennian_370", + "Map67a_LtD_Frasnian_380", + "Map68a_MD_Givetian_390", + "Map69a_MD_Eifelian_395", + "Map70a_ED_Emsian_400", + "Map71a_ED_Pragian_410", + "Map72a_ED_Lochlovian_415", + "Map73a_LtS_Ludlow&Pridoli_420", + "Map74a_MS_Wenlock_425", + "Map75a_ES_late_Llandovery_430", + "Map76a_ES_early_Llandovery_440", + "Map77a_LtO_Hirnantian_445", + "Map78a_LtO_Sandbian-Katian_450", + "Map79a_LtO_Caradoc_460", + "Map80a_LtO_Darwillian_460", + "Map81a_EO_Floian-Dapingian_470", + "Map82a_EO_Tremadoc_480", + "Map83a_Cambro-Ordovician_Boundary_490", + "Map84a_LtC_Furongian_500", + "Map85a_early_Late_Cambrian_Series_3_510", + "Map86a_Middle_Cambrian_Series_2_520", + "Map87a_Early_Cambrian_Terreneuvian_530", + "Map88a_Precambrian-Cambrian_Boundary_540", + "Map90a_Middle_Ediacaran_600", + "Map92a_Late_Cryogenian_690", + "Map93a_MIddle_Cryogenian_750" +} + +local layers = {} +for i,v in ipairs(layers_names) do + local layer = { + Identifier = Identifier .. "-" .. v, + Name = Name .. " " .. v, + FilePath = imagesDestination .. '/' .. v .. ".jpg", + Description = Description + } + + table.insert(layers, layer) +end + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.jpg", + FaceCamera = false, + Scale = 0.2, + CartesianPosition = { 0.85, 0.0, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "3600.zip", imagesDestination, true) + end + + for i,v in ipairs(layers) do + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", v) + end + + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + for i,v in ipairs(layers) do + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", v) + end + + openspace.removeScreenSpaceRenderable(legend) +end) + +for _,v in ipairs(layers) do + asset.export(v) +end + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/paleo_overlays.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/paleo_overlays.asset new file mode 100644 index 0000000000..0363aa7f41 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/paleo_overlays.asset @@ -0,0 +1,115 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Paleoclimate Proxies" +local Identifier = "noaa-sos-land-paleo_overlays" +local Description = [[ Every year, particles eroding from the continents are transported +to the oceans by the wind as dust and by rivers as sands and gravels. Once they get to +the ocean, they mix with billions of tons of dead plankton shells, sink, and settle on +the seafloor. There, they accumulate vertically in layers on top of previous years' +material. Similarly, this year's snow accumulates on top of the previous years' snow at +the polar regions in places like Greenland and Antarctica. Over time, this process forms +new layers of ice. Trees, much the same way, add yearly layers of new cells in concentric +circles just below their bark - called tree rings. And, in many caves around the world, +the strength of the seasonal cycle of a wet monsoon followed by a dry season is recorded +in the chemistry of stalagmites rising up from the cave floor, formed by drips of +mineral-rich water from the roof of the cave. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/paleoclimate-proxies/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_base = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_corals = { + Identifier = Identifier .. "-corals", + Name = Name .. " (Corals)", + FilePath = syncedDirectory .. "corals.png", + Description = Description +} + +local layer_icerings = { + Identifier = Identifier .. "-icerings", + Name = Name .. " (Icerings)", + FilePath = syncedDirectory .. "icerings.png", + Description = Description +} + +local layer_ocean = { + Identifier = Identifier .. "-ocean", + Name = Name .. " (Ocean)", + FilePath = syncedDirectory .. "ocean.png", + Description = Description +} + +local layer_speleothem = { + Identifier = Identifier .. "-speleothem", + Name = Name .. " (Speleothem)", + FilePath = syncedDirectory .. "speleothem.png", + Description = Description +} + +local layer_tree_rings = { + Identifier = Identifier .. "-tree_rings", + Name = Name .. " (Tree Rings)", + FilePath = syncedDirectory .. "tree_rings.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.jpg", + FaceCamera = false, + Scale = 0.2, + CartesianPosition = { 0.85, 0.0, -2.0 } +} + + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_corals) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_icerings) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_ocean) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_speleothem) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_tree_rings) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_corals) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_icerings) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_ocean) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_speleothem) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_tree_rings) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer_base) +asset.export(layer_corals) +asset.export(layer_icerings) +asset.export(layer_ocean) +asset.export(layer_speleothem) +asset.export(layer_tree_rings) +asset.export(legend) + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/pantropical_biomass.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/pantropical_biomass.asset new file mode 100644 index 0000000000..a8377e6044 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/pantropical_biomass.asset @@ -0,0 +1,59 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Land Cover: Woody Biomass in Pan-tropics" +local Identifier = "noaa-sos-land-pantropical_biomass" +local Description = [[ Tropical deforestation and forest degradation account for an +estimated 20% of the world's anthropogenic emissions of carbon dioxide, a significant +greenhouse gas contributor. Despite the important services that tropical forests provide, +there is incomplete data and knowledge of their condition and coverage, and thus no +accurate baseline for evaluating and monitoring future changes. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/land-cover-woody-biomass-in-pan-tropics/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.jpg", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/plate_movement.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/plate_movement.asset new file mode 100644 index 0000000000..e83fe28b8c --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/plate_movement.asset @@ -0,0 +1,77 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Plate Movement - 200 Million Years Ago to Today" +local Identifier = "noaa-sos-land-plate_movement" +local Description = [[ Our planet's surface has been shaped and re-shaped by plate +tectonics through cycles of supercontinent amalgamation and breakup. We can study the +motion of the tectonic plates, and the continents that they carry, by measuring the +magnetic signatures recorded in rocks that form the seafloor. As plates move apart at mid +oceanic ridges (also known as seafloor spreading centers), lava from the Earth's mantle +fills the void that is being created and solidifies as basalt, which can capture the +magnetic polarity of the planet at the time. As the magnetic polarity reverses +irregularly over time, we can use this barcode pattern to determine the age of the +oceanic crust across all the world's oceans. Teams of geologists, geophysicists and +marine scientists use ocean-going scientific vessels to criss-cross the oceans in order +to reveal the entire "barcode" of seafloor spreading histories. This data enables the +creation of "plate tectonic reconstructions" where the seafloor spreading history can be +unwound to restore the past position of continents as they are pushed and pulled by the +motion of the oceanic plates. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/plate-movement-200-million-years-ago-to-today/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local age_scale = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "age_scale.png", + FaceCamera = false, + Scale = 0.35, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + + +asset.onInitialize(function () + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(age_scale); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(age_scale) +end) + +asset.export(layer) +asset.export(age_scale) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/river_discharge_2010.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/river_discharge_2010.asset new file mode 100644 index 0000000000..79aabfd15a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/river_discharge_2010.asset @@ -0,0 +1,67 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Rivers: Daily Discharge - 2010" +local Identifier = "noaa-sos-land-river_discharge_2010" +local Description = [[ This dataset illustrates hydrological conditions worldwide for the +year 2010. The data originates from a computational model, the Water Balance Model (WBM). +WBM takes daily rainfall and temperature data, maps of vegetation, land-use, irrigation +and soil properties, and then calculates the hydrological balance for each of its grid +cells. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/rivers-daily-discharge-2010/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar-2010.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + + +asset.onInitialize(function () + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/sea_floor_age-iso_lines_yellow.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/sea_floor_age-iso_lines_yellow.asset new file mode 100644 index 0000000000..e32ccf1960 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/sea_floor_age-iso_lines_yellow.asset @@ -0,0 +1,66 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Age of the Seafloor Contour Lines" +local Identifier = "noaa-sos-land-sea_floor_age-iso_lines_yellow" +local Description = [[ The surface of the Earth is composed of a mosaic tectonic plates +moving with respect to each other. The Earth is made of seven major plates and several +smaller plates. As the plates move, new sea floor can be created. The plates form three +different kinds of boundaries: convergent, divergent, and transform. Convergent +boundaries are also called collision boundaries because they are areas where two plates +collide. At transform boundaries, the plates slide and grind past one another. The +divergent boundaries are the areas where plates are moving apart from one another. Where +plates move apart, new crustal material is formed from molten magma from below the +Earth's surface. Because of this, the youngest sea floor can be found along divergent +boundaries, such as the Mid-Atlantic Ocean Ridge. The spreading, however, is generally +not uniform causing linear features perpendicular to the divergent boundaries. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/age-of-the-seafloor-contour-lines/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.2, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/sea_floor_age-shaded_veg.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/sea_floor_age-shaded_veg.asset new file mode 100644 index 0000000000..e7d898eec3 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/sea_floor_age-shaded_veg.asset @@ -0,0 +1,96 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Age of the Seafloor (vegetation)" +local Identifier = "noaa-sos-land-sea_floor_age-shaded_veg" +local Description = [[ The surface of the Earth is composed of a mosaic tectonic plates +moving with respect to each other. The Earth is made of seven major plates and several +smaller plates. As the plates move, new sea floor can be created. The plates form three +different kinds of boundaries: convergent, divergent, and transform. Convergent +boundaries are also called collision boundaries because they are areas where two plates +collide. At transform boundaries, the plates slide and grind past one another. The +divergent boundaries are the areas where plates are moving apart from one another. Where +plates move apart, new crustal material is formed from molten magma from below the +Earth's surface. Because of this, the youngest sea floor can be found along divergent +boundaries, such as the Mid-Atlantic Ocean Ridge. The spreading, however, is generally +not uniform causing linear features perpendicular to the divergent boundaries. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/age-of-the-seafloor-vegetation/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_base = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_aol = { + Identifier = Identifier .. "-aol", + Name = Name .. " (AOL)", + FilePath = syncedDirectory .. "4096_aol.png", + Description = Description +} + +local layer_no_labels = { + Identifier = Identifier .. "-no_labels", + Name = Name .. " (No Labels)", + FilePath = syncedDirectory .. "4096_nolabels.jpg", + Description = Description +} + +local layer_trans = { + Identifier = Identifier .. "-trans", + Name = Name .. " (Trans)", + FilePath = syncedDirectory .. "4096_trans.png", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_aol) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_no_labels) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_trans) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_aol) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_no_labels) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_trans) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer_base) +asset.export(layer_aol) +asset.export(layer_no_labels) +asset.export(layer_trans) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/sea_floor_age-topo.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/sea_floor_age-topo.asset new file mode 100644 index 0000000000..75f4479bfe --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/sea_floor_age-topo.asset @@ -0,0 +1,86 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Age of the Seafloor (topography)" +local Identifier = "noaa-sos-land-sea_floor_age-topo" +local Description = [[ The surface of the Earth is composed of a mosaic tectonic plates +moving with respect to each other. The Earth is made of seven major plates and several +smaller plates. As the plates move, new sea floor can be created. The plates form three +different kinds of boundaries: convergent, divergent, and transform. Convergent +boundaries are also called collision boundaries because they are areas where two plates +collide. At transform boundaries, the plates slide and grind past one another. The +divergent boundaries are the areas where plates are moving apart from one another. Where +plates move apart, new crustal material is formed from molten magma from below the +Earth's surface. Because of this, the youngest sea floor can be found along divergent +boundaries, such as the Mid-Atlantic Ocean Ridge. The spreading, however, is generally +not uniform causing linear features perpendicular to the divergent boundaries. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/age-of-the-seafloor-topography/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_base = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_aol = { + Identifier = Identifier .. "-aol", + Name = Name .. " (AOL)", + FilePath = syncedDirectory .. "4096_aol.png", + Description = Description +} + +local layer_orig = { + Identifier = Identifier .. "-orig", + Name = Name .. " (Original)", + FilePath = syncedDirectory .. "4096_orig.png", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_aol) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_orig) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_aol) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_orig) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer_base) +asset.export(layer_aol) +asset.export(layer_orig) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/seismic_waves-1994northridge.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/seismic_waves-1994northridge.asset new file mode 100644 index 0000000000..9921ef04ef --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/seismic_waves-1994northridge.asset @@ -0,0 +1,97 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Seismic Waves: Northridge Earthquake - 1994" +local Identifier = "noaa-sos-land-seismic_waves-1994northride" +local Description = [[ At 4:30 a.m. on January 17, 1994, the shaking of an earthquake +awakened 10 million people in the Los Angeles region of Southern California. The +earthquake's epicenter was in Northridge, CA, and it was a magnitude 6.7 shock that +proved to be the most costly earthquake in United States history. The shaking heavily +damaged communities throughout the San Fernando Valley and Simi Valley, and the +surrounding mountains north and west of Los Angeles, causing estimated losses of $20 +billion. Fifty-seven people died, more than 9,000 were injured, and more than 20,000 were +displaced from their homes by the effects of the quake. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/seismic-waves-northridge-earthquake-1994/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" +local pipsDestination = syncedDirectory .. "pips" + +local layer_base = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "background.jpg", + Description = Description +} + +local layer_stations = { + Identifier = Identifier .. "-stations", + Name = Name .. " (Stations)", + FilePath = syncedDirectory .. "station_names.png", + Description = Description +} + +local layer_images = { + Identifier = Identifier .. "-images", + Name = Name .. " (Images)", + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local pips = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + -- @TODO: We need a temporal provider for ScreenSpaceImages to handle this + TexturePath = pipsDestination .. "/0002.png", + Enabled = false, + FaceCamera = false, + CartesianPosition = { 0.75, 0.0, -2.0 } +} + +asset.onInitialize(function () + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name .. " Images") + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + if not openspace.directoryExists(pipsDestination) then + openspace.printInfo("Extracting " .. Name .. " Pips") + openspace.unzipFile(syncedDirectory .. "pips.zip", pipsDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_stations) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_images) + openspace.addScreenSpaceRenderable(pips); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_stations) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_images) + openspace.removeScreenSpaceRenderable(pips) +end) + +asset.export(layer_base) +asset.export(layer_stations) +asset.export(layer_images) +asset.export(pips) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-amphibians.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-amphibians.asset new file mode 100644 index 0000000000..59bf949089 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-amphibians.asset @@ -0,0 +1,71 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Species Richness - Amphibians" +local Identifier = "noaa-sos-land-species_richness-amphibians" +local Description = [[ Understanding the biodiversity of our planet is critical for +developing conservation strategies. This series of datasets shows the biodiversity of +birds, mammals, and amphibians. Said simply, these maps show how many kinds of birds or +mammals or amphibians live in each area around the world. These maps look at just the +animals on land and don't include any marine animals. Also included are corresponding +maps of where the threatened species live, the ones at greatest risk of extinction. +Knowing where these threatened species live can help direct conservation efforts to +ensure that the places with the most vulnerable species are being protected. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/species-richness-amphibians/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_8192 = { + Identifier = Identifier , + Name = Name, + FilePath = syncedDirectory .. "8192.png", + Description = Description +} + +local layer_with_background = { + Identifier = Identifier .. "-background", + Name = Name .. " (Background)", + FilePath = syncedDirectory .. "4096-background.png", + Description = Description +} + +local labels = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "labels.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_8192) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.addScreenSpaceRenderable(labels); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_8192) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.removeScreenSpaceRenderable(labels); +end) + +asset.export(layer_8192) +asset.export(layer_with_background) +asset.export(labels) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-amphibians_threatened.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-amphibians_threatened.asset new file mode 100644 index 0000000000..b077c9c8d8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-amphibians_threatened.asset @@ -0,0 +1,72 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Species Richness - Amphibians Threatened" +local Identifier = "noaa-sos-land-species_richness-amphibians_threatened" +local Description = [[ Understanding the biodiversity of our planet is critical for +developing conservation strategies. This series of datasets shows the biodiversity of +birds, mammals, and amphibians. Said simply, these maps show how many kinds of birds or +mammals or amphibians live in each area around the world. These maps look at just the +animals on land and don't include any marine animals. Also included are corresponding +maps of where the threatened species live, the ones at greatest risk of extinction. +Knowing where these threatened species live can help direct conservation efforts to +ensure that the places with the most vulnerable species are being protected. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/species-richness-amphibians-threatened/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_4096 = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_with_background = { + Identifier = Identifier .. "-background", + Name = Name, + FilePath = syncedDirectory .. "4096-background.png", + Description = Description +} + +local labels = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "labels.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_4096) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.addScreenSpaceRenderable(labels); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_4096) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.removeScreenSpaceRenderable(labels); +end) + +asset.export(layer_4096) +asset.export(layer_with_background) +asset.export(labels) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-birds.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-birds.asset new file mode 100644 index 0000000000..b14b04f016 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-birds.asset @@ -0,0 +1,71 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Species Richness - Birds" +local Identifier = "noaa-sos-land-species_richness-birds" +local Description = [[ Understanding the biodiversity of our planet is critical for +developing conservation strategies. This series of datasets shows the biodiversity of +birds, mammals, and amphibians. Said simply, these maps show how many kinds of birds or +mammals or amphibians live in each area around the world. These maps look at just the +animals on land and don't include any marine animals. Also included are corresponding +maps of where the threatened species live, the ones at greatest risk of extinction. +Knowing where these threatened species live can help direct conservation efforts to +ensure that the places with the most vulnerable species are being protected. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/species-richness-birds/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_8192 = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "8192.png", + Description = Description +} + +local layer_with_background = { + Identifier = Identifier .. "-background", + Name = Name .. " (w/ Background)", + FilePath = syncedDirectory .. "4096-background.png", + Description = Description +} + +local labels = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "labels.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_8192) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.addScreenSpaceRenderable(labels); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_8192) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.removeScreenSpaceRenderable(labels); +end) + +asset.export(layer_8192) +asset.export(layer_with_background) +asset.export(labels) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-birds_threatened.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-birds_threatened.asset new file mode 100644 index 0000000000..06c649d640 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-birds_threatened.asset @@ -0,0 +1,72 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Species Richness - Birds Threatened" +local Identifier = "noaa-sos-land-species_richness-birds_threatened" +local Description = [[ Understanding the biodiversity of our planet is critical for +developing conservation strategies. This series of datasets shows the biodiversity of +birds, mammals, and amphibians. Said simply, these maps show how many kinds of birds or +mammals or amphibians live in each area around the world. These maps look at just the +animals on land and don't include any marine animals. Also included are corresponding +maps of where the threatened species live, the ones at greatest risk of extinction. +Knowing where these threatened species live can help direct conservation efforts to +ensure that the places with the most vulnerable species are being protected. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/species-richness-birds-threatened/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_4096 = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_with_background = { + Identifier = Identifier .. "-background", + Name = Name .. " (w/ Background)", + FilePath = syncedDirectory .. "4096-background.png", + Description = Description +} + +local labels = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "labels.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_4096) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.addScreenSpaceRenderable(labels); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_4096) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.removeScreenSpaceRenderable(labels); +end) + +asset.export(layer_4096) +asset.export(layer_with_background) +asset.export(labels) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-mammals.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-mammals.asset new file mode 100644 index 0000000000..52f7ca1024 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-mammals.asset @@ -0,0 +1,71 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Species Richness - Mammals" +local Identifier = "noaa-sos-land-species_richness-mammals" +local Description = [[ Understanding the biodiversity of our planet is critical for +developing conservation strategies. This series of datasets shows the biodiversity of +birds, mammals, and amphibians. Said simply, these maps show how many kinds of birds or +mammals or amphibians live in each area around the world. These maps look at just the +animals on land and don't include any marine animals. Also included are corresponding +maps of where the threatened species live, the ones at greatest risk of extinction. +Knowing where these threatened species live can help direct conservation efforts to +ensure that the places with the most vulnerable species are being protected. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/species-richness-mammals/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_8192 = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "8192.png", + Description = Description +} + +local layer_with_background = { + Identifier = Identifier .. "-background", + Name = Name .. " (w/ Background)", + FilePath = syncedDirectory .. "4096-background.png", + Description = Description +} + +local labels = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "labels.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_8192) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.addScreenSpaceRenderable(labels); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_8192) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.removeScreenSpaceRenderable(labels); +end) + +asset.export(layer_8192) +asset.export(layer_with_background) +asset.export(labels) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-mammals_threatened.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-mammals_threatened.asset new file mode 100644 index 0000000000..b8b70db907 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/species_richness-mammals_threatened.asset @@ -0,0 +1,72 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Species Richness - Mammals Threatened" +local Identifier = "noaa-sos-land-species_richness-mammals_threatened" +local Description = [[ Understanding the biodiversity of our planet is critical for +developing conservation strategies. This series of datasets shows the biodiversity of +birds, mammals, and amphibians. Said simply, these maps show how many kinds of birds or +mammals or amphibians live in each area around the world. These maps look at just the +animals on land and don't include any marine animals. Also included are corresponding +maps of where the threatened species live, the ones at greatest risk of extinction. +Knowing where these threatened species live can help direct conservation efforts to +ensure that the places with the most vulnerable species are being protected. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/species-richness-mammals-threatened/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_4096 = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local layer_with_background = { + Identifier = Identifier .. "-background", + Name = Name .. " (w/ Background)", + FilePath = syncedDirectory .. "4096-background.png", + Description = Description +} + +local labels = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "labels.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_4096) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.addScreenSpaceRenderable(labels); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_4096) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_with_background) + openspace.removeScreenSpaceRenderable(labels); +end) + +asset.export(layer_4096) +asset.export(layer_with_background) +asset.export(labels) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/surface_temperature.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/surface_temperature.asset new file mode 100644 index 0000000000..1d1dc131df --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/surface_temperature.asset @@ -0,0 +1,83 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Surface Temperature" +local Identifier = "noaa-sos-land-surface_temperature" +local Description = [[ These maps combine high-resolution daytime surface temperatures +derived from satellite observations for both land and sea and display them with a common +color scale. Displaying these high-resolution data with a common color scale makes +evident the large difference between surface heating on land versus the sea. It also +shows the relatively small seasonal variation in sea surface temperature over the globe +relative to land temperatures. The larger seasonal variation in average temperature of +the northern hemisphere relative to the southern hemisphere, a result of the larger land +area in the northern hemisphere, is also evident. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/surface-temperature/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + Enabled = false, + FaceCamera = false, + Scale = 0.07, + CartesianPosition = { 1.0, 0.0, -2.0 } +} + +local colorbar2 = { + Identifier = Identifier .."-1", + Name = Name .. " (1)", + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar2.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function () + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); + openspace.addScreenSpaceRenderable(colorbar2); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) + openspace.removeScreenSpaceRenderable(colorbar2) +end) + +asset.export(layer) +asset.export(colorbar) +asset.export(colorbar2) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/top_quakes.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/top_quakes.asset new file mode 100644 index 0000000000..e4ae9f9802 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/top_quakes.asset @@ -0,0 +1,55 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Earthquakes: Historical Top 10 - through 2011" +local Identifier = "noaa-sos-land-top_quakes" +local Description = [[ t is estimated that there are 500,000 detectable earthquakes in +the world each year. Of those, 100,000 can be felt and 100 of them cause damage. Anything +that causes seismic waves to radiate throughout the Earth is an earthquake. The cause of +earthquakes can be natural, such as one tectonic plate slipping below another, or +anthropogenic (cause by humans), such as drilling for fossil fuels, extraction of +minerals, huge explosions, and the collapse of large buildings. The surface of the Earth +is composed of a mosaic of tectonic plates moving with respect to each other. When two +plates glide past one another, a stress builds up at the boundary. When that stress +reaches a critical level, the boundary slips and the result is an earthquake. Because +most natural earthquakes occur due to slipping plates, the boundaries between tectonic +plates are "hot spots" for earthquakes. The magnitude of earthquakes is measured by the +Richter magnitude scale. It is a base-10 logarithm scale of the ground motion caused by +the earthquake. Each increase of 1 in magnitude represents 10 times more ground +motion. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/earthquakes-historical-top-10-through-2011/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "sos_saras_big_quakes_20110316.png", + Description = Description +} + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/volcanoes-eruptions.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/volcanoes-eruptions.asset new file mode 100644 index 0000000000..353c6a63e5 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/volcanoes-eruptions.asset @@ -0,0 +1,63 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Volcano Eruptions - through 2010" +local Identifier = "noaa-sos-land-volcanoes-eruptions" +local Description = [[ According to the Smithsonian Institute's Global Volcanism Program, +there are probably about 20 volcanoes erupting right now, and about 550 volcanoes have +had historically documented eruptions. A volcano is an opening, or rupture, in the +Earth's crust through which molten lava, ash, and gases are ejected. Volcanoes typically +form in three different settings. The first is divergent plate boundaries, where tectonic +plates are pulling apart from one another, such as the Mid-Atlantic Ocean Ridge. Most of +these volcanoes are on the bottom of the ocean floor and are responsible for creating new +sea floor. The second location is convergent plate boundaries, where two plates, +typically an oceanic and continental plate, are colliding. The volcanoes along the +Pacific Ring of Fire are from convergent plate boundaries. The third location is over +hotspots, which are typically in the middle of tectonic plates and caused by hot magma +rising to the surface. The volcanoes on Hawaii are the result of hotspots. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/volcano-eruptions-through-2010/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_base = { + Identifier = Identifier .. "-base", + Name = Name .. " (Base)", + FilePath = syncedDirectory .. "land.jpg", + Description = Description +} + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer_base) +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/volcanoes-global_volcanoes.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/volcanoes-global_volcanoes.asset new file mode 100644 index 0000000000..0e9713198a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/volcanoes-global_volcanoes.asset @@ -0,0 +1,63 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Volcano Locations" +local Identifier = "noaa-sos-land-volcanoes-global_volcanoes" +local Description = [[ According to the Smithsonian Institute's Global Volcanism Program, +there are probably about 20 volcanoes erupting right now, and about 550 volcanoes have +had historically documented eruptions. A volcano is an opening, or rupture, in the +Earth's crust through which molten lava, ash, and gases are ejected. Volcanoes typically +form in three different settings. The first is divergent plate boundaries, where tectonic +plates are pulling apart from one another, such as the Mid-Atlantic Ocean Ridge. Most of +these volcanoes are on the bottom of the ocean floor and are responsible for creating new +sea floor. The second location is convergent plate boundaries, where two plates, +typically an oceanic and continental plate, are colliding. The volcanoes along the +Pacific Ring of Fire are from convergent plate boundaries. The third location is over +hotspots, which are typically in the middle of tectonic plates and caused by hot magma +rising to the surface. The volcanoes on Hawaii are the result of hotspots. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/volcano-locations/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_base = { + Identifier = Identifier .. "-base", + Name = Name .. " (Base)", + FilePath = syncedDirectory .. "land.jpg", + Description = Description +} + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer_base) +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/volcanoes-tsunami.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/volcanoes-tsunami.asset new file mode 100644 index 0000000000..5eb2b967f8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/land/volcanoes-tsunami.asset @@ -0,0 +1,63 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Volcano Eruptions: Causing Tsunamis - through 2010" +local Identifier = "noaa-sos-land-volcanoes-tsunami" +local Description = [[ According to the Smithsonian Institute's Global Volcanism Program, +there are probably about 20 volcanoes erupting right now, and about 550 volcanoes have +had historically documented eruptions. A volcano is an opening, or rupture, in the +Earth's crust through which molten lava, ash, and gases are ejected. Volcanoes typically +form in three different settings. The first is divergent plate boundaries, where tectonic +plates are pulling apart from one another, such as the Mid-Atlantic Ocean Ridge. Most of +these volcanoes are on the bottom of the ocean floor and are responsible for creating new +sea floor. The second location is convergent plate boundaries, where two plates, +typically an oceanic and continental plate, are colliding. The volcanoes along the +Pacific Ring of Fire are from convergent plate boundaries. The third location is over +hotspots, which are typically in the middle of tectonic plates and caused by hot magma +rising to the surface. The volcanoes on Hawaii are the result of hotspots. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/volcano-eruptions-causing-tsunamis-through-2010/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_base = { + Identifier = Identifier .. "-base", + Name = Name .. " (Base)", + FilePath = syncedDirectory .. "land.jpg", + Description = Description +} + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function () + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer_base) +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/bm10000.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/bm10000.asset new file mode 100644 index 0000000000..5a50f589fb --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/bm10000.asset @@ -0,0 +1,79 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Blue Marble: Sea Level, Ice and Vegetation Changes - 19,000BC - 10,000AD" +local Identifier = "noaa-sos-models-bm10000" +local Description = [[ The Earth has been through many changes and continues to change +today. To better understand these changes, the Zürich University of Applied Sciences +created a simulation using past climate data, observations, and computer models. The +simulation starts 21,000 years ago and ends 8,000 years in the future, showing the +changes in ice concentration, sea level, and vegetation. 19,000BC was chosen as the start +date because this was the last glacial maximum, when the Earth's ice sheets were at their +maximum extension. As seen in the animation, much of northern Europe and North America +were covered in ice in 19,000BC. The labels for the animation include information about +carbon dioxide concentration, average temperature, sea level and population. The red line +indicates the current levels. The yellow borders on the map represent the current +coastlines. The data from 19,000BC to 2,000AD includes the most up-to-date paleoclimate +data that is available. A list of sources can be found here. Some notable events in the +past simulation include: + +The North Sea quickly forms around 8,000BC, creating the British Isles +"Mega-Lake Chad" forms in the present-day Saraha Desert and is surrounded by lush +landscapes around 7,000BC +The ice pulls back and North America and Europe are largely ice free, starting in 6,500BC +The lush vegetation across Northern Africa and the Arabian peninsula retreats in 2,000BC + +For the time frame from 2,000AD to 3,000AD, a computer model based on the IPCC A2 +scenario was used. This scenario assumes a complete cessation of carbon dioxide emissions +in 2100. More details on the model used can be found here. In this part of the simulation +the time steps change from a frame every 500 years as used in the first part of the +animation, to a frame every 50 years to show the rapid changes that are modeled. The +northern ice cap quickly disappears and the ice on Greenland and Antarctica begins to +melt steadily. By the year 3,000AD, there is predicted 6m (19ft) sea level rise. The +simulation continues from 3,000AD to 10,000 AD in 500 year time steps in a fictional +scenario of worldwide glacier meltdown and shows the impacts this would have on the +coasts. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-sea-level-ice-and-vegetation-changes-19000bc-10000ad/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/gfdl_seaice.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/gfdl_seaice.asset new file mode 100644 index 0000000000..b2c052bc46 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/gfdl_seaice.asset @@ -0,0 +1,76 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Sea Ice Change (GFDL a1b) 1861 - 2100" +local Identifier = "noaa-sos-models-gfdl_seaice" +local Description = [[ In the coming decades, the Arctic region is projected to warm at +about twice the rate of the global average according to the scientists at NOAA's +Geophysical Fluid Dynamics Laboratory. This is not good news for the Arctic sea ice. In +fact, the concentration of sea ice in the northern latitudes has been decreasing over the +past 30 years and this trend is expected to continue as the climate changes. The +disappearance of sea ice can have a major impact globally. Melting sea ice can disturb +the global ocean conveyor belt, impact sea life and the fishing industry, and change the +Earth energy budget. Sea ice cools the climate because it is reflective and so returns +much of the sun's warming back to space. As the ice melts, more of this energy is +absorbed in the darker ocean water. The temperature increases as more sunlight is +absorbed rather than reflected. This is a positive feedback loop because as temperature +rises, more sea ice melts causing increased absorption which leads to rising +temperatures. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-sea-ice-change-gfdl-a1b-1861-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar_big.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-ccsm-a1b.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-ccsm-a1b.asset new file mode 100644 index 0000000000..f78fb0bb20 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-ccsm-a1b.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (CCSM a1b) - 1870 - 2100" +local Identifier = "noaa-sos-models-ipcc_temp-ccsm-a1b" +local Description = [[ "The Intergovernmental Panel on Climate Change (IPCC) was +established by WMO and UNEP to assess scientific, technical and socio- economic +information relevant for the understanding of climate change, its potential impacts and +options for adaptation and mitigation. It is open to all members of the UN and of WMO." +- from www.ipcc.ch. In an effort to better visualize the future of climate change, the +IPCC releases assessment reports on the current state of the atmosphere and what the +future could hold. Models from various atmospheric and oceanic organizations are included +in these reports in order to establish a broad understanding of the science. Data from +three of the IPCC models following temperature change from 1870 - 2100 have been +formatted for Science On a Sphere. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-ccsm-a1b-1870-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.2, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4095.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-ccsm-b1.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-ccsm-b1.asset new file mode 100644 index 0000000000..ce06d48181 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-ccsm-b1.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (CCSM b1) - 1870 - 2100" +local Identifier = "noaa-sos-models-ipcc_temp-ccsm-b1" +local Description = [[ "The Intergovernmental Panel on Climate Change (IPCC) was +established by WMO and UNEP to assess scientific, technical and socio- economic +information relevant for the understanding of climate change, its potential impacts and +options for adaptation and mitigation. It is open to all members of the UN and of WMO." +- from www.ipcc.ch. In an effort to better visualize the future of climate change, the +IPCC releases assessment reports on the current state of the atmosphere and what the +future could hold. Models from various atmospheric and oceanic organizations are included +in these reports in order to establish a broad understanding of the science. Data from +three of the IPCC models following temperature change from 1870 - 2100 have been +formatted for Science On a Sphere. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-ccsm-b1-1870-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.2, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4095.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-compare.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-compare.asset new file mode 100644 index 0000000000..c1517436f3 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-compare.asset @@ -0,0 +1,87 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change Comparison (GFDL a1b and b1)" +local Identifier = "noaa-sos-models-ipcc_temp-compare" +local Description = [[ "The Intergovernmental Panel on Climate Change (IPCC) was +established by WMO and UNEP to assess scientific, technical and socio- economic +information relevant for the understanding of climate change, its potential impacts and +options for adaptation and mitigation. It is open to all members of the UN and of WMO." +- from www.ipcc.ch. In an effort to better visualize the future of climate change, the +IPCC releases assessment reports on the current state of the atmosphere and what the +future could hold. Models from various atmospheric and oceanic organizations are included +in these reports in order to establish a broad understanding of the science. Data from +three of the IPCC models following temperature change from 1870 - 2100 have been +formatted for Science On a Sphere. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-comparison-gfdl-a1b-and-b1/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layers_names = { + "2025_gfdl_a1b", + "2025_gfdl_b1", + "2050_gfdl_a1b", + "2050_gfdl_b1", + "2075_gfdl_a1b", + "2075_gfdl_b1", + "2100_gfdl_a1b", + "2100_gfdl_b1" +} + +local layers = {} +for i,v in ipairs(layers_names) do + local layer = { + Identifier = Identifier .. v, + Name = Name, + FilePath = syncedDirectory .. v .. ".png", + Description = Description + } + + table.insert(layers, layer) +end + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.2, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + + +asset.onInitialize(function () + for i,v in ipairs(layers) do + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", v) + end + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + for i,v in ipairs(layers) do + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", v) + end + openspace.removeScreenSpaceRenderable(colorbar) +end) + +for _,v in ipairs(layers) do + asset.export(v) +end + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-gfdl-a1b.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-gfdl-a1b.asset new file mode 100644 index 0000000000..9f360f9d9f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-gfdl-a1b.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (GFDL a1b) - 1870 - 2100" +local Identifier = "noaa-sos-models-ipcc_temp-gfdl-a1b" +local Description = [[ "The Intergovernmental Panel on Climate Change (IPCC) was +established by WMO and UNEP to assess scientific, technical and socio- economic +information relevant for the understanding of climate change, its potential impacts and +options for adaptation and mitigation. It is open to all members of the UN and of WMO." +- from www.ipcc.ch. In an effort to better visualize the future of climate change, the +IPCC releases assessment reports on the current state of the atmosphere and what the +future could hold. Models from various atmospheric and oceanic organizations are included +in these reports in order to establish a broad understanding of the science. Data from +three of the IPCC models following temperature change from 1870 - 2100 have been +formatted for Science On a Sphere. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-gfdl-a1b-1870-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.2, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4095.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-gfdl-b1.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-gfdl-b1.asset new file mode 100644 index 0000000000..a966cf6542 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-gfdl-b1.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (GFDL b1) - 1870 - 2100" +local Identifier = "noaa-sos-models-ipcc_temp-gfdl-b1" +local Description = [[ "The Intergovernmental Panel on Climate Change (IPCC) was +established by WMO and UNEP to assess scientific, technical and socio-economic +information relevant for the understanding of climate change, its potential impacts and +options for adaptation and mitigation. It is open to all members of the UN and of WMO." +- from www.ipcc.ch. In an effort to better visualize the future of climate change, the +IPCC releases assessment reports on the current state of the atmosphere and what the +future could hold. Models from various atmospheric and oceanic organizations are included +in these reports in order to establish a broad understanding of the science. Data from +three of the IPCC models following temperature change from 1870 - 2100 have been +formatted for Science On a Sphere. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-gfdl-b1-1870-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.2, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4095.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-had-a1b.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-had-a1b.asset new file mode 100644 index 0000000000..9dd5b87f3f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-had-a1b.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (Hadley a1b) - 1870 - 2100" +local Identifier = "noaa-sos-models-ipcc_temp-had-a1b" +local Description = [[ "The Intergovernmental Panel on Climate Change (IPCC) was +established by WMO and UNEP to assess scientific, technical and socio- economic +information relevant for the understanding of climate change, its potential impacts and +options for adaptation and mitigation. It is open to all members of the UN and of WMO." +- from www.ipcc.ch . In an effort to better visualize the future of climate change, the +IPCC releases assessment reports on the current state of the atmosphere and what the +future could hold. Models from various atmospheric and oceanic organizations are included +in these reports in order to establish a broad understanding of the science. Data from +three of the IPCC models following temperature change from 1870 - 2100 have been +formatted for Science On a Sphere. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-hadley-a1b-1870-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.2, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4095.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-had-b1.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-had-b1.asset new file mode 100644 index 0000000000..f6f156de66 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ipcc_temp-had-b1.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (Hadley b1) - 1870 - 2100" +local Identifier = "noaa-sos-models-ipcc_temp-had-b1" +local Description = [[ "The Intergovernmental Panel on Climate Change (IPCC) was +established by WMO and UNEP to assess scientific, technical and socio- economic +information relevant for the understanding of climate change, its potential impacts and +options for adaptation and mitigation. It is open to all members of the UN and of WMO." +- from www.ipcc.ch. In an effort to better visualize the future of climate change, the +IPCC releases assessment reports on the current state of the atmosphere and what the +future could hold. Models from various atmospheric and oceanic organizations are included +in these reports in order to establish a broad understanding of the science. Data from +three of the IPCC models following temperature change from 1870 - 2100 have been +formatted for Science On a Sphere. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-hadley-b1-1870-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.2, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4095.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga26.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga26.asset new file mode 100644 index 0000000000..3937970d3d --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga26.asset @@ -0,0 +1,70 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (RCP 2.6) - 2006 - 2100" +local Identifier = "noaa-sos-models-rcp-ga26" +local Description = [[ Climate models are used for a variety of purposes from the study +of dynamics of the weather and climate system to projections of future climate. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-rcp-26-2006-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "GA26.yearly.%Y.color.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "ANOM.colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga45.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga45.asset new file mode 100644 index 0000000000..15a2fc61d6 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga45.asset @@ -0,0 +1,70 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (RCP 4.5) - 2006 - 2100" +local Identifier = "noaa-sos-models-rcp-ga45" +local Description = [[ Climate models are used for a variety of purposes from the study +of dynamics of the weather and climate system to projections of future climate. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-rcp-45-2006-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "GA45.yearly.%Y.color.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "ANOM.colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga60.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga60.asset new file mode 100644 index 0000000000..c36dd41856 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga60.asset @@ -0,0 +1,70 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (RCP 6.0) - 2006 - 2100" +local Identifier = "noaa-sos-models-rcp-ga60" +local Description = [[ Climate models are used for a variety of purposes from the study +of dynamics of the weather and climate system to projections of future climate. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-rcp-60-2006-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "GA60.yearly.%Y.color.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "ANOM.colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga85.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga85.asset new file mode 100644 index 0000000000..1a87c5d5f8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/rcp-ga85.asset @@ -0,0 +1,70 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (RCP 8.5) - 2006 - 2100" +local Identifier = "noaa-sos-models-rcp-ga85" +local Description = [[ Climate models are used for a variety of purposes from the study +of dynamics of the weather and climate system to projections of future climate. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-rcp-85-2006-2100/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "GA85.yearly.%Y.color.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "ANOM.colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 1.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ukmet-a1b.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ukmet-a1b.asset new file mode 100644 index 0000000000..ed55a2abac --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ukmet-a1b.asset @@ -0,0 +1,78 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (Hadley a1b) - 1860 - 2099" +local Identifier = "noaa-sos-models-ukmet-a1b" +local Description = [[ cientists use computer climate models as a way to understand how +the climate has behaved in the past and how it is likely to change in the future. +Scientists use different scenarios to allow them to evaluate all the different future +possibilities for the climate. The United Kingdom Met Office Hadley Centre has created +two datasets for Science On a Sphere, using two different scenarios. The first scenario, +A1B-IMAGE, assumes a "business-as-usual" path forward in the future with continually +increasing carbon dioxide rates. In this scenario, CO2 rises to 774ppm by 2099 and the +global mean temperature increases by 4.41°C. The second scenario, E1, is an aggressive +mitigation scenario that includes reduced fossil fuel use with the goal of keeping global +mean warming below 2°C. In the E1 scenario, carbon dioxide increases to 435ppm by 2050 +and then drops to 421ppm by 2099, with a global mean temperature increase of 2.12°C. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-hadley-a1b-1860-2099/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "000_%Y_1_A1B_HQ.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2100.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ukmet-e1.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ukmet-e1.asset new file mode 100644 index 0000000000..d40e6dca9b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/models/ukmet-e1.asset @@ -0,0 +1,78 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Climate Model: Temperature Change (Hadley e1) - 1860 - 2099" +local Identifier = "noaa-sos-models-ukmet-e1" +local Description = [[ Scientists use computer climate models as a way to understand how +the climate has behaved in the past and how it is likely to change in the future. +Scientists use different scenarios to allow them to evaluate all the different future +possibilities for the climate. The United Kingdom Met Office Hadley Centre has created +two datasets for Science On a Sphere, using two different scenarios. The first scenario, +A1B-IMAGE, assumes a "business-as-usual" path forward in the future with continually +increasing carbon dioxide rates. In this scenario, CO2 rises to 774ppm by 2099 and the +global mean temperature increases by 4.41°C. The second scenario, E1, is an aggressive +mitigation scenario that includes reduced fossil fuel use with the goal of keeping global +mean warming below 2°C. In the E1 scenario, carbon dioxide increases to 435ppm by 2050 +and then drops to 421ppm by 2099, with a global mean temperature increase of 2.12°C. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/climate-model-temperature-change-hadley-e1-1860-2099/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "000_%Y_1_E1_HQ.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2100.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/2009_ice_animation.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/2009_ice_animation.asset new file mode 100644 index 0000000000..56b4d6b7fd --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/2009_ice_animation.asset @@ -0,0 +1,96 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Ice Animation - 2009" +local Identifier = "noaa-sos-oceans-2009_ice_animation" +local Description = [[ Sea ice is simply ocean water that has frozen. At least 15% of the +ocean is covered by sea ice some part of the year. This means that on average, sea ice +covers almost 10 million square miles (about 25 million square kilometers) of the Earth. +Sea ice concentrations are monitored closely by scientists because changing sea ice +concentrations can have a huge impact on the rest of the globe. Global warming is +amplified in polar regions. Because of this, monitoring changes in sea ice can be a good +indicator of climate change. The Global Snow and Ice Cover Map that is used in this +dataset is created from a combination of observations from NOAA Advanced Very High +Resolution Radiometer, Meteosat Second Generation Satellite Spectral Response +Characterisation, GOES Imager and Defense Meteorological Satellite Program Special Sensor +Microwave/Imager. The resolution is 2 km. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-ice-animation-2009/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar_2007_2009 = { + Identifier = Identifier .. "-2007_2009", + Name = Name .. " (2007-2009 Compare)", + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "2007-2009-Compare.png", + FaceCamera = false, + CartesianPosition = { -0.85, -0.5, -2.0 } +} + +local colorbar_2008_minimum = { + Identifier = Identifier .. "-2008_minimum", + Name = Name .. " (2008 Minimum)", + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "2008-Minimum-Label.png", + FaceCamera = false, + CartesianPosition = { 0.6, -0.4, -2.0 } +} + +local colorbar_2009_iceconcentration = { + Identifier = Identifier .. "-2009_iceconcentration", + Name = Name .. " (2009 Ice Concentration)", + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "2009-IceConcentration-Label.png", + FaceCamera = false, + CartesianPosition = { 0.6, -0.6, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar_2007_2009); + openspace.addScreenSpaceRenderable(colorbar_2008_minimum); + openspace.addScreenSpaceRenderable(colorbar_2009_iceconcentration); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar_2007_2009) + openspace.removeScreenSpaceRenderable(colorbar_2008_minimum) + openspace.removeScreenSpaceRenderable(colorbar_2009_iceconcentration) +end) + +asset.export(layer) +asset.export(colorbar_2007_2009) +asset.export(colorbar_2008_minimum) +asset.export(colorbar_2009_iceconcentration) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/6m_sea_level_rise-black.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/6m_sea_level_rise-black.asset new file mode 100644 index 0000000000..a020cee489 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/6m_sea_level_rise-black.asset @@ -0,0 +1,115 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Level Rise: Impact of 6 meter (black)" +local Identifier = "noaa-sos-oceans-6m_sea_level_rise-black" +local Description = [[ There are many questions surrounding climate change. One big +question is how the changing climate will affect the oceans. The sea level has been +steadily rising since 1900 at a rate of 1 to 2.5 millimeters per year. In fact, since +1992 new methods of satellite altimetry using the TOPEX/Poseidon satellite indicate a +rate of rise of 3 millimeters per year. The Fourth Assessment Report from the IPCC states +that "there is strong evidence that global sea level gradually rose in the 20th century +and is currently rising at an increased rate, after a period of little change between AD +0 and AD 1900. Sea level is projected to rise at an even greater rate in this century. " +- Fourth Assessment Report on Sea Level Rise Sea level can rise by two different +mechanisms with respect to climate change. The first is the expansion of the sea water as +the oceans warm due to an increasing global temperature. The second mechanism is the +melting of ice over land, which then adds water to the ocean. The IPCC Fourth Assessment +Report predicts that total global-average sea level rise from 1990 - 2100 will be 7 - 15 +inches for low emission scenarios and 10 - 23 inches for high emission scenarios. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-level-rise-impact-of-6-meter-black/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_0m = { + Identifier = Identifier .. "-0m", + Name = Name .. " (0m)", + FilePath = syncedDirectory .. "0m-new.png", + Description = Description +} + +local layer_1m = { + Identifier = Identifier .. "-1m", + Name = Name .. " (1m)", + FilePath = syncedDirectory .. "1m-new.png", + Description = Description +} + +local layer_2m = { + Identifier = Identifier .. "-2m", + Name = Name .. " (2m)", + FilePath = syncedDirectory .. "2m-new.png", + Description = Description +} + +local layer_3m = { + Identifier = Identifier .. "-3m", + Name = Name .. " (3m)", + FilePath = syncedDirectory .. "3m-new.png", + Description = Description +} + +local layer_4m = { + Identifier = Identifier .. "-4m", + Name = Name .. " (4m)", + FilePath = syncedDirectory .. "4m-new.png", + Description = Description +} + +local layer_5m = { + Identifier = Identifier .. "-5m", + Name = Name .. " (5m)", + FilePath = syncedDirectory .. "5m-new.png", + Description = Description +} + +local layer_6m = { + Identifier = Identifier .. "-6m", + Name = Name .. " (6m)", + FilePath = syncedDirectory .. "6m-new.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_0m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_1m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_2m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_3m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_4m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_5m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_6m) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_0m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_1m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_2m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_3m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_4m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_5m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_6m) +end) + +asset.export(layer_0m) +asset.export(layer_1m) +asset.export(layer_2m) +asset.export(layer_3m) +asset.export(layer_4m) +asset.export(layer_5m) +asset.export(layer_6m) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/6m_sea_level_rise-red.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/6m_sea_level_rise-red.asset new file mode 100644 index 0000000000..f98f0c3ebd --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/6m_sea_level_rise-red.asset @@ -0,0 +1,115 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Level Rise: Impact of 6 meter (red)" +local Identifier = "noaa-sos-oceans-6m_sea_level_rise-red" +local Description = [[ There are many questions surrounding climate change. One big +question is how the changing climate will affect the oceans. The sea level has been +steadily rising since 1900 at a rate of 1 to 2.5 millimeters per year. In fact, since +1992 new methods of satellite altimetry using the TOPEX/Poseidon satellite indicate a +rate of rise of 3 millimeters per year. The Fourth Assessment Report from the IPCC states +that "there is strong evidence that global sea level gradually rose in the 20th century +and is currently rising at an increased rate, after a period of little change between AD +0 and AD 1900. Sea level is projected to rise at an even greater rate in this century. " +- Fourth Assessment Report on Sea Level Rise Sea level can rise by two different +mechanisms with respect to climate change. The first is the expansion of the sea water as +the oceans warm due to an increasing global temperature. The second mechanism is the +melting of ice over land, which then adds water to the ocean. The IPCC Fourth Assessment +Report predicts that total global-average sea level rise from 1990 - 2100 will be 7 - +15 inches for low emission scenarios and 10 - 23 inches for high emission scenarios. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-level-rise-impact-of-6-meter-red/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_0m = { + Identifier = Identifier .. "-0m", + Name = Name .. " (0m)", + FilePath = syncedDirectory .. "0m-new.png", + Description = Description +} + +local layer_1m = { + Identifier = Identifier .. "-1m", + Name = Name .. " (1m)", + FilePath = syncedDirectory .. "1m-new.png", + Description = Description +} + +local layer_2m = { + Identifier = Identifier .. "-2m", + Name = Name .. " (2m)", + FilePath = syncedDirectory .. "2m-new.png", + Description = Description +} + +local layer_3m = { + Identifier = Identifier .. "-3m", + Name = Name .. " (3m)", + FilePath = syncedDirectory .. "3m-new.png", + Description = Description +} + +local layer_4m = { + Identifier = Identifier .. "-4m", + Name = Name .. " (4m)", + FilePath = syncedDirectory .. "4m-new.png", + Description = Description +} + +local layer_5m = { + Identifier = Identifier .. "-5m", + Name = Name .. " (5m)", + FilePath = syncedDirectory .. "5m-new.png", + Description = Description +} + +local layer_6m = { + Identifier = Identifier .. "-6m", + Name = Name .. " (6m)", + FilePath = syncedDirectory .. "6m-new.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_0m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_1m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_2m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_3m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_4m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_5m) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_6m) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_0m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_1m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_2m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_3m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_4m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_5m) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_6m) +end) + +asset.export(layer_0m) +asset.export(layer_1m) +asset.export(layer_2m) +asset.export(layer_3m) +asset.export(layer_4m) +asset.export(layer_5m) +asset.export(layer_6m) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/animal_tracking.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/animal_tracking.asset new file mode 100644 index 0000000000..7ca47aafb2 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/animal_tracking.asset @@ -0,0 +1,75 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Seal and Seabird Tracks: Pacific Ocean" +local Identifier = "noaa-sos-oceans-animal_tracking" +local Description = [[ "TOPP, Tagging of the Pacific Predators, began in 2000 as one of +17 projects of the Census of Marine Life, an ambitios 10-year, 80-nation endeavor to +assess and explain the diversity and abundance of life in the oceans, and where that life +has lived, is living, and will live." - From TOPP website . Out of this came the Tagging +of the Pacific Pelagics Project. Pelagaics are open ocean species such as sea birds and +elephant seals. Scientists put satellite tags on animals that collect information about +position, ocean temperature, pressure, salinity and more! This allows scientists to +better understand the migration patterns and habits of these animals. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/seal-and-seabird-tracks-pacific-ocean/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "TOPPMOVIE.%Y-%m-%d.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.jpg", + FaceCamera = false, + CartesianPosition = { 0.85, 0.0, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/argo_buoy_tracks.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/argo_buoy_tracks.asset new file mode 100644 index 0000000000..df5f378fec --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/argo_buoy_tracks.asset @@ -0,0 +1,71 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Float Tracks: Argo (buoy surface animation)" +local Identifier = "noaa-sos-oceans-argo_buoy_tracks" +local Description = [[ "Argo is a global array of 3,000 free-drifting profiling floats +that measures the temperature and salinity of the upper 2000 m of the ocean. This allows, +for the first time, continuous monitoring of the temperature, salinity, and velocity of +the upper ocean, with all data being relayed and made publicly available within hours +after collection." - from the Argo website. In Greek mythology, Jason sailed on the ship +Argo to capture a golden fleece. In the world of oceanography, Jason is a satellite +altimeter that allows scientists to measure the heights of the ocean surfaces. This +worldwide buoy program was named Argo because the data from the Jason project and from +this buoy project will be used together in computer models to help forecast ocean +climate. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/float-tracks-argo-buoy-surface-animation/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local buoy = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "argobuoy.jpg", + FaceCamera = false, + CartesianPosition = { 0.0, -0.25, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(buoy); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(buoy) +end) + +asset.export(layer) +asset.export(buoy) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/argo_buoy_waterfall.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/argo_buoy_waterfall.asset new file mode 100644 index 0000000000..b356232df7 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/argo_buoy_waterfall.asset @@ -0,0 +1,59 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Float Tracks: Argo (buoy depths animation)" +local Identifier = "noaa-sos-oceans-argo_buoy_waterfall" +local Description = [[ "Argo is a global array of 3,000 free-drifting profiling floats +that measures the temperature and salinity of the upper 2000 m of the ocean. This allows, +for the first time, continuous monitoring of the temperature, salinity, and velocity of +the upper ocean, with all data being relayed and made publicly available within hours +after collection." - from the Argo website. In Greek mythology, Jason sailed on the ship +Argo to capture a golden fleece. In the world of oceanography, Jason is a satellite +altimeter that allows scientists to measure the heights of the ocean surfaces. This +worldwide buoy program was named Argo because the data from the Jason project and from +this buoy project will be used together in computer models to help forecast ocean +climate. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/float-tracks-argo-buoy-depths-animation/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/atl_turtle.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/atl_turtle.asset new file mode 100644 index 0000000000..7b4b286cd1 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/atl_turtle.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Turtle Track: Atlantic Ocean" +local Identifier = "noaa-sos-oceans-atl_turtle" +local Description = [[ The Virginia Institute of Marine Science found a sub-adult +juvenile loggerhead (Caretta caretta) sea turtle stranded off of Deltaville, Virginia +along the western Chesapeake Bay in July 2004. The sea turtle, appropriately named Delta +for the location where s/he was found stranded, had a broken left flipper and a severe +head injury most likely from a collision with a boat propeller. Delta was transferred to +the Virginia Aquarium Stranding Program for rehabilitation. After many months of recovery +and head surgery, Delta was ready for release in November of 2004. Before release, Delta +was outfitted with a satellite tag by Kate Mansfield, then a Ph.D. student at the + Virginia Institute of Marine Science (College of William and Mary). This was done in + order to track Delta's movements and determine the success of the recovery. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-turtle-track-atlantic-ocean/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "turtle-migration-%y%j-%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/buoy_locations.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/buoy_locations.asset new file mode 100644 index 0000000000..af0ee015fe --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/buoy_locations.asset @@ -0,0 +1,60 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Buoy and Float Locations" +local Identifier = "noaa-sos-oceans-buoy_locations" +local Description = [[ Buoys and floats with the ability to collect data are scattered +through out the world's oceans in order to gain a better understanding of how the oceans +work and how they are changing. The data is being used for monitoring chemical levels in +the oceans, garnering accurate ocean temperatures and change in temperature, and many +other endless uses. Each dot on this visualization represents a buoy or float, and each +color indicates the use of the instrument. The buoy network is still expanding past what +can be seen on this visualization. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/buoy-and-float-locations/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.85, 0.0, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/catch_model.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/catch_model.asset new file mode 100644 index 0000000000..4d9927e081 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/catch_model.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Fisheries Catch Model - 2005 vs 2050" +local Identifier = "noaa-sos-oceans-catch_model" +local Description = [[ Climate change may pose a significant threat to fisheries +resources globally. This dataset shows percent change in global fisheries catch projected +to occur by 2050 due to climate change. Comparison is made with fisheries catch levels +reported in 2005. This study suggests that the distribution of major fish stocks will +shift because of climate change as ocean temperature changes. Areas in orange experience +reduced fisheries catch while areas in blue experience higher fisheries catch. The +general pattern is a poleward shift in potential fisheries catches - that is fish +distributions will shift to higher latitude areas (towards poles) and cooler waters as +ocean temperatures increase. The study also predicts species extinction to occur in areas +where species are most sensitive to temperature changes, resulting in reduced fisheries +catch in these areas. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/fisheries-catch-model-2005-vs-2050/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar-catch.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/chlorophyll_model.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/chlorophyll_model.asset new file mode 100644 index 0000000000..08850f73ba --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/chlorophyll_model.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Biosphere: Marine Chlorophyll Concentration Model" +local Identifier = "noaa-sos-oceans-chlorophyll_model" +local Description = [[ This animation shows the daily concentration of ocean surface +chlorophyll as simulated by the Parallel Ocean Program (POP) with an embedded marine +ecosystem model. While POP calculates the ocean currents, temperature and salinity, the +ecosystem model simulates the complex interaction of microscopic marine plants +(chlorophyll-containing phytoplankton), animals (zooplankton) and nutrients (such as +nitrogen, phosphorus and iron). In addition to constituting a major part of the global +food web, phytoplankton remove carbon dioxide from the atmosphere via photosynthesis much +like their counterparts on land. As conditions in the ocean and atmosphere change due to +increased carbon emissions, it is important to be able to use these kinds of models to +understand the possible effects on life in the ocean and the global carbon cycle. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/biosphere-marine-chlorophyll-concentration-model/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.3, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "3232.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/currents.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/currents.asset new file mode 100644 index 0000000000..e606d75f1b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/currents.asset @@ -0,0 +1,67 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ocean Circulation (labeled currents)" +local Identifier = "noaa-sos-oceans-currents" +local Description = [[ The ocean is not a still body of water. There is constant motion +in the ocean in the form of a global ocean conveyor belt due to thermohaline currents. +These currents are density driven, which are affected by both temperature and salinity. +Cold, salty water is dense and sinks to the bottom of the ocean while warm water is less +dense and rises to the surface. The "start" of the ocean conveyor belt is in the +Norwegian Sea. Warm water is transported to the Norwegian Sea by the Gulf Stream. The +warm water provides heat for the atmosphere in the northern latitudes that gets +particularly cold during the winter. This loss of heat to the atmosphere makes the water +cooler and denser, causing it to sink to the bottom of the ocean. As more warm water is +transported north, the cooler water sinks and moves south to make room for the incoming +warm water. This cold bottom water flows south of the equator all the way down to +Antarctica. Eventually, the cold bottom waters are able to warm and rise to the surface, +continuing the conveyor belt that encircles the global. It takes water almost 1000 years +to move through the whole conveyor belt. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ocean-circulation-labeled-currents/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.jpg", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/dart_buoy.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/dart_buoy.asset new file mode 100644 index 0000000000..69b488be73 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/dart_buoy.asset @@ -0,0 +1,50 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Buoy Locations (DART only)" +local Identifier = "noaa-sos-oceans-dart_buoy" +local Description = [[ After the horrific events of the Indian Ocean Tsunami on December +26, 2004, the need for a tsunami warning system was apparent. As part of the U.S. +National Tsunami Hazard Mitigation Program (NTHMP), the Deep Ocean Assessment and +Reporting of Tsunamis (DART) Project is an ongoing effort to maintain and improve the +capability for the early detection and real-time reporting of tsunamis in the open ocean. +Developed by NOAA's Pacific Marine Environmental Laboratory (PMEL) and operated by NOAA's +National Data Buoy Center (NDBC), DART is essential to fulfilling NOAA's national +responsibility for tsunami hazard mitigation and warnings. When completed in mid2007, the +DART Project will consist of 32 DART buoys. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/buoy-locations-dart-only/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "2000.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ecco2_sst-gray_land.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ecco2_sst-gray_land.asset new file mode 100644 index 0000000000..c649d8896a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ecco2_sst-gray_land.asset @@ -0,0 +1,79 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Surface Currents and Temperature (gray land)" +local Identifier = "noaa-sos-oceans-ecco2_sst-gray_land" +local Description = [[ To increase understanding and predictive capability for the +ocean's role in future climate change scenarios, the NASA Modeling, Analysis, and +Prediction (MAP) program has created a project called Estimating the Circulation and +Climate of the Ocean, Phase II (ECCO2): High-Resolution Global-Ocean and Sea-Ice Data +Synthesis. ECCO2 produces increasingly accurate syntheses of all available global-scale +ocean and sea-ice data at resolutions that start to resolve ocean eddies and other narrow +current systems, which transport heat, and other properties within the ocean. ECCO2 data +syntheses are created by using the available satellite and in-situ data in the +Massachusetts Institute of Technology General Circulation Model (MIT GCM). ECCO2 +simulates ocean flows at all depths, but only surface flows are used in this +visualization. The global sea surface current flows are colored by corresponding sea +surface temperatures. The sea surface temperature data is also from the ECCO2 model. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-surface-currents-and-temperature-gray-land/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-5.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-6.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-7.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ecco2_sst-veg_land.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ecco2_sst-veg_land.asset new file mode 100644 index 0000000000..e6eed7449b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ecco2_sst-veg_land.asset @@ -0,0 +1,81 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Surface Currents and Temperature (vegetation on land)" +local Identifier = "noaa-sos-oceans-ecco2_sst-veg_land" +local Description = [[ To increase understanding and predictive capability for the +ocean's role in future climate change scenarios, the NASA Modeling, Analysis, and +Prediction (MAP) program has created a project called Estimating the Circulation and +Climate of the Ocean, Phase II (ECCO2): High-Resolution Global-Ocean and Sea-Ice Data +Synthesis. ECCO2 produces increasingly accurate syntheses of all available global-scale +ocean and sea-ice data at resolutions that start to resolve ocean eddies and other narrow +current systems, which transport heat, and other properties within the ocean. ECCO2 data +syntheses are created by using the available satellite and in-situ data in the +Massachusetts Institute of Technology General Circulation Model (MIT GCM). ECCO2 +simulates ocean flows at all depths, but only surface flows are used in this +visualization. The global sea surface current flows are colored by corresponding sea +surface temperatures. The sea surface temperature data is also from the ECCO2 model. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-surface-currents-and-temperature-vegetation-on-land/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-5.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-6.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-7.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-8.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-9.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/elnino.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/elnino.asset new file mode 100644 index 0000000000..d013f867e0 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/elnino.asset @@ -0,0 +1,80 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "El Nino and La Nina Seasonal Impacts" +local Identifier = "noaa-sos-oceans-elnino" +local Description = [[ El Nino is the warming of the Pacific Ocean off of the western +coast of South America near Ecuador and Peru. It is called El Nino, or little boy in +Spanish, referring to the Christ child because the phenomena was originally noticed near +Christmas time. The opposite of El Nino is La Nina, or little girl in Spanish, which is a +cooling of the Pacific Ocean. Because the Earth system is interconnected, changes in the +ocean cause changes in the atmosphere. El Nino and La Nina events not only impact ocean +temperatures in the tropical Pacific, but also global weather. The occurrence of El Nino +and La Nina is not predictable, but on average occurs once every four year and usually +lasts for about 18 months. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/el-nino-and-la-nina-seasonal-impacts/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_elnino_summer = { + Identifier = Identifier .. "-elnino_summer", + Name = Name .. " (El Nino, summer)", + FilePath = syncedDirectory .. "elnino-summer-no-map-transparent-shapes.png", + Description = Description +} + +local layer_elnino_winter = { + Identifier = Identifier .. "-elnino_winter", + Name = Name .. " (El Nino, winter)", + FilePath = syncedDirectory .. "elnino-winter-no-map-transparent-shapes.png", + Description = Description +} + +local layer_lanina_summer = { + Identifier = Identifier .. "-lanina_summer", + Name = Name .. " (La Nina, summer)", + FilePath = syncedDirectory .. "lanina-summer-no-map-transparent-shapes.png", + Description = Description +} + +local layer_lanina_winter = { + Identifier = Identifier .. "-lanina_winter", + Name = Name .. " (La Nina, winter)", + FilePath = syncedDirectory .. "lanina-winter-no-map-transparent-shapes.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_elnino_summer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_elnino_winter) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_lanina_summer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_lanina_winter) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_elnino_summer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_elnino_winter) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_lanina_summer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_lanina_winter) +end) + +asset.export(layer_elnino_summer) +asset.export(layer_elnino_winter) +asset.export(layer_lanina_summer) +asset.export(layer_lanina_winter) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/gfdl_sst-black_background.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/gfdl_sst-black_background.asset new file mode 100644 index 0000000000..91245e549b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/gfdl_sst-black_background.asset @@ -0,0 +1,75 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Surface Temperature NOAA Model (black land)" +local Identifier = "noaa-sos-oceans-gfdl_sst-black_background" +local Description = [[ This dataset shows how the global ocean's surface water +temperatures vary over the course of few years. In addition to seeing the effects of the +seasonal cycle, the viewer can see how surface ocean currents and eddies transport heat +and water around the globe. The images were generated not from observations, but from a +state-of-the-art computer model of Earth's climate created at NOAA's Geophysical Fluid +Dynamics Laboratory (GFDL). ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-surface-temperature-noaa-model-black-land/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "GFDL_CM2p4_SSTctl_%Y.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.04, + CartesianPosition = { 0.85, 0.0, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048_png-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "2048_png-2.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/gfdl_sst-land_background.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/gfdl_sst-land_background.asset new file mode 100644 index 0000000000..d3393d6000 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/gfdl_sst-land_background.asset @@ -0,0 +1,77 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Surface Temperature NOAA Model (with vegetation)" +local Identifier = "noaa-sos-oceans-gfdl_sst-land_background" +local Description = [[ This dataset shows how the global ocean's surface water +temperatures vary over the course of few years. In addition to seeing the effects of the +seasonal cycle, the viewer can see how surface ocean currents and eddies transport heat +and water around the globe. The images were generated not from observations, but from a +state-of-the-art computer model of Earth's climate created at NOAA's Geophysical Fluid +Dynamics Laboratory (GFDL). ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-surface-temperature-noaa-model-with-vegetation/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "GFDL_CM2p4_SSTctl_%Y.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + Scale = 0.04, + CartesianPosition = { 0.85, 0.0, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048_png-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "2048_png-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "2048_png-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "2048_png-4.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/greenland_melt.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/greenland_melt.asset new file mode 100644 index 0000000000..c370da29d7 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/greenland_melt.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Greenland Melting Trends" +local Identifier = "noaa-sos-oceans-greenland_melt" +local Description = [[ Changes in the climate around Greenland can have a world-wide +effect. According to Dr. Konrad Steffen, professor of geography at the University of +Colorado and director of the NOAA joint institute CIRES, "For every degree (F) increase +in the mean annual temperature near Greenland, the rate of sea level rise increases by +about 10 percent." As Greenland warms, the ice that covers it melts and flows into the +oceans. In order to study melting trends on Greenland, researchers at NASA developed a +"melt index" which is the number of days that melting occurred multiplied by the melting +area. There is a steady increase in the melt index from 1988 through present. In fact, +in 2006 Greenland experienced more days of melting snow and at higher altitudes than the +average over the past 18 years that have been studied. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/greenland-melting-trends/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "dav19_%Y.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/japan_tsunami.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/japan_tsunami.asset new file mode 100644 index 0000000000..aa5d96e225 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/japan_tsunami.asset @@ -0,0 +1,48 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Japan Tsunami: Wave Heights - March 11, 2011" +local Identifier = "noaa-sos-oceans-japan_tsunami" +local Description = [[ On March 11, 2011 at 2:45 local time, a 9.0 magnitude earthquake +occurred 81 miles (130 km) off the east coast of Sendai, Japan, triggering a massive +tsunami. It is estimated that the initial tsunami wave took 10 to 30 minutes to make its +first landfall. Forecasted wave heights were up to 33 ft (10 m) and there were many +reports of tsunami waves three stories high in parts of Japan. Across the Pacific Ocean, +many countries issued evacuations along the coasts because of the predicted tsunami +waves. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/japan-tsunami-wave-heights-march-11-2011/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/japan_tsunami_waves.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/japan_tsunami_waves.asset new file mode 100644 index 0000000000..d475c106d7 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/japan_tsunami_waves.asset @@ -0,0 +1,62 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Japan Tsunami: Wave Propagation - March 11, 2011" +local Identifier = "noaa-sos-oceans-japan_tsunami_waves" +local Description = [[ On March 11, 2011 at 2:45 p.m. local time, a 9.0 magnitude +earthquake occurred 81 miles (130 km) off the east coast of Sendai, Honshu, Japan, +triggering a massive tsunami. A tsunami is a series of ocean waves generated by sudden +displacements in the sea floor, landslides, or volcanic activity. In the deep ocean, the +tsunami wave may only be a few inches high. The tsunami wave may come gently ashore or +may increase in height to become a fast moving wall of turbulent water several meters +high. Forecasted wave heights in Japan were up to 66 ft (20 m) and there were many +reports of tsunami waves three stories high in parts of Japan. Across the Pacific Ocean, +many countries issued evacuations along the coasts because of the predicted tsunami +waves. Propagation of the tsunami was computed with the NOAA forecast method using the +MOST (Method of Splitting Tsunami) model with the tsunami source inferred from DART. +Approximately 25 minutes after the earthquake, the tsunami was first recorded by one of +the DART buoys. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/japan-tsunami-wave-propagation-march-11-2011/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/loggerheadseaturtletracks.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/loggerheadseaturtletracks.asset new file mode 100644 index 0000000000..705944d456 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/loggerheadseaturtletracks.asset @@ -0,0 +1,59 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Loggerhead Sea Turtle Tracks" +local Identifier = "noaa-sos-oceans-loggerheadseaturtletracks" +local Description = [[ Using satellite transmitting tags on wildlife allows scientists to +monitor the behaviors of the wildlife in their natural habitats. This dataset contains +the tracks of juvenile loggerhead sea turtles that were tagged and monitored. Some of the +turtles were caught on commercial fishing vessels north of Hawaii and the other turtles +were raised in the hatchery at the Port of Nagoya Aquarium in Japan. After being tagged +the turtles were released at various at-sea locations. The data used in this dataset is +from 1997 through 2006. The animation represents a daily climatology showing the turtle +daily movement, independent of the year. The background is a daily climatology of +satellite remotely-sensed sea surface temperature. The size of the turtle graphic is +proportional to the turtle length. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/loggerhead-sea-turtle-tracks/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/marine_impacts.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/marine_impacts.asset new file mode 100644 index 0000000000..a2f63b138b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/marine_impacts.asset @@ -0,0 +1,76 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Human Influences on Marine Ecosystems" +local Identifier = "noaa-sos-oceans-marine_impacts" +local Description = [[ The ocean has an impact on the lives of everyone on Earth, even +those who don't live on the coasts. It has been estimated that one in every six jobs in +the United States is marine-related and that 50% of all species on Earth are supported by +the ocean. Because of this, it is important to protect and preserve the oceans. Humans +however have been shown to have a negative impact on the oceans. A report issued in +February 2008 found that 40% of the world's oceans are heavily impacted by human +activities, such as overfishing and pollution. In all 17 different human activities were +examined in the report, including fertilizer run-off, commercial shipping, and indirect +activities such as changes in sea surface temperature, UV radiation, and ocean +acidification. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/human-influences-on-marine-ecosystems/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "5000.png", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +local colorbar_human_impact = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "HumanImpactColorbar.png", + Enabled = false, + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); + openspace.addScreenSpaceRenderable(colorbar_human_impact); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) + openspace.removeScreenSpaceRenderable(colorbar_human_impact) +end) + +asset.export(layer) +asset.export(colorbar) +asset.export(colorbar_human_impact) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/marine_life_tracking.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/marine_life_tracking.asset new file mode 100644 index 0000000000..82e101f63c --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/marine_life_tracking.asset @@ -0,0 +1,60 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Marine Life Tracks: Pacific Ocean" +local Identifier = "noaa-sos-oceans-marine_life_tracking" +local Description = [[ This dataset contains the locations of a leatherback turtle, a +northern elephant seal, and two white sharks for each day over the course of several +months. The data used was taken from topp.org (TOPP stands for Tagging of Pelagic +Predators), a site that tracks marine animals in an attempt to learn more about them. +TOPP's goal is to protect marine wildlife from overfishing, climate change, and various +other threats. The purpose of this dataset is to serve as an example of a hand-made +animal tracking dataset. For a more extensive dataset using data from TOPP, go here. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/marine-life-tracks-pacific-ocean/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "2048.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/mexico_turtles_947293.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/mexico_turtles_947293.asset new file mode 100644 index 0000000000..7ccfdf50ed --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/mexico_turtles_947293.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Turtle Track: Gulf of Mexico (94-7293)" +local Identifier = "noaa-sos-oceans-mexico_turtles_947293" +local Description = [[ Three Kemp's ridley sea turtles were captured near the Calcasieu +Pass jetties at Cameron, Louisiana and tracked by National Oceanographic and Atmospheric +Administration's (NOAA) National Marine Fisheries Service Galveston Laboratory. Two adult +females (94-7293 and 94-7295) were captured on 11 August 1994 in a turtle entanglement +net by Texas A&M University biologists. Turtle 94-7293's shell measured 65.6 cm in length +and 64.9 cm in width, and weighed 84.4 pounds (38.3 kg). Turtle 94-7295's shell measured +65.8 cm in length and 64.9 cm in width, and weighed 93.9 pounds (42.6 kg). Both were +fitted with Telonics ST-10 satellite transmitters and released within 2 days at the +capture site. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-turtle-track-gulf-of-mexico-94-7293/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "NOAA-turtle-S947293-%y%j-%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/mexico_turtles_958002.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/mexico_turtles_958002.asset new file mode 100644 index 0000000000..200c480009 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/mexico_turtles_958002.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Turtle Track: Gulf of Mexico (94-8002)" +local Identifier = "noaa-sos-oceans-mexico_turtles_958002" +local Description = [[ These three Kemp's ridley sea turtles were captured near the +Calcasieu Pass jetties at Cameron, Louisiana and tracked by National Oceanographic and +Atmospheric Administration's (NOAA) National Marine Fisheries Service Galveston +Laboratory. Two adult females (94-7293 and 94-7295) were captured on 11 August 1994 in a +turtle entanglement net by Texas A&M University biologists. Turtle 94-7293's shell +measured 65.6 cm in length and 64.9 cm in width, and weighed 84.4 pounds (38.3 kg). +Turtle 94-7295's shell measured 65.8 cm in length and 64.9 cm in width, and weighed 93.9 +pounds (42.6 kg). Both were fitted with Telonics ST-10 satellite transmitters and +released within 2 days at the capture site. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-turtle-track-gulf-of-mexico-94-8002/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "NOAA-turtle-S958002-%y%j-%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/modis_sst.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/modis_sst.asset new file mode 100644 index 0000000000..b495283c22 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/modis_sst.asset @@ -0,0 +1,57 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Surface Temperature Observations - 2002 - 2006" +local Identifier = "noaa-sos-oceans-modis_sst" +local Description = [[ Sea surface temperature, much like the atmosphere's temperature, +is constantly changing. The interaction between the ocean and the atmosphere is one that +scientists are constantly researching, especially in light of climate change. Water warms +up and cools down at a slower rate than air, so diurnal variations (heating during the +day and cooling during the night) seen in the atmosphere are hard to observe in the +ocean. The seasons, however, can be seen as the warmest water near the equator expands +toward the United States during the summer months and withdraws again during the winter +months. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-surface-temperature-observations-2002-2006/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/nasa_speed.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/nasa_speed.asset new file mode 100644 index 0000000000..b0d8dd4d8e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/nasa_speed.asset @@ -0,0 +1,57 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Surface Currents" +local Identifier = "noaa-sos-oceans-nasa_speed" +local Description = [[ The water in the ocean is constantly moving. Ocean currents are +typically driven by surface wind and can have a huge impact on climate. Northwest Europe +is moderately temperate considering its latitude because the Gulf Stream off of the +eastern coast of the United States transports warm water north to those areas. In fact, +the Atlantic Ocean along the U.S. coast is much warmer than the Pacific Ocean along the +U.S. coast because of the warm water transported in the Gulf Stream. In this +visualization, a model created by NASA, the color variations denote speed. The lighter +green areas are moving faster than the blue areas. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-surface-currents/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4000.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/nasa_sst.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/nasa_sst.asset new file mode 100644 index 0000000000..14aee5b2c3 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/nasa_sst.asset @@ -0,0 +1,55 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Surface Temperature Model" +local Identifier = "noaa-sos-oceans-nasa_sst" +local Description = [[ " Sea surface temperature plays a vital role in the behavior of +the Earth's climate and weather. It is both a causal factor and a resulting effect of +complex interactions of natural forces on Earth. NASA not only measures sea surface +temperature from space using powerful scientific instruments, but it also studies +temperature processes in advanced computer models." -Gretchen Cook-Anderson, Goddard +Space Flight Center. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-surface-temperature-model/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4000.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_acid-co2_flux.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_acid-co2_flux.asset new file mode 100644 index 0000000000..c4a29120cb --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_acid-co2_flux.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ocean-Atmosphere CO2 Exchange" +local Identifier = "noaa-sos-oceans-ocean_acid-co2_flux" +local Description = [[ When carbon dioxide CO2 is released into the atmosphere from the +burning of fossil fuels, approximately 50% remains in the atmosphere, while 25% is +absorbed by land plants and trees, and the other 25% is absorbed into certain areas of +the ocean. In other areas of the ocean, where the concentration of CO2 is higher in the +water than in atmosphere above, CO2 is released to the atmosphere. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ocean-atmosphere-co2-exchange/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "CO2F.yearly.%Y.color.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "images.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_acid-ph.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_acid-ph.asset new file mode 100644 index 0000000000..c6a0939d88 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_acid-ph.asset @@ -0,0 +1,75 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ocean Acidification: Surface pH" +local Identifier = "noaa-sos-oceans-ocean_acid-ph" +local Description = [[ Ranging from 0 to 14, pH is a scale that describes the acid and +base properties of a solution. The ocean's surface has an average pH of around 8.1, which +is slightly basic. The pH of the open ocean is relatively stable in both time and space; +however, the uptake of CO2 by the ocean has caused measurable changes in seawater. The +imagery here shows the output of a computer model that makes predictions of how the pH +will change over time based on best estimates of likely CO2 emissions (RCP 8.5) used in +the United Nations Intergovernmental Panel on Climate Change's AR5 assessment. The +dataset starts in 1861 and runs through 2100. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ocean-acidification-surface-ph/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "ACID.yearly.%Y.color.png" + }, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "images.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_acid-saturation.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_acid-saturation.asset new file mode 100644 index 0000000000..3138c61ec2 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_acid-saturation.asset @@ -0,0 +1,90 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ocean Acidification: Saturation State" +local Identifier = "noaa-sos-oceans-ocean_acid-saturation" +local Description = [[ Ocean acidification is an often overlooked consequence of +humankind's release of carbon dioxide emissions into the atmosphere from fossil fuel +burning. Excess carbon dioxide enters the ocean and reacts with water to form carbonic +acid, which decreases ocean pH (i.e., makes seawater less basic), and lowers carbonate +ion concentrations. Organisms such as corals, clams, oysters, and some plankton use +carbonate ions to create their shells and skeletons. Decreases in carbonate ion +concentration will make it difficult for these creatures to form hard structures, +particularly for juveniles. Ocean acidification may cause some organisms to die, +reproduce less successfully, or leave an area. Other organisms such as seagrass and some +plankton species may do better in oceans affected by ocean acidification because they use +carbon dioxide to photosynthesize, but do not require carbonate ions to survive. Ocean +ecosystem diversity and ecosystem services may therefore change dramatically from ocean +acidification. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ocean-acidification-saturation-state/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "ARAG.yearly.%Y.color.png" + }, + Description = Description +} + +local reefs = { + Identifier = Identifier .. "-reefs", + Name = Name .. " (Reefs)", + FilePath = syncedDirectory .. "reefs.png", + Description = Description, +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "images.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", reefs) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", reefs) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(reefs) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_depths_temp.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_depths_temp.asset new file mode 100644 index 0000000000..a7222d6a56 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_depths_temp.asset @@ -0,0 +1,83 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ocean Temperature at Depth - Seasonal" +local Identifier = "noaa-sos-oceans-ocean_depths_temp" +local Description = [[ Though satellites provide highly detailed analyses of the +temperature of the ocean surface, they cannot measure temperatures below the first 1 mm +of water. For that deeper understanding, NOAA relies on thousands of buoys, ships, +undersea gliders and other devices to measure temperatures at depth. The measurements are +consolidated every few years by the National Oceanographic Data Center into a product +known as the World Ocean Atlas. The measurements shown here go as deep as 5,000 m — far +deeper than many places in the ocean — which is why there is a lack of data (black areas) +in some of the deeper imagery. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ocean-temperature-at-depth-seasonal/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" +local imagesByDepthDestination = syncedDirectory .. "bydepth" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local layerByDepth = { + Identifier = Identifier .. "-bydepth", + Name = Name .. " (by Depth)", + Type = "ImageSequenceTileLayer", + FolderPath = imagesByDepthDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + if not openspace.directoryExists(imagesByDepthDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096_by_depth.zip", imagesByDepthDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_drain-gray.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_drain-gray.asset new file mode 100644 index 0000000000..695f1dead5 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ocean_drain-gray.asset @@ -0,0 +1,55 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ocean Drain (with gray bathymetry)" +local Identifier = "noaa-sos-oceans-ocean_drain-gray" +local Description = [[ Beneath the sea surface is an amazing sea floor that contains +mountain ranges, trenches and plains. The ocean covers 71% of the Earth's surface, has an +area of 139,400,000 square miles and an average depth of 2.3 miles. Due to this vast +size, only a few percent the sea floor has been mapped by ships. Maps of the sea floor +are created by combining soundings from ships, sonar scans from ships, and gravity +anomalies in the sea surface detected by satellites. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ocean-drain-with-gray-bathymetry/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/pac_turtle.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/pac_turtle.asset new file mode 100644 index 0000000000..c2d428e604 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/pac_turtle.asset @@ -0,0 +1,63 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Turtle Track: Pacific Ocean" +local Identifier = "noaa-sos-oceans-pac_turtle" +local Description = [[ It is common for scientists to tag animals and release them into +their natural environment in order to study their behaviors and migration. Adelita, a +loggerhead (Caretta caretta) sea turtle, was originally captured off of Baja, Mexico as +an 8-pound juvenile. After being raised in captivity, Adelita was released on August 10, +1996 from Santa Rosaliita, a small town in Mexico on the Baja Peninsula. Adelita weighed +223 pounds when she was released. Before she was released, Wallace J. Nichols, then a + Ph.D. student at the University of Arizona, outfitted Adelita with a satellite tag. The + tag transmitted a signal that allowed Adelita's track to be monitored post-release. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-turtle-track-pacific-ocean/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "pac-turtle-migration-%y%j-%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/phytoplankton.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/phytoplankton.asset new file mode 100644 index 0000000000..ca35f0a57c --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/phytoplankton.asset @@ -0,0 +1,79 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Phytoplankton Model" +local Identifier = "noaa-sos-oceans-phytoplankton" +local Description = [[ Phytoplankton are the base of the marine food web and are crucial +players in the Earth's carbon cycle. They are also incredibly diverse. This visualization +shows dominant phytoplankton types from 1994-1998 generated by the Darwin Project using a +high-resolution ocean and ecosystem model. The model contains flow fields from 1994-1999 +(generated by the ECCO2 model), inorganic nutrients, 78 species of phytoplankton, +zooplankton, as well as particulate and dissolved organic matter. Colors represent the +most dominant type of phytoplankton at a given location based on their size and ability +to uptake nutrients. Red represents diatoms (big phytoplankton, which need silica), +yellow represents flagellates (other big phytoplankton), green represents prochlorococcus +(small phytoplankton that cannot use nitrate), and cyan represents synechococcus (other +small phytoplankton). Opacity indicates concentration of the phytoplankton as carbon +biomass. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/phytoplankton-model/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.8, 0.0, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-5.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-6.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-7.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/pr_tsunami.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/pr_tsunami.asset new file mode 100644 index 0000000000..4df07ef217 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/pr_tsunami.asset @@ -0,0 +1,58 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Puerto Rico Hypothetical Tsunami" +local Identifier = "noaa-sos-oceans-pr_tsunami" +local Description = [[ After the devastation of the Indian Ocean Tsunami on December 26, +2004, much attention has been given to tsunami research. The National Center for Tsunami +Research, which is part of the Pacific Marine Environmental Laboratory, spearheaded the +research efforts in the United States. A tsunami is a series of waves generated when a +body of water, such as the ocean, is rapidly displaced on a massive scale. This is most +likely to happen where the tectonic plates meet and create trenches. An earthquake in +these regions can cause one plate to subduct under another and displace huge amounts of +water. One location that has garnered much attention from scientists is the Puerto Rico +Trench, the deepest location in the Atlantic Ocean. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/puerto-rico-hypothetical-tsunami/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/reefs_risk.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/reefs_risk.asset new file mode 100644 index 0000000000..10adb3332f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/reefs_risk.asset @@ -0,0 +1,91 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Coral Reef Risk Outlook" +local Identifier = "noaa-sos-oceans-reefs_risk" +local Description = [[ From tourism to disease prevention, it's clear that reefs offer +much more than recreation. According to the newly released Reefs at Risk Revisited +report, coral reefs: + +Support more than 275 million people worldwide. +Protect coastlines in more than 100 countries - helping defend against storms and erosion. +Accounts for 15% of gross domestic product in more than 20 countries. +Hold the potential to fight disease - including treatments for cancer, HIV, malaria, and +other diseases. + +Yet coral reefs today face serious threats. The new report finds that approximately 75% +of world's coral reefs are currently threatened by local and global pressures. Local +pressures pose the most immediate threat - especially from overfishing and destructive +fishing, which is particularly widespread in Southeast Asia. Global threats from climate +change and alterations in ocean chemistry (i.e. ocean acidification) are compounding the +pressures on reefs. Climate change is causing ocean temperatures to rise, which, in turn, +is leading to wide-spread coral bleaching. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/coral-reef-risk-outlook/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_2012 = { + Identifier = Identifier .. "-2012", + Name = Name .. " (2012)", + FilePath = syncedDirectory .. "2012_2048.jpg", + Description = Description +} + +local layer_2030 = { + Identifier = Identifier .. "-2030", + Name = Name .. " (2030)", + FilePath = syncedDirectory .. "2030_2048.jpg", + Description = Description +} + +local layer_2050 = { + Identifier = Identifier .. "-2050", + Name = Name .. " (2050)", + FilePath = syncedDirectory .. "2050_2048.jpg", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "coral_legend.png", + FaceCamera = false, + Scale = 0.3, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_2012) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_2030) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_2050) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_2012) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_2030) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_2050) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer_2012) +asset.export(layer_2030) +asset.export(layer_2050) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sea_level.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sea_level.asset new file mode 100644 index 0000000000..4e7aa0eaae --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sea_level.asset @@ -0,0 +1,63 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Level Rise: 10m Increments" +local Identifier = "noaa-sos-oceans-sea_level" +local Description = [[ There are many questions surrounding climate change. One big +question is how the changing climate will affect the oceans. The sea level has been +steadily rising since 1900 at a rate of 1 to 2.5 millimeters per year. In fact, since +1992 new methods of satellite altimetry using the TOPEX/Poseidon satellite indicate a +rate of rise of 3 millimeters per year. The Fourth Assessment Report from the IPCC states +that "there is strong evidence that global sea level gradually rose in the 20th century +and is currently rising at an increased rate, after a period of little change between AD +0 and AD 1900. Sea level is projected to rise at an even greater rate in this century. " +- Fourth Assessment Report on Sea Level Rise Sea level can rise by two different +mechanisms with respect to climate change. The first is the expansion of the sea water as +the oceans warm due to an increasing global temperature. The second mechanism is the +melting of ice over land, which then adds water to the ocean. The IPCC Fourth Assessment +Report predicts that total global-average sea level rise from 1990 - 2100 will be 7 - 15 +inches for low emission scenarios and 10 - 23 inches for high emission scenarios. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-level-rise-10m-increments/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4000.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sea_level_trends.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sea_level_trends.asset new file mode 100644 index 0000000000..d9c8e89878 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sea_level_trends.asset @@ -0,0 +1,69 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Level Trends - 1993 - 2012" +local Identifier = "noaa-sos-oceans-sea_level_trends" +local Description = [[ There are many questions surrounding climate change. One big +question is how the changing climate will affect the oceans. The sea level has been +steadily rising since 1900 at a rate of 1 to 2.5 millimeters per year. In fact, since +1992 new methods of satellite altimetry using the TOPEX/Poseidon satellite indicate a +rate of rise of 3 millimeters per year. The Fourth Assessment Report from the IPCC states +that "there is strong evidence that global sea level gradually rose in the 20th century +and is currently rising at an increased rate, after a period of little change between AD +0 and AD 1900. Sea level is projected to rise at an even greater rate in this century. " +- Fourth Assessment Report on Sea Level Rise Sea level can rise by two different +mechanisms with respect to climate change. The first is the expansion of the sea water as +the oceans warm due to an increasing global temperature. The second mechanism is the +melting of ice over land, which then adds water to the ocean. The IPCC Fourth Assessment +Report predicts that total global-average sea level rise from 1990 - 2100 will be 7 - 15 +inches (177 - 381 mm) for low emission scenarios and 10 - 23 inches (254 - 584 mm) for +high emission scenarios. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-level-trends-1993-2012/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sea_surface_height_anomaly.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sea_surface_height_anomaly.asset new file mode 100644 index 0000000000..1187e8c627 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sea_surface_height_anomaly.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Surface Height Anomaly" +local Identifier = "noaa-sos-oceans-sea_surface_height_anomaly" +local Description = [[ To gather long-term information about the world's oceans and +currents, satellite instruments make extremely precise measurements of the height of the +ocean surface above the center of the Earth, a measurement commonly called sea level. +These data are combined to reveal the ocean surface topography (not to be confused with +bathymetry, which is the relief on the bottom of the ocean). Sea surface height is of +interest to scientists because it reveals information about how much heat is stored in +the ocean. Warm water is less dense than cold water, so higher areas tend to be warmer +than lower areas. Radar altimeter instruments onboard spacecraft have been continuously +collecting sea surface height data over the global ocean for almost two decades. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-surface-height-anomaly/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + BackgroundColor = { 1.0, 1.0, 1.0, 1.0 }, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "8192-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "8192-2.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "8192-3.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seaice_monthly.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seaice_monthly.asset new file mode 100644 index 0000000000..7c00ef3d7e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seaice_monthly.asset @@ -0,0 +1,63 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Ice Extent (Arctic only) - 1850 - Present" +local Identifier = "noaa-sos-oceans-seaice_monthly" +local Description = [[ Arctic sea ice extent is declining at a rapid rate; the extent in +September, 2019 was about 30% lower than the average September extent over 1980-2010. Sea +ice in both hemispheres can be easily monitored now, with data from a series of +satellites that have been operating since the late 1970s. Every year, NOAA publishes the +Arctic Report Card. In it, scientists summarize how sea ice, along with snow cover, +tundra greenness, marine algae, caribou, and other indicators of change are responding to +warming that is taking place about two times faster in the Arctic than elsewhere on the +planet. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-ice-extent-arctic-only-1850-present/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "sibt1850_seaice_extent_%Y%M%H_sos.png" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seaice_radiation.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seaice_radiation.asset new file mode 100644 index 0000000000..2b373ea854 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seaice_radiation.asset @@ -0,0 +1,57 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Ice: Fraction and Solar Radiation Absorption" +local Identifier = "noaa-sos-oceans-seaice_radiation" +local Description = [[ While sea ice is mostly white and reflects the sun's rays, ocean +water is dark and absorbs the sun's energy at a higher rate. A decline in the region's +albedo - its reflectivity, in effect - has been a key concern among scientists since the +summer Arctic sea ice cover began shrinking in recent decades. As more of the sun's +energy is absorbed by the climate system, it enhances ongoing warming in the region, +which is more pronounced than anywhere else on the planet. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-ice-fraction-and-solar-radiation-absorption/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_fraction = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "sea_ice_fraction.png", + Description = Description +} + +local layer_solar = { + Identifier = Identifier .. "-solar", + Name = Name .. " (Solar)", + FilePath = syncedDirectory .. "solar.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_fraction) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_solar) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_fraction) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_solar) +end) + +asset.export(layer_fraction) +asset.export(layer_solar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seawifs-land_background.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seawifs-land_background.asset new file mode 100644 index 0000000000..b0a7cc7c73 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seawifs-land_background.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Biosphere: Marine Chlorophyll Concentration" +local Identifier = "noaa-sos-oceans-seawifs-land_background" +local Description = [[ The term biosphere refers to the regions of the surface, +atmosphere, and hydrosphere of the earth occupied by living organisms.This dataset shows +quantity of marine plant-life as it changes throughout the seasons of the year. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/biosphere-marine-chlorophyll-concentration/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seawifs-no_holes.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seawifs-no_holes.asset new file mode 100644 index 0000000000..af079a3d04 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seawifs-no_holes.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Biosphere: Marine Chlorophyll Concentration and Land Vegetation (with CO2 labels)" +local Identifier = "noaa-sos-oceans-seawifs-no_holes" +local Description = [[ The term biosphere refers to the regions of the surface, +atmosphere, and hydrosphere of the earth occupied by living organisms.This dataset shows +quantity of marine and land-based plant-life as it changes throughout the seasons of the +year. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/biosphere-marine-chlorophyll-concentration-and-land-vegetation-with-co2-labels/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seawifs-polar_holes.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seawifs-polar_holes.asset new file mode 100644 index 0000000000..4edbacf3d5 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/seawifs-polar_holes.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Biosphere: Marine Chlorophyll Concentration and Land Vegetation" +local Identifier = "noaa-sos-oceans-seawifs-polar_holes" +local Description = [[ The term biosphere refers to the regions of the surface, +atmosphere, and hydrosphere of the earth occupied by living organisms.This dataset shows +quantity of marine and land-based plant-life as it changes throughout the seasons of the +year. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/biosphere-marine-chlorophyll-concentration-and-land-vegetation/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4320_png.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/shark.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/shark.asset new file mode 100644 index 0000000000..ee2886ddec --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/shark.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Great White Shark Track" +local Identifier = "noaa-sos-oceans-shark" +local Description = [[ Before satellite tagging technology became feasible, it was +thought that great white sharks (Carcharodon carcharias), spent most of their time close +to the coasts feeding on seals and sea lions. With the advent of satellite tagging +technology, many new behaviors of the great white shark have been discovered. By tagging +a shark with a satellite transmitter, scientists are able to track the movement of the +shark for extended periods. In 2001, a shark tagged off of the coast of California was +tracked all the way to Hawaii, 3,800 km (2,280 miles) away. The shark spent the winter +there before returning to waters closer to California. Several other sharks tagged off +the coast of California also were tracked traveling great distances from California. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/great-white-shark-track/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "shark-migration-%y%j-%H%M.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ship_tracks-mosaic.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ship_tracks-mosaic.asset new file mode 100644 index 0000000000..5563c5c108 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ship_tracks-mosaic.asset @@ -0,0 +1,68 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ship Multibeam Bathymetric Surveys Mosaic" +local Identifier = "noaa-sos-oceans-ship_tracks-mosaic" +local Description = [[ Beneath the sea surface is an amazing sea floor that contains +mountain ranges, trenches and plains. The ocean covers 71% of the Earth's surface, has an +area of 139,400,000 square miles and an average depth of 2.3 miles. The first +measurements of the sea floor were made with weighted lines that were lowered until they +hit the bottom. Vast improvements have been made since that time, yet the majority of the +sea floor remains unmapped. It's important to know the bathymetry, or the sea floor +terrain, of the ocean for navigation and exploration purposes. Today, bathymetric maps +are created using data from multibeam echosounders. A multibeam echosounder is a device +that is mounted to the hull of a ship to determine the depth of water and the nature of +the seabed. The system emits a broad acoustic pulse from under a ship and then records +how long it takes the beams to return to the ship after bouncing off the sea floor. If +the speed of sound in water is known for the full water column, then the depth of the sea +floor can be calculated from the travel time. Multiple beams are sent out in a fan shape +to collect depth information in a swath beneath the boat as it travels through the +ocean. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ship-multibeam-bathymetric-surveys-mosaic/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + CartesianPosition = { 0.85, 0.0, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ship_tracks-tracks.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ship_tracks-tracks.asset new file mode 100644 index 0000000000..915231716f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/ship_tracks-tracks.asset @@ -0,0 +1,68 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ship Tracklines of Multibeam Bathymetric Surveys" +local Identifier = "noaa-sos-oceans-ship_tracks-tracks" +local Description = [[ Beneath the sea surface is an amazing sea floor that contains +mountain ranges, trenches and plains. The ocean covers 71% of the Earth's surface, has an +area of 139,400,000 square miles and an average depth of 2.3 miles. The first +measurements of the sea floor were made with weighted lines that were lowered until they +hit the bottom. Vast improvements have been made since that time, yet the majority of the +sea floor remains unmapped. It's important to know the bathymetry, or the sea floor +terrain, of the ocean for navigation and exploration purposes. Today, bathymetric maps +are created using data from multibeam echosounders. A multibeam echosounder is a device +that is mounted to the hull of a ship to determine the depth of water and the nature of +the seabed. The system emits a broad acoustic pulse from under a ship and then records +how long it takes the beams to return to the ship after bouncing off the sea floor. If +the speed of sound in water is known for the full water column, then the depth of the sea +floor can be calculated from the travel time. Multiple beams are sent out in a fan +shape to collect depth information in a swath beneath the boat as it travels through the +ocean. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ship-tracklines-of-multibeam-bathymetric-surveys/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + CartesianPosition = { 0.85, 0.0, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer) +asset.export(legend) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/shipping.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/shipping.asset new file mode 100644 index 0000000000..61e0b05366 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/shipping.asset @@ -0,0 +1,51 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Shipping Routes (with labels) - One Year" +local Identifier = "noaa-sos-oceans-shipping" +local Description = [[ There were more than 30,000 merchant ships greater than 1000 gross +tonnage at sea in 2005. The World Meteorological Organization has a Voluntary Observing +Ships Scheme that equips ships with weather instruments in order to provide observations +for weather models and forecasters. In addition to observing the weather, the location of +the ships is also recorded through GPS. From October 2004 through October of 2005 +1,189,127 mobile ship data points were collected from 3,374 commercial and research +vessels, which is about 11% of all ships at sea in 2005. By connecting the data points +for each vessel, shipping routes over the course of one year were plotted. The National +Center for Ecological Analysis and Synthesis compiled this data to include in their +Global Map of Human Impacts to Marine Ecosystems. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/shipping-routes-with-labels-one-year/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/species_richness.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/species_richness.asset new file mode 100644 index 0000000000..e670103f56 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/species_richness.asset @@ -0,0 +1,67 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Fisheries Species Richness" +local Identifier = "noaa-sos-oceans-species_richness" +local Description = [[ pecies richness is a count of the number of different species in +an ecological community, landscape or region. Species richness is one of several +measurements used by scientists to help determine how biologically rich and diverse a +given area is. This map shows the predicted global distribution of 1066 commercially +harvested marine fish and invertebrates. Areas on the map with brighter colors +(orange/yellow) highlight areas with greater number of different species (higher species +richness), while cooler colors (purple) areas with lower number of species (lower species +richness). The map shows the highest number of different species is concentrated along +the coasts. These coastal areas are also where we find our largest marine ecosystems, +such as coral reefs, mangroves and marshes, which provide food and shelter for +economically, culturally, and ecologically important marine species. This stresses the +importance of protecting critical habitat along our coasts for marine life and +fisheries. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/fisheries-species-richness/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar-speciesrichness.png", + FaceCamera = false, + Scale = 0.3, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sss.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sss.asset new file mode 100644 index 0000000000..246a085805 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sss.asset @@ -0,0 +1,68 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Surface Salinity" +local Identifier = "noaa-sos-oceans-sss" +local Description = [[ Processes that took place through Earth's history, such as the +weathering of rocks, evaporation of ocean water, and the formation of sea ice, have made +the ocean salty. Those are still at work today and are counterbalanced by processes that +decrease the salt in the ocean, like freshwater input from rivers, precipitation, and the +melting of ice. The result is an ocean surface where the salinity - the concentration of +salt - changes and these changes, small as they may be, have large-scale effects on +Earth's water cycle and ocean circulation. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-surface-salinity/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sst_1980_1999.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sst_1980_1999.asset new file mode 100644 index 0000000000..3224cd26c8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/sst_1980_1999.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Surface Temperature Anomalies - 1980 - 1999" +local Identifier = "noaa-sos-oceans-sst_1980_1999" +local Description = [[ Rather than plotting sea surface temperatures, sea surface +temperature anomalies have been plotted here to show the dramatic departures from normal +that are associated with El Nino and La Nina from 1980 - 1999. El Nino is the warming of +the Pacific Ocean off of the western coast of South America near Ecuador and Peru. It is +called El Nino, or little boy in Spanish, referring to the Christ child because the +phenomena usually occurs near Christmas time. The opposite of El Nino is La Nina, or +little girl in Spanish, which is a cooling of the Pacific Ocean. The red shading +signifies a warming of the ocean by 5-10°F, the green shading is normal and the blue +shading is a cooling of the ocean by 5-10°F. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-surface-temperature-anomalies-1980-1999/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "cyl_%Y_%m_%d.jpg" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-alaska.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-alaska.asset new file mode 100644 index 0000000000..58167e4d13 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-alaska.asset @@ -0,0 +1,91 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tsunami Historical Series: Alaska - 1964" +local Identifier = "noaa-sos-oceans-tsunami_historical_series-alaska" +local Description = [[ At 5:36 pm on Friday, March 27, 1964 (28 March, 03:36Z UTC) the +largest earthquake ever measured in North America, and the second-largest recorded +anywhere, struck 40 miles west of Valdez, Alaska in Prince William Sound with a moment +magnitude we now know to be 9.2. Almost an hour and a half later the Honolulu Magnetic +and Seismic Observatory (later renamed the Pacific Tsunami Warning Center, or PTWC) was +able to issue its first “tidal wave advisory” that noted that a tsunami was possible and +that it could arrive in the Hawaiian Islands five hours later. Upon learning of a tsunami +observation in Kodiak Island, Alaska, an hour and a half later the Honolulu Observatory +issued a formal “tidal wave/seismic sea-wave warning” cautioning that damage was possible +in Hawaii and throughout the Pacific Ocean but that it was not possible to predict the +intensity of the tsunami. The earthquake did in fact generate a tsunami that killed 124 +people (106 in Alaska, 13 in California, and 5 in Oregon) and caused about $2.3 billion +(2016 dollars) in property loss all along the Pacific coast of North America from Alaska +to southern California and in Hawaii. The greatest wave heights were in Alaska at over +67 m or 220 ft. and waves almost 10 m or 32 ft high struck British Columbia, Canada. In +the “lower 48” waves as high as 4.5 m or 15 ft. struck Washington, as high as 3.7 m or +12 ft. struck Oregon, and as high as 4.8 m or over 15 ft. struck California. Waves of +similar size struck Hawaii at nearly 5 m or over 16 ft. high. Waves over 1 m or 3 ft. +high also struck Mexico, Chile, and even New Zealand. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tsunami-historical-series-alaska-1964/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_coastal = { + Identifier = Identifier .. "-coastal", + Name = Name .. " (Coastal)", + FilePath = syncedDirectory .. "Tsunami_Coastal_Map_Alaska_1964_4k.jpg", + Description = Description +} + +local layer_energy_coastal = { + Identifier = Identifier .. "-energy_coastal", + Name = Name .. " (Energy Coastal)", + FilePath = syncedDirectory .. "Tsunami_Energy+Coastal_Map_Alaska_1964_4k.jpg", + Description = Description +} + +local layer_energy = { + Identifier = Identifier .. "-energy", + Name = Name .. " (Energy)", + FilePath = syncedDirectory .. "Tsunami_Energy_Map_Alaska_1964_4k.jpg", + Description = Description +} + +local layer_null = { + Identifier = Identifier .. "-null", + Name = Name .. " (Null)", + FilePath = syncedDirectory .. "Tsunami_Null_Coastal_Map_Alaska_1964_4k.jpg", + Description = Description +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.export(layer_coastal) +asset.export(layer_energy_coastal) +asset.export(layer_energy) +asset.export(layer_null) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-aleutians.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-aleutians.asset new file mode 100644 index 0000000000..697318282b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-aleutians.asset @@ -0,0 +1,89 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tsunami Historical Series: Aleutian Islands - 1946" +local Identifier = "noaa-sos-oceans-tsunami_historical_series-aleutians" +local Description = [[ On April 1, 1946 at 4:28 am (12:28 UTC), an 8.6 moment magnitude +earthquake struck off the coast of Unimak Island in Alaska's Aleutian Islands, +generating a tsunami that caused the greatest damage and number of deaths in Hawaii's +history, leading to the creation of the United States' first tsunami warning system. As +is typical for dangerous tsunamis the greatest wave heights were nearest the epicenter. +The waves reached as high as 42 m or about 138 ft. on Unimak Island and destroyed its +lighthouse and killed the five people there. Elsewhere this tsunami caused the greatest +damage and number of deaths on inhabited Pacific islands. In Hawaii the waves reached +about 17 m or 55 ft. high and killed 158 people, most in the town of Hilo, while in the +Marquesas Islands in French Polynesia the waves reached even higher to 20 m or 65 ft but +killed only two people. Chile's Easter Island also got nearly 9 m or 28 ft.while its Juan +Fernandez Islands got nearly 3 m or 9 ft. high waves. Pitcairn Island also had 5 m or 16 +ft. high waves, New Zealand had over 2 m or 8 ft. high waves, and Samoa had over 1 m or +about 4 ft. high waves. In North America the highest waves were in California at over 2 m +or over 8 ft. and killed one person there and in South America it killed one more person +in Peru. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tsunami-historical-series-aleutian-islands-1946/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_coastal = { + Identifier = Identifier .. "-coastal", + Name = Name .. " (Coastal)", + FilePath = syncedDirectory .. "Tsunami_Coastal_Map_Aleutians_1946_2k.jpg", + Description = Description +} + +local layer_energy_coastal = { + Identifier = Identifier .. "-energy_coastal", + Name = Name .. " (Energy Coastal)", + FilePath = syncedDirectory .. "Tsunami_Energy+Coastal_Map_Aleutians_1946_4k.jpg", + Description = Description +} + +local layer_energy = { + Identifier = Identifier .. "-energy", + Name = Name .. " (Energy)", + FilePath = syncedDirectory .. "Tsunami_Energy_Map_Aleutians_1946_4k.jpg", + Description = Description +} + +local layer_null = { + Identifier = Identifier .. "-null", + Name = Name .. " (Null)", + FilePath = syncedDirectory .. "Tsunami_Null_Coastal_Map_Aleutians_1946_4k.jpg", + Description = Description +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_null) +end) + + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.export(layer_coastal) +asset.export(layer_energy_coastal) +asset.export(layer_energy) +asset.export(layer_null) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-aleutians_1957.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-aleutians_1957.asset new file mode 100644 index 0000000000..bdb9e7209e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-aleutians_1957.asset @@ -0,0 +1,90 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tsunami Historical Series: Aleutian Islands - 1957" +local Identifier = "noaa-sos-oceans-tsunami_historical_series-aleutians_1957" +local Description = [[ At 4:22 am on Saturday, March 9, 1957 (9 March, 14:22 Z UTC) the +second great earthquake in 11 years struck Alaska's Aleutian Islands. This earthquake had +the same magnitude of the earlier earthquake--8.6 on the moment magnitude scale (Johnson +et al. 1994)--but was to the west of the 1946 earthquake, near the Andreanof Islands. As +with the earlier event it also caused a dangerous tsunami that caused significant damage +in the Aleutian Islands and in Hawaii and was observed as far away as Chile. The greatest +wave heights were in Alaska's Aleutian Islands, with waves nearly 23 m or 75 ft. high +coming ashore on Unimak Island. The tsunami would reach Hawaii a little over four hours +later, with the largest waves striking the island of Kauai at over 11 m or 38 ft. high +and would cause $5.3 million in damage statewide ($46 million in 2017), including the +destruction of more than 80 homes. Elsewhere around the Pacific Ocean the tsunami waves +would reach heights of 6 m or 20 ft. in the Marquesas Islands (French Polynesia), 3 m or +10 ft. in Japan, 1.5 m or 5 ft. in American Samoa, and over 1 m or 3 ft. in Mexico and +Chile. Unlike the earlier event, however, it did not kill any people thanks to effective +tsunami alerts from to the Honolulu Observatory and the Seismic Sea Wave Warning System. +These efforts, established in 1948, would later become the Pacific Tsunami Warning Center +(PTWC) and Pacific Tsunami Warning System. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tsunami-historical-series-aleutian-islands-1957/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +-- OBS: This data seems to be incorrect +local layer_coastal = { + Identifier = Identifier .. "-coastal", + Name = Name .. " (Coastal)", + FilePath = syncedDirectory .. "Tsunami_Coastal_Map_Aleutians_1957_2k.jpg", + Description = Description +} + +local layer_energy_coastal = { + Identifier = Identifier .. "-energy_coastal", + Name = Name .. " (Energy Coastal)", + FilePath = syncedDirectory .. "Tsunami_Energy+Coastal_Map_Aleutians_1957_2k.jpg", + Description = Description +} + +local layer_energy = { + Identifier = Identifier .. "-energy", + Name = Name .. " (Energy)", + FilePath = syncedDirectory .. "Tsunami_Energy_Map_Aleutians_1957_2k.jpg", + Description = Description +} + +local layer_null = { + Identifier = Identifier .. "-null", + Name = Name .. " (Null)", + FilePath = syncedDirectory .. "Tsunami_Null_Coastal_Map_Aleutians_1957_2k.jpg", + Description = Description +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.export(layer_coastal) +asset.export(layer_energy_coastal) +asset.export(layer_energy) +asset.export(layer_null) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-cascadia.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-cascadia.asset new file mode 100644 index 0000000000..0584e796fe --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-cascadia.asset @@ -0,0 +1,91 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tsunami Historical Series: Cascadia - 1700" +local Identifier = "noaa-sos-oceans-tsunami_historical_series-cascadia" +local Description = [[ Just before midnight on January 27, 1700 a tsunami struck the +coasts of Japan without warning since no one in Japan felt the earthquake that must have +caused it. Nearly 300 years later scientists and historians in Japan and the United +States solved the mystery of what caused this "orphan tsunami" through careful analysis +of historical records in Japan as well as oral histories of Native Americans, sediment +deposits, and ghost forests of drowned trees in the Pacific Northwest of North America, +a region also known as Cascadia. They learned that this geologically active region, the +Cascadia Subduction Zone, not only hosts erupting volcanoes but also produces megathrust +earthquakes capable of generating devastating, ocean-crossing tsunamis. By comparing the +tree rings of dead trees with those still living they could tell when the last of these +great earthquakes struck the region. The trees all died in the winter of 1699 - 1700 when +the coasts of northern California, Oregon, and Washington suddenly dropped 1- 2 m (3.3 - +6.6 ft.), flooding them with seawater. That much motion over such a large area requires a +very large earthquake to explain it - perhaps as large as 9.2 magnitude, comparable to +the Great Alaska Earthquake of 1964. Such an earthquake would have ruptured the earth +along the entire length of the 1000 km (~600 mi) long fault of the Cascadia Subduction +Zone and severe shaking could have lasted for 5 minutes or longer. Its tsunami would +cross the Pacific Ocean and reach Japan in about 9 hours, so the earthquake must have +occurred around 9:00 at night in Cascadia on January 26, 1700 (05:00 January 27 UTC). ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tsunami-historical-series-cascadia-1700/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_coastal = { + Identifier = Identifier .. "-coastal", + Name = Name .. " (Coastal)", + FilePath = syncedDirectory .. "Tsunami_Coastal_Map_Cascadia_1700_4k.jpg", + Description = Description +} + +local layer_energy_coastal = { + Identifier = Identifier .. "-energy_coastal", + Name = Name .. " (Energy Coastal)", + FilePath = syncedDirectory .. "Tsunami_Energy+Coastal_Map_Cascadia_1700_4k.jpg", + Description = Description +} + +local layer_energy = { + Identifier = Identifier .. "-energy", + Name = Name .. " (Energy)", + FilePath = syncedDirectory .. "Tsunami_Energy_Map_Cascadia_1700_4k.jpg", + Description = Description +} + +local layer_null = { + Identifier = Identifier .. "-null", + Name = Name .. " (Null)", + FilePath = syncedDirectory .. "Tsunami_Null_Coastal_Map_Cascadia_1700_4k.jpg", + Description = Description +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.export(layer_coastal) +asset.export(layer_energy_coastal) +asset.export(layer_energy) +asset.export(layer_null) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-chile.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-chile.asset new file mode 100644 index 0000000000..1b8b2461b1 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-chile.asset @@ -0,0 +1,93 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tsunami Historical Series: Chile - 2010" +local Identifier = "noaa-sos-oceans-tsunami_historical_series-chile" +local Description = [[ At 3:34 on the morning of February 27, 2010 (06:34 UTC), an 8.8 +moment magnitude earthquake struck near the coastline of central Chile. The Pacific +Tsunami Warning Center (PTWC) quickly determined that the large magnitude of this +earthquake, its location near the coastline, its relatively shallow depth within the +earth, and a history of megathrust earthquakes in the region meant that it could have +moved the seafloor and thus posed a significant tsunami risk and PTWC issued their first +tsunami warning several minutes later for Chile and Peru. The earthquake did in fact +cause a tsunami, and over the following hours as PTWC learned more about the earthquake +(confirming it was a megathrust and upgrading its magnitude) and its tsunami through +forecast models and direct observation with DART sensors and coastal sea-level gauges +PTWC would eventually issue tsunami warnings to the State of Hawaii and all 43 countries +and territories participating the Pacific Tsunami Warning System, keeping warnings in +some areas in effect for more than a day. PTWC's sister office, the West Coast and Alaska +Tsunami Warning Center (now known as the National Tsunami Warning Center), also issued +tsunami advisories for Alaska and the Pacific coasts of the United States and Canada. The +tsunami caused the greatest devastation and 124 deaths in Chile, where waves reached as +high as 29 m or 95 ft. on the mainland, over 18 m or 60 ft. in its Juan Fernandez +Islands, and over 4 m or 14 ft. at Rapa Nui (Easter Island). Outside of Chile tsunami +wave heights exceeded 1 m or 3 ft. in the Marquesas Islands (French Polynesia), New +Zealand, the Kuril Islands (Russia), and in the United States in California and Hawaii, +and caused minor damage in San Diego, California and in Japan. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tsunami-historical-series-chile-2010/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_coastal = { + Identifier = Identifier .. "-coastal", + Name = Name .. " (Coastal)", + FilePath = syncedDirectory .. "Tsunami_Coastal_Map_Chile_2010_2k.jpg", + Description = Description +} + +local layer_energy_coastal = { + Identifier = Identifier .. "-energy_coastal", + Name = Name .. " (Energy Coastal)", + FilePath = syncedDirectory .. "Tsunami_Energy+Coastal_Map_Chile_2010_4k.jpg", + Description = Description +} + +local layer_energy = { + Identifier = Identifier .. "-energy", + Name = Name .. " (Energy)", + FilePath = syncedDirectory .. "Tsunami_Energy_Map_Chile_2010_4k.jpg", + Description = Description +} + +local layer_null = { + Identifier = Identifier .. "-null", + Name = Name .. " (Null)", + FilePath = syncedDirectory .. "Tsunami_Null_Coastal_Map_Chile_2010_4k.jpg", + Description = Description +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.export(layer_coastal) +asset.export(layer_energy_coastal) +asset.export(layer_energy) +asset.export(layer_null) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-japan.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-japan.asset new file mode 100644 index 0000000000..614baeafc8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-japan.asset @@ -0,0 +1,98 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tsunami Historical Series: Japan - 2011" +local Identifier = "noaa-sos-oceans-tsunami_historical_series-japan" +local Description = [[ At 14:46 in the afternoon of March 11, 2011 (05:46 UTC), a 9.0 +moment magnitude earthquake struck near the coastline of Honshu, Japan. The Pacific +Tsunami Warning Center (PTWC) quickly determined that the very large magnitude of this +earthquake, its offshore location, its relatively shallow depth within the earth, and a +history of megathrust earthquakes in the region meant that it likely moved the seafloor +and thus posed a significant tsunami risk. As per international agreements Japanese +authorities issued tsunami warnings for their own coastlines while PTWC began issuing +warnings to other countries and territories in the western Pacific Ocean. The earthquake +did in fact cause a tsunami, and over the following hours as PTWC learned more about the +earthquake (confirming it was a megathrust and upgrading its magnitude) and its tsunami +through forecast models and direct observation with DART sensors and coastal sea-level +gauges PTWC would eventually issue tsunami warnings to the State of Hawaii and all +remaining countries and territories participating the Pacific Tsunami Warning System, +keeping warnings in some areas in effect for more than a day. PTWC's sister office, the +West Coast and Alaska Tsunami Warning Center (now known as the National Tsunami Warning +Center), also issued tsunami warnings for Alaska and the Pacific coasts of the United +States and Canada. The tsunami caused the greatest devastation and over 17,000 deaths in +Japan, where waves reached over 40 m or 130 ft. high. Outside of Japan the tsunami also +killed one person in Papua, Indonesia and rose to greater than 5 m or 16 ft. in the +Galapagos Islands (Ecuador), greater than 2m or 6.5 ft. in Indonesia, Russia's Kuril +Islands, and in Chile, and rose to greater than 1 m or 3 ft. in Costa Rica, the Marquesas +Islands (French Polynesia), Mexico, Papua New Guinea, and Peru. In the United States the +tsunami rose to more than 5 m or 16 ft. in Hawaii, more than 2 m or 6.5 ft in California +and Oregon, and more than 1 m or 3 ft. in the U.S. island territories of Midway and +Saipan (Northern Mariana Islands). The tsunami also killed one person in Crescent City, +California. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tsunami-historical-series-japan-2011/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_coastal = { + Identifier = Identifier .. "-coastal", + Name = Name .. " (Coastal)", + FilePath = syncedDirectory .. "Tsunami_Coastal_Map_Japan_2011_4k.jpg", + Description = Description +} + +local layer_energy_coastal = { + Identifier = Identifier .. "-energy_coastal", + Name = Name .. " (Energy Coastal)", + FilePath = syncedDirectory .. "Tsunami_Energy+Coastal_Map_Japan_2011_4k.jpg", + Description = Description +} + +local layer_energy = { + Identifier = Identifier .. "-energy", + Name = Name .. " (Energy)", + FilePath = syncedDirectory .. "Tsunami_Energy_Map_Japan_2011_4k.jpg", + Description = Description +} + +local layer_null = { + Identifier = Identifier .. "-null", + Name = Name .. " (Null)", + FilePath = syncedDirectory .. "Tsunami_Null_Coastal_Map_Japan_2011_4k.jpg", + Description = Description +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.export(layer_coastal) +asset.export(layer_energy_coastal) +asset.export(layer_energy) +asset.export(layer_null) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-lisbon.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-lisbon.asset new file mode 100644 index 0000000000..637b30283b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-lisbon.asset @@ -0,0 +1,81 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tsunami Historical Series: Lisbon - 1755" +local Identifier = "noaa-sos-oceans-tsunami_historical_series-lisbon" +local Description = [[ On the morning of November 1, 1755, a great earthquake shook +Portugal's capital city of Lisbon as worshipers filled churches and cathedrals for the +All Saints' Day Mass. In seconds it left the city in ruins and in minutes those ruins +were on fire. The earthquake probably killed about 30,000 people, though some estimates +double that figure. Many of the survivors fled to the wharves and keys of Lisbon's port, +but they would find no safety there. The first tsunami wave surged up the Tagus estuary +about an hour after the earthquake, reached a maximum runup of 12 meters (40 feet), and +killed another 1000 people. At least two more tsunami waves surged into the city, +completing the earthquake's destruction. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tsunami-historical-series-lisbon-1755/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_coastal = { + Identifier = Identifier .. "-coastal", + Name = Name .. " (Coastal)", + FilePath = syncedDirectory .. "Tsunami_Coastal_Map_Lisbon_1755_4k.jpg", + Description = Description +} + +local layer_energy_coastal = { + Identifier = Identifier .. "-energy_coastal", + Name = Name .. " (Energy Coastal)", + FilePath = syncedDirectory .. "Tsunami_Energy+Coastal_Map_Lisbon_1755_4k.jpg", + Description = Description +} + +local layer_energy = { + Identifier = Identifier .. "-energy", + Name = Name .. " (Energy)", + FilePath = syncedDirectory .. "Tsunami_Energy_Map_Lisbon_1755_4k.jpg", + Description = Description +} + +local layer_null = { + Identifier = Identifier .. "-null", + Name = Name .. " (Null)", + FilePath = syncedDirectory .. "Tsunami_Null_Coastal_Map_Lisbon_1755_4k.jpg", + Description = Description +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.export(layer_coastal) +asset.export(layer_energy_coastal) +asset.export(layer_energy) +asset.export(layer_null) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-samoa.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-samoa.asset new file mode 100644 index 0000000000..1ee0498014 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-samoa.asset @@ -0,0 +1,83 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tsunami Historical Series: Samoa - 2009" +local Identifier = "noaa-sos-oceans-tsunami_historical_series-samoa" +local Description = [[ At 6:48 on the morning of September 29, 2009 (17:48 UTC), an 8.1 +moment magnitude earthquake struck near the Samoan Islands in the southwest Pacific +Ocean. The Pacific Tsunami Warning Center (PTWC) quickly determined that the large +magnitude of this earthquake, its location under the sea floor, its relatively shallow +depth within the earth, and a history of tsunami-causing earthquakes in the region meant +that it could have moved the seafloor and thus posed a significant tsunami risk. PTWC +issued its first tsunami warning several minutes later for Samoa, American Samoa, Tonga, +and other nearby island groups. The earthquake did in fact cause a dangerous tsunami, and +over the following hours PTWC tracked it through the Pacific Ocean and updated its alerts +with measured tsunami wave heights and recommended that additional areas consider coastal +evacuation. PTWC canceled all tsunami alerts about four hours after the earthquake. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tsunami-historical-series-samoa-2009/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_coastal = { + Identifier = Identifier .. "-coastal", + Name = Name .. " (Coastal)", + FilePath = syncedDirectory .. "Tsunami_Coastal_Map_Samoa_2009_4k.jpg", + Description = Description +} + +local layer_energy_coastal = { + Identifier = Identifier .. "-energy_coastal", + Name = Name .. " (Energy Coastal)", + FilePath = syncedDirectory .. "Tsunami_Energy+Coastal_Map_Samoa_2009_4k.jpg", + Description = Description +} + +local layer_energy = { + Identifier = Identifier .. "-energy", + Name = Name .. " (Energy)", + FilePath = syncedDirectory .. "Tsunami_Energy_Map_Samoa_2009_4k.jpg", + Description = Description +} + +local layer_null = { + Identifier = Identifier .. "-null", + Name = Name .. " (Null)", + FilePath = syncedDirectory .. "Tsunami_Null_Coastal_Map_Samoa_2009_4k.jpg", + Description = Description +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.export(layer_coastal) +asset.export(layer_energy_coastal) +asset.export(layer_energy) +asset.export(layer_null) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-sumatra.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-sumatra.asset new file mode 100644 index 0000000000..71867327a0 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_historical_series-sumatra.asset @@ -0,0 +1,77 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tsunami Historical Series: Sumatra - 2004" +local Identifier = "noaa-sos-oceans-tsunami_historical_series-sumatra" +local Description = [[ The magnitude 9.1 Great Sumatra-Andaman Earthquake of December 26, +2004, spawned the deadliest tsunami in history, killing more than 230,000 people in 14 +countries around the Indian Ocean. More than half of those killed had lived in Acheh +Province, Sumatra, where the tsunami rose as high as 30 m (100 ft.) and traveled more than +4 km (2.5 mi.) inland in this low-lying region. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tsunami-historical-series-sumatra-2004//" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_coastal = { + Identifier = Identifier .. "-coastal", + Name = Name .. " (Coastal)", + FilePath = syncedDirectory .. "Tsunami_Coastal_Map_Sumatra_2004_2k.jpg", + Description = Description +} + +local layer_energy_coastal = { + Identifier = Identifier .. "-energy_coastal", + Name = Name .. " (Energy Coastal)", + FilePath = syncedDirectory .. "Tsunami_Energy+Coastal_Map_Sumatra_2004_2k.jpg", + Description = Description +} + +local layer_energy = { + Identifier = Identifier .. "-energy", + Name = Name .. " (Energy)", + FilePath = syncedDirectory .. "Tsunami_Energy_Map_Sumatra_2004_2k.jpg", + Description = Description +} + +local layer_null = { + Identifier = Identifier .. "-null", + Name = Name .. " (Null)", + FilePath = syncedDirectory .. "Tsunami_Null_Coastal_Map_Sumatra_2004_2k.jpg", + Description = Description +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy_coastal) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_energy) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_null) +end) + +asset.export(layer_coastal) +asset.export(layer_energy_coastal) +asset.export(layer_energy) +asset.export(layer_null) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_locations.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_locations.asset new file mode 100644 index 0000000000..5c4da42bc5 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/tsunami_locations.asset @@ -0,0 +1,98 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Tsunami Locations - 2000 BCE - 2014" +local Identifier = "noaa-sos-oceans-tsunami_locations" +local Description = [[ Earthquakes, landslides, volcanoes, explosions, and atmospheric +processes - all of these disasters have caused tsunamis in the past. But by far, the most +common generator of tsunamis is earthquakes, as has recently been seen in Sumatra, Chile, +and Japan. The NOAA National Geophysical Data Center archives academic and historical +reports from around the world of where tsunamis are estimated to have originated, and +have compiled a database of over 2,500 events from 2,000 B.C. through 2014t. This image +plots about half of those events - tsunamis that are classified as a "definite tsunami" +or "probable tsunami." The icons are shaded according to the devastation of the event by +the number of fatalities caused where white = none, yellow = 1-50, orange = 51-100, and +red = >101. Since earthquakes are the most common tsunami generator, the highest density +of event origins are located around the Pacific "Ring of Fire" known for its prevalence +of volcanic and tectonic activity. The points are overlaid on top of a map of ocean +bathymetry (Natural Earth 2 from the Natural Earth project), which indicates many of the +pronounced ocean features, such as volcanic islands, rift zones, and plate boundaries + that are often associated with generating tsunamis. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/tsunami-locations-2000-bce-2014/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_base = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.jpg", + Description = Description +} + +local layer_gray = { + Identifier = Identifier .. "-gray", + Name = Name .. " (Gray)", + FilePath = syncedDirectory .. "gray_earth_with_countries_4096.png", + Description = Description +} + +local layer_neutral = { + Identifier = Identifier .. "-neutral", + Name = Name .. " (Neutral)", + FilePath = syncedDirectory .. "natural_earth_with_countries_4096.png", + Description = Description +} + +local layer_events = { + Identifier = Identifier .. "-events", + Name = Name .. " (Events)", + FilePath = syncedDirectory .. "tsunami_events.png", + Description = Description +} + +local legend = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "legend.png", + FaceCamera = false, + CartesianPosition = { 0.85, 0.0, -2.0 } +} + + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_gray) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_neutral) + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_events) + openspace.addScreenSpaceRenderable(legend); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_base) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_gray) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_neutral) + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_events) + openspace.removeScreenSpaceRenderable(legend) +end) + +asset.export(layer_base) +asset.export(layer_gray) +asset.export(layer_neutral) +asset.export(layer_events) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vector_winds.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vector_winds.asset new file mode 100644 index 0000000000..d9e42f3d94 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vector_winds.asset @@ -0,0 +1,71 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ocean Surface Winds" +local Identifier = "noaa-sos-oceans-vector_winds" +local Description = [[ The SeaWinds scatterometer, carried aboard NASA's QuikSCAT +satellite, is a microwave radar designed to measure the backscatter related to +near-surface wind speed and direction over the oceans. A rougher ocean surface returns a +stronger signal because the waves reflect more of the radar energy back toward the +scatterometer antenna (backscatter), and a smoother ocean surface returns a weaker signal +because less of the energy is reflected. Given the known relationship between the +roughness of the surface and the strength of the wind, it is possible to compute the wind +speed and direction - the wind vector - from multiple observations of the signal returned +from a given area on the ocean surface. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ocean-surface-winds/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true) + openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vent_discoveries_animation.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vent_discoveries_animation.asset new file mode 100644 index 0000000000..66dded0bc3 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vent_discoveries_animation.asset @@ -0,0 +1,61 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Deep-Sea Vent Discoveries" +local Identifier = "noaa-sos-oceans-vent_discoveries_animation" +local Description = [[ This dataset is an animation showing the discoveries of deep-sea +hydrothermal vents from 1977-2016 (cumulative, annually). In 1977 scientists made a +stunning discovery that changed our understanding of life on Earth. On the deep seafloor +they had discovered hot springs, or hydrothermal vents, with animals that had never been +seen before. These discoveries continue today. Over 240 vent fields have been discovered +with human-occupied, remotely-operated, and autonomous vehicles. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/deep-sea-vent-discoveries/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "vents_%Y.png" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "new.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vent_locations.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vent_locations.asset new file mode 100644 index 0000000000..ef30e85173 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vent_locations.asset @@ -0,0 +1,47 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Deep-Sea Vent Locations" +local Identifier = "noaa-sos-oceans-vent_locations" +local Description = [[ This dataset shows all known locations of deep-sea hydrothermal +vents. Hydrothermal vents form in places where there is volcanic activity, such as along +Earth's plate boundaries. They occur when seawater seeps down and is heated deep beneath +the seafloor. The hot fluid rises and gushes out of vents at temperatures up to 400 deg C +(more than 750 deg F!), carrying with it chemical energy that supports life in the +otherwise cold, dark, deep sea. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/deep-sea-vent-locations/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "vents_2016.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vorticity.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vorticity.asset new file mode 100644 index 0000000000..2faa980c7f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/vorticity.asset @@ -0,0 +1,68 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ocean Surface Vorticity" +local Identifier = "noaa-sos-oceans-vorticity" +local Description = [[ This animation shows daily values of the ocean surface relative +vorticity as simulated by the Parallel Ocean Program (POP). Vorticity, which can be +thought of as the rate of fluid rotation, is particularly useful for visualizing ocean +turbulent flow, highlighting the presence of swirling eddies. A significant amount of the +total kinetic energy in the world ocean is attributable to these turbulent motions, +making them an important component in balances of energy, momentum, heat, salt, and +chemical constituents (such as carbon dioxide) throughout the globe. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ocean-surface-vorticity/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "frames.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_height_2012.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_height_2012.asset new file mode 100644 index 0000000000..d87df890ed --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_height_2012.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Wave Heights 2012" +local Identifier = "noaa-sos-oceans-waves-wave_height_2012" +local Description = [[ Meteorological offices worldwide forecast ocean wave heights for +the shipping and fisheries industry. In the United States, NOAA's National Weather +Service provides the wave forecasts. Just like in weather forecasting, scientists run +numerical models to make these predictions. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/wave-heights-2012/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_height_katrina.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_height_katrina.asset new file mode 100644 index 0000000000..341d4381cb --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_height_katrina.asset @@ -0,0 +1,67 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Wave Heights - Hurricane Katrina 2005" +local Identifier = "noaa-sos-oceans-waves-wave_height_katrina" +local Description = [[ This movie shows calculations of the NOAA wave forecasting model, +called WAVEWATCH III, over the Atlantic Ocean and focuses on the time period that +Hurricane Katrina occurred. Hurricane Katrina formed near the Bahamas on August 23rd, +2005. It made landfall in Florida on Monday August 27th and then regained energy tracking +though the Gulf of Mexico. Finally it hit the southeast Louisiana coast on Monday August +29th, 2005. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/wave-heights-hurricane-katrina-2005/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_height_sandy.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_height_sandy.asset new file mode 100644 index 0000000000..ef9f7c2695 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_height_sandy.asset @@ -0,0 +1,67 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Wave Heights - Hurricane Sandy 2012" +local Identifier = "noaa-sos-oceans-waves-wave_height_sandy" +local Description = [[ Meteorological offices worldwide forecast ocean wave heights for +the shipping and fisheries industry. In the United States, NOAA's National Weather +Service provides the wave forecasts. Just like in weather forecasting, scientists run +numerical models to make these predictions. This movie shows wave height calculations of +a wave model called 'WAVEWATCH III'. The movie shows 3 hourly model output over October +1st - October 31st, 2012. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/wave-heights-hurricane-sandy-2012/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_power_2012.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_power_2012.asset new file mode 100644 index 0000000000..d0a3f77e59 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/waves-wave_power_2012.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Wave Power 2012" +local Identifier = "noaa-sos-oceans-waves-wave_power_2012" +local Description = [[ Meteorological offices worldwide forecast ocean wave heights for +the shipping and fisheries industry. In the United States, NOAA's National Weather +Service provides the wave forecasts. Just like in weather forecasting, scientists run +numerical models to make these predictions. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/wave-power-2012/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "ImageSequenceTileLayer", + FolderPath = imagesDestination, + Description = Description +} + +local colorbar = { + Identifier = Identifier, + Name = Name, + Type = "ScreenSpaceImageLocal", + TexturePath = syncedDirectory .. "colorbar.png", + FaceCamera = false, + CartesianPosition = { 0.0, -0.5, -2.0 } +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) + openspace.addScreenSpaceRenderable(colorbar); +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) + openspace.removeScreenSpaceRenderable(colorbar) +end) + +asset.export(layer) +asset.export(colorbar) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/weeklyseaice-10day_seaice.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/weeklyseaice-10day_seaice.asset new file mode 100644 index 0000000000..28befd564e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/weeklyseaice-10day_seaice.asset @@ -0,0 +1,65 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Ice Extent- 1978 - Present" +local Identifier = "noaa-sos-oceans-weeklyseaice-10day_seaice" +local Description = [[ Sea ice is simply ocean water that has frozen. At least 15% of the +ocean is covered by sea ice some part of the year. This means that on average, sea ice +covers almost 10 million square miles (about 25 million square kilometers) of the Earth. +Sea ice is monitored closely by scientists because changing sea ice coverage can have a +huge impact on the rest of the globe. Global warming is amplified in polar regions. +Because of this, monitoring changes in sea ice can be a good indicator of climate change. +The National Snow and Ice Data Center monitors sea ice using a passive microwave +satellite data record that begins in 1978. The Special Sensor Microwave Imager/Sounder +(SSMIS) is the current monitoring instrument. This sea ice extent dataset is on a 25km +cell size grid covering both Arctic and Antarctic polar regions. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-ice-extent-1978-present/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "nt_monthext_%Y%m%d-%Y%m%d_n07_sos.png" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096_png.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/weeklyseaice-sept_seaice.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/weeklyseaice-sept_seaice.asset new file mode 100644 index 0000000000..a466877eb2 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/oceans/weeklyseaice-sept_seaice.asset @@ -0,0 +1,73 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Sea Ice Extent: September Only" +local Identifier = "noaa-sos-oceans-weeklyseaice-sept_seaice" +local Description = [[ Sea ice is simply ocean water that has frozen. At least 15% of the +ocean is covered by sea ice some part of the year. This means that on average, sea ice +covers almost 10 million square miles (about 25 million square kilometers) of the Earth. +Sea ice is monitored closely by scientists because changing sea ice coverage can have a +huge impact on the rest of the globe. Global warming is amplified in polar regions. +Because of this, monitoring changes in sea ice can be a good indicator of climate change. +The National Snow and Ice Data Center monitors sea ice using a passive microwave +satellite data record that begins in 1978. The Special Sensor Microwave Imager/Sounder +(SSMIS) is the current monitoring instrument. This sea ice extent dataset is on a 25km +cell size grid covering both Arctic and Antarctic polar regions. This dataset only shows +Septembers from 1979 - 2019 for both the Arctic and Antarctic. September was chosen to +specifically highlight the change in the Arctic minimum sea ice extent through time. The +decrease in sea ice coverage for the Arctic is apparent in this dataset. Another sea ice +extent dataset that is available shows Sea Ice Extent from 1987-2013. In the Arctic, the +maximum coverage usually occurs in March and the minimum coverage occurs in September. +The opposite is true for Antarctic, where the minimum occurs in March and the maximum +occurs in September. An interesting point to note is that the extent of sea ice in the +Arctic is shrinking, while the Antarctic sea ice is not trending downward. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/sea-ice-extent-september-only/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local imagesDestination = syncedDirectory .. "images" + +local layer = { + Identifier = Identifier, + Name = Name, + Type = "TemporalTileLayer", + Mode = "Folder", + Folder = { + Folder = imagesDestination, + -- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the + -- time formatting string + Format = "nt_monthext_%Y%m%d-%Y%m%d_n07_sos.png" + }, + Description = Description +} + +asset.onInitialize(function() + if not openspace.directoryExists(imagesDestination) then + openspace.printInfo("Extracting " .. Name) + openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true) + end + + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/cables.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/cables.asset new file mode 100644 index 0000000000..2ff1695da9 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/cables.asset @@ -0,0 +1,45 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Undersea Communication Cables" +local Identifier = "noaa-sos-overlays-cables" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +undersea communications cables onto any dataset that you are viewing. The data was found +at Wikipedia. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/undersea-communication-cables/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/capitals.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/capitals.asset new file mode 100644 index 0000000000..c557c24c6a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/capitals.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Capital City Names" +local Identifier = "noaa-sos-overlays-capitals" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +country capitals onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/capital-city-names/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/city_names.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/city_names.asset new file mode 100644 index 0000000000..bcf80fbd21 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/city_names.asset @@ -0,0 +1,45 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "City Names" +local Identifier = "noaa-sos-overlays-city_names" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays city +names from Wikipedia's List of Metropolitan Areas by Population onto any dataset that you +are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/city-names/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/continent_borders-black.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/continent_borders-black.asset new file mode 100644 index 0000000000..0331d581ca --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/continent_borders-black.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Continent Borders (black)" +local Identifier = "noaa-sos-overlays-continent_borders-black" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +continent borders in black onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/continent-borders-black/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/continent_borders-white.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/continent_borders-white.asset new file mode 100644 index 0000000000..2d1db3bc3e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/continent_borders-white.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Continent Borders (white)" +local Identifier = "noaa-sos-overlays-continent_borders-white" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +continent borders in white onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/continent-borders-white/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/continent_names.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/continent_names.asset new file mode 100644 index 0000000000..fedf85decb --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/continent_names.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Continent Names" +local Identifier = "noaa-sos-overlays-continent_names" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +continent continent names onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/continent-names/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/country_borders-black.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/country_borders-black.asset new file mode 100644 index 0000000000..592def368a --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/country_borders-black.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Country Borders (black)" +local Identifier = "noaa-sos-overlays-country_borders-black" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +country borders onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/country-borders-black/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/country_borders-white.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/country_borders-white.asset new file mode 100644 index 0000000000..c239fe1503 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/country_borders-white.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Continent Borders (white)" +local Identifier = "noaa-sos-overlays-country_borders-white" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +country borders onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/country-borders-white/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/country_pop_names.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/country_pop_names.asset new file mode 100644 index 0000000000..f3dd8da9f4 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/country_pop_names.asset @@ -0,0 +1,45 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Country Names" +local Identifier = "noaa-sos-overlays-country_pop_names" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +country names with font size according to population onto any dataset that you are +viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/country-names/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/currents.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/currents.asset new file mode 100644 index 0000000000..e35f21fba9 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/currents.asset @@ -0,0 +1,64 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ocean Currents" +local Identifier = "noaa-sos-overlays-currents" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset is an overlay +of ocean currents, taken from the Ocean Circulation dataset. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ocean-currents/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer_combined = { + Identifier = Identifier .. "-combined", + Name = Name .. " (Combined)", + FilePath = syncedDirectory .. "combined.png", + Description = Description +} + +local layer_currents = { + Identifier = Identifier .. "-currents", + Name = Name .. " (Currents)", + FilePath = syncedDirectory .. "currents.png", + Description = Description +} + +local layer_labels = { + Identifier = Identifier .. "-labels", + Name = Name .. " (Labels)", + FilePath = syncedDirectory .. "labels.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer_combined) + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer_currents) + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer_labels) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer_combined) + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer_currents) + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer_labels) +end) + +asset.export(layer_combined) +asset.export(layer_currents) +asset.export(layer_labels) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/general_circulation.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/general_circulation.asset new file mode 100644 index 0000000000..3813fa89d8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/general_circulation.asset @@ -0,0 +1,46 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Atmospheric General Circulation" +local Identifier = "noaa-sos-overlays-general_circulation" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +arrows and names of the approximate prevailing wind onto any dataset that you are +viewing. General circulation overlay would be particularly useful when pointing out the +rain shadow effect as well as cloud movement or when describing the coriolis effect. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/atmospheric-general-circulation/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "features_arrows.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/land_mask-black.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/land_mask-black.asset new file mode 100644 index 0000000000..342301194f --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/land_mask-black.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Land Mask (black)" +local Identifier = "noaa-sos-overlays-land_mask-black" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays a +black mask over all the land on any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/land-mask-black/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/land_mask-veg.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/land_mask-veg.asset new file mode 100644 index 0000000000..1a603b79e8 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/land_mask-veg.asset @@ -0,0 +1,45 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Land Mask (vegetation)" +local Identifier = "noaa-sos-overlays-land_mask-veg" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays a +land mask of general vegetation over all the land onto any dataset that you are +viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/land-mask-vegetation/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/latlon_grid-black.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/latlon_grid-black.asset new file mode 100644 index 0000000000..be1c06a264 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/latlon_grid-black.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Lat/Long Grid (black)" +local Identifier = "noaa-sos-overlays-latlon_grid-black" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays a +latitude and longitude grid in black onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/latlong-grid-black/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/latlon_grid-white.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/latlon_grid-white.asset new file mode 100644 index 0000000000..47c6616222 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/latlon_grid-white.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Lat/Long Grid (white)" +local Identifier = "noaa-sos-overlays-latlon_grid-white" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays a +latitude and longitude grid in white onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/latlong-grid-white/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/ocean_names.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/ocean_names.asset new file mode 100644 index 0000000000..ac714c82d4 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/ocean_names.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Ocean Names" +local Identifier = "noaa-sos-overlays-ocean_names" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays ocean +names onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/ocean-names/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/plate_boundary-color.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/plate_boundary-color.asset new file mode 100644 index 0000000000..cd3063246b --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/plate_boundary-color.asset @@ -0,0 +1,45 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Plate Boundaries (colorized)" +local Identifier = "noaa-sos-overlays-plate_boundary-color" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +tectonic plate boundaries, with types of boundaries differentiated in color, onto any +dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/plate-boundaries-colorized/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/plate_boundary-white.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/plate_boundary-white.asset new file mode 100644 index 0000000000..b9911c672e --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/plate_boundary-white.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Plate Boundaries (white)" +local Identifier = "noaa-sos-overlays-plate_boundary-white" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +tectonic plate boundaries in white onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/plate-boundaries-white/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/plate_names.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/plate_names.asset new file mode 100644 index 0000000000..b8890c9579 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/plate_names.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Plate Names" +local Identifier = "noaa-sos-overlays-plate_names" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +tectonic plate names onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/plate-names/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/railroad.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/railroad.asset new file mode 100644 index 0000000000..ebc6375d68 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/railroad.asset @@ -0,0 +1,45 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Railroads" +local Identifier = "noaa-sos-overlays-railroad" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +railroads onto any dataset that you are viewing. The data was found at Natural Earth +Data. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/railroads/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/rivers.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/rivers.asset new file mode 100644 index 0000000000..ebe39b7fa0 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/rivers.asset @@ -0,0 +1,45 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Rivers" +local Identifier = "noaa-sos-overlays-rivers" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +global rivers and lakes onto any dataset that you are viewing. The river's size is +indicated by the size of the lines. The data was found at Natural Earth Data. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/rivers/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/roads-black.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/roads-black.asset new file mode 100644 index 0000000000..800224b8b0 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/roads-black.asset @@ -0,0 +1,45 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Roads (black)" +local Identifier = "noaa-sos-overlays-roads-black" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays black +roads onto any dataset that you are viewing. The data was found at Natural Earth +Data. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/roads-black/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/roads-white.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/roads-white.asset new file mode 100644 index 0000000000..88a2b4b659 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/roads-white.asset @@ -0,0 +1,45 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Roads (white)" +local Identifier = "noaa-sos-overlays-roads-white" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays white +roads onto any dataset that you are viewing. The data was found at Natural Earth +Data. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/roads-white/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/state_borders-black.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/state_borders-black.asset new file mode 100644 index 0000000000..b4f124d9cf --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/state_borders-black.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Country Borders with North American States (black)" +local Identifier = "noaa-sos-overlays-state_borders-black" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +country and North American state borders onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/country-borders-with-north-american-states-black/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/state_borders-white.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/state_borders-white.asset new file mode 100644 index 0000000000..9cf86d7738 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/state_borders-white.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Country Borders with North American States (white)" +local Identifier = "noaa-sos-overlays-state_borders-white" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +country and North American state borders onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/country-borders-with-north-american-states-white/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/timezones.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/timezones.asset new file mode 100644 index 0000000000..df5518d397 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/overlays/timezones.asset @@ -0,0 +1,44 @@ +local globeIdentifier = asset.require("../../earth").Earth.Identifier + + +local Name = "Time zones" +local Identifier = "noaa-sos-overlays-timezones" +local Description = [[ Overlays are datasets with transparent backgrounds that contain +foreground data used to augment other SOS datasets.This particular dataset overlays +timezones onto any dataset that you are viewing. ]] +local URL = "https://sos.noaa.gov/catalog/datasets/time-zones/" + + +local syncedDirectory = asset.syncedResource({ + Name = Name, + Type = "HttpSynchronization", + Identifier = Identifier, + Version = 1 +}) + +local layer = { + Identifier = Identifier, + Name = Name, + FilePath = syncedDirectory .. "4096.png", + Description = Description +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + +asset.export(layer) + + +asset.meta = { + Name = Name, + Version = "1.0", + Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.", + Author = "National Oceanic and Atmospheric Administration", + URL = URL, + License = "https://sos.noaa.gov/copyright/" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/amateur.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/amateur.asset index 9c8f44f122..dd652dab76 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/amateur.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/amateur.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Amateur Radio", + Version = "1.0", + Description = [[ Satellites asset for Communications - Amateur Radio. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/experimental.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/experimental.asset index f25d5f3b80..ed234a6ebb 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/experimental.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/experimental.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Experimental", + Version = "1.0", + Description = [[ Satellites asset for Communications - Experimental. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/geostationary.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/geostationary.asset index c24a94946d..0035ecb47c 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/geostationary.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/geostationary.asset @@ -3,8 +3,21 @@ local shared = asset.require("util/tle_helper") local group = { Title = "Geostationary", Url = "http://celestrak.com/NORAD/elements/geo.txt", - TrailColor = { 0.9, 0.9, 0.0 } + TrailColor = { 0.9, 0.9, 0.0 }, + Description = [[Satellites that are currently active and in a Geosynchronous orbit, meaning + their orbital period matches Earth's rotation.]] } local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Geostationary", + Version = "1.0", + Description = [[ Satellites asset for Communications - Geostationary. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/globalstar.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/globalstar.asset index 8e626b9b5f..46aadb0759 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/globalstar.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/globalstar.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - GlobalStar", + Version = "1.0", + Description = [[ Satellites asset for Communications - GlobalStar. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/gorizont.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/gorizont.asset index dc7e2b9dd0..d6415beb8b 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/gorizont.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/gorizont.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Gorizont", + Version = "1.0", + Description = [[ Satellites asset for Communications - Gorizont. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/intelsat.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/intelsat.asset index 98f3f7637f..e46b557324 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/intelsat.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/intelsat.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Intelsat", + Version = "1.0", + Description = [[ Satellites asset for Communications - Intelsat. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/iridium.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/iridium.asset index 04c2f689b9..80ef41ff4e 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/iridium.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/iridium.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Iridium", + Version = "1.0", + Description = [[ Satellites asset for Communications - Iridium. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/iridium_next.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/iridium_next.asset index 011b5ce518..c6a0ffd014 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/iridium_next.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/iridium_next.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Iridium NEXT", + Version = "1.0", + Description = [[ Satellites asset for Communications - Iridium NEXT. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/molniya.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/molniya.asset index 055fac267f..3b4418dfa5 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/molniya.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/molniya.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Molniya", + Version = "1.0", + Description = [[ Satellites asset for Communications - Molniya. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/orbcomm.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/orbcomm.asset index 2542d87397..3a4a2c9e4b 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/orbcomm.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/orbcomm.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Orbcomm", + Version = "1.0", + Description = [[ Satellites asset for Communications - Orbcomm. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/other_comm.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/other_comm.asset index 4804523303..22ccee97c4 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/other_comm.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/other_comm.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Other comm", + Version = "1.0", + Description = [[ Satellites asset for Communications - Other comm. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/raduga.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/raduga.asset index e42dfa2405..44aa55af46 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/raduga.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/raduga.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - Raduga", + Version = "1.0", + Description = [[ Satellites asset for Communications - Raduga. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/ses.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/ses.asset index 141124edaa..6b75d9d9df 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/ses.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/ses.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Communications - SES", + Version = "1.0", + Description = [[ Satellites asset for Communications - SES. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_asat.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_asat.asset index b9dfbfabb4..1592d116e9 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_asat.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_asat.asset @@ -7,8 +7,15 @@ local group = { } local tle = shared.downloadTLEFile(asset, group.Url, group.Title) - - -local objectNames = {} - shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Debris - Indian ASAT test Debris", + Version = "1.0", + Description = [[ Satellites asset for Debris - Indian ASAT test Debris. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_breezem.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_breezem.asset index b4f279913e..ebfd71130d 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_breezem.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_breezem.asset @@ -7,8 +7,15 @@ local group = { } local tle = shared.downloadTLEFile(asset, group.Url, group.Title) - - -local objectNames = {} - shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Debris - Breeze-M Breakup", + Version = "1.0", + Description = [[ Satellites asset for Debris - Breeze-M Breakup. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/events/38746-Breakup/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_fengyun.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_fengyun.asset index 6ac65f3a8c..8af842ecef 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_fengyun.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_fengyun.asset @@ -7,8 +7,15 @@ local group = { } local tle = shared.downloadTLEFile(asset, group.Url, group.Title) - - -local objectNames = {} - shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Debris - Fengyun Debris", + Version = "1.0", + Description = [[ Satellites asset for Debris - Fengyun Debris. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_iridium33.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_iridium33.asset index 6c22666ef4..713a2da2cb 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_iridium33.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_iridium33.asset @@ -7,8 +7,15 @@ local group = { } local tle = shared.downloadTLEFile(asset, group.Url, group.Title) - - -local objectNames = {} - shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Debris - Iridium 33 Debris", + Version = "1.0", + Description = [[ Satellites asset for Debris - Iridium 33 Debris. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_kosmos2251.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_kosmos2251.asset index 308bc36881..e35c9f954c 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_kosmos2251.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_kosmos2251.asset @@ -7,8 +7,15 @@ local group = { } local tle = shared.downloadTLEFile(asset, group.Url, group.Title) - - -local objectNames = {} - shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Debris - Kosmos 2251 Debris", + Version = "1.0", + Description = [[ Satellites asset for Debris - Kosmos 2251 Debris. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/cartesian_volume.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/cartesian_volume.asset index 589dba3a29..323d0cd0dc 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/cartesian_volume.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/cartesian_volume.asset @@ -4,7 +4,6 @@ -- the volume data itself needs to be generated, -- using the task 'data/tasks/volume/debristasks/generate_debris_volume.task' -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/planets/earth/transforms") local maxApogee = 2 * 10946320; @@ -34,5 +33,23 @@ local volume = { } } -local objects = { volume } -assetHelper.registerSceneGraphNodes(asset, objects) +asset.onInitialize(function() + openspace.addSceneGraphNode(volume) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(volume) +end) + +asset.export(volume) + + + +asset.meta = { + Name = "Satellites Debris - Volume Cartesian", + Version = "1.0", + Description = [[ Satellites asset for Debris - Volume Cartesian. Example asset.]], + Author = "OpenSpace Team", + URL = "", + License = "MIT" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/spherical_volume.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/spherical_volume.asset index 11402ae123..215440de76 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/spherical_volume.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/volume/spherical_volume.asset @@ -4,7 +4,6 @@ -- the volume data itself needs to be generated, -- using the task 'data/tasks/volume/debristasks/generate_debris_volume.task' -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/planets/earth/transforms") local maxApogee = 10946320; @@ -34,5 +33,23 @@ local volume = { } } -local objects = { volume } -assetHelper.registerSceneGraphNodes(asset, objects) +asset.onInitialize(function() + openspace.addSceneGraphNode(volume) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(volume) +end) + +asset.export(volume) + + + +asset.meta = { + Name = "Satellites Debris - Volume Spherical", + Version = "1.0", + Description = [[ Satellites asset for Debris - Volume Spherical. Example asset.]], + Author = "OpenSpace Team", + URL = "", + License = "MIT" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/brightest.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/brightest.asset index c7678ae032..f7147ecefe 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/brightest.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/brightest.asset @@ -3,8 +3,20 @@ local shared = asset.require("util/tle_helper") local group = { Title = "100 Brightest", Url = "http://www.celestrak.com/NORAD/elements/visual.txt", - TrailColor = { 0.55, 0.25, 0.65 } + TrailColor = { 0.55, 0.25, 0.65 }, + Description = [[The 100 (or so) satellites that will appear brightest when viewed + from Earth.]] } local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites 100 Brightest", + Version = "1.0", + Description = [[ Satellites asset for 100 Brightest. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/cubesats.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/cubesats.asset index ff5a78c181..662fec9cea 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/cubesats.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/cubesats.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites CubeSat", + Version = "1.0", + Description = [[ Satellites asset for CubeSat. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/military.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/military.asset index 775eb44ee7..7121f39afb 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/military.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/military.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Military", + Version = "1.0", + Description = [[ Satellites asset for Military. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/other.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/other.asset index 1e1d065501..437c0f9440 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/other.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/other.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Other", + Version = "1.0", + Description = [[ Satellites asset for Other. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/radar.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/radar.asset index 2591d504a9..fd389a5a73 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/radar.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/radar.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Radar Calibration", + Version = "1.0", + Description = [[ Satellites asset for Radar Calibration. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/spacestations.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/spacestations.asset index 354454729b..bc22d96f7a 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/spacestations.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/spacestations.asset @@ -3,8 +3,21 @@ local shared = asset.require("util/tle_helper") local group = { Title = "SpaceStations", Url = "http://celestrak.com/NORAD/elements/stations.txt", - TrailColor = { 0.9, 0.1, 0.0 } + TrailColor = { 0.9, 0.1, 0.0 }, + Description = [[A collection of space stations (including the ISS and China's + Tiangong), along with certain cubesats and satellite constellations from space + agencies.]] } local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites SpaceStations", + Version = "1.0", + Description = [[ Satellites asset for SpaceStations. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/tle-new.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/tle-new.asset index 188ab00641..8485b11e8b 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/tle-new.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/tle-new.asset @@ -3,8 +3,19 @@ local shared = asset.require("util/tle_helper") local group = { Title = "Last 30 Days", Url = "http://www.celestrak.com/NORAD/elements/tle-new.txt", - TrailColor = { 0.65, 0.25, 0.45 } + TrailColor = { 0.65, 0.25, 0.45 }, + Description = [[All the satellites that have been launched in the last 30 days.]] } local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Last 30 Days", + Version = "1.0", + Description = [[ Satellites asset for Last 30 Days. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/beidou.asset b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/beidou.asset index 33e253e6d6..c3cc3b1673 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/beidou.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/beidou.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Navigation Beidou", + Version = "1.0", + Description = [[ Satellites asset for Navigation Beidou. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/galileo.asset b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/galileo.asset index 2348eb8b67..abeae83de4 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/galileo.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/galileo.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Navigation Galileo", + Version = "1.0", + Description = [[ Satellites asset for Navigation Galileo. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/glosnass.asset b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/glosnass.asset index 3274c7fdcb..9a88c1d826 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/glosnass.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/glosnass.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Navigation Glosnass", + Version = "1.0", + Description = [[ Satellites asset for Navigation Glosnass. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/gps.asset b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/gps.asset index 39b87c733d..8b50de3f46 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/gps.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/gps.asset @@ -3,8 +3,20 @@ local shared = asset.require("util/tle_helper") local group = { Title = "GPS", Url = "http://celestrak.com/NORAD/elements/gps-ops.txt", - TrailColor = { 0.9, 0.5, 0.0 } + TrailColor = { 0.9, 0.5, 0.0 }, + Description = [[The GPS satellites that give us our precise locations back here + on Earth.]] } local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Navigation GPS", + Version = "1.0", + Description = [[ Satellites asset for Navigation GPS. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/musson.asset b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/musson.asset index 01dcc0b947..2fa939803d 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/musson.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/musson.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Navigation Russian LEO Navigation", + Version = "1.0", + Description = [[ Satellites asset for Navigation Russian LEO Navigation. + Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/nnss.asset b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/nnss.asset index 4a3bd8f81a..53dca435c2 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/nnss.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/nnss.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Navigation Navy Navigation Satellite System", + Version = "1.0", + Description = [[ Satellites asset for Navigation Navy Navigation Satellite System. + Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/sbas.asset b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/sbas.asset index 5e30251ea3..266fd5de9a 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/navigation/sbas.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/navigation/sbas.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Navigation Satellite Based Augmentation System", + Version = "1.0", + Description = [[ Satellites asset for Navigation Satellite Based Augmentation System. + Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/satellites.asset b/data/assets/scene/solarsystem/planets/earth/satellites/satellites.asset index acb2faf5e5..0e85684c8d 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/satellites.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/satellites.asset @@ -1 +1,12 @@ asset.require("./satellites_interesting") + + +asset.meta = { + Name = "Satellites", + Version = "1.0", + Description = [[ Default Earth Satellites. This file is the same as + satellites_interesting.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/science/education.asset b/data/assets/scene/solarsystem/planets/earth/satellites/science/education.asset index 0850296deb..f07a6fbcd6 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/science/education.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/science/education.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Science Education", + Version = "1.0", + Description = [[ Satellites asset for Science Education. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/science/engineering.asset b/data/assets/scene/solarsystem/planets/earth/satellites/science/engineering.asset index b0d22df911..80d6cab0f1 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/science/engineering.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/science/engineering.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Science Engineering", + Version = "1.0", + Description = [[ Satellites asset for Science Engineering. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/science/geodetic.asset b/data/assets/scene/solarsystem/planets/earth/satellites/science/geodetic.asset index e1999224d8..231604f951 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/science/geodetic.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/science/geodetic.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Science Geodect", + Version = "1.0", + Description = [[ Satellites asset for Science Geodect. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/science/spaceearth.asset b/data/assets/scene/solarsystem/planets/earth/satellites/science/spaceearth.asset index 6a18f6f1ad..2b65c770a1 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/science/spaceearth.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/science/spaceearth.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Science Space & Earth Science", + Version = "1.0", + Description = [[ Satellites asset for Science Space & Earth Science. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/aqua.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/aqua.asset index 0c4f304623..6f74c54252 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/aqua.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/aqua.asset @@ -95,7 +95,6 @@ asset.onInitialize(function () for _, node in ipairs(nodes) do openspace.addSceneGraphNode(node) end - end) asset.onDeinitialize(function () @@ -104,6 +103,9 @@ asset.onDeinitialize(function () end end) +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { Name = "Aqua", diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/argos.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/argos.asset index e1fb6435cc..b515339277 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/argos.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/argos.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Weather - ARGOS", + Version = "1.0", + Description = [[ Satellites asset for Weather - ARGOS. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/dmc.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/dmc.asset index 804614312a..6d05a89140 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/dmc.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/dmc.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Weather - Disaster Monitoring", + Version = "1.0", + Description = [[ Satellites asset for Weather - Disaster Monitoring. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/earth_resources.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/earth_resources.asset index 379c6e246f..5e9c7c2f96 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/earth_resources.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/earth_resources.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Weather - Earth Resources", + Version = "1.0", + Description = [[ Satellites asset for Weather - Earth Resources. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/goes.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/goes.asset index c4feefd1e8..cb464c8999 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/goes.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/goes.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Weather - GOES", + Version = "1.0", + Description = [[ Satellites asset for Weather - GOES. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/noaa.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/noaa.asset index b3d5f0e3a8..be73a4e12d 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/noaa.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/noaa.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Weather - NOAA", + Version = "1.0", + Description = [[ Satellites asset for Weather - NOAA. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/planet.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/planet.asset index 6053428283..d777d6f803 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/planet.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/planet.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Weather - Planet", + Version = "1.0", + Description = [[ Satellites asset for Weather - Planet. Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/sarsat.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/sarsat.asset index 0e6fbaf55f..b9063795aa 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/sarsat.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/sarsat.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Weather - Search & Rescue (SARSAT)", + Version = "1.0", + Description = [[ Satellites asset for Weather - Search & Rescue (SARSAT). Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/spire.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/spire.asset index 55c152ca80..95ba2c97ac 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/spire.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/spire.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Weather - Spire", + Version = "1.0", + Description = [[ Satellites asset for Weather - Search & Rescue (SARSAT). Data from + Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/tdrss.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/tdrss.asset index ec5303c5e9..a126d89160 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/tdrss.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/tdrss.asset @@ -8,3 +8,14 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Weather - Tracking and Data Relay Satellite System (TDRSS)", + Version = "1.0", + Description = [[ Satellites asset for Weather - Tracking and Data Relay Satellite + System (TDRSS). Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/weather.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/weather.asset index 1c9afa8c8c..7c4f1aa854 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/weather.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/weather.asset @@ -8,3 +8,13 @@ local group = { local tle = shared.downloadTLEFile(asset, group.Url, group.Title) shared.registerSatelliteGroupObjects(asset, group, tle, true) + + +asset.meta = { + Name = "Satellites Weather - Weather", + Version = "1.0", + Description = [[ Satellites asset for Weather - Weather. Data from Celestrak]], + Author = "OpenSpace Team", + URL = "https://celestrak.com/NORAD/elements/", + License = "Celestrak" +} diff --git a/data/assets/scene/solarsystem/planets/earth/trail.asset b/data/assets/scene/solarsystem/planets/earth/trail.asset index 444dd149a7..77cdd90ab6 100644 --- a/data/assets/scene/solarsystem/planets/earth/trail.asset +++ b/data/assets/scene/solarsystem/planets/earth/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -25,16 +24,24 @@ local EarthTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { EarthTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(EarthTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(EarthTrail) +end) + +asset.export(EarthTrail) + asset.meta = { Name = "Earth Trail", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Earth as observed by the Sun. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"EarthTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/earth/transforms.asset b/data/assets/scene/solarsystem/planets/earth/transforms.asset index f784b7aa15..d1b196778a 100644 --- a/data/assets/scene/solarsystem/planets/earth/transforms.asset +++ b/data/assets/scene/solarsystem/planets/earth/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -73,21 +72,33 @@ local EarthIAU = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - EarthBarycenter, - EarthCenter, - EarthInertial, - EarthIAU -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(EarthBarycenter) + openspace.addSceneGraphNode(EarthCenter) + openspace.addSceneGraphNode(EarthInertial) + openspace.addSceneGraphNode(EarthIAU) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(EarthIAU) + openspace.removeSceneGraphNode(EarthInertial) + openspace.removeSceneGraphNode(EarthCenter) + openspace.removeSceneGraphNode(EarthBarycenter) +end) + +asset.export(EarthBarycenter) +asset.export(EarthCenter) +asset.export(EarthInertial) +asset.export(EarthIAU) + asset.meta = { Name = "Earth Transforms", - Version = "1.0", + Version = "1.1", Description = [[ Earth transforms: Earth Barycenter, Earth Center, Earth Inertial, Earth IAU. A scene graph node is created for each transform.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"EarthBarycenter", "EarthCenter", "EarthInertial", "EarthIAU"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset b/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset index 1a070de460..81562a5b0b 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") asset.require("./trail") local kernel = asset.require("../kernels").jup310 @@ -53,15 +52,23 @@ local Callisto = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Callisto }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Callisto) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Callisto) +end) + +asset.export(Callisto) + asset.meta = { Name = "Callisto", - Version = "1.0", + Version = "1.1", Description = [[ Callisto globe with labels.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Callisto"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/callisto/layers/colorlayers/callisto_texture.asset b/data/assets/scene/solarsystem/planets/jupiter/callisto/layers/colorlayers/callisto_texture.asset index e8645189be..50131f0702 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/callisto/layers/colorlayers/callisto_texture.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/callisto/layers/colorlayers/callisto_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "callisto_os.tif", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Callisto Texutre", Version = "2.0", diff --git a/data/assets/scene/solarsystem/planets/jupiter/callisto/trail.asset b/data/assets/scene/solarsystem/planets/jupiter/callisto/trail.asset index fcca4c1af0..d3eeed8f8f 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/callisto/trail.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/callisto/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") local kernel = asset.require("../kernels").jup310 @@ -27,16 +26,24 @@ local CallistoTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { CallistoTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(CallistoTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(CallistoTrail) +end) + +asset.export(CallistoTrail) + asset.meta = { Name = "Callisto Trail", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Callisto as observed by the Jupiter. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"CallistoTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset index aef595b55b..2b088a87dd 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") asset.require("./trail") local kernel = asset.require("../kernels").jup310 @@ -52,15 +51,24 @@ local Europa = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Europa }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Europa) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Europa) +end) + +asset.export(Europa) + + asset.meta = { Name = "Mimas", - Version = "1.0", + Version = "1.1", Description = [[ Europa globe with labels.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Europa"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/europa_texture.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/europa_texture.asset index 9b4ff9e14b..db62e1c902 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/europa_texture.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/europa_texture.asset @@ -13,13 +13,18 @@ local layer = { Enabled = true } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Europa Texutre", Version = "2.0", diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/voyager_global_mosaic_local.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/voyager_global_mosaic_local.asset index 7a4ce49342..68a387e6be 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/voyager_global_mosaic_local.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/voyager_global_mosaic_local.asset @@ -14,16 +14,21 @@ local layer = { BlendMode = "Color" } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Voyager Global Mosaic", - Version = "1.0", + Version = "1.1", Description = [[ Europa Voyager - Galileo SSI Global Mosaic 500m v2. This global map base of Europa utilizes the best image quality and moderate resolution coverage supplied by the Galileo SSI (Solid-State Imaging) instrument and Voyager 1 and 2. @@ -36,7 +41,6 @@ asset.meta = { Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Europa/Voyager-Galileo/" .. "Europa_Voyager_GalileoSSI_global_mosaic_500m", - License = "NASA/PDS", - Identifiers = {"Voyager_Global_Mosaic_Local"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/voyager_global_mosaic_sweden.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/voyager_global_mosaic_sweden.asset index 42c935b191..b6b0a5ff5e 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/voyager_global_mosaic_sweden.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/layers/colorlayers/voyager_global_mosaic_sweden.asset @@ -7,16 +7,21 @@ local layer = { BlendMode = "Color", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Voyager Global Mosaic", - Version = "1.0", + Version = "1.1", Description = [[ Europa Voyager - Galileo SSI Global Mosaic 500m v2. This global map base of Europa utilizes the best image quality and moderate resolution coverage supplied by the Galileo SSI (Solid-State Imaging) instrument and Voyager 1 and 2. @@ -29,6 +34,5 @@ asset.meta = { Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Europa/Voyager-Galileo/" .. "Europa_Voyager_GalileoSSI_global_mosaic_500m", - License = "NASA/PDS", - Identifiers = {"Voyager_Global_Mosaic"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/trail.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/trail.asset index 3bb96d5e41..eb826b9e0e 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/europa/trail.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/trail.asset @@ -1,10 +1,7 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") local kernel = asset.require("../kernels").jup310 - - local EuropaTrail = { Identifier = "EuropaTrail", Parent = transforms.JupiterBarycenter.Identifier, @@ -27,16 +24,24 @@ local EuropaTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { EuropaTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(EuropaTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(EuropaTrail) +end) + +asset.export(EuropaTrail) + asset.meta = { Name = "Europa Trail", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Europa as observed by the Jupiter. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"EuropaTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset b/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset index 43ef9e2098..71c66c02d5 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") asset.require("./trail") local kernel = asset.require("../kernels").jup310 @@ -52,15 +51,23 @@ local Ganymede = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Ganymede }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Ganymede) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Ganymede) +end) + +asset.export(Ganymede) + asset.meta = { Name = "Ganymede", - Version = "1.0", + Version = "1.1", Description = [[ Ganymede globe with labels.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Ganymede"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/ganymede/layers/colorlayers/ganymede_texture.asset b/data/assets/scene/solarsystem/planets/jupiter/ganymede/layers/colorlayers/ganymede_texture.asset index 1fcee46112..63ccdc310f 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/ganymede/layers/colorlayers/ganymede_texture.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/ganymede/layers/colorlayers/ganymede_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "ganymede.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Ganymede Texutre", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/jupiter/ganymede/trail.asset b/data/assets/scene/solarsystem/planets/jupiter/ganymede/trail.asset index 46f091bf79..e69492321c 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/ganymede/trail.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/ganymede/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") local kernel = asset.require("../kernels").jup310 @@ -27,16 +26,24 @@ local GanymedeTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { GanymedeTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(GanymedeTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(GanymedeTrail) +end) + +asset.export(GanymedeTrail) + asset.meta = { Name = "Ganymede Trail", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Ganymede as observed by the Jupiter. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"GanymedeTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/io/io.asset b/data/assets/scene/solarsystem/planets/jupiter/io/io.asset index f1db4cf69d..da913c5213 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/io/io.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/io/io.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") asset.require("./trail") local kernel = asset.require("../kernels").jup310 @@ -52,15 +51,23 @@ local Io = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Io }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Io) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Io) +end) + +asset.export(Io) + asset.meta = { Name = "Io", - Version = "1.0", + Version = "1.1", Description = [[ Io globe with labels.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Io"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/io/layers/colorlayers/io_texture.asset b/data/assets/scene/solarsystem/planets/jupiter/io/layers/colorlayers/io_texture.asset index 9b1cc66f0b..b3550cfb8e 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/io/layers/colorlayers/io_texture.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/io/layers/colorlayers/io_texture.asset @@ -12,10 +12,14 @@ local layer = { FilePath = texturesPath .. "io.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) diff --git a/data/assets/scene/solarsystem/planets/jupiter/io/trail.asset b/data/assets/scene/solarsystem/planets/jupiter/io/trail.asset index f61e88f68d..175711701c 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/io/trail.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/io/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") local kernel = asset.require("../kernels").jup310 @@ -27,16 +26,24 @@ local IoTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { IoTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(IoTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(IoTrail) +end) + +asset.export(IoTrail) + asset.meta = { Name = "Io Trail", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Io as observed by the Jupiter. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"IoTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset b/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset index 9e273566d7..9aee8e2089 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/jupiter.asset @@ -1,5 +1,4 @@ local transforms = asset.require("./transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") asset.require("./trail") @@ -61,15 +60,26 @@ local JupiterLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Jupiter, JupiterLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Jupiter) + openspace.addSceneGraphNode(JupiterLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(JupiterLabel) + openspace.removeSceneGraphNode(Jupiter) +end) + +asset.export(Jupiter) +asset.export(JupiterLabel) + asset.meta = { Name = "Jupiter", - Version = "1.0", + Version = "1.1", Description = [[ Jupiter globe, and main planet label.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Jupiter", "JupiterLabel"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/layers/colorlayers/jupiter_texture.asset b/data/assets/scene/solarsystem/planets/jupiter/layers/colorlayers/jupiter_texture.asset index f66313ab79..d27cb31d33 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/layers/colorlayers/jupiter_texture.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/layers/colorlayers/jupiter_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "jupiter_os.tif", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Jupiter Texutre", Version = "2.0", diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/ananke_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/ananke_group.asset index 4b9c98e2ee..2faa129446 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/ananke_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/ananke_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernel = asset.require("../kernels").jup341 @@ -208,10 +207,24 @@ local anankeGroup = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(anankeGroup) -) +local nodes = proceduralGlobes.createGlobes(anankeGroup) + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export( node) +end + asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/carme_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/carme_group.asset index 8e85cc0c8c..f5a1256ddc 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/carme_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/carme_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernel = asset.require("../kernels").jup341 @@ -276,10 +275,23 @@ local carmeGroup = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(carmeGroup) -) +local nodes = proceduralGlobes.createGlobes(carmeGroup) + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset index ac662c73c0..1cdaa9bd04 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernel = asset.require("../kernels").jup341 @@ -36,10 +35,23 @@ local carpoGroup = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(carpoGroup) -) +local nodes = proceduralGlobes.createGlobes(carpoGroup) + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/himalia_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/himalia_group.asset index 9167001ea5..9143965e05 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/himalia_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/himalia_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernel = asset.require("../kernels").jup341 @@ -105,10 +104,23 @@ local himaliaGroup = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(himaliaGroup) -) +local nodes = proceduralGlobes.createGlobes(himaliaGroup) + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset index edaec35807..b8c0c23122 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernel = asset.require("../kernels").jup341 @@ -87,10 +86,23 @@ local innerMoons = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(innerMoons) -) +local nodes = proceduralGlobes.createGlobes(innerMoons) + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/other_groups.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/other_groups.asset index d6887a75b6..38751d1295 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/other_groups.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/other_groups.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernel = asset.require("../kernels").jup341 @@ -163,10 +162,23 @@ local otherGroups = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(otherGroups) -) +local nodes = proceduralGlobes.createGlobes(otherGroups) + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/pasiphae_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/pasiphae_group.asset index 39abc8ce93..dcb958985f 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/pasiphae_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/pasiphae_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernel = asset.require("../kernels").jup341 @@ -365,10 +364,23 @@ local pasiphaeGroup = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(pasiphaeGroup) -) +local nodes = proceduralGlobes.createGlobes(pasiphaeGroup) + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/themisto_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/themisto_group.asset index c1507dbcff..fb6e8d14dc 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/themisto_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/themisto_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernel = asset.require("../kernels").jup341 @@ -35,10 +34,23 @@ local themistoGroup = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(themistoGroup) -) +local nodes = proceduralGlobes.createGlobes(themistoGroup) + +asset.onInitialize(function() + for i, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for i, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/jupiter/trail.asset b/data/assets/scene/solarsystem/planets/jupiter/trail.asset index d55a414ebd..72ef7a7be5 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/trail.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -25,16 +24,24 @@ local JupiterTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { JupiterTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(JupiterTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(JupiterTrail) +end) + +asset.export(JupiterTrail) + asset.meta = { Name = "Jupiter Trail", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Jupiter as observed by the Sun. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"JupiterTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset b/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset index 59ff6ab042..54f3aac12c 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/trail_earth.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") asset.require("spice/base") @@ -28,15 +27,24 @@ local JupiterTrailEarth = { } } +asset.onInitialize(function() + openspace.addSceneGraphNode(JupiterTrailEarth) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(JupiterTrailEarth) +end) + +asset.export(JupiterTrailEarth) + + + asset.meta = { Name = "Jupiter Trail from Earth", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Jupiter as observed by the Earth. Data from NASA SPICE (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"JupiterTrailEarth"} + License = "MIT license" } - -assetHelper.registerSceneGraphNodesAndExport(asset, { JupiterTrailEarth }) diff --git a/data/assets/scene/solarsystem/planets/jupiter/transforms.asset b/data/assets/scene/solarsystem/planets/jupiter/transforms.asset index e340a579ed..9c8e400875 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/transforms.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sun_transforms_asset = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -21,15 +20,23 @@ local JupiterBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { JupiterBarycenter }) +asset.onInitialize(function() + openspace.addSceneGraphNode(JupiterBarycenter) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(JupiterBarycenter) +end) + +asset.export(JupiterBarycenter) + asset.meta = { Name = "Jupiter Transforms", - Version = "1.0", + Version = "1.1", Description = [[ Jupiter Barycenter transform ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"JupiterBarycenter"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mars/atmosphere.asset b/data/assets/scene/solarsystem/planets/mars/atmosphere.asset index b1832cc1c4..734600d7c7 100644 --- a/data/assets/scene/solarsystem/planets/mars/atmosphere.asset +++ b/data/assets/scene/solarsystem/planets/mars/atmosphere.asset @@ -1,5 +1,4 @@ local transforms = asset.require("./mars") -local assetHelper = asset.require("util/asset_helper") @@ -53,15 +52,23 @@ local Atmosphere = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Atmosphere }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Atmosphere) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Atmosphere) +end) + +asset.export(Atmosphere) + asset.meta = { Name = "Mars Atmosphere", - Version = "1.0", + Version = "1.1", Description = [[ RenderableAtmosphere for Mars.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"MarsAtmosphere"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.asset index f717ff56d6..44727a84ea 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.asset @@ -26,20 +26,24 @@ local layer = { to prevent misinterpretation. (Description from URL)]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "CTX Blended beta01", - Version = "1.0", + Version = "1.1", Description = [[New blended CTX map for Mars from CalTech Murray lab. This map is hosted by ESRI.]], Author = "Caltech Murray Lab", URL = "http://murray-lab.caltech.edu/CTX/", - License = "Esri Master License Agreement", - Identifiers = {"CTX_blended_01"} + License = "Esri Master License Agreement" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_mosaic_sweden.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_mosaic_sweden.asset index 0b09b46e38..7914ab1948 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_mosaic_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_mosaic_sweden.asset @@ -7,8 +7,24 @@ local layer = { BlendMode = "Color" } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "CTX Mosaic [Sweden]", + Version = "1.0", + Description = [[ CTX Mosaic layer for Mars globe. This layer is served from the + OpenSpace servers in Sweden.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_mosaic_utah.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_mosaic_utah.asset index f6022d1923..9571efd001 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_mosaic_utah.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_mosaic_utah.asset @@ -7,8 +7,24 @@ local layer = { BlendMode = "Color" } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "CTX Mosaic [Utah]", + Version = "1.0", + Description = [[ CTX Mosaic layer for Mars globe. This layer is served from the + OpenSpace servers in Utah.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/hirise.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/hirise.asset index 57082d1987..14cb347416 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/hirise.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/hirise.asset @@ -22,20 +22,24 @@ local layer = { 10 bit range. (Description from URL)]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "HiRISE", - Version = "1.0", + Version = "1.1", Description = [[Updated HiRISE layer for Mars with raw unselected imagery. This map is hosted by ESRI.]], Author = "esri_astro", URL = "https://www.arcgis.com/home/item.html?id=c1c4c750a2154842ae523c984cc14fa5", - License = "Esri Master License Agreement", - Identifiers = {"HiRISE-PSP"} + License = "Esri Master License Agreement" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/hirisels.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/hirisels.asset index 93ab1d7cef..8b50ff6ad6 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/hirisels.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/hirisels.asset @@ -19,22 +19,26 @@ local layer = { model (DTM) was available as of 2018.]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "HiRISE Local Set", - Version = "1.0", + Version = "1.1", Description = [[HiRISE layer for images with corresponding DEMs. This map is hosted by ESRI.]], Author = "USGS", URL = "https://www.uahirise.org", - License = "Esri Master License Agreement", - Identifiers = {"HiRISE-LS"} + License = "Esri Master License Agreement" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mars_texture.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mars_texture.asset index 45bfc84439..911568c86f 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mars_texture.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mars_texture.asset @@ -14,13 +14,18 @@ local layer = { Description = [[ Default jpg texture for Mars]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Mars Texutre", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/moc_wa_color_sweden.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/moc_wa_color_sweden.asset index 8767bd034f..853531dbec 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/moc_wa_color_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/moc_wa_color_sweden.asset @@ -17,20 +17,24 @@ local layer = { https://www.jpl.nasa.gov/spaceimages/details.php?id=PIA03467.]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "MOC WA Color [Sweden]", - Version = "1.0", + Version = "1.1", Description = [[Main color map layer for Mars. This map is hosted on the OpenSpace server in Sweden.]], Author = "OpenSpace Team", URL = "http://www.openspaceproject.com", - License = "NASA/PDS", - Identifiers = {"MOLA_HRSC_Sweden"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/moc_wa_color_utah.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/moc_wa_color_utah.asset index 5e74c9ed0e..94e23f2241 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/moc_wa_color_utah.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/moc_wa_color_utah.asset @@ -17,20 +17,24 @@ local layer = { https://www.jpl.nasa.gov/spaceimages/details.php?id=PIA03467]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "MOC WA Color [Utah]", - Version = "1.0", + Version = "1.1", Description = [[Main color map layer for Mars. This map is hosted on the OpenSpace server in Utah.]], Author = "OpenSpace Team", URL = "http://www.openspaceproject.com", - License = "NASA/PDS", - Identifiers = {"MOC_WA_Color_Utah"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_hrsc_sweden.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_hrsc_sweden.asset index db37cdebb3..93cd918697 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_hrsc_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_hrsc_sweden.asset @@ -10,20 +10,24 @@ local layer = { https://astrogeology.usgs.gov/search/map/Mars/Topography/HRSC_MOLA_Blend/Mars_HRSC_MOLA_BlendDEM_Global_200mp_v2]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "MOLA HRSC [Sweden]", - Version = "1.0", + Version = "1.1", Description = [[ Colorzied elevation data for Mars. This map is hosted on the OpenSpace server in Sweden.]], Author = "OpenSpace Team", URL = "http://www.openspaceproject.com", - License = "NASA/PDS", - Identifiers = {"MOLA_HRSC_Sweden"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_hrsc_utah.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_hrsc_utah.asset index 01dab90621..5ed20cc70b 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_hrsc_utah.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_hrsc_utah.asset @@ -10,20 +10,24 @@ local layer = { https://astrogeology.usgs.gov/search/map/Mars/Topography/HRSC_MOLA_Blend/Mars_HRSC_MOLA_BlendDEM_Global_200mp_v2]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "MOLA HRSC [Utah]", - Version = "1.0", + Version = "1.1", Description = [[ Colorzied elevation data for Mars. This map is hosted on the OpenSpace server in Sweden.]], Author = "OpenSpace Team", URL = "http://www.openspaceproject.com", - License = "NASA/PDS", - Identifiers = {"MOLA_HRSC_Sweden"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_pseudo_color_sweden.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_pseudo_color_sweden.asset index 7deafc1110..36d453325c 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_pseudo_color_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_pseudo_color_sweden.asset @@ -20,21 +20,25 @@ local layer = { is 463 meters per pixel (m). (Description from URL). Data Reference: (See URL).]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "MOLA Pseudo Color [Sweden]", - Version = "1.0", + Version = "1.1", Description = [[ Colorzied elevation data for Mars (with shading). This map is hosted on the OpenSpace server in Sweden.]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mars/GlobalSurveyor/MOLA/" .. "Mars_MGS_MOLA_ClrShade_merge_global_463m", - License = "NASA/PDS", - Identifiers = {"MOLA_Pseudo_Color_Sweden"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_pseudo_color_utah.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_pseudo_color_utah.asset index ab593d9443..77e8872282 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_pseudo_color_utah.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/mola_pseudo_color_utah.asset @@ -20,21 +20,25 @@ local layer = { is 463 meters per pixel (m). (Description from URL). Data Reference: (See URL)]], } -asset.onInitialize(function () - openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) end) asset.export("layer", layer) + asset.meta = { Name = "MOLA Pseudo Color [Utah]", - Version = "1.0", + Version = "1.1", Description = [[ Colorzied elevation data for Mars (with shading). This map is hosted on the OpenSpace server in Utah.]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mars/GlobalSurveyor/MOLA/" .. "Mars_MGS_MOLA_ClrShade_merge_global_463m", - License = "NASA/PDS", - Identifiers = {"MOLA_Pseudo_Color_Utah"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_day_sweden.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_day_sweden.asset index ebcfce5448..6d386e688f 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_day_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_day_sweden.asset @@ -17,21 +17,25 @@ local layer = { (Description from URL).]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Themis IR Day [Sweden]", - Version = "1.0", + Version = "1.1", Description = [[Themis Day layer for Mars. This map is hosted on the OpenSpace server in Sweden.]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mars/Odyssey/THEMIS-IR-Mosaic-ASU/" .. "Mars_MO_THEMIS-IR-Day_mosaic_global_100m_v12", - License = "NASA/PDS", - Identifiers = {"Themis_IR_Day_Sweden"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_day_utah.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_day_utah.asset index bbaf877c53..861700e630 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_day_utah.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_day_utah.asset @@ -17,21 +17,25 @@ local layer = { (Description from URL).]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Themis IR Day [Utah]", - Version = "1.0", + Version = "1.1", Description = [[Themis Day layer for Mars. This map is hosted on the OpenSpace server in Utah.]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mars/Odyssey/THEMIS-IR-Mosaic-ASU/" .. "Mars_MO_THEMIS-IR-Day_mosaic_global_100m_v12", - License = "NASA/PDS", - Identifiers = {"Themis_IR_Day_Utah"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_night_sweden.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_night_sweden.asset index 39588692e9..4baf2cec7f 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_night_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_night_sweden.asset @@ -18,21 +18,25 @@ local layer = { URL).]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Themis IR Night [Sweden]", - Version = "1.0", + Version = "1.1", Description = [[Themis Night layer for Mars. This map is hosted on the OpenSpace server in Sweden.]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mars/Odyssey/THEMIS-IR-Mosaic-ASU/" .. "Mars_MO_THEMIS-IR-Night_mosaic_60N60S_100m_v14", - License = "NASA/PDS", - Identifiers = {"Themis_IR_Night_Sweden"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_night_utah.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_night_utah.asset index 03988bdb6c..12ce8f479b 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_night_utah.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/themis_ir_night_utah.asset @@ -18,21 +18,25 @@ local layer = { URL).]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Themis IR Night [Utah]", - Version = "1.0", + Version = "1.1", Description = [[Themis Night layer for Mars. This map is hosted on the OpenSpace server in Utah.]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mars/Odyssey/THEMIS-IR-Mosaic-ASU/" .. "Mars_MO_THEMIS-IR-Night_mosaic_60N60S_100m_v14", - License = "NASA/PDS", - Identifiers = {"Themis_IR_Night_Utah"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/viking_mdim_sweden.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/viking_mdim_sweden.asset index 2fb79b5b3e..8e2a5db8fc 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/viking_mdim_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/viking_mdim_sweden.asset @@ -25,21 +25,25 @@ local layer = { references available here: http://astrogeology.usgs.gov/maps/mdim-2-1 ]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Viking MDIM [Sweden]", - Version = "1.0", + Version = "1.1", Description = [[ Alternate image layer for Mars. This map is hosted on the OpenSpace server in Sweden.]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mars/Viking/MDIM21/" .. "Mars_Viking_MDIM21_ClrMosaic_global_232m", - License = "NASA/PDS", - Identifiers = {"Viking_MDIM_Sweden"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/viking_mdim_utah.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/viking_mdim_utah.asset index 03055f155a..dc4c31dd40 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/viking_mdim_utah.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/viking_mdim_utah.asset @@ -25,21 +25,25 @@ local layer = { references available here: http://astrogeology.usgs.gov/maps/mdim-2-1 ]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Viking MDIM [Utah]", - Version = "1.0", + Version = "1.1", Description = [[ Alternate image layer for Mars. This map is hosted on the OpenSpace server in Utah.]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mars/Viking/MDIM21/" .. "Mars_Viking_MDIM21_ClrMosaic_global_232m", - License = "NASA/PDS", - Identifiers = {"Viking_MDIM_Utah"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/MDEM200M.asset b/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/MDEM200M.asset index c7dd7454bd..07249e7d89 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/MDEM200M.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/MDEM200M.asset @@ -11,24 +11,28 @@ local layer = { Express spacecraft). The average accuracy is ~100 meters in horizontal position and the elevation uncertainty is at least ±3 m. This tiled elevation layer, hosted by Esri, is made available using - lossless LERC compression.(Description from URL).]], + lossless LERC compression. (Description from URL).]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "HeightLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "HeightLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Mars HRSC MOLA Blended DEM Global 200m v2", - Version = "1.0", + Version = "1.1", Description = [[ESRI Hosted ars HRSC MOLA Blended DEM.]], Author = "esri_astro", URL = "https://www.arcgis.com/home/item.html?id=225adad86379474ebc3d51a74573c99b", - License = "Esri Master License Agreement", - Identifiers = {"MDEM200M"} + License = "Esri Master License Agreement" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/hirisels.asset b/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/hirisels.asset index 0843e9f4c6..98dba0edb9 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/hirisels.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/hirisels.asset @@ -17,22 +17,26 @@ local layer = { DEM where available as of 2018.]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "HeightLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "HeightLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "HiRISE Local Set DEM", - Version = "1.0", + Version = "1.1", Description = [[HiRISE DEM layer for corresponding Local Set imager. This map is hosted by ESRI.]], Author = "USGS", URL = "https://www.uahirise.org", - License = "Esri Master License Agreement", - Identifiers = {"HiRISE-LS-DEM"} + License = "Esri Master License Agreement" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/mola_sweden.asset b/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/mola_sweden.asset index 5a68e92b57..231a7dbf06 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/mola_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/mola_sweden.asset @@ -21,21 +21,25 @@ local layer = { URL). Data Reference: (See URL).]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "HeightLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "HeightLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Mola Elevation [Sweden]", - Version = "1.0", + Version = "1.1", Author = "USGS", Description = [[ Global elevation layer for Mars. This layer is hosted on the OpenSpace server in Sweden.]], URL = "https://astrogeology.usgs.gov/search/map/Mars/GlobalSurveyor/MOLA/" .. "Mars_MGS_MOLA_DEM_mosaic_global_463m", - License = "NASA/PDS", - Identifiers = {"Mola_Europe"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/mola_utah.asset b/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/mola_utah.asset index e37d69d644..550672c7be 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/mola_utah.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/heightlayers/mola_utah.asset @@ -21,21 +21,25 @@ local layer = { URL). Data Reference: (See URL).]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "HeightLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "HeightLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Mola Elevation [Utah]", - Version = "1.0", + Version = "1.1", Description = [[ Global elevation layer for Mars. This layer is hosted on the OpenSpace server in Utah.]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mars/GlobalSurveyor/MOLA/" .. "Mars_MGS_MOLA_DEM_mosaic_global_463m", - License = "NASA/PDS", - Identifiers = {"Mola_Utah"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/overlays/indices.asset b/data/assets/scene/solarsystem/planets/mars/layers/overlays/indices.asset index 3136ceea89..a601d8d2ff 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/overlays/indices.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/overlays/indices.asset @@ -5,8 +5,22 @@ local layer = { Type = "TileIndexTileLayer" } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + asset.export("layer", layer) + + +asset.meta = { + Name = "Mars Indices", + Version = "1.0", + Description = [[ This asset supplies a tile index layer for the Mars globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mars/layers/overlays/size_reference.asset b/data/assets/scene/solarsystem/planets/mars/layers/overlays/size_reference.asset index fe6c339349..bcb7cb6884 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/overlays/size_reference.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/overlays/size_reference.asset @@ -8,8 +8,23 @@ local layer ={ Radii = marsAsset.Renderable.Radii } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "Overlays", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "Overlays", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Mars Size Reference", + Version = "1.0", + Description = [[ This asset supplies a size reference layer for the Mars globe.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mars/mars.asset b/data/assets/scene/solarsystem/planets/mars/mars.asset index 135de2b5ca..03ae56507b 100644 --- a/data/assets/scene/solarsystem/planets/mars/mars.asset +++ b/data/assets/scene/solarsystem/planets/mars/mars.asset @@ -1,5 +1,4 @@ local transforms = asset.require("./transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") asset.require("./trail") @@ -81,15 +80,26 @@ local MarsLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Mars, MarsLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Mars) + openspace.addSceneGraphNode(MarsLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MarsLabel) + openspace.removeSceneGraphNode(Mars) +end) + +asset.export(Mars) +asset.export(MarsLabel) + asset.meta = { Name = "Mars", - Version = "1.0", + Version = "1.1", Description = [[ Mars globe, and main globe label.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Mars", "MarsLabel"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mars/moons/deimos.asset b/data/assets/scene/solarsystem/planets/mars/moons/deimos.asset index 14e2b7f7bb..bb9f981936 100644 --- a/data/assets/scene/solarsystem/planets/mars/moons/deimos.asset +++ b/data/assets/scene/solarsystem/planets/mars/moons/deimos.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernels = asset.syncedResource({ Name = "Mars Spice Kernels", @@ -61,15 +60,26 @@ local DeimosTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Deimos, DeimosTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Deimos) + openspace.addSceneGraphNode(DeimosTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(DeimosTrail) + openspace.removeSceneGraphNode(Deimos) +end) + +asset.export(Deimos) +asset.export(DeimosTrail) + asset.meta = { Name = "Deimos", - Version = "1.0", + Version = "1.1", Description = [[ RenderableGlobe and Trail for Deimos.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Deimos", "DeimosTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mars/moons/layers/colorlayers/deimos_viking.asset b/data/assets/scene/solarsystem/planets/mars/moons/layers/colorlayers/deimos_viking.asset index 97ab860099..a07f1b275f 100644 --- a/data/assets/scene/solarsystem/planets/mars/moons/layers/colorlayers/deimos_viking.asset +++ b/data/assets/scene/solarsystem/planets/mars/moons/layers/colorlayers/deimos_viking.asset @@ -11,18 +11,22 @@ local layer = { released 26 October 2001. (Description from URL)]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Deimos Global Mosaic [USGS]", - Version = "1.0", + Version = "1.1", Author = "Philip Stooke/NASA", URL = "https://astrowebmaps.wr.usgs.gov/webmapatlas/Layers/maps.html", - License = "NASA/PDS", - Identifiers = {'Deimos_Global_Mosaic_USGS'} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/moons/layers/colorlayers/phobos_viking.asset b/data/assets/scene/solarsystem/planets/mars/moons/layers/colorlayers/phobos_viking.asset index 446c188279..d4f2b61ef5 100644 --- a/data/assets/scene/solarsystem/planets/mars/moons/layers/colorlayers/phobos_viking.asset +++ b/data/assets/scene/solarsystem/planets/mars/moons/layers/colorlayers/phobos_viking.asset @@ -8,18 +8,22 @@ local layer = { Description = [[ Viking-base Phobos shaded relief created by USGS.]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Phobos Global Shaded Relief [USGS]", - Version = "1.0", + Version = "1.1", Author = "USGS/NASA", URL = "https://astrowebmaps.wr.usgs.gov/webmapatlas/Layers/maps.html", - License = "NASA/PDS", - Identifiers = {'Phobos_Global_Shaded_Relief_USGS'} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/mars/moons/phobos.asset b/data/assets/scene/solarsystem/planets/mars/moons/phobos.asset index 4b8aad75d5..81223634ca 100644 --- a/data/assets/scene/solarsystem/planets/mars/moons/phobos.asset +++ b/data/assets/scene/solarsystem/planets/mars/moons/phobos.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernels = asset.syncedResource({ Name = "Mars Spice Kernels", @@ -61,15 +60,26 @@ local PhobosTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Phobos, PhobosTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Phobos) + openspace.addSceneGraphNode(PhobosTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(PhobosTrail) + openspace.removeSceneGraphNode(Phobos) +end) + +asset.export(Phobos) +asset.export(PhobosTrail) + asset.meta = { Name = "Phobos", - Version = "1.0", + Version = "1.1", Description = [[ RenderableGlobe and Trail for Phobos.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Phobos", "PhobosTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mars/trail.asset b/data/assets/scene/solarsystem/planets/mars/trail.asset index bda74c054b..e1b81178f4 100644 --- a/data/assets/scene/solarsystem/planets/mars/trail.asset +++ b/data/assets/scene/solarsystem/planets/mars/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -27,15 +26,23 @@ local MarsTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { MarsTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(MarsTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MarsTrail) +end) + +asset.export(MarsTrail) + asset.meta = { Name = "Mars Trail", - Version = "1.0", + Version = "1.1", Description = [[ Main Mars trail from SPICE.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"MarsTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mars/trail_earth.asset b/data/assets/scene/solarsystem/planets/mars/trail_earth.asset index d96759605b..6e0e1874cf 100644 --- a/data/assets/scene/solarsystem/planets/mars/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/mars/trail_earth.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") asset.require("spice/base") @@ -29,16 +28,24 @@ local MarsTrailEarth = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { MarsTrailEarth }) +asset.onInitialize(function() + openspace.addSceneGraphNode(MarsTrailEarth) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MarsTrailEarth) +end) + +asset.export(MarsTrailEarth) + asset.meta = { Name = "Mars Trail from Earth", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Mars, parented to Earth with Earth as the SPICE observer. Data from NASA SPICE (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"MarsTrailEarth"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mars/transforms.asset b/data/assets/scene/solarsystem/planets/mars/transforms.asset index 1e3ff966f5..e373087398 100644 --- a/data/assets/scene/solarsystem/planets/mars/transforms.asset +++ b/data/assets/scene/solarsystem/planets/mars/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -20,15 +19,23 @@ local MarsBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { MarsBarycenter }) +asset.onInitialize(function() + openspace.addSceneGraphNode(MarsBarycenter) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MarsBarycenter) +end) + +asset.export(MarsBarycenter) + asset.meta = { Name = "Mars Transforms", - Version = "1.0", + Version = "1.1", Description = [[ Transform with position for Mars.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"MarsBarycenter"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/alsimap_02122015.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/alsimap_02122015.asset index 4191fa531b..683a6830da 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/alsimap_02122015.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/alsimap_02122015.asset @@ -14,8 +14,23 @@ local layer = { BlendMode = "Multiply", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Mercury Aluminium Abundance", + Version = "1.0", + Description = [[ Aluminium Abundance layer for Mercury globe]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/casimap_02122015.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/casimap_02122015.asset index 132c104cc7..39b4ff4faa 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/casimap_02122015.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/casimap_02122015.asset @@ -14,8 +14,24 @@ local layer = { BlendMode = "Multiply", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + + +asset.meta = { + Name = "Mercury Calcium Abundance", + Version = "1.0", + Description = [[ Calcium Abundance layer for Mercury globe]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/fesimap_02122015.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/fesimap_02122015.asset index 20762ae4a4..e014f11702 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/fesimap_02122015.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/fesimap_02122015.asset @@ -14,8 +14,24 @@ local layer = { BlendMode = "Multiply", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + + +asset.meta = { + Name = "Mercury Iron Abundance", + Version = "1.0", + Description = [[ Iron Abundance layer for Mercury globe]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_sweden.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_sweden.asset index 412364df0d..017ef4ad1b 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_sweden.asset @@ -5,10 +5,34 @@ local layer = { Name = "Messenger BDR [Sweden]", FilePath = asset.localResource("messenger_bdr_sweden.wms"), TilePixelSize = 360, + Description = [[The Map Projected Basemap RDR (BDR) data set consists of a global + monochrome map of reflectance at a resolution of 256 pixels per degree (~166 m/p). + This edition, version 1, was released May 6, 2016 to the Planetary Data System (PDS) + MESSENGER archive. It is compiled using NAC or WAC 750-nm images from any campaign that + best fit the intended illumination geometry or low emission angle and incidence angle + near 74 degrees. It is controlled and projected onto a global digital elevation model. It uses + a Kasseleinin-Shkuratov photometric model, whose parameters are the same for any given + wavelength band across all MESSENGER end-of-mission map data products.]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger BDR [Sweden]", + Version = "1.0", + Description = [[ Mercury MESSENGER MDIS Global Basemap BDR 166m layer for Mercury globe. + This map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Mercury/Messenger/Global/Mercury_MESSENGER_MDIS_Basemap_BDR_Mosaic_Global_166m", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_utah.asset index b81431684e..2acff83235 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_utah.asset @@ -4,11 +4,35 @@ local layer = { Identifier = "Messenger_BDR_Utah", Name = "Messenger BDR [Utah]", FilePath = asset.localResource("messenger_bdr_utah.wms"), - TilePixelSize = 360 + TilePixelSize = 360, + Description = [[The Map Projected Basemap RDR (BDR) data set consists of a global + monochrome map of reflectance at a resolution of 256 pixels per degree (~166 m/p). + This edition, version 1, was released May 6, 2016 to the Planetary Data System (PDS) + MESSENGER archive. It is compiled using NAC or WAC 750-nm images from any campaign that + best fit the intended illumination geometry or low emission angle and incidence angle + near 74 degrees. It is controlled and projected onto a global digital elevation model. It uses + a Kasseleinin-Shkuratov photometric model, whose parameters are the same for any given + wavelength band across all MESSENGER end-of-mission map data products.]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger BDR [Utah]", + Version = "1.0", + Description = [[ Mercury MESSENGER MDIS Global Basemap BDR 166m layer for Mercury globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Mercury/Messenger/Global/Mercury_MESSENGER_MDIS_Basemap_BDR_Mosaic_Global_166m", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hie_sweden.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hie_sweden.asset index fe1a646b64..fadefbb18c 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hie_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hie_sweden.asset @@ -6,8 +6,25 @@ local layer = { FilePath = asset.localResource("messenger_hie_sweden.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger HIE [Sweden]", + Version = "1.0", + Description = [[ Mercury HIE layer for Mercury globe. + This map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "", + License = "NASA/PDS" +} + diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hie_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hie_utah.asset index a126f50f99..5b2249f632 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hie_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hie_utah.asset @@ -6,8 +6,24 @@ local layer = { FilePath = asset.localResource("messenger_hie_utah.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger HIE [Utah]", + Version = "1.0", + Description = [[ Mercury HIE layer for Mercury globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hiw_sweden.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hiw_sweden.asset index 95b7d143d2..9176323dc2 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hiw_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hiw_sweden.asset @@ -6,8 +6,26 @@ local layer = { FilePath = asset.localResource("messenger_hiw_sweden.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger HIW [Sweden]", + Version = "1.0", + Description = [[ Messenger HIW layer for Mercury globe. + This map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "", + License = "NASA/PDS" +} + + diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hiw_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hiw_utah.asset index 84ba23aeaf..f1fe3a0bd9 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hiw_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_hiw_utah.asset @@ -6,8 +6,25 @@ local layer = { FilePath = asset.localResource("messenger_hiw_utah.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger HIW [Utah]", + Version = "1.0", + Description = [[ Messenger HIW layer for Mercury globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "", + License = "NASA/PDS" +} + diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_loi_sweden.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_loi_sweden.asset index cbf10715c6..de14d966e2 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_loi_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_loi_sweden.asset @@ -6,8 +6,25 @@ local layer = { FilePath = asset.localResource("messenger_loi_sweden.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger LOI [Sweden]", + Version = "1.0", + Description = [[ Mercury LOI layer for Mercury globe. + This map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Mercury/Messenger/Global/Mercury_MESSENGER_MDIS_Basemap_LOI_Mosaic_Global_166m", + License = "NASA/PDS" +} + diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_loi_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_loi_utah.asset index 53f551ea2c..3dcb3086c9 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_loi_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_loi_utah.asset @@ -6,8 +6,25 @@ local layer = { FilePath = asset.localResource("messenger_loi_utah.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger LOI [Utah]", + Version = "1.0", + Description = [[ Mercury LOI layer for Mercury globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Mercury/Messenger/Global/Mercury_MESSENGER_MDIS_Basemap_LOI_Mosaic_Global_166m", + License = "NASA/PDS" +} + diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdis_sweden.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdis_sweden.asset index 14c98c20d0..33885c5862 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdis_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdis_sweden.asset @@ -3,11 +3,37 @@ local globeIdentifier = asset.require("../../mercury").Mercury.Identifier local layer = { Identifier = "Messenger_MDIS_Sweden", Name = "Messenger MDIS [Sweden]", - FilePath = asset.localResource("messenger_mdis_sweden.wms") + FilePath = asset.localResource("messenger_mdis_sweden.wms"), + Description = [[This May 2013 basemap is a combination of the following mosaics; (1) + The 2013-05-10 version of the monochrome global mosaic, made from Applied Coherent + Technology (ACT) Corporation tiles, (2) An average north polar mosaic from 90N to 82.5N, + composed of images from many campaigns, made by C. Ernst, and (3) An average south + polar mosaic from 90S to 85S, composed of images from the south polar monitoring + campaign from the primary mission, made by N. Chabot. To fill minor areas of missing + data, the 2013-05-10 version of the high-incidence global mosaic was underlain. This + monochrome mosaic is composed of Mercury Dual Imaging System (MDIS) Narrow Angle + Camera (NAC) images and Wide Angle Camers (WAC) images acquired in the filter centered + at 750 nm. The resolution of this mosaic is 250 meters per pixel (m).]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger MDIS [Sweden]", + Version = "1.0", + Description = [[ Messenger MDIS layer for Mercury globe. + This map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Mercury/Messenger/Global/Mercury_MESSENGER_MDIS_mosaic_global_250m_2013", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdis_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdis_utah.asset index 2a5bc1361c..ef410e0480 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdis_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdis_utah.asset @@ -3,11 +3,39 @@ local globeIdentifier = asset.require("../../mercury").Mercury.Identifier local layer = { Identifier = "Messenger_MDIS_Utah", Name = "Messenger MDIS [Utah]", - FilePath = asset.localResource("messenger_mdis_utah.wms") + FilePath = asset.localResource("messenger_mdis_utah.wms"), + Description = [[This May 2013 basemap is a combination of the following mosaics; (1) + The 2013-05-10 version of the monochrome global mosaic, made from Applied Coherent + Technology (ACT) Corporation tiles, (2) An average north polar mosaic from 90N to 82.5N, + composed of images from many campaigns, made by C. Ernst, and (3) An average south + polar mosaic from 90S to 85S, composed of images from the south polar monitoring + campaign from the primary mission, made by N. Chabot. To fill minor areas of missing + data, the 2013-05-10 version of the high-incidence global mosaic was underlain. This + monochrome mosaic is composed of Mercury Dual Imaging System (MDIS) Narrow Angle + Camera (NAC) images and Wide Angle Camers (WAC) images acquired in the filter centered + at 750 nm. The resolution of this mosaic is 250 meters per pixel (m).]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger MDIS [Utah]", + Version = "1.0", + Description = [[ Messenger MDIS layer for Mercury globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Mercury/Messenger/Global/Mercury_MESSENGER_MDIS_mosaic_global_250m_2013", + License = "NASA/PDS" +} + + diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdr_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdr_utah.asset index df0e160a02..1145b4bcec 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdr_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mdr_utah.asset @@ -6,8 +6,25 @@ local layer = { FilePath = asset.localResource("messenger_mdr_utah.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger MDR [Utah]", + Version = "1.0", + Description = [[ Mercury MDR layer for Mercury globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "", + License = "NASA/PDS" +} + diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic2_sweden.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic2_sweden.asset index f164a293bd..dec4bc602d 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic2_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic2_sweden.asset @@ -6,8 +6,24 @@ local layer = { FilePath = asset.localResource("messenger_mosaic2_sweden.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger Mosaic2 [Sweden]", + Version = "1.0", + Description = [[ Mercury Messenger Mosaic2 layer for Mercury globe. + This map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic2_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic2_utah.asset index 047670cf8f..9b5234d85a 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic2_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic2_utah.asset @@ -6,8 +6,24 @@ local layer = { FilePath = asset.localResource("messenger_mosaic2_utah.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger Mosaic2 [Utah]", + Version = "1.0", + Description = [[ Mercury Messenger Mosaic2 layer for Mercury globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic_sweden.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic_sweden.asset index a2d20199b3..6c0ca846c2 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic_sweden.asset @@ -6,8 +6,24 @@ local layer = { FilePath = asset.localResource("messenger_mosaic_sweden.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger Mosaic [Sweden]", + Version = "1.0", + Description = [[ Mercury Messenger Mosaic layer for Mercury globe. + This map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic_utah.asset index 8bc5644755..ae74f3472e 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mosaic_utah.asset @@ -6,8 +6,24 @@ local layer = { FilePath = asset.localResource("messenger_mosaic_utah.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger Mosaic [Utah]", + Version = "1.0", + Description = [[ Mercury Messenger Mosaic layer for Mercury globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mp3_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mp3_utah.asset index 4aab95aa3f..ec14b039db 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mp3_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_mp3_utah.asset @@ -6,8 +6,25 @@ local layer = { FilePath = asset.localResource("messenger_mp3_utah.wms") } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger MP3 [Utah]", + Version = "1.0", + Description = [[ Mercury Messenger MP3 layer for Mercury globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "", + License = "NASA/PDS" +} + diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_shade_sweden.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_shade_sweden.asset index f66e07b49c..29d676abc1 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_shade_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_shade_sweden.asset @@ -11,8 +11,24 @@ local layer = { BlendMode = "Multiply", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger SHADE [Sweden]", + Version = "1.0", + Description = [[ Mercury SHADE layer for Mercury globe. + This map is hosted on the OpenSpace server in Sweden.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Mercury/Topography/MESSENGER/Mercury_Messenger_USGS_ClrShade_Global_2km", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_shade_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_shade_utah.asset index ee62abad1f..4e4fa0df0b 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_shade_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_shade_utah.asset @@ -11,8 +11,24 @@ local layer = { BlendMode = "Multiply", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Messenger SHADE [Utah]", + Version = "1.0", + Description = [[ Mercury Messenger SHADE layer for Mercury globe. + This map is hosted on the OpenSpace server in Utah.]], + Author = "USGS", + URL = "https://astrogeology.usgs.gov/search/map/Mercury/Topography/MESSENGER/Mercury_Messenger_USGS_ClrShade_Global_2km", + License = "NASA/PDS" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/mgsimap_02122015.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/mgsimap_02122015.asset index 138e1017b3..26772b155d 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/mgsimap_02122015.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/mgsimap_02122015.asset @@ -18,8 +18,23 @@ local layer = { BlendMode = "Multiply", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Mercury Magnesium Abundance", + Version = "1.0", + Description = [[ Magnesium Abundance layer for Mercury globe]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/ssimap_02122015.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/ssimap_02122015.asset index b910263ee5..811a7a780f 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/ssimap_02122015.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/ssimap_02122015.asset @@ -14,8 +14,23 @@ local layer = { BlendMode = "Multiply", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Mercury Silicon Abundance", + Version = "1.0", + Description = [[ Silicon Abundance layer for Mercury globe]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/mercury/mercury.asset b/data/assets/scene/solarsystem/planets/mercury/mercury.asset index 9ecd31f795..3fb3cc0207 100644 --- a/data/assets/scene/solarsystem/planets/mercury/mercury.asset +++ b/data/assets/scene/solarsystem/planets/mercury/mercury.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") asset.require("spice/base") asset.require("./trail") @@ -72,15 +71,26 @@ local MercuryLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Mercury, MercuryLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Mercury) + openspace.addSceneGraphNode(MercuryLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MercuryLabel) + openspace.removeSceneGraphNode(Mercury) +end) + +asset.export(Mercury) +asset.export(MercuryLabel) + asset.meta = { Name = "Mercury", - Version = "1.0", + Version = "1.1", Description = [[ Mercury globe with labels, and main planet label.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Mercury" , "MercuryLabel"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mercury/trail.asset b/data/assets/scene/solarsystem/planets/mercury/trail.asset index 410e93a92a..952f77e772 100644 --- a/data/assets/scene/solarsystem/planets/mercury/trail.asset +++ b/data/assets/scene/solarsystem/planets/mercury/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -26,16 +25,24 @@ local MercuryTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { MercuryTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(MercuryTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MercuryTrail) +end) + +asset.export(MercuryTrail) + asset.meta = { Name = "Mercury Trail", - Version = "1.0", + Version = "1.1", Description = [[ Main trail for Mercury. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"MercuryTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mercury/trail_earth.asset b/data/assets/scene/solarsystem/planets/mercury/trail_earth.asset index 1eb4e8c0a4..e31823edbf 100644 --- a/data/assets/scene/solarsystem/planets/mercury/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/mercury/trail_earth.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") asset.require("spice/base") @@ -29,16 +28,24 @@ local MercuryTrailEarth = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { MercuryTrailEarth }) +asset.onInitialize(function() + openspace.addSceneGraphNode(MercuryTrailEarth) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MercuryTrailEarth) +end) + +asset.export(MercuryTrailEarth) + asset.meta = { Name = "Mercury Trail from Earth", - Version = "1.0", + Version = "1.1", Description = [[ Alternate trail of Mercury, as observed by the Earth rather then the Sun.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"MercuryTrailEarth"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/mercury/transforms.asset b/data/assets/scene/solarsystem/planets/mercury/transforms.asset index db4f045299..9365e25254 100644 --- a/data/assets/scene/solarsystem/planets/mercury/transforms.asset +++ b/data/assets/scene/solarsystem/planets/mercury/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -20,15 +19,23 @@ local MercuryBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { MercuryBarycenter }) +asset.onInitialize(function() + openspace.addSceneGraphNode(MercuryBarycenter) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MercuryBarycenter) +end) + +asset.export(MercuryBarycenter) + asset.meta = { Name = "Mercury Transforms", - Version = "1.0", + Version = "1.1", Description = [[ Mercury Barycenter transform]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"MercuryBarycenter"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/neptune/inner_moons.asset b/data/assets/scene/solarsystem/planets/neptune/inner_moons.asset index 2a81441ae9..a22b904ed9 100644 --- a/data/assets/scene/solarsystem/planets/neptune/inner_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/inner_moons.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") local kernels = asset.require("./kernels") @@ -142,10 +141,23 @@ local innerMoons = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(innerMoons) -) +local nodes = proceduralGlobes.createGlobes(innerMoons) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/neptune/irregular_prograde_moons.asset b/data/assets/scene/solarsystem/planets/neptune/irregular_prograde_moons.asset index b7d72ee0b1..e6eafd5be7 100644 --- a/data/assets/scene/solarsystem/planets/neptune/irregular_prograde_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/irregular_prograde_moons.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") local kernels = asset.require("./kernels") @@ -73,10 +72,23 @@ local irregularProgradeMoons = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(irregularProgradeMoons) -) +local nodes = proceduralGlobes.createGlobes(irregularProgradeMoons) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/neptune/irregular_retrograde_moons.asset b/data/assets/scene/solarsystem/planets/neptune/irregular_retrograde_moons.asset index fde9c5e8aa..88e2e54df5 100644 --- a/data/assets/scene/solarsystem/planets/neptune/irregular_retrograde_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/irregular_retrograde_moons.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") local kernels = asset.require("./kernels") @@ -72,10 +71,23 @@ local irregularRetrogradeMoons = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(irregularRetrogradeMoons) -) +local nodes = proceduralGlobes.createGlobes(irregularRetrogradeMoons) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/neptune/layers/colorlayers/neptune_texture.asset b/data/assets/scene/solarsystem/planets/neptune/layers/colorlayers/neptune_texture.asset index 86a3625998..a28c779835 100644 --- a/data/assets/scene/solarsystem/planets/neptune/layers/colorlayers/neptune_texture.asset +++ b/data/assets/scene/solarsystem/planets/neptune/layers/colorlayers/neptune_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "neptune.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Neptune Texutre", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset b/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset index 8f5e758e56..584e67489b 100644 --- a/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset @@ -1,3 +1,14 @@ asset.require("./inner_moons") asset.require("./irregular_prograde_moons") asset.require("./irregular_retrograde_moons") + + +asset.meta = { + Name = "Neptune Minor Moons", + Version = "1.0", + Description = [[ Meta asset containing 3 moon groups: inner_moons, + irregular_prograde_moons, and irregular_retrograde_moons]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/neptune/neptune.asset b/data/assets/scene/solarsystem/planets/neptune/neptune.asset index e8702e04e7..a168e76df3 100644 --- a/data/assets/scene/solarsystem/planets/neptune/neptune.asset +++ b/data/assets/scene/solarsystem/planets/neptune/neptune.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") asset.require("spice/base") asset.require("./trail") @@ -53,15 +52,26 @@ local NeptuneLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Neptune, NeptuneLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Neptune) + openspace.addSceneGraphNode(NeptuneLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(NeptuneLabel) + openspace.removeSceneGraphNode(Neptune) +end) + +asset.export(Neptune) +asset.export(NeptuneLabel) + asset.meta = { Name = "Neptune", - Version = "1.0", + Version = "1.1", Description = [[ Neptune globe, and main planet label.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Neptune"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/neptune/trail.asset b/data/assets/scene/solarsystem/planets/neptune/trail.asset index 579a87ff9d..dbf45d8b65 100644 --- a/data/assets/scene/solarsystem/planets/neptune/trail.asset +++ b/data/assets/scene/solarsystem/planets/neptune/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -37,15 +36,23 @@ local NeptuneTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { NeptuneTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(NeptuneTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(NeptuneTrail) +end) + +asset.export(NeptuneTrail) + asset.meta = { Name = "Neptune Trail", - Version = "1.0", + Version = "1.1", Description = [[ Main trail of Neptune. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"NeptuneTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset b/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset index 6bd470acf5..fdab646770 100644 --- a/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") asset.require("spice/base") @@ -29,16 +28,24 @@ local NeptuneTrailEarth = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { NeptuneTrailEarth }) +asset.onInitialize(function() + openspace.addSceneGraphNode(NeptuneTrailEarth) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(NeptuneTrailEarth) +end) + +asset.export(NeptuneTrailEarth) + asset.meta = { Name = "Neptune Trail from Earth", - Version = "1.0", + Version = "1.1", Description = [[ Alternate trail of Neptune, as observed by the Earth rather then the Sun.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"NeptuneTrailEarth"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/neptune/transforms.asset b/data/assets/scene/solarsystem/planets/neptune/transforms.asset index fdb81080ad..2903a97f49 100644 --- a/data/assets/scene/solarsystem/planets/neptune/transforms.asset +++ b/data/assets/scene/solarsystem/planets/neptune/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sun_transforms_asset = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -20,15 +19,23 @@ local NeptuneBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { NeptuneBarycenter }) +asset.onInitialize(function() + openspace.addSceneGraphNode(NeptuneBarycenter) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(NeptuneBarycenter) +end) + +asset.export(NeptuneBarycenter) + asset.meta = { Name = "Neptune Transforms", - Version = "1.0", + Version = "1.1", Description = [[ Neptune Barycenter transform ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"NeptuneBarycenter"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/neptune/triton.asset b/data/assets/scene/solarsystem/planets/neptune/triton.asset index cbeba17776..de7145d24c 100644 --- a/data/assets/scene/solarsystem/planets/neptune/triton.asset +++ b/data/assets/scene/solarsystem/planets/neptune/triton.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") local kernel = asset.require("./kernels").nep081 @@ -23,19 +22,32 @@ local Triton = { Kernels = kernel } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes({ Triton }) -) +local nodes = proceduralGlobes.createGlobes({ Triton }) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end + asset.meta = { Name = "Triton", - Version = "1.0", + Version = "1.1", Description = [[ Procedural Globe asset containing Neptune's moon: Triton. A blank globe and SPICE trail are generated for the moon.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Triton"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset b/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset index 3ae5d1dd71..bafd58fbc1 100644 --- a/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset +++ b/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 asset.require("./trail") @@ -50,7 +49,16 @@ local Dione = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Dione }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Dione) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Dione) +end) + +asset.export(Dione) + asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/dione/layers/colorlayers/dione_texture.asset b/data/assets/scene/solarsystem/planets/saturn/dione/layers/colorlayers/dione_texture.asset index 891a48d36c..ac97ec449d 100644 --- a/data/assets/scene/solarsystem/planets/saturn/dione/layers/colorlayers/dione_texture.asset +++ b/data/assets/scene/solarsystem/planets/saturn/dione/layers/colorlayers/dione_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "dione.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Dione Texutre", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/saturn/dione/trail.asset b/data/assets/scene/solarsystem/planets/saturn/dione/trail.asset index b051a95e24..6540dcff54 100644 --- a/data/assets/scene/solarsystem/planets/saturn/dione/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/dione/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 @@ -27,7 +26,16 @@ local DioneTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { DioneTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(DioneTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(DioneTrail) +end) + +asset.export(DioneTrail) + asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset index 48fbce8a6d..872b68b36d 100644 --- a/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 asset.require("./trail") @@ -52,15 +51,23 @@ local Enceladus = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Enceladus }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Enceladus) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Enceladus) +end) + +asset.export(Enceladus) + asset.meta = { Name = "Enceladus", - Version = "1.0", + Version = "1.1", Description = [[ Enceladus globe with labels and map layers]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Enceladus"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/colorlayers/enceladus_texture.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/colorlayers/enceladus_texture.asset index b28f512525..6af48cb20d 100644 --- a/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/colorlayers/enceladus_texture.asset +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/colorlayers/enceladus_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "enceladus.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Enceladus Texutre", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/colorlayers/global_mosaic_100m_hpf.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/colorlayers/global_mosaic_100m_hpf.asset index 59bdc0c776..02eb75a9e5 100644 --- a/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/colorlayers/global_mosaic_100m_hpf.asset +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/layers/colorlayers/global_mosaic_100m_hpf.asset @@ -12,13 +12,18 @@ local layer = { than 120 degrees. (Description from URL).]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Cassini Global Mosaic 100m HPF", Version = "1.0", @@ -27,6 +32,5 @@ asset.meta = { Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Enceladus/Cassini/" .. "Enceladus_Cassini_ISS_Global_Mosaic_100m_HPF", - License = "NASA/PDS", - Identifiers = {"Global_Mosaic_100m_HPF"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/trail.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/trail.asset index eb70ea00ea..e1887631b7 100644 --- a/data/assets/scene/solarsystem/planets/saturn/enceladus/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 @@ -27,15 +26,23 @@ local EnceladusTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { EnceladusTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(EnceladusTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(EnceladusTrail) +end) + +asset.export(EnceladusTrail) + asset.meta = { Name = "Enceladus Trail", - Version = "1.0", + Version = "1.1", Description = [[ Trail for Enceladus. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"EnceladusTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/hyperion/hyperion.asset b/data/assets/scene/solarsystem/planets/saturn/hyperion/hyperion.asset index 7a1d445e7e..9354cedd77 100644 --- a/data/assets/scene/solarsystem/planets/saturn/hyperion/hyperion.asset +++ b/data/assets/scene/solarsystem/planets/saturn/hyperion/hyperion.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 asset.require("./trail") @@ -51,15 +50,23 @@ local Hyperion = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Hyperion }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Hyperion) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Hyperion) +end) + +asset.export(Hyperion) + asset.meta = { Name = "Hyperion", - Version = "1.0", + Version = "1.1", Description = [[ Hyperion globe with labels]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Hyperion"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/hyperion/trail.asset b/data/assets/scene/solarsystem/planets/saturn/hyperion/trail.asset index f6e01eeba9..2043b08757 100644 --- a/data/assets/scene/solarsystem/planets/saturn/hyperion/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/hyperion/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 @@ -26,16 +25,24 @@ local HyperionTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { HyperionTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(HyperionTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(HyperionTrail) +end) + +asset.export(HyperionTrail) + asset.meta = { Name = "Hyperion Trail", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Saturn's moon Hyperion as observed by Saturn. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"HyperionTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset b/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset index 01f9b702cf..801995f9d3 100644 --- a/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset +++ b/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 asset.require("./trail") @@ -52,7 +51,16 @@ local Iapetus = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Iapetus }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Iapetus) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Iapetus) +end) + +asset.export(Iapetus) + asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/iapetus/layers/colorlayers/iapetus_texture.asset b/data/assets/scene/solarsystem/planets/saturn/iapetus/layers/colorlayers/iapetus_texture.asset index d00aef94cd..0324a02da2 100644 --- a/data/assets/scene/solarsystem/planets/saturn/iapetus/layers/colorlayers/iapetus_texture.asset +++ b/data/assets/scene/solarsystem/planets/saturn/iapetus/layers/colorlayers/iapetus_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "iapetus.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Iapetus Texutre", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/saturn/iapetus/trail.asset b/data/assets/scene/solarsystem/planets/saturn/iapetus/trail.asset index 011dbcd41f..0d7e77df39 100644 --- a/data/assets/scene/solarsystem/planets/saturn/iapetus/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/iapetus/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 @@ -27,15 +26,23 @@ local IapetusTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { IapetusTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(IapetusTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(IapetusTrail) +end) + +asset.export(IapetusTrail) + asset.meta = { Name = "Iapetus Trail", - Version = "1.0", + Version = "1.1", Description = [[Main trail for Iapetus. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"IapetusTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/layers/colorlayers/saturn_texture.asset b/data/assets/scene/solarsystem/planets/saturn/layers/colorlayers/saturn_texture.asset index 11c2f39bf9..e4957ce2a5 100644 --- a/data/assets/scene/solarsystem/planets/saturn/layers/colorlayers/saturn_texture.asset +++ b/data/assets/scene/solarsystem/planets/saturn/layers/colorlayers/saturn_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "saturn.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Saturn Texutre", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/saturn/mimas/layers/colorlayers/mimas_texture.asset b/data/assets/scene/solarsystem/planets/saturn/mimas/layers/colorlayers/mimas_texture.asset index bef66be274..0392990bff 100644 --- a/data/assets/scene/solarsystem/planets/saturn/mimas/layers/colorlayers/mimas_texture.asset +++ b/data/assets/scene/solarsystem/planets/saturn/mimas/layers/colorlayers/mimas_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "mimas.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Mimas Texutre", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset b/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset index 4a4948f555..1a950717a6 100644 --- a/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset +++ b/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 asset.require("./trail") @@ -52,15 +51,23 @@ local Mimas = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Mimas }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Mimas) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Mimas) +end) + +asset.export(Mimas) + asset.meta = { Name = "Mimas", - Version = "1.0", + Version = "1.1", Description = [[ Mimas globe with labels.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Mimas"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/mimas/trail.asset b/data/assets/scene/solarsystem/planets/saturn/mimas/trail.asset index 29da5054d7..0a7703d341 100644 --- a/data/assets/scene/solarsystem/planets/saturn/mimas/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/mimas/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 @@ -27,15 +26,23 @@ local MimasTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { MimasTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(MimasTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(MimasTrail) +end) + +asset.export(MimasTrail) + asset.meta = { Name = "Mimas Trail", - Version = "1.0", + Version = "1.1", Description = [[ Main trail for Mimas. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"MimasTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/minor/gallic_group.asset b/data/assets/scene/solarsystem/planets/saturn/minor/gallic_group.asset index fd6a6a6167..83d1c1a664 100644 --- a/data/assets/scene/solarsystem/planets/saturn/minor/gallic_group.asset +++ b/data/assets/scene/solarsystem/planets/saturn/minor/gallic_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernel = asset.require("../kernels").sat368 @@ -87,10 +86,23 @@ local gallicGroup = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(gallicGroup) -) +local nodes = proceduralGlobes.createGlobes(gallicGroup) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/minor/inuit_group.asset b/data/assets/scene/solarsystem/planets/saturn/minor/inuit_group.asset index 41226b427f..ac2b239055 100644 --- a/data/assets/scene/solarsystem/planets/saturn/minor/inuit_group.asset +++ b/data/assets/scene/solarsystem/planets/saturn/minor/inuit_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernel = asset.require("../kernels").sat368 @@ -104,10 +103,23 @@ local inuitGroup = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(inuitGroup) -) +local nodes = proceduralGlobes.createGlobes(inuitGroup) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/minor/norse_group.asset b/data/assets/scene/solarsystem/planets/saturn/minor/norse_group.asset index 60d77e82c4..c0fa61b17e 100644 --- a/data/assets/scene/solarsystem/planets/saturn/minor/norse_group.asset +++ b/data/assets/scene/solarsystem/planets/saturn/minor/norse_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernels = asset.require("../kernels") @@ -522,10 +521,23 @@ local norseGroup = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(norseGroup) -) +local nodes = proceduralGlobes.createGlobes(norseGroup) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/minor/other_group.asset b/data/assets/scene/solarsystem/planets/saturn/minor/other_group.asset index aa0d78963f..e1806845d9 100644 --- a/data/assets/scene/solarsystem/planets/saturn/minor/other_group.asset +++ b/data/assets/scene/solarsystem/planets/saturn/minor/other_group.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernels = asset.require("../kernels") @@ -242,10 +241,23 @@ local otherGroup = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(otherGroup) -) +local nodes = proceduralGlobes.createGlobes(otherGroup) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/rhea/layers/colorlayers/rhea_texture.asset b/data/assets/scene/solarsystem/planets/saturn/rhea/layers/colorlayers/rhea_texture.asset index a75b2eeee6..aa803aa26d 100644 --- a/data/assets/scene/solarsystem/planets/saturn/rhea/layers/colorlayers/rhea_texture.asset +++ b/data/assets/scene/solarsystem/planets/saturn/rhea/layers/colorlayers/rhea_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "rhea.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Rhea Texutre", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset b/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset index 7c3de45932..322538b39f 100644 --- a/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset +++ b/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 asset.require("./trail") @@ -52,7 +51,16 @@ local Rhea = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Rhea }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Rhea) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Rhea) +end) + +asset.export(Rhea) + asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/rhea/trail.asset b/data/assets/scene/solarsystem/planets/saturn/rhea/trail.asset index 179dc82360..228d664547 100644 --- a/data/assets/scene/solarsystem/planets/saturn/rhea/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/rhea/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 @@ -27,7 +26,16 @@ local RheaTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { RheaTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(RheaTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(RheaTrail) +end) + +asset.export(RheaTrail) + asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/saturn.asset b/data/assets/scene/solarsystem/planets/saturn/saturn.asset index 666a9a161e..57d98cf611 100644 --- a/data/assets/scene/solarsystem/planets/saturn/saturn.asset +++ b/data/assets/scene/solarsystem/planets/saturn/saturn.asset @@ -1,5 +1,4 @@ local transforms = asset.require("./transforms") -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") asset.require("./trail") @@ -81,15 +80,26 @@ local SaturnLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Saturn, SaturnLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Saturn) + openspace.addSceneGraphNode(SaturnLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(SaturnLabel) + openspace.removeSceneGraphNode(Saturn) +end) + +asset.export(Saturn) +asset.export(SaturnLabel) + asset.meta = { Name = "Saturn", - Version = "1.0", + Version = "1.1", Description = [[ Saturn globe, and main planet label.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Saturn", "SaturnLabel"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/tethys/layers/colorlayers/tethys_texture.asset b/data/assets/scene/solarsystem/planets/saturn/tethys/layers/colorlayers/tethys_texture.asset index c7fbe1969c..199047b1d2 100644 --- a/data/assets/scene/solarsystem/planets/saturn/tethys/layers/colorlayers/tethys_texture.asset +++ b/data/assets/scene/solarsystem/planets/saturn/tethys/layers/colorlayers/tethys_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "tethys.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Tethys Texutre", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset b/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset index eefbcd4ba5..1a0ca291e4 100644 --- a/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset +++ b/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 asset.require("./trail") @@ -50,7 +49,16 @@ local Tethys = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Tethys }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Tethys) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Tethys) +end) + +asset.export(Tethys) + asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/tethys/trail.asset b/data/assets/scene/solarsystem/planets/saturn/tethys/trail.asset index 730dbda0fa..0e92d3eaf0 100644 --- a/data/assets/scene/solarsystem/planets/saturn/tethys/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/tethys/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 @@ -27,7 +26,16 @@ local TethysTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { TethysTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(TethysTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(TethysTrail) +end) + +asset.export(TethysTrail) + asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/titan/atmosphere.asset b/data/assets/scene/solarsystem/planets/saturn/titan/atmosphere.asset index 1c186daa01..50b470d304 100644 --- a/data/assets/scene/solarsystem/planets/saturn/titan/atmosphere.asset +++ b/data/assets/scene/solarsystem/planets/saturn/titan/atmosphere.asset @@ -1,5 +1,4 @@ local transforms = asset.require("./titan") -local assetHelper = asset.require("util/asset_helper") local Atmosphere = { Identifier = "TitanAtmosphere", @@ -45,14 +44,22 @@ local Atmosphere = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Atmosphere }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Atmosphere) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Atmosphere) +end) + +asset.export(Atmosphere) + asset.meta = { Name = "Titan Atmosphere", - Version = "1.0", + Version = "1.1", Description = [[ RenderableAtmosphere for Titan.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = { "TitanAtmosphere" } + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/titan/layers/colorlayers/cassini_iss_global_mosaic_4km_local.asset b/data/assets/scene/solarsystem/planets/saturn/titan/layers/colorlayers/cassini_iss_global_mosaic_4km_local.asset index 91e0c5a587..c54a9432b6 100644 --- a/data/assets/scene/solarsystem/planets/saturn/titan/layers/colorlayers/cassini_iss_global_mosaic_4km_local.asset +++ b/data/assets/scene/solarsystem/planets/saturn/titan/layers/colorlayers/cassini_iss_global_mosaic_4km_local.asset @@ -21,20 +21,24 @@ local layer = { is created at some point in the future. (Description from URL)]] } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Cassini ISS Global Mosaic", - Version = "1.0", + Version = "1.1", Description = [[ Cassini global image layer for Titan]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Titan/Cassini/Global-Mosaic/" .. "Titan_ISS_P19658_Mosaic_Global_4km", - License = "NASA/PDS", - Identifiers = {"Cassini_ISS_Global_Mosaic_4km_Local"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/saturn/titan/layers/colorlayers/cassini_iss_global_mosaic_4km_sweden.asset b/data/assets/scene/solarsystem/planets/saturn/titan/layers/colorlayers/cassini_iss_global_mosaic_4km_sweden.asset index b04e2c974a..31a6190c70 100644 --- a/data/assets/scene/solarsystem/planets/saturn/titan/layers/colorlayers/cassini_iss_global_mosaic_4km_sweden.asset +++ b/data/assets/scene/solarsystem/planets/saturn/titan/layers/colorlayers/cassini_iss_global_mosaic_4km_sweden.asset @@ -14,21 +14,25 @@ local layer = { is created at some point in the future. (Description from URL)]], } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Cassini ISS Global Mosaic", - Version = "1.0", + Version = "1.1", Description = [[ Cassini global image layer for Titan. This layer is hosted on the OpenSpace server in Sweden]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Titan/Cassini/Global-Mosaic/" .. "Titan_ISS_P19658_Mosaic_Global_4km", - License = "NASA/PDS", - Identifiers = {"Cassini_ISS_Global_Mosaic_4km_LiU"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset b/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset index b407affe83..0ae3ee4a65 100644 --- a/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset +++ b/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 asset.require("./trail") @@ -47,20 +46,28 @@ local Titan = { Tag = { "moon_solarSystem", "moon_giants", "moon_saturn" }, GUI = { Name = "Titan", - Path = "/Solar System/Planets/Saturn/Moons", + Path = "/Solar System/Planets/Saturn/Moons/Titan", Description = [[Largest moon of Saturn.]] } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Titan }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Titan) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Titan) +end) + +asset.export(Titan) + asset.meta = { Name = "Titan", - Version = "1.0", + Version = "1.2", Description = [[ Titan globe with labels.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Titan"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/titan/trail.asset b/data/assets/scene/solarsystem/planets/saturn/titan/trail.asset index 7b4c0177b8..1ba1e08fe9 100644 --- a/data/assets/scene/solarsystem/planets/saturn/titan/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/titan/trail.asset @@ -1,5 +1,4 @@ local transforms = asset.require("../transforms") -local assetHelper = asset.require("util/asset_helper") local kernel = asset.require("../kernels").sat375 @@ -22,20 +21,28 @@ local TitanTrail = { Tag = { "moonTrail_solarSystem", "moonTrail_giants", "moonTrail_saturn" }, GUI = { Name = "Titan Trail", - Path = "/Solar System/Planets/Saturn/Moons", + Path = "/Solar System/Planets/Saturn/Moons/Titan", Description = [[ Trail of Saturn's moon Titan as observed by Saturn.]], } } -assetHelper.registerSceneGraphNodesAndExport(asset, { TitanTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(TitanTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(TitanTrail) +end) + +asset.export(TitanTrail) + asset.meta = { Name = "Titan Trail", - Version = "1.0", + Version = "1.2", Description = [[ Main trail for Titan. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"TitanTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/trail.asset b/data/assets/scene/solarsystem/planets/saturn/trail.asset index 5dcb752284..609414cbcf 100644 --- a/data/assets/scene/solarsystem/planets/saturn/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") @@ -25,15 +24,23 @@ local SaturnTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { SaturnTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(SaturnTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(SaturnTrail) +end) + +asset.export(SaturnTrail) + asset.meta = { Name = "Saturn Trail", - Version = "1.0", + Version = "1.1", Description = [[ Main trail of Saturn. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"SaturnTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset b/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset index def9f62137..2b637ff0a9 100644 --- a/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/saturn/trail_earth.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") asset.require("spice/base") @@ -29,16 +28,23 @@ local SaturnTrailEarth = { } } +asset.onInitialize(function() + openspace.addSceneGraphNode(SaturnTrailEarth) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(SaturnTrailEarth) +end) + +asset.export(SaturnTrailEarth) + + asset.meta = { Name = "Saturn Trail from Earth", - Version = "1.0", + Version = "1.1", Description = [[ Alternate trail of Saturn, as observed by the Earth rather then the Sun. Data from NASA SPICE (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"SaturnTrailEarth"} + License = "MIT license" } - - -assetHelper.registerSceneGraphNodesAndExport(asset, { SaturnTrailEarth }) diff --git a/data/assets/scene/solarsystem/planets/saturn/transforms.asset b/data/assets/scene/solarsystem/planets/saturn/transforms.asset index 4c1a939748..ca0d4df871 100644 --- a/data/assets/scene/solarsystem/planets/saturn/transforms.asset +++ b/data/assets/scene/solarsystem/planets/saturn/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -20,15 +19,23 @@ local SaturnBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { SaturnBarycenter }) +asset.onInitialize(function() + openspace.addSceneGraphNode(SaturnBarycenter) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(SaturnBarycenter) +end) + +asset.export(SaturnBarycenter) + asset.meta = { Name = "Saturn Transforms", - Version = "1.0", + Version = "1.1", Description = [[ Saturn Barycenter transform]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"SaturnBarycenter"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/uranus/inner_moons.asset b/data/assets/scene/solarsystem/planets/uranus/inner_moons.asset index 2ff105a6a0..cfbc96be7f 100644 --- a/data/assets/scene/solarsystem/planets/uranus/inner_moons.asset +++ b/data/assets/scene/solarsystem/planets/uranus/inner_moons.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") local kernel = asset.require("./kernels").ura091 @@ -242,10 +241,23 @@ local innerMoons = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(innerMoons) -) +local nodes = proceduralGlobes.createGlobes(innerMoons) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/uranus/irregular_prograde_moons.asset b/data/assets/scene/solarsystem/planets/uranus/irregular_prograde_moons.asset index 579a77e5e4..6e99028f0d 100644 --- a/data/assets/scene/solarsystem/planets/uranus/irregular_prograde_moons.asset +++ b/data/assets/scene/solarsystem/planets/uranus/irregular_prograde_moons.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") local kernel = asset.require("./kernels").ura112 @@ -36,10 +35,23 @@ local irregularMoons = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(irregularMoons) -) +local nodes = proceduralGlobes.createGlobes(irregularMoons) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/uranus/irregular_retrograde_moons.asset b/data/assets/scene/solarsystem/planets/uranus/irregular_retrograde_moons.asset index e2029da442..75aa8e70d2 100644 --- a/data/assets/scene/solarsystem/planets/uranus/irregular_retrograde_moons.asset +++ b/data/assets/scene/solarsystem/planets/uranus/irregular_retrograde_moons.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") local kernel = asset.require("./kernels").ura112 @@ -155,10 +154,23 @@ local irregularMoons = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(irregularMoons) -) +local nodes = proceduralGlobes.createGlobes(irregularMoons) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/uranus/layers/colorlayers/uranus_texture.asset b/data/assets/scene/solarsystem/planets/uranus/layers/colorlayers/uranus_texture.asset index 7efd9eb3cd..484a3388d2 100644 --- a/data/assets/scene/solarsystem/planets/uranus/layers/colorlayers/uranus_texture.asset +++ b/data/assets/scene/solarsystem/planets/uranus/layers/colorlayers/uranus_texture.asset @@ -12,13 +12,18 @@ local layer = { FilePath = texturesPath .. "uranus.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Uranus texture", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/uranus/major_moons.asset b/data/assets/scene/solarsystem/planets/uranus/major_moons.asset index d33e073d68..e9edef3cef 100644 --- a/data/assets/scene/solarsystem/planets/uranus/major_moons.asset +++ b/data/assets/scene/solarsystem/planets/uranus/major_moons.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") local kernel = asset.require("./kernels").ura111 @@ -100,10 +99,23 @@ local majorMoons = { } } -assetHelper.registerSceneGraphNodesAndExport( - asset, - proceduralGlobes.createGlobes(majorMoons) -) +local nodes = proceduralGlobes.createGlobes(majorMoons) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end +end) + +asset.onDeinitialize(function() + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/uranus/trail.asset b/data/assets/scene/solarsystem/planets/uranus/trail.asset index 6c21fde33f..0ba057bb65 100644 --- a/data/assets/scene/solarsystem/planets/uranus/trail.asset +++ b/data/assets/scene/solarsystem/planets/uranus/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") @@ -25,15 +24,23 @@ local UranusTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { UranusTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(UranusTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(UranusTrail) +end) + +asset.export(UranusTrail) + asset.meta = { Name = "Uranus Trail", - Version = "1.0", + Version = "1.1", Description = [[ Main trail of Uranus. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"UranusTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset b/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset index 60eed096e0..3858ed10bc 100644 --- a/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/uranus/trail_earth.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") asset.require("spice/base") @@ -29,16 +28,24 @@ local UranusTrailEarth = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { UranusTrailEarth }) +asset.onInitialize(function() + openspace.addSceneGraphNode(UranusTrailEarth) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(UranusTrailEarth) +end) + +asset.export(UranusTrailEarth) + asset.meta = { Name = "Uranus Trail from Earth", - Version = "1.0", + Version = "1.1", Description = [[ Alternate trail of Uranus, as observed by the Earth rather then the Sun. Data from NASA SPICE (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"UranusTrailEarth"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/uranus/transforms.asset b/data/assets/scene/solarsystem/planets/uranus/transforms.asset index 0cdd92f642..0cbc8cb828 100644 --- a/data/assets/scene/solarsystem/planets/uranus/transforms.asset +++ b/data/assets/scene/solarsystem/planets/uranus/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -22,15 +21,23 @@ local UranusBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { UranusBarycenter }) +asset.onInitialize(function() + openspace.addSceneGraphNode(UranusBarycenter) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(UranusBarycenter) +end) + +asset.export(UranusBarycenter) + asset.meta = { Name = "Uranus Transforms", - Version = "1.0", + Version = "1.1", Description = [[ Uranus Barycenter transform]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"UranusBarycenter"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/uranus/uranus.asset b/data/assets/scene/solarsystem/planets/uranus/uranus.asset index 6e065fd4e2..9a36778a34 100644 --- a/data/assets/scene/solarsystem/planets/uranus/uranus.asset +++ b/data/assets/scene/solarsystem/planets/uranus/uranus.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") asset.require("spice/base") asset.require("./trail") @@ -53,15 +52,26 @@ local UranusLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Uranus, UranusLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Uranus) + openspace.addSceneGraphNode(UranusLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(UranusLabel) + openspace.removeSceneGraphNode(Uranus) +end) + +asset.export(Uranus) +asset.export(UranusLabel) + asset.meta = { Name = "Uranus", - Version = "1.0", + Version = "1.1", Description = [[ Uranus globe, and main planet label.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Uranus" , "UranusLabel"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/venus/atmosphere.asset b/data/assets/scene/solarsystem/planets/venus/atmosphere.asset index 4e6f7515fe..91c1d24e50 100644 --- a/data/assets/scene/solarsystem/planets/venus/atmosphere.asset +++ b/data/assets/scene/solarsystem/planets/venus/atmosphere.asset @@ -1,5 +1,4 @@ local transforms = asset.require("./venus") -local assetHelper = asset.require("util/asset_helper") @@ -52,15 +51,24 @@ local Atmosphere = { Description = "Simulation of Venus' Atmosphere" } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Atmosphere }) + +asset.onInitialize(function() + openspace.addSceneGraphNode(Atmosphere) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(Atmosphere) +end) + +asset.export(Atmosphere) + asset.meta = { Name = "Venus Atmosphere", - Version = "1.0", + Version = "1.1", Description = [[ Atmosphere of Venus.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"VenusAtmosphere"} + 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 cd7a8e653b..26f07e266c 100644 --- a/data/assets/scene/solarsystem/planets/venus/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/venus/default_layers.asset @@ -15,7 +15,7 @@ end) asset.meta = { Name = "Default Venus Layers", - Version = "1.0", + Version = "1.1", Description = [[ Default Venus layers are: Venus Magellan Mosaic and Venus Magellan DEM]], Author = "OpenSpace Team", diff --git a/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/magellan_mosaic_utah.asset b/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/magellan_mosaic_utah.asset index df2ad89162..675fd292bb 100644 --- a/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/magellan_mosaic_utah.asset +++ b/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/magellan_mosaic_utah.asset @@ -26,13 +26,18 @@ local layer = { } } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Venus Magellan Mosaic", Version = "1.0", @@ -41,6 +46,5 @@ asset.meta = { Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Venus/Magellan/" .. "Venus_Magellan_LeftLook_mosaic_global_75m", - License = "NASA/PDS", - Identifiers = {"Magellan_Mosaic_Utah"} + License = "NASA/PDS" } diff --git a/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/venus_texture.asset b/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/venus_texture.asset index 8aee32e12e..1d919f192c 100644 --- a/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/venus_texture.asset +++ b/data/assets/scene/solarsystem/planets/venus/layers/colorlayers/venus_texture.asset @@ -16,8 +16,23 @@ local layer = { } } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + + + +asset.meta = { + Name = "Venus Texture", + Version = "1.0", + Description = [[ This asset supplies a default texture for Venus.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/venus/layers/heightlayers/magellan_utah.asset b/data/assets/scene/solarsystem/planets/venus/layers/heightlayers/magellan_utah.asset index c1475af736..58510b7931 100644 --- a/data/assets/scene/solarsystem/planets/venus/layers/heightlayers/magellan_utah.asset +++ b/data/assets/scene/solarsystem/planets/venus/layers/heightlayers/magellan_utah.asset @@ -21,13 +21,18 @@ local layer = { } } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "HeightLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "HeightLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Venus Magellan DEM", Version = "1.0", diff --git a/data/assets/scene/solarsystem/planets/venus/trail.asset b/data/assets/scene/solarsystem/planets/venus/trail.asset index db8a8f09b5..53f3fa13dc 100644 --- a/data/assets/scene/solarsystem/planets/venus/trail.asset +++ b/data/assets/scene/solarsystem/planets/venus/trail.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -27,16 +26,24 @@ local VenusTrail = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { VenusTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(VenusTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(VenusTrail) +end) + +asset.export(VenusTrail) + asset.meta = { Name = "Venus Trail", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Venus as observed by the Sun. Data from NASA Spice (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"VenusTrail"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/venus/trail_earth.asset b/data/assets/scene/solarsystem/planets/venus/trail_earth.asset index 62133e5af9..2796e9819c 100644 --- a/data/assets/scene/solarsystem/planets/venus/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/venus/trail_earth.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") asset.require("spice/base") @@ -28,16 +27,24 @@ local VenusTrailEarth = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { VenusTrailEarth }) +asset.onInitialize(function() + openspace.addSceneGraphNode(VenusTrailEarth) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(VenusTrailEarth) +end) + +asset.export(VenusTrailEarth) + asset.meta = { Name = "Venus Trail from Earth", - Version = "1.0", + Version = "1.1", Description = [[ Trail of Venus as observed by the Earth. Data from NASA SPICE (see base spice asset)]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"VenusTrailEarth"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/venus/transforms.asset b/data/assets/scene/solarsystem/planets/venus/transforms.asset index 9620f615e0..f1ca8a9193 100644 --- a/data/assets/scene/solarsystem/planets/venus/transforms.asset +++ b/data/assets/scene/solarsystem/planets/venus/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") @@ -20,15 +19,23 @@ local VenusBarycenter = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { VenusBarycenter }) +asset.onInitialize(function() + openspace.addSceneGraphNode(VenusBarycenter) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(VenusBarycenter) +end) + +asset.export(VenusBarycenter) + asset.meta = { Name = "Venus Transforms", - Version = "1.0", + Version = "1.1", Description = [[ Spice translation for Venus Barycenter ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"VenusBarycenter"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/planets/venus/venus.asset b/data/assets/scene/solarsystem/planets/venus/venus.asset index 1a3acd055b..7502fab742 100644 --- a/data/assets/scene/solarsystem/planets/venus/venus.asset +++ b/data/assets/scene/solarsystem/planets/venus/venus.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") asset.require("spice/base") asset.require("./trail") @@ -78,15 +77,26 @@ local VenusLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Venus, VenusLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Venus) + openspace.addSceneGraphNode(VenusLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(VenusLabel) + openspace.removeSceneGraphNode(Venus) +end) + +asset.export(Venus) +asset.export(VenusLabel) + asset.meta = { Name = "Venus", - Version = "1.0", + Version = "1.1", Description = [[ Venus globe with labels, and main planet label.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Venus", "VenusLabel"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/sssb/amor_asteroid.asset b/data/assets/scene/solarsystem/sssb/amor_asteroid.asset index ff4e89334c..f6aa4d4292 100644 --- a/data/assets/scene/solarsystem/sssb/amor_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/amor_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "amor_asteroid", @@ -12,18 +11,27 @@ object.Renderable.TrailFade = 11 object.GUI.Description = [[ Earth-approaching Near-Earth-Asteroids with orbits exterior to Earth's but interior to Mars'. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) + +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Amor Asteroids", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining the Amor group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws."]], - Identifiers = {"sssb_sssb_data_amor_asteroid"} + Foreign Copyright Laws."]] } diff --git a/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset b/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset index 667bfb0d30..4b5af30cb6 100644 --- a/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/apollo_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "apollo_asteroid", @@ -12,18 +11,26 @@ object.Renderable.TrailFade = 10 object.GUI.Description = [[ Earth-crossing Near-Earth-Asteroids with semi-major axes larger than Earth's. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Apollo Asteroids", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining the Apollo group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_apollo_asteroid"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/astraea.asset b/data/assets/scene/solarsystem/sssb/astraea.asset index 87ed46a177..8aea181ece 100644 --- a/data/assets/scene/solarsystem/sssb/astraea.asset +++ b/data/assets/scene/solarsystem/sssb/astraea.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local trajectory = asset.syncedResource({ @@ -44,12 +43,24 @@ local AstraeaPosition = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { AstraeaPosition, AstraeaTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(AstraeaPosition) + openspace.addSceneGraphNode(AstraeaTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(AstraeaTrail) + openspace.removeSceneGraphNode(AstraeaPosition) +end) + +asset.export(AstraeaPosition) +asset.export(AstraeaTrail) + asset.meta = { Name = "5 Astraea", - Version = "1.0", + Version = "1.1", Description = [[ This asset contains the trail and position of 5 Astraea from 2014 JAN 01 00:00:00 to 2023 JAN 01 00:00:00. Data from JPL Horizons']], diff --git a/data/assets/scene/solarsystem/sssb/aten_asteroid.asset b/data/assets/scene/solarsystem/sssb/aten_asteroid.asset index 63c1f2dc2d..d025543087 100644 --- a/data/assets/scene/solarsystem/sssb/aten_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/aten_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "aten_asteroid", @@ -13,18 +12,26 @@ object.GUI.Description = [[ Earth-crossing Near-Earth-Asteroids with semi-major smaller than Earth's. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Aten Asteroids", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining the Aten group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_aten_asteroid"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/atira_asteroid.asset b/data/assets/scene/solarsystem/sssb/atira_asteroid.asset index b16b13266a..fae5b7d6e4 100644 --- a/data/assets/scene/solarsystem/sssb/atira_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/atira_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "atira_asteroid", @@ -13,18 +12,26 @@ object.GUI.Description = [[ Near-Earth-Asteroids whose orbits are contained enti within the orbit of the Earth. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Atira Asteroids", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining the Atira group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws."]], - Identifiers = {"sssb_sssb_data_atira_asteroid"} + Foreign Copyright Laws."]] } diff --git a/data/assets/scene/solarsystem/sssb/c2019y4atlas.asset b/data/assets/scene/solarsystem/sssb/c2019y4atlas.asset index 49c06b661f..c72f899c5c 100644 --- a/data/assets/scene/solarsystem/sssb/c2019y4atlas.asset +++ b/data/assets/scene/solarsystem/sssb/c2019y4atlas.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local orbit = asset.syncedResource({ @@ -46,18 +45,27 @@ local C2019Y4AtlasPosition = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - C2019Y4AtlasPosition, C2019Y4AtlasTrail -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(C2019Y4AtlasPosition) + openspace.addSceneGraphNode(C2019Y4AtlasTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(C2019Y4AtlasTrail) + openspace.removeSceneGraphNode(C2019Y4AtlasPosition) +end) + +asset.export(C2019Y4AtlasPosition) +asset.export(C2019Y4AtlasTrail) + asset.meta = { Name = "C/2019 Y4 Atlas", - Version = "1.0", + Version = "1.1", Description = [[ This asset contains the trail and position of C/2019 Y4 Atlas from 1950 JAN 01 00:00:00 to 2100 JAN 01 00:00:00. Data from JPL Horizons]], Author = "OpenSpace Team", URL = "https://ssd.jpl.nasa.gov/horizons.cgi", - License = "NASA", - Identifiers = {"C2019Y4AtlasPosition", "C2019Y4AtlasTrail"} + License = "NASA" } diff --git a/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset b/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset index 1fd58d3029..fdbbde119b 100644 --- a/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "centaur_asteroid", @@ -13,18 +12,26 @@ object.GUI.Description = [[ Asteroids with either a perihelion or a semi-major a between those of the four outer planets. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Centaur Asteroids", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining the Centaur group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_centaur_asteroid"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset b/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset index c5fa1d6cd6..e8bafdb16b 100644 --- a/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/chiron-type_comet.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "chiron-type_comet", @@ -13,18 +12,26 @@ object.GUI.Description = [[ Comets with a Tisserand's parameter with respect to greater than 3 and a semi-major axis greater than that of Jupiter. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Chiron-Type Comets", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining the Chiron-Type group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_chiron-type_comet"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/encke-type_comet.asset b/data/assets/scene/solarsystem/sssb/encke-type_comet.asset index 2dfea14d39..556edaaaea 100644 --- a/data/assets/scene/solarsystem/sssb/encke-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/encke-type_comet.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "encke-type_comet", @@ -13,18 +12,26 @@ object.GUI.Description = [[ Comets with a Tisserand's parameter with respect to greater than 3 and a semi-major axis less than that of Jupiter. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Encke-Type Comets", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining the Encke-Type group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_encke-type_comet"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/halley-type_comet.asset b/data/assets/scene/solarsystem/sssb/halley-type_comet.asset index bf3cd4537f..84128cd02f 100644 --- a/data/assets/scene/solarsystem/sssb/halley-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/halley-type_comet.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "halley-type_comet", @@ -12,18 +11,26 @@ object.Renderable.TrailFade = 18 object.GUI.Description = [[ Periodic comets with an orbital period between 20 and 200 years. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Halley-Type Comets", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining the Halley-Type group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_halley-type_comet"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset index d07fa4ab13..f8de07bb23 100644 --- a/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/inner_main_belt_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "inner_main_belt_asteroid", @@ -13,18 +12,26 @@ object.GUI.Description = [[ Asteroids with a semi-major axis less than 2.0 au an perihelion distance greater than 1.666 au. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Inner Main Asteroid Belt", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining the Inner Main Asteroid Belt group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_inner_main_belt_asteroid"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset b/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset index 82ed1f5901..52aa485761 100644 --- a/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset +++ b/data/assets/scene/solarsystem/sssb/jupiter-family_comet.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "jupiter-family_comet", @@ -13,18 +12,26 @@ object.GUI.Description = [[ Comets with a Tisserand's parameter with respect to between 2 and 3. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Jupiter Family Comets", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining Jupiter-family group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_jupiter-family_comet"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset b/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset index 6e3e344b6b..778d815f2f 100644 --- a/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/jupiter_trojan_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "jupiter_trojan_asteroid", @@ -13,18 +12,26 @@ object.GUI.Description = [[ Asteroids trapped in Jupiter's L4/L5 Lagrange points (semimajor axis of between 4.6 and 5.5 au), with an eccentricity of less than 0.3. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Jupiter Trojan Asteroids", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining Jupiter Trojan group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_jupiter_trojan_asteroid"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset index 77ca6d32be..0eff00d9f4 100644 --- a/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/main_belt_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "main_belt_asteroid", @@ -14,18 +13,26 @@ object.GUI.Description = [[ Asteroids with a semi-major axis of between 2.0 and and a perihelion distance greater than 1.666 au. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Main Asteroid Belt", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining Main Asteroid Belt group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_main_belt_asteroid"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset b/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset index 5be63fdf52..e252c81ad9 100644 --- a/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/mars-crossing_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "mars-crossing_asteroid", @@ -13,18 +12,26 @@ object.GUI.Description = [[ Asteroids that cross the orbit of Mars, with a semi- of less than 3.2 au, and a perihelion distance of between 1.3 and 1.666 au. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Mars-Crossing Asteroids", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons containing Mars-Crossing group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. and - Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_mars-crossing_asteroid"} + Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset b/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset index 0c3b16a9c4..e74c9219ad 100644 --- a/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/outer_main_belt_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile( @@ -18,18 +17,26 @@ object.Renderable.TrailFade = 2 object.GUI.Description = [[ Asteroids with a semi-major axis of between 3.2 and 4.6 au. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Outer Main Asteroid Belt", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining Outer Main Asteroid Belt group.]], Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected under the U.S. - and Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_outer_main_belt_asteroid"} + and Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/pha.asset b/data/assets/scene/solarsystem/sssb/pha.asset index e80295a478..f4e07ec1d5 100644 --- a/data/assets/scene/solarsystem/sssb/pha.asset +++ b/data/assets/scene/solarsystem/sssb/pha.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, "pha", "sssb_data_pha") @@ -17,12 +16,21 @@ object.GUI.Description = [[ Asteroids that are deemed potentially hazardous to E of 22.0 or less. ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Potentially-Hazardous Asteroids", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining Potentially Hazardous group. ]], Author = [[JPL Small-Body Database hosted by California Institute of @@ -30,6 +38,5 @@ asset.meta = { URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected - under the U.S. and Foreign Copyright Laws.]], - Identifiers = {"sssb_sssb_data_pha"} + under the U.S. and Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/sssb_shared.asset b/data/assets/scene/solarsystem/sssb/sssb_shared.asset index c8770fb413..732b70c745 100644 --- a/data/assets/scene/solarsystem/sssb/sssb_shared.asset +++ b/data/assets/scene/solarsystem/sssb/sssb_shared.asset @@ -38,3 +38,13 @@ end asset.export("downloadSssbDatabaseFile", downloadSssbDatabaseFile) asset.export("createSssbGroupObject", createSssbGroupObject) + + +asset.meta = { + Name = "SSSB shared", + Version = "1.0", + Description = [[ UTILITY ASSET; This asset is for builders and coders.]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/sssb/swifttuttle.asset b/data/assets/scene/solarsystem/sssb/swifttuttle.asset index bcad498a16..b993dc7108 100644 --- a/data/assets/scene/solarsystem/sssb/swifttuttle.asset +++ b/data/assets/scene/solarsystem/sssb/swifttuttle.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local sync = asset.syncedResource({ @@ -43,20 +42,29 @@ local SwiftTuttlePosition = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { - SwiftTuttlePosition, SwiftTuttleTrail -}) +asset.onInitialize(function() + openspace.addSceneGraphNode(SwiftTuttlePosition) + openspace.addSceneGraphNode(SwiftTuttleTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(SwiftTuttleTrail) + openspace.removeSceneGraphNode(SwiftTuttlePosition) +end) + +asset.export(SwiftTuttlePosition) +asset.export(SwiftTuttleTrail) + asset.meta = { Name = "Swift Tuttle", - Version = "1.0", + Version = "1.1", Description = [[ Position and Trail of Swift Tuttle from 1879 JUN 27 to 1879 JUN 27. Data from JPL Horizons]], Author = "OpenSpace Team", URL = "https://ssd.jpl.nasa.gov/horizons.cgi", License = [[ JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected - under the U.S. and Foreign Copyright Laws."]], - Identifiers = {"SwiftTuttlePosition", "SwiftTuttleTrail"} + under the U.S. and Foreign Copyright Laws."]] } diff --git a/data/assets/scene/solarsystem/sssb/tesla_roadster.asset b/data/assets/scene/solarsystem/sssb/tesla_roadster.asset index fc1e71735a..3a09734bb4 100644 --- a/data/assets/scene/solarsystem/sssb/tesla_roadster.asset +++ b/data/assets/scene/solarsystem/sssb/tesla_roadster.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") local orbit = asset.syncedResource({ @@ -46,18 +45,29 @@ local TeslaPosition = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { TeslaPosition, TeslaRoadsterTrail }) +asset.onInitialize(function() + openspace.addSceneGraphNode(TeslaPosition) + openspace.addSceneGraphNode(TeslaRoadsterTrail) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(TeslaRoadsterTrail) + openspace.removeSceneGraphNode(TeslaPosition) +end) + +asset.export(TeslaPosition) +asset.export(TeslaRoadsterTrail) + asset.meta = { Name = "Tesla Roadster", - Version = "1.0", + Version = "1.1", Description = [[ Position and Trail of Tesla Roadster from 2018 FEB 8 to 2022 FEB 7 00:00:00. Data from JPL Horizons.]], Author = "OpenSpace Team", URL = "https://ssd.jpl.nasa.gov/horizons.cgi", License = [[ JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected - under the U.S. and Foreign Copyright Laws.]], - Identifiers = {"TeslaPosition", "TeslaRoadsterTrail"} + under the U.S. and Foreign Copyright Laws.]] } diff --git a/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset b/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset index 312c4ee154..b5d8fcab14 100644 --- a/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/transneptunian_object_asteroid.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sharedSssb = asset.require("./sssb_shared") local filepath = sharedSssb.downloadSssbDatabaseFile(asset, @@ -19,12 +18,21 @@ object.GUI.Description = [[ Any minor or dwarf planets in the solar system that the Sun at a greater average distance than Neptune (semi-major axis of 30.1 AU). ]] -assetHelper.registerSceneGraphNodesAndExport(asset, { object }) +asset.onInitialize(function() + openspace.addSceneGraphNode(object) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(object) +end) + +asset.export(object) + asset.meta = { Name = "Trans-Neptunian Asteroids", - Version = "1.0", + Version = "1.1", Description = [[ RenderableSmallBody asset with data from from JPL Horizons contiaining Trans-Neptunian group. ]], Author = [[JPL Small-Body Database hosted by California Institute of @@ -32,6 +40,5 @@ asset.meta = { URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[ JPL-authored documents are sponsored by NASA under Contract NAS7-030010. All documents available from this server may be protected - under the U.S. and Foreign Copyright Laws."]], - Identifiers = {"sssb_sssb_data_transneptunian_object_asteroid"} + under the U.S. and Foreign Copyright Laws."]] } diff --git a/data/assets/scene/solarsystem/sun.asset b/data/assets/scene/solarsystem/sun.asset index 0b1286c347..e7ace91216 100644 --- a/data/assets/scene/solarsystem/sun.asset +++ b/data/assets/scene/solarsystem/sun.asset @@ -1,2 +1,13 @@ asset.require("./sun/sun") asset.require("./sun/glare") + + +asset.meta = { + Name = "Sun", + Version = "1.0", + Description = [[ Meta asset for the Sun in our solar system. Contains the Sun globe and + Sun glare texture]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/sun/EUV_layer.asset b/data/assets/scene/solarsystem/sun/EUV_layer.asset index 7a7e617a41..3bd8eb63cb 100644 --- a/data/assets/scene/solarsystem/sun/EUV_layer.asset +++ b/data/assets/scene/solarsystem/sun/EUV_layer.asset @@ -1,5 +1,4 @@ asset.require("spice/base") -local assetHelper = asset.require("util/asset_helper") local propertyHelper = asset.require("util/property_helper") local transforms = asset.require("./transforms") @@ -39,19 +38,23 @@ local toggle_EUV_layer = { asset.onInitialize(function () openspace.action.registerAction(toggle_EUV_layer) + openspace.addSceneGraphNode(EUVLayer) end) + asset.onDeinitialize(function () - openspace.action.removeAction(toggle_EUV_layer.Identifier) + openspace.removeSceneGraphNode(EUVLayer) + openspace.action.removeAction(toggle_EUV_layer) end) -assetHelper.registerSceneGraphNodesAndExport(asset, { EUVLayer }) + +asset.export(EUVLayer) + asset.meta = { Name = "Predictive Science Inc. EUV texture sequence Bastille Days", - Version = "1.0", + Version = "1.1", Description = [[Texture sequence of an extreme ultraviolet (EUV) simulation during, the CME]], Author = "CCMC, OpenSpace team", URL = "https://dx.doi.org/10.3847/1538-4357/aab36d", - License = "CC-BY", - Identifier = {"EUV-Layer-bastille-day-2000"} + License = "CC-BY" } diff --git a/data/assets/scene/solarsystem/sun/glare.asset b/data/assets/scene/solarsystem/sun/glare.asset index ee3697c1aa..e5f03f176b 100644 --- a/data/assets/scene/solarsystem/sun/glare.asset +++ b/data/assets/scene/solarsystem/sun/glare.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") asset.require("spice/base") @@ -30,15 +29,24 @@ local SunGlare = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { SunGlare }) +asset.onInitialize(function() + openspace.addSceneGraphNode(SunGlare) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(SunGlare) +end) + +asset.export(SunGlare) + + asset.meta = { Name = "Sun Glare", - Version = "1.0", + Version = "1.1", Description = [[ Image plane with sun glare effect.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"SunGlare"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/sun/habitablezone.asset b/data/assets/scene/solarsystem/sun/habitablezone.asset index 6726c3667c..b1363cdc04 100644 --- a/data/assets/scene/solarsystem/sun/habitablezone.asset +++ b/data/assets/scene/solarsystem/sun/habitablezone.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") local textures = asset.require("scene/milkyway/habitable_zones/habitable_zone_textures").TexturesPath @@ -21,15 +20,23 @@ local HabitableZone = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { HabitableZone }) +asset.onInitialize(function() + openspace.addSceneGraphNode(HabitableZone) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(HabitableZone) +end) + +asset.export(HabitableZone) + asset.meta = { Name = "Sun Habitable Zone", - Version = "1.0", + Version = "1.1", Description = [[ The habitable zone around our sun, computed using formula and coefficients by Kopparapu et al. (2015) https://arxiv.org/abs/1404.5292]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"SunHabitableZone"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/sun/layers/colorlayers/sun_texture.asset b/data/assets/scene/solarsystem/sun/layers/colorlayers/sun_texture.asset index 2ce7e12487..1e9602e912 100644 --- a/data/assets/scene/solarsystem/sun/layers/colorlayers/sun_texture.asset +++ b/data/assets/scene/solarsystem/sun/layers/colorlayers/sun_texture.asset @@ -1,6 +1,5 @@ local globeIdentifier = asset.require("../../sun").Sun.Identifier - local texturesPath = asset.syncedResource({ Type = "HttpSynchronization", Name = "Sun textures", @@ -13,13 +12,18 @@ local layer = { FilePath = texturesPath .. "sun.jpg", } -asset.onInitialize(function () +asset.onInitialize(function() openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) end) +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + asset.export("layer", layer) + asset.meta = { Name = "Sun Texture", Version = "1.0", diff --git a/data/assets/scene/solarsystem/sun/marker.asset b/data/assets/scene/solarsystem/sun/marker.asset index 877fad9992..10e1bfc251 100644 --- a/data/assets/scene/solarsystem/sun/marker.asset +++ b/data/assets/scene/solarsystem/sun/marker.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") asset.require("spice/base") @@ -29,15 +28,23 @@ local SunMarker = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { SunMarker }) +asset.onInitialize(function() + openspace.addSceneGraphNode(SunMarker) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(SunMarker) +end) + +asset.export(SunMarker) + asset.meta = { Name = "Sun marker", - Version = "1.0", - Description = [[ Marker for the sun, with a stick and label.]], + Version = "1.1", + Description = [[ Marker for the Sun, with a stick and label.]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"SunMarker"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/sun/sun.asset b/data/assets/scene/solarsystem/sun/sun.asset index de53d4aa1b..f494cd04d0 100644 --- a/data/assets/scene/solarsystem/sun/sun.asset +++ b/data/assets/scene/solarsystem/sun/sun.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local transforms = asset.require("./transforms") asset.require("spice/base") @@ -45,15 +44,26 @@ local SunLabel = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { Sun, SunLabel }) +asset.onInitialize(function() + openspace.addSceneGraphNode(Sun) + openspace.addSceneGraphNode(SunLabel) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(SunLabel) + openspace.removeSceneGraphNode(Sun) +end) + +asset.export(Sun) +asset.export(SunLabel) + asset.meta = { Name = "Sun", - Version = "1.0", + Version = "1.1", Description = [[ The Sun and label]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"Sun" , "SunLabel"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/sun/transforms.asset b/data/assets/scene/solarsystem/sun/transforms.asset index 952b9e8515..9e75ac3ad3 100644 --- a/data/assets/scene/solarsystem/sun/transforms.asset +++ b/data/assets/scene/solarsystem/sun/transforms.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") asset.require("spice/base") @@ -85,16 +84,33 @@ local SunECLIPJ2000 = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { SolarSystemBarycenter, SunCenter, SunIAU, SunECLIPJ2000 }) +asset.onInitialize(function() + openspace.addSceneGraphNode(SolarSystemBarycenter) + openspace.addSceneGraphNode(SunCenter) + openspace.addSceneGraphNode(SunIAU) + openspace.addSceneGraphNode(SunECLIPJ2000) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(SunECLIPJ2000) + openspace.removeSceneGraphNode(SunIAU) + openspace.removeSceneGraphNode(SunCenter) + openspace.removeSceneGraphNode(SolarSystemBarycenter) +end) + +asset.export(SolarSystemBarycenter) +asset.export(SunCenter) +asset.export(SunIAU) +asset.export(SunECLIPJ2000) + asset.meta = { Name = "Sun Transforms", - Version = "1.0", + Version = "1.1", Description = [[ Sun transforms: Solar System Barycenter, SUN IAU and SUN J2000]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"SolarSystemBarycenter", "SunIAU", "SunECLIPJ2000"} + License = "MIT license" } diff --git a/data/assets/scene/solarsystem/sun/transforms_heliosphere.asset b/data/assets/scene/solarsystem/sun/transforms_heliosphere.asset index 9478e20141..5245786469 100644 --- a/data/assets/scene/solarsystem/sun/transforms_heliosphere.asset +++ b/data/assets/scene/solarsystem/sun/transforms_heliosphere.asset @@ -1,4 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") local HEEQ180Kernel = asset.localResource("./kernels/HEEQ180.tf") @@ -26,14 +25,22 @@ local HEEQ180ReferenceFrame = { } } -assetHelper.registerSceneGraphNodesAndExport(asset, { HEEQ180ReferenceFrame }) +asset.onInitialize(function() + openspace.addSceneGraphNode(HEEQ180ReferenceFrame) +end) + +asset.onDeinitialize(function() + openspace.removeSceneGraphNode(HEEQ180ReferenceFrame) +end) + +asset.export(HEEQ180ReferenceFrame) + asset.meta = { Name = "Sun Transform, HEEQ180", - Version = "1.0", + Version = "1.1", Description = "Sun transform: HEEQ180", Author = "CCMC", URL = "http://openspaceproject.com", - License = "MIT license", - Identifiers = {"HEEQ180ReferenceFrame"} + License = "MIT license" } diff --git a/data/assets/spice/base.asset b/data/assets/spice/base.asset index 2f57cf3f38..ea15930774 100644 --- a/data/assets/spice/base.asset +++ b/data/assets/spice/base.asset @@ -1,7 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - - - local syncedDirectory = asset.syncedResource({ Name = "General SPK Kernels", Type = "HttpSynchronization", @@ -16,7 +12,17 @@ local kernels = { syncedDirectory .. "de430_1850-2150.bsp" } -assetHelper.registerSpiceKernels(asset, kernels) +asset.onInitialize(function() + for _, kernel in ipairs(kernels) do + openspace.spice.loadKernel(kernel) + end +end) + +asset.onDeinitialize(function() + for i = #kernels, 1, -1 do + openspace.spice.unloadKernel(kernels[i]) + end +end) asset.meta = { diff --git a/data/assets/util/add_marker.asset b/data/assets/util/add_marker.asset index 2185749fe9..6ede2fcf55 100644 --- a/data/assets/util/add_marker.asset +++ b/data/assets/util/add_marker.asset @@ -5,15 +5,17 @@ local icons = asset.syncedResource({ Version = 1 }) +local marker = { + Identifier = "target-marker", + Name = "Target Marker", + Type = "ScreenSpaceImageLocal", + TexturePath = icons .. "target.png" +} + asset.onInitialize(function() - openspace.addScreenSpaceRenderable({ - Identifier = "target-marker", - Name = "Target Marker", - Type = "ScreenSpaceImageLocal", - TexturePath = icons .. "target.png" - }) + openspace.addScreenSpaceRenderable(marker) end) asset.onDeinitialize(function() - openspace.removeScreenSpaceRenderable("target-marker") + openspace.removeScreenSpaceRenderable(marker) end) diff --git a/data/assets/util/asset_helper.asset b/data/assets/util/asset_helper.asset deleted file mode 100644 index 51fc00b2e8..0000000000 --- a/data/assets/util/asset_helper.asset +++ /dev/null @@ -1,186 +0,0 @@ -local tableLength = function(table) - local count = 0 - for _ in pairs(table) do count = count + 1 end - return count -end - - -local registerSpiceKernels = function (spiceAsset, kernels) - spiceAsset.onInitialize(function () - for i, kernel in ipairs(kernels) do - openspace.spice.loadKernel(kernel) - end - end) - spiceAsset.onDeinitialize(function () - for i = #kernels, 1, -1 do - local kernel = kernels[i] - openspace.spice.unloadKernel(kernel) - end - end) -end - -local registerSceneGraphNodes = function (sceneAsset, nodes, override) - override = override or false - if not override then - if tableLength(nodes) == 0 then - openspace.printWarning(sceneAsset.filePath .. ": Register function was called with an empty node list. Pass 'true' as third argument to silence this warning.") - return - end - end - - - sceneAsset.onInitialize(function () - for i, node in ipairs(nodes) do - openspace.addSceneGraphNode(node) - end - end) - sceneAsset.onDeinitialize(function () - for i = #nodes, 1, -1 do - node = nodes[i] - openspace.removeSceneGraphNode(node.Identifier) - end - end) -end - - -local registerScreenSpaceRenderables = function (sceneAsset, renderables, override) - override = override or false - if not override then - if tableLength(renderables) == 0 then - openspace.printWarning(sceneAsset.filePath .. ": Register function was called with an empty node list. Pass 'true' as third argument to silence this warning.") - return - end - end - - sceneAsset.onInitialize(function () - for i, node in ipairs(renderables) do - openspace.addScreenSpaceRenderable(node) - end - end) - sceneAsset.onDeinitialize(function () - for i = #renderables, 1, -1 do - renderable = renderables[i] - openspace.removeScreenSpaceRenderable(renderable.Identifier) - end - end) -end - -local registerDashboardItems = function (dashboardAsset, items) - dashboardAsset.onInitialize( - function () - for i, item in ipairs(items) do - openspace.dashboard.addDashboardItem(item) - end - end - ) - dashboardAsset.onDeinitialize(function () - for i = #items, 1, -1 do - local item = items[i] - openspace.dashboard.removeDashboardItem(item.Identifier) - end - end) -end - -local registerSceneGraphNodesAndExport = function (sceneAsset, nodes, override) - override = override or false - if not override then - if tableLength(nodes) == 0 then - openspace.printWarning(sceneAsset.filePath .. ": Register function was called with an empty node list. Pass 'true' as third argument to silence this warning.") - return - end - end - - for i, node in ipairs(nodes) do - if not node.Identifier then - openspace.printError("Could not load asset as Identifier was missing") - end - end - - sceneAsset.onInitialize(function () - for i, node in ipairs(nodes) do - openspace.addSceneGraphNode(node) - end - end) - sceneAsset.onDeinitialize(function () - for i = #nodes, 1, -1 do - local node = nodes[i] - openspace.removeSceneGraphNode(node.Identifier) - end - end) - - for i, node in ipairs(nodes) do - sceneAsset.export(node.Identifier, node) - end -end - -local requireAll = function (sceneAsset, directory) - function string.ends(String,End) - return End == "" or string.sub(String,-string.len(End))==End - end - - local result = {} - - local files = openspace.walkDirectoryFiles(sceneAsset.localResource("") .. directory, true) - for _, file in pairs(files) do - if file:ends(".asset") then - openspace.printDebug("Requiring: " .. file:sub(file:find(directory), -7)) - local exports = sceneAsset.require(file:sub(1, -7)) - table.insert(result, exports) - end - end - - return result -end - -local getDefaultLightSources = function (solarSystemBarycenterIdentifier) - local sourceList = { - { - Type = "SceneGraphLightSource", - Identifier = "Sun", - Node = solarSystemBarycenterIdentifier, - Intensity = 1.0 - }, - { - Identifier = "Camera", - Type = "CameraLightSource", - Intensity = 0.5 - } - } - return sourceList -end - - -local createModelPart = function (parent, sunLightSourceNode, models, geometry, texture, performShading) - local lightSources = {} - if performShading then - lightSources[1] = { - Type = "SceneGraphLightSource", - Identifier = "Sun", - Node = sunLightSourceNode, - Intensity = 1.0 - } - end - return { - Identifier = parent .. "-" .. geometry, - Parent = parent, - Renderable = { - Type = "RenderableModel", - GeometryFile = models .. "/" .. geometry .. ".obj", - LightSources = lightSources, - PerformShading = performShading, - DisableFaceCulling = true - }, - GUI = { - Hidden = true - } - } -end - -asset.export("registerSceneGraphNodes", registerSceneGraphNodes) -asset.export("registerSceneGraphNodesAndExport", registerSceneGraphNodesAndExport) -asset.export("registerScreenSpaceRenderables", registerScreenSpaceRenderables) -asset.export("registerSpiceKernels", registerSpiceKernels) -asset.export("registerDashboardItems", registerDashboardItems) -asset.export("requireAll", requireAll) -asset.export("getDefaultLightSources", getDefaultLightSources) -asset.export("createModelPart", createModelPart) diff --git a/data/assets/util/default_keybindings.asset b/data/assets/util/default_keybindings.asset index 711c188662..bbabe20685 100644 --- a/data/assets/util/default_keybindings.asset +++ b/data/assets/util/default_keybindings.asset @@ -207,7 +207,7 @@ asset.onDeinitialize(function () openspace.clearKey("PRINT_SCREEN") for _, action in ipairs(Actions) do - openspace.action.removeAction(action.Identifier) + openspace.action.removeAction(action) openspace.clearKey(action.Key) end end) diff --git a/data/assets/util/generate_bookmarks.asset b/data/assets/util/generate_bookmarks.asset index 17f4fb7dca..989a1720ef 100644 --- a/data/assets/util/generate_bookmarks.asset +++ b/data/assets/util/generate_bookmarks.asset @@ -1,5 +1,3 @@ -local assetHelper = asset.require("util/asset_helper") - local getBookmarks = function (guiPath, bookmarkfile) local genBookmarks = {}; local notFirstLine = false; diff --git a/data/assets/util/testing_keybindings.asset b/data/assets/util/testing_keybindings.asset index 42461580fe..0cc3529062 100644 --- a/data/assets/util/testing_keybindings.asset +++ b/data/assets/util/testing_keybindings.asset @@ -17,6 +17,6 @@ asset.onInitialize(function() end) asset.onDeinitialize(function () - openspace.action.removeAction(take_screenshot.Identifier) + openspace.action.removeAction(take_screenshot) openspace.clearKey("F7") end) diff --git a/data/assets/util/tle_helper.asset b/data/assets/util/tle_helper.asset index 089d040ddb..99009b6f97 100644 --- a/data/assets/util/tle_helper.asset +++ b/data/assets/util/tle_helper.asset @@ -1,5 +1,4 @@ local transforms = asset.require("scene/solarsystem/planets/earth/transforms") -local assetHelper = asset.require("util/asset_helper") function downloadTLEFile(sceneAsset, url, name, filename) local identifier = name @@ -91,7 +90,9 @@ function satellites(title, file, color, group) }, Tag = { "earth_satellites" }, GUI = { - Path = "/Solar System/Planets/Earth/Satellites" + Name = group.Title, + Path = "/Solar System/Planets/Earth/Satellites", + Description = group.Description } } end @@ -103,7 +104,16 @@ local registerSatelliteGroupObjects = function(containingAsset, group, tleFolder local path = tleFolder .. "/" .. filename local SatelliteBatch = satellites(filenameSansExt, path, group.TrailColor, group) - assetHelper.registerSceneGraphNodesAndExport(containingAsset, { SatelliteBatch }) + + containingAsset.onInitialize(function() + openspace.addSceneGraphNode(SatelliteBatch) + end) + + containingAsset.onDeinitialize(function() + openspace.removeSceneGraphNode(SatelliteBatch) + end) + + containingAsset.export(SatelliteBatch) end asset.export("downloadTLEFile", downloadTLEFile) diff --git a/data/assets/util/webgui.asset b/data/assets/util/webgui.asset index 203b14ea9d..b3866fcce2 100644 --- a/data/assets/util/webgui.asset +++ b/data/assets/util/webgui.asset @@ -3,7 +3,7 @@ asset.require("./static_server") local guiCustomization = asset.require("customization/gui") -- Select which commit hashes to use for the frontend and backend -local frontendHash = "7e513ba86b0bb989b72f22712ebf0bb5a626ba06" +local frontendHash = "32980412faef0773cb7ebaa78ad0db1444f244cc" local dataProvider = "data.openspaceproject.com/files/webgui" local frontend = asset.syncedResource({ diff --git a/ext/ghoul b/ext/ghoul index a94d2561aa..6d3cf35bcb 160000 --- a/ext/ghoul +++ b/ext/ghoul @@ -1 +1 @@ -Subproject commit a94d2561aadf0b2423185c266b3f77cc8676da04 +Subproject commit 6d3cf35bcb1ab03da3d4b2577156441b914c5547 diff --git a/include/openspace/camera/camera.h b/include/openspace/camera/camera.h index 4010131d85..ee32007c05 100644 --- a/include/openspace/camera/camera.h +++ b/include/openspace/camera/camera.h @@ -31,6 +31,7 @@ namespace openspace { +struct CameraPose; class SceneGraphNode; /** @@ -67,6 +68,7 @@ public: ~Camera() = default; // Mutators + void setPose(CameraPose pose); void setPositionVec3(glm::dvec3 pos); void setRotation(glm::dquat rotation); void setScaling(float scaling); diff --git a/include/openspace/documentation/verifier.h b/include/openspace/documentation/verifier.h index ae5cba8dbd..2c55fb2dc3 100644 --- a/include/openspace/documentation/verifier.h +++ b/include/openspace/documentation/verifier.h @@ -525,10 +525,6 @@ struct LessVerifier : public OperatorVerifier> { !std::is_base_of::value, "T cannot be StringVerifier" ); static_assert(!std::is_base_of::value, "T cannot be TableVerifier"); - static_assert( - !std::is_base_of::value, - "T cannot be VectorVerifier" - ); using OperatorVerifier>::OperatorVerifier; @@ -550,10 +546,6 @@ struct LessEqualVerifier : public OperatorVerifier::value, "T cannot be TableVerifier"); - static_assert( - !std::is_base_of::value, - "T cannot be VectorVerifier" - ); using OperatorVerifier>::OperatorVerifier; @@ -575,10 +567,6 @@ struct GreaterVerifier : public OperatorVerifier::value, "T cannot be TableVerifier"); - static_assert( - !std::is_base_of::value, - "T cannot be VectorVerifier" - ); using OperatorVerifier>::OperatorVerifier; @@ -602,10 +590,6 @@ struct GreaterEqualVerifier : public OperatorVerifier::value, "T cannot be TableVerifier"); - static_assert( - !std::is_base_of::value, - "T cannot be VectorVerifier" - ); using OperatorVerifier>::OperatorVerifier; @@ -754,10 +738,6 @@ struct InRangeVerifier : public T { !std::is_base_of::value, "T cannot be TableVerifier" ); - static_assert( - !std::is_base_of::value, - "T cannot be VectorVerifier" - ); /** * Constructs a InRangeVerifier that checks whether the incoming value is of the @@ -816,10 +796,6 @@ struct NotInRangeVerifier : public T { !std::is_base_of::value, "T cannot be TableVerifier" ); - static_assert( - !std::is_base_of::value, - "T cannot be VectorVerifier" - ); /** * Constructs a InRangeVerifier that checks whether the incoming value is of the @@ -1145,6 +1121,8 @@ using StringNotInListVerifier = NotInListVerifier; using IntInRangeVerifier = InRangeVerifier; /// A short-hand definition for a InRangeVerifier with a type check for \c double using DoubleInRangeVerifier = InRangeVerifier; +/// A short-hand definition for a InRangeVerifier with a type check for \c vec2 +using Vec2InRangeVerifier = InRangeVerifier; /// A short-hand definition for a NotInRangeVerifier with a type check for \c int using IntNotInRangeVerifier = NotInRangeVerifier; /// A short-hand definition for a NotInRangeVerifier with a type check for \c double diff --git a/include/openspace/documentation/verifier.inl b/include/openspace/documentation/verifier.inl index 237a7c7286..3bec9cbbf5 100644 --- a/include/openspace/documentation/verifier.inl +++ b/include/openspace/documentation/verifier.inl @@ -24,9 +24,388 @@ #include +#include #include #include +template <> +struct std::less { + bool operator()(const glm::vec2& a, const glm::vec2& b) const { + return a.x < b.x && a.x < b.y; + } +}; + +template <> +struct std::less { + bool operator()(const glm::vec3& a, const glm::vec3& b) const { + return a.x < b.x && a.x < b.y && a.z < b.z; + } +}; + +template <> +struct std::less { + bool operator()(const glm::vec4& a, const glm::vec4& b) const { + return a.x < b.x && a.x < b.y && a.z < b.z && a.w < b.w; + } +}; + +template <> +struct std::less { + bool operator()(const glm::ivec2& a, const glm::ivec2& b) const { + return a.x < b.x && a.x < b.y; + } +}; + +template <> +struct std::less { + bool operator()(const glm::ivec3& a, const glm::ivec3& b) const { + return a.x < b.x && a.x < b.y && a.z < b.z; + } +}; + +template <> +struct std::less { + bool operator()(const glm::ivec4& a, const glm::ivec4& b) const { + return a.x < b.x && a.x < b.y && a.z < b.z && a.w < b.w; + } +}; + +template <> +struct std::less { + bool operator()(const glm::dvec2& a, const glm::dvec2& b) const { + return a.x < b.x && a.x < b.y; + } +}; + +template <> +struct std::less { + bool operator()(const glm::dvec3& a, const glm::dvec3& b) const { + return a.x < b.x && a.x < b.y && a.z < b.z; + } +}; + +template <> +struct std::less { + bool operator()(const glm::dvec4& a, const glm::dvec4& b) const { + return a.x < b.x && a.x < b.y && a.z < b.z && a.w < b.w; + } +}; + +template <> +struct std::less_equal { + bool operator()(const glm::vec2& a, const glm::vec2& b) const { + return a.x <= b.x && a.x <= b.y; + } +}; + +template <> +struct std::less_equal { + bool operator()(const glm::vec3& a, const glm::vec3& b) const { + return a.x <= b.x && a.x <= b.y && a.z <= b.z; + } +}; + +template <> +struct std::less_equal { + bool operator()(const glm::vec4& a, const glm::vec4& b) const { + return a.x <= b.x && a.x <= b.y && a.z <= b.z && a.w <= b.w; + } +}; + +template <> +struct std::less_equal { + bool operator()(const glm::ivec2& a, const glm::ivec2& b) const { + return a.x <= b.x && a.x <= b.y; + } +}; + +template <> +struct std::less_equal { + bool operator()(const glm::ivec3& a, const glm::ivec3& b) const { + return a.x <= b.x && a.x <= b.y && a.z <= b.z; + } +}; + +template <> +struct std::less_equal { + bool operator()(const glm::ivec4& a, const glm::ivec4& b) const { + return a.x <= b.x && a.x <= b.y && a.z <= b.z && a.w <= b.w; + } +}; + +template <> +struct std::less_equal { + bool operator()(const glm::dvec2& a, const glm::dvec2& b) const { + return a.x <= b.x && a.x <= b.y; + } +}; + +template <> +struct std::less_equal { + bool operator()(const glm::dvec3& a, const glm::dvec3& b) const { + return a.x <= b.x && a.x <= b.y && a.z <= b.z; + } +}; + +template <> +struct std::less_equal { + bool operator()(const glm::dvec4& a, const glm::dvec4& b) const { + return a.x <= b.x && a.x <= b.y && a.z <= b.z && a.w <= b.w; + } +}; + +template <> +struct std::greater { + bool operator()(const glm::vec2& a, const glm::vec2& b) const { + return a.x > b.x && a.x > b.y; + } +}; + +template <> +struct std::greater { + bool operator()(const glm::vec3& a, const glm::vec3& b) const { + return a.x > b.x && a.x > b.y && a.z > b.z; + } +}; + +template <> +struct std::greater { + bool operator()(const glm::vec4& a, const glm::vec4& b) const { + return a.x > b.x && a.x > b.y && a.z > b.z && a.w > b.w; + } +}; + +template <> +struct std::greater { + bool operator()(const glm::ivec2& a, const glm::ivec2& b) const { + return a.x > b.x && a.x > b.y; + } +}; + +template <> +struct std::greater { + bool operator()(const glm::ivec3& a, const glm::ivec3& b) const { + return a.x > b.x && a.x > b.y && a.z > b.z; + } +}; + +template <> +struct std::greater { + bool operator()(const glm::ivec4& a, const glm::ivec4& b) const { + return a.x > b.x && a.x > b.y && a.z > b.z && a.w > b.w; + } +}; + +template <> +struct std::greater { + bool operator()(const glm::dvec2& a, const glm::dvec2& b) const { + return a.x > b.x && a.x > b.y; + } +}; + +template <> +struct std::greater { + bool operator()(const glm::dvec3& a, const glm::dvec3& b) const { + return a.x > b.x && a.x > b.y && a.z > b.z; + } +}; + +template <> +struct std::greater { + bool operator()(const glm::dvec4& a, const glm::dvec4& b) const { + return a.x > b.x && a.x > b.y && a.z > b.z && a.w > b.w; + } +}; + +template <> +struct std::greater_equal { + bool operator()(const glm::vec2& a, const glm::vec2& b) const { + return a.x >= b.x && a.x >= b.y; + } +}; + +template <> +struct std::greater_equal { + bool operator()(const glm::vec3& a, const glm::vec3& b) const { + return a.x >= b.x && a.x >= b.y && a.z >= b.z; + } +}; + +template <> +struct std::greater_equal { + bool operator()(const glm::vec4& a, const glm::vec4& b) const { + return a.x >= b.x && a.x >= b.y && a.z >= b.z && a.w >= b.w; + } +}; + +template <> +struct std::greater_equal { + bool operator()(const glm::ivec2& a, const glm::ivec2& b) const { + return a.x >= b.x && a.x >= b.y; + } +}; + +template <> +struct std::greater_equal { + bool operator()(const glm::ivec3& a, const glm::ivec3& b) const { + return a.x >= b.x && a.x >= b.y && a.z >= b.z; + } +}; + +template <> +struct std::greater_equal { + bool operator()(const glm::ivec4& a, const glm::ivec4& b) const { + return a.x >= b.x && a.x >= b.y && a.z >= b.z && a.w >= b.w; + } +}; + +template <> +struct std::greater_equal { + bool operator()(const glm::dvec2& a, const glm::dvec2& b) const { + return a.x >= b.x && a.x >= b.y; + } +}; + +template <> +struct std::greater_equal { + bool operator()(const glm::dvec3& a, const glm::dvec3& b) const { + return a.x >= b.x && a.x >= b.y && a.z >= b.z; + } +}; + +template <> +struct std::greater_equal { + bool operator()(const glm::dvec4& a, const glm::dvec4& b) const { + return a.x >= b.x && a.x >= b.y && a.z >= b.z && a.w >= b.w; + } +}; + +template <> +struct std::equal_to { + bool operator()(const glm::vec2& a, const glm::vec2& b) const { + return a.x == b.x && a.x == b.y; + } +}; + +template <> +struct std::equal_to { + bool operator()(const glm::vec3& a, const glm::vec3& b) const { + return a.x == b.x && a.x == b.y && a.z == b.z; + } +}; + +template <> +struct std::equal_to { + bool operator()(const glm::vec4& a, const glm::vec4& b) const { + return a.x == b.x && a.x == b.y && a.z == b.z && a.w == b.w; + } +}; + +template <> +struct std::equal_to { + bool operator()(const glm::ivec2& a, const glm::ivec2& b) const { + return a.x == b.x && a.x == b.y; + } +}; + +template <> +struct std::equal_to { + bool operator()(const glm::ivec3& a, const glm::ivec3& b) const { + return a.x == b.x && a.x == b.y && a.z == b.z; + } +}; + +template <> +struct std::equal_to { + bool operator()(const glm::ivec4& a, const glm::ivec4& b) const { + return a.x == b.x && a.x == b.y && a.z == b.z && a.w == b.w; + } +}; + +template <> +struct std::equal_to { + bool operator()(const glm::dvec2& a, const glm::dvec2& b) const { + return a.x == b.x && a.x == b.y; + } +}; + +template <> +struct std::equal_to { + bool operator()(const glm::dvec3& a, const glm::dvec3& b) const { + return a.x == b.x && a.x == b.y && a.z == b.z; + } +}; + +template <> +struct std::equal_to { + bool operator()(const glm::dvec4& a, const glm::dvec4& b) const { + return a.x == b.x && a.x == b.y && a.z == b.z && a.w == b.w; + } +}; + +template <> +struct std::not_equal_to { + bool operator()(const glm::vec2& a, const glm::vec2& b) const { + return a.x != b.x && a.x != b.y; + } +}; + +template <> +struct std::not_equal_to { + bool operator()(const glm::vec3& a, const glm::vec3& b) const { + return a.x != b.x && a.x != b.y && a.z != b.z; + } +}; + +template <> +struct std::not_equal_to { + bool operator()(const glm::vec4& a, const glm::vec4& b) const { + return a.x != b.x && a.x != b.y && a.z != b.z && a.w != b.w; + } +}; + +template <> +struct std::not_equal_to { + bool operator()(const glm::ivec2& a, const glm::ivec2& b) const { + return a.x != b.x && a.x != b.y; + } +}; + +template <> +struct std::not_equal_to { + bool operator()(const glm::ivec3& a, const glm::ivec3& b) const { + return a.x != b.x && a.x != b.y && a.z != b.z; + } +}; + +template <> +struct std::not_equal_to { + bool operator()(const glm::ivec4& a, const glm::ivec4& b) const { + return a.x != b.x && a.x != b.y && a.z != b.z && a.w != b.w; + } +}; + +template <> +struct std::not_equal_to { + bool operator()(const glm::dvec2& a, const glm::dvec2& b) const { + return a.x != b.x && a.x != b.y; + } +}; + +template <> +struct std::not_equal_to { + bool operator()(const glm::dvec3& a, const glm::dvec3& b) const { + return a.x != b.x && a.x != b.y && a.z != b.z; + } +}; + +template <> +struct std::not_equal_to { + bool operator()(const glm::dvec4& a, const glm::dvec4& b) const { + return a.x != b.x && a.x != b.y && a.z != b.z && a.w != b.w; + } +}; + namespace openspace::documentation { template <> @@ -75,62 +454,158 @@ std::string TemplateVerifier::documentation() const { template std::string Vector2Verifier::type() const { - return std::string("Vector2<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Vector2"; + } + else if constexpr (std::is_same_v) { + return "Vector2"; + } + else { + return std::string("Vector2<") + typeid(T).name() + ">"; + } } template std::string Vector3Verifier::type() const { - return std::string("Vector3<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Vector3"; + } + else if constexpr (std::is_same_v) { + return "Vector3"; + } + else { + return std::string("Vector3<") + typeid(T).name() + ">"; + } } template std::string Vector4Verifier::type() const { - return std::string("Vector4<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Vector4"; + } + else if constexpr (std::is_same_v) { + return "Vector4"; + } + else { + return std::string("Vector4<") + typeid(T).name() + ">"; + } } template std::string Matrix2x2Verifier::type() const { - return std::string("Matrix2x2<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Matrix2x2"; + } + else if constexpr (std::is_same_v) { + return "Matrix2x2"; + } + else { + return std::string("Matrix2x2<") + typeid(T).name() + ">"; + } } template std::string Matrix2x3Verifier::type() const { - return std::string("Matrix2x3<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Matrix2x3"; + } + else if constexpr (std::is_same_v) { + return "Matrix2x3"; + } + else { + return std::string("Matrix2x3<") + typeid(T).name() + ">"; + } } template std::string Matrix2x4Verifier::type() const { - return std::string("Matrix2x4<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Matrix2x4"; + } + else if constexpr (std::is_same_v) { + return "Matrix2x4"; + } + else { + return std::string("Matrix2x4<") + typeid(T).name() + ">"; + } } template std::string Matrix3x2Verifier::type() const { - return std::string("Matrix3x2<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Matrix3x2"; + } + else if constexpr (std::is_same_v) { + return "Matrix3x2"; + } + else { + return std::string("Matrix3x2<") + typeid(T).name() + ">"; + } } template std::string Matrix3x3Verifier::type() const { - return std::string("Matrix3x3<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Matrix3x3"; + } + else if constexpr (std::is_same_v) { + return "Matrix3x3"; + } + else { + return std::string("Matrix3x3<") + typeid(T).name() + ">"; + } } template std::string Matrix3x4Verifier::type() const { - return std::string("Matrix3x4<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Matrix3x4"; + } + else if constexpr (std::is_same_v) { + return "Matrix3x4"; + } + else { + return std::string("Matrix3x4<") + typeid(T).name() + ">"; + } } template std::string Matrix4x2Verifier::type() const { - return std::string("Matrix4x2<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Matrix4x2"; + } + else if constexpr (std::is_same_v) { + return "Matrix4x2"; + } + else { + return std::string("Matrix4x2<") + typeid(T).name() + ">"; + } } template std::string Matrix4x3Verifier::type() const { - return std::string("Matrix4x3<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Matrix4x3"; + } + else if constexpr (std::is_same_v) { + return "Matrix4x3"; + } + else { + return std::string("Matrix4x3<") + typeid(T).name() + ">"; + } } template std::string Matrix4x4Verifier::type() const { - return std::string("Matrix4x4<") + typeid(T).name() + ">"; + if constexpr (std::is_same_v) { + return "Matrix4x4"; + } + else if constexpr (std::is_same_v) { + return "Matrix4x4"; + } + else { + return std::string("Matrix4x4<") + typeid(T).name() + ">"; + } } template @@ -145,7 +620,16 @@ TestResult OperatorVerifier::operator()(const ghoul::Dictionary& di TestResult res = T::operator()(dict, key); if (res.success) { typename T::Type val; - if constexpr (std::is_same_v) { + if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { const double d = dict.value(key); double intPart; bool isInt = modf(d, &intPart) == 0.0; @@ -165,6 +649,7 @@ TestResult OperatorVerifier::operator()(const ghoul::Dictionary& di else { val = dict.value(key); } + if (Operator()(val, value)) { return { true, {}, {} }; } @@ -224,10 +709,38 @@ TestResult InListVerifier::operator()(const ghoul::Dictionary& dict, { TestResult res = T::operator()(dict, key); if (res.success) { - typename T::Type value = dict.value(key); - - auto it = std::find(values.begin(), values.end(), value); + typename T::Type val; + if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + const double d = dict.value(key); + double intPart; + bool isInt = modf(d, &intPart) == 0.0; + if (isInt) { + val = static_cast(d); + } + else { + TestResult r; + r.success = false; + TestResult::Offense o; + o.offender = key; + o.reason = TestResult::Offense::Reason::WrongType; + r.offenses.push_back(o); + return r; + } + } + else { + val = dict.value(key); + } + auto it = std::find(values.begin(), values.end(), val); if (it != values.end()) { return { true, {}, {} }; } @@ -276,10 +789,38 @@ TestResult NotInListVerifier::operator()(const ghoul::Dictionary& dict, { TestResult res = T::operator()(dict, key); if (res.success) { - typename T::Type value = dict.value(key); - - auto it = std::find(values.begin(), values.end(), value); + typename T::Type val; + if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + const double d = dict.value(key); + double intPart; + bool isInt = modf(d, &intPart) == 0.0; + if (isInt) { + val = static_cast(d); + } + else { + TestResult r; + r.success = false; + TestResult::Offense o; + o.offender = key; + o.reason = TestResult::Offense::Reason::WrongType; + r.offenses.push_back(o); + return r; + } + } + else { + val = dict.value(key); + } + auto it = std::find(values.begin(), values.end(), val); if (it == values.end()) { return { true, {}, {} }; } @@ -322,7 +863,30 @@ InRangeVerifier::InRangeVerifier(typename T::Type l, typename T::Type u) : lower(std::move(l)) , upper(std::move(u)) { - ghoul_assert(lower <= upper, "lower must be smaller or equal to upper"); + if constexpr (std::is_same_v || + std::is_same_v) + { + ghoul_assert(lower.x <= upper.x, "lower must be smaller or equal to upper for x"); + ghoul_assert(lower.y <= upper.y, "lower must be smaller or equal to upper for y"); + } + else if constexpr (std::is_same_v || + std::is_same_v) + { + ghoul_assert(lower.x <= upper.x, "lower must be smaller or equal to upper for x"); + ghoul_assert(lower.y <= upper.y, "lower must be smaller or equal to upper for y"); + ghoul_assert(lower.z <= upper.z, "lower must be smaller or equal to upper for z"); + } + else if constexpr (std::is_same_v || + std::is_same_v) + { + ghoul_assert(lower.x <= upper.x, "lower must be smaller or equal to upper for x"); + ghoul_assert(lower.y <= upper.y, "lower must be smaller or equal to upper for y"); + ghoul_assert(lower.z <= upper.z, "lower must be smaller or equal to upper for z"); + ghoul_assert(lower.w <= upper.w, "lower must be smaller or equal to upper for w"); + } + else { + ghoul_assert(lower <= upper, "lower must be smaller or equal to upper"); + } } template @@ -332,7 +896,16 @@ TestResult InRangeVerifier::operator()(const ghoul::Dictionary& dict, TestResult res = T::operator()(dict, key); if (res.success) { typename T::Type val; - if constexpr (std::is_same_v) { + if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { const double d = dict.value(key); double intPart; bool isInt = modf(d, &intPart) == 0.0; @@ -353,7 +926,9 @@ TestResult InRangeVerifier::operator()(const ghoul::Dictionary& dict, val = dict.value(key); } - if (val >= lower && val <= upper) { + if (std::greater_equal()(val, lower) && + std::less_equal()(val, upper)) + { return { true, {}, {} }; } else { @@ -382,7 +957,30 @@ NotInRangeVerifier::NotInRangeVerifier(typename T::Type l, typename T::Type u : lower(std::move(l)) , upper(std::move(u)) { - ghoul_assert(lower <= upper, "lower must be smaller or equal to upper"); + if constexpr (std::is_same_v || + std::is_same_v) + { + ghoul_assert(lower.x <= upper.x, "lower must be smaller or equal to upper for x"); + ghoul_assert(lower.y <= upper.y, "lower must be smaller or equal to upper for y"); + } + else if constexpr (std::is_same_v || + std::is_same_v) + { + ghoul_assert(lower.x <= upper.x, "lower must be smaller or equal to upper for x"); + ghoul_assert(lower.y <= upper.y, "lower must be smaller or equal to upper for y"); + ghoul_assert(lower.z <= upper.z, "lower must be smaller or equal to upper for z"); + } + else if constexpr (std::is_same_v || + std::is_same_v) + { + ghoul_assert(lower.x <= upper.x, "lower must be smaller or equal to upper for x"); + ghoul_assert(lower.y <= upper.y, "lower must be smaller or equal to upper for y"); + ghoul_assert(lower.z <= upper.z, "lower must be smaller or equal to upper for z"); + ghoul_assert(lower.w <= upper.w, "lower must be smaller or equal to upper for w"); + } + else { + ghoul_assert(lower <= upper, "lower must be smaller or equal to upper"); + } } template @@ -391,7 +989,16 @@ TestResult NotInRangeVerifier::operator()(const ghoul::Dictionary& dict, TestResult res = T::operator()(dict, key); if (res.success) { typename T::Type val; - if constexpr (std::is_same_v) { + if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { + val = dict.value(key); + } + else if constexpr (std::is_same_v) { const double d = dict.value(key); double intPart; bool isInt = modf(d, &intPart) == 0.0; @@ -412,7 +1019,12 @@ TestResult NotInRangeVerifier::operator()(const ghoul::Dictionary& dict, val = dict.value(key); } - if (val >= lower && val <= upper) { + if (std::less()(val, lower) || + std::greater()(val, upper)) + { + return { true, {}, {} }; + } + else { TestResult r; r.success = false; TestResult::Offense o; @@ -421,9 +1033,6 @@ TestResult NotInRangeVerifier::operator()(const ghoul::Dictionary& dict, r.offenses.push_back(o); return r; } - else { - return { true, {}, {} }; - } } else { return res; diff --git a/include/openspace/engine/globals.h b/include/openspace/engine/globals.h index df076ba17e..9dfb8dca64 100644 --- a/include/openspace/engine/globals.h +++ b/include/openspace/engine/globals.h @@ -49,7 +49,6 @@ class ScreenSpaceRenderable; class SyncEngine; class TimeManager; class VersionChecker; -class VirtualPropertyManager; struct WindowDelegate; namespace configuration { struct Configuration; } namespace interaction { @@ -88,7 +87,6 @@ inline std::vector>* screenSpaceRenderabl inline SyncEngine* syncEngine; inline TimeManager* timeManager; inline VersionChecker* versionChecker; -inline VirtualPropertyManager* virtualPropertyManager; inline WindowDelegate* windowDelegate; inline configuration::Configuration* configuration; inline interaction::ActionManager* actionManager; diff --git a/include/openspace/engine/openspaceengine.h b/include/openspace/engine/openspaceengine.h index 004982a6d2..8596dc133c 100644 --- a/include/openspace/engine/openspaceengine.h +++ b/include/openspace/engine/openspaceengine.h @@ -65,6 +65,15 @@ struct CommandlineArguments { class OpenSpaceEngine { public: + // A mode that specifies which part of the system is currently in control. + // The mode can be used to limit certain features, like setting time, navigation + // or triggering scripts + enum class Mode { + UserControl = 0, + SessionRecordingPlayback, + CameraPath + }; + OpenSpaceEngine(); ~OpenSpaceEngine(); @@ -94,6 +103,10 @@ public: void toggleShutdownMode(); + Mode currentMode() const; + bool setMode(Mode newMode); + void resetMode(); + // Guaranteed to return a valid pointer AssetManager& assetManager(); LoadingScreen* loadingScreen(); @@ -113,7 +126,6 @@ private: void loadFonts(); void runGlobalCustomizationScripts(); - void configureLogging(); std::string generateFilePath(std::string openspaceRelativePath); void resetPropertyChangeFlagsOfSubowners(openspace::properties::PropertyOwner* po); @@ -137,6 +149,8 @@ private: // The first frame might take some more time in the update loop, so we need to know to // disable the synchronization; otherwise a hardware sync will kill us after 1 minute bool _isRenderingFirstFrame = true; + + Mode _currentMode = Mode::UserControl; }; /** diff --git a/include/openspace/interaction/externinteraction.h b/include/openspace/interaction/externinteraction.h deleted file mode 100644 index 7ad41139ae..0000000000 --- a/include/openspace/interaction/externinteraction.h +++ /dev/null @@ -1,82 +0,0 @@ -/***************************************************************************************** - * * - * OpenSpace * - * * - * Copyright (c) 2014-2022 * - * * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this * - * software and associated documentation files (the "Software"), to deal in the Software * - * without restriction, including without limitation the rights to use, copy, modify, * - * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to * - * permit persons to whom the Software is furnished to do so, subject to the following * - * conditions: * - * * - * The above copyright notice and this permission notice shall be included in all copies * - * or substantial portions of the Software. * - * * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A * - * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF * - * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * - ****************************************************************************************/ - -#ifndef __OPENSPACE_CORE___EXTERNINTERACTION___H__ -#define __OPENSPACE_CORE___EXTERNINTERACTION___H__ - -#include -#include -#include - -#include - -namespace openspace { - -class ExternInteraction : public properties::PropertyOwner { -public: - ExternInteraction(); - /** - * Method that generates a keyframeNavigator CameraPose from a CameraKeyframe - * object, and then adds this to the navigationHandler's keyframe navigator. - * \param kf The camera keyframe to add. - */ - void cameraInteraction(datamessagestructures::CameraKeyframe kf); - /** - * Method that generates a TimeKeyframeData from a TimeKeyframe object, and - * then adds this to the timeManager. - * \param kf The time keyframe to add. - */ - void timeInteraction(datamessagestructures::TimeKeyframe kf); - /** - * Method that passes a ScriptMessage object to the script engine, calling its - * queueScript method to add it for execution. - * \param sm The ScriptMessage object to queue in the script engine. - */ - void scriptInteraction(datamessagestructures::ScriptMessage sm); - /** - * Method that accepts a reference to a CameraKeyframe object, and populates - * it with the current properties of the camera from the navigation handler. - * \returns CameraKeyframe with current state from NavigationHandler. - */ - datamessagestructures::CameraKeyframe generateCameraKeyframe(); - /** - * Method that accepts a reference to a TimeKeyframe object, and populates - * it with the current time values from the application time manager. - * \returns TimeKeyframe The time keyframe. - */ - datamessagestructures::TimeKeyframe generateTimeKeyframe(); - /** - * Method that accepts a reference to a ScriptMessage object and a script - * string, and populates the ScriptMessage with the script and timestamp - * of the current application time. - * \param script The script to execute in std::string form. - * \returns ScriptMessage The ScriptMessage data structure with script. - */ - datamessagestructures::ScriptMessage generateScriptMessage(std::string script); -private: -}; - -} // namespace openspace - -#endif // __OPENSPACE_CORE___EXTERNINTERACTION___H__ diff --git a/include/openspace/interaction/sessionrecording.h b/include/openspace/interaction/sessionrecording.h index 9ca3e1f41c..706377aa99 100644 --- a/include/openspace/interaction/sessionrecording.h +++ b/include/openspace/interaction/sessionrecording.h @@ -25,7 +25,8 @@ #ifndef __OPENSPACE_CORE___SESSIONRECORDING___H__ #define __OPENSPACE_CORE___SESSIONRECORDING___H__ -#include +#include + #include #include #include @@ -489,12 +490,12 @@ public: static std::string readHeaderElement(std::ifstream& stream, size_t readLen_chars); /** - * Reads header information from a session recording file - * - * \param stringstream reference to ifstream that contains the session recording file data - * \param readLen_chars number of characters to be read, which may be the expected - * length of the header line, or an arbitrary number of characters within it - */ + * Reads header information from a session recording file + * + * \param stringstream reference to ifstream that contains the session recording file data + * \param readLen_chars number of characters to be read, which may be the expected + * length of the header line, or an arbitrary number of characters within it + */ static std::string readHeaderElement(std::stringstream& stream, size_t readLen_chars); /** @@ -596,12 +597,11 @@ protected: Script, Invalid }; - struct timelineEntry { + struct TimelineEntry { RecordedType keyframeType; unsigned int idxIntoKeyframeTypeArray; Timestamps t3stamps; }; - ExternInteraction _externInteract; double _timestampRecordStarted = 0.0; Timestamps _timestamps3RecordStarted; double _timestampPlaybackStarted_application = 0.0; @@ -622,6 +622,8 @@ protected: bool playbackScript(); bool playbackAddEntriesToTimeline(); void signalPlaybackFinishedForComponent(RecordedType type); + void handlePlaybackEnd(); + bool findFirstCameraKeyframeInTimeline(); Timestamps generateCurrentTimestamp3(double keyframeTime); static void saveStringToFile(const std::string& s, unsigned char* kfBuffer, @@ -635,7 +637,7 @@ protected: datamessagestructures::TimeKeyframe keyframe, int lineNum); bool addKeyframe(Timestamps t3stamps, std::string scriptToQueue, int lineNum); - bool addKeyframeToTimeline(std::vector& timeline, RecordedType type, + bool addKeyframeToTimeline(std::vector& timeline, RecordedType type, size_t indexIntoTypeKeyframes, Timestamps t3stamps, int lineNum); void initializePlayback_time(double now); @@ -744,10 +746,10 @@ protected: std::vector _keyframesCamera; std::vector _keyframesTime; std::vector _keyframesScript; - std::vector _timeline; + std::vector _timeline; std::vector _keyframesSavePropertiesBaseline_scripts; - std::vector _keyframesSavePropertiesBaseline_timeline; + std::vector _keyframesSavePropertiesBaseline_timeline; std::vector _propertyBaselinesSaved; const std::vector _propertyBaselineRejects = { "NavigationHandler.OrbitalNavigator.Anchor", diff --git a/include/openspace/navigation/keyframenavigator.h b/include/openspace/navigation/keyframenavigator.h index 37d1aa714b..4c0cf75d0d 100644 --- a/include/openspace/navigation/keyframenavigator.h +++ b/include/openspace/navigation/keyframenavigator.h @@ -76,7 +76,6 @@ public: void removeKeyframesAfter(double timestamp, Inclusive inclusive = Inclusive::No); void clearKeyframes(); size_t nKeyframes() const; - const std::vector& keyframes() const; double currentTime() const; void setTimeReferenceMode(KeyframeTimeRef refType, double referenceTimestamp); diff --git a/include/openspace/navigation/navigationhandler.h b/include/openspace/navigation/navigationhandler.h index 7f6afc29c8..ddd33f1156 100644 --- a/include/openspace/navigation/navigationhandler.h +++ b/include/openspace/navigation/navigationhandler.h @@ -68,16 +68,12 @@ public: // Mutators void setFocusNode(SceneGraphNode* node); - void resetCameraDirection(); - void setCamera(Camera* camera); void setInterpolationTime(float durationInSeconds); void updateCamera(double deltaTime); - void setEnableKeyFrameInteraction(); - void setDisableKeyFrameInteraction(); - void triggerPlaybackStart(); - void stopPlayback(); + + void resetNavigationUpdateVariables(); // Accessors Camera* camera() const; @@ -155,8 +151,7 @@ public: private: void applyNavigationState(const NavigationState& ns); void updateCameraTransitions(); - - bool _playbackModeEnabled = false; + void clearGlobalJoystickStates(); MouseInputState _mouseInputState; KeyboardInputState _keyboardInputState; diff --git a/include/openspace/navigation/orbitalnavigator.h b/include/openspace/navigation/orbitalnavigator.h index 6820a2cfd9..3177a6273f 100644 --- a/include/openspace/navigation/orbitalnavigator.h +++ b/include/openspace/navigation/orbitalnavigator.h @@ -86,7 +86,7 @@ public: void startRetargetAim(); float retargetInterpolationTime() const; void setRetargetInterpolationTime(float durationInSeconds); - void resetNodeMovements(); + void updatePreviousStateVariables(); JoystickCameraStates& joystickStates(); const JoystickCameraStates& joystickStates() const; @@ -131,6 +131,9 @@ private: bool resetVelocitiesOnChange = true); void setAimNode(const SceneGraphNode* aimNode); + void updatePreviousAnchorState(); + void updatePreviousAimState(); + Camera* _camera; Friction _friction; diff --git a/include/openspace/engine/virtualpropertymanager.h b/include/openspace/network/messagestructureshelper.h similarity index 64% rename from include/openspace/engine/virtualpropertymanager.h rename to include/openspace/network/messagestructureshelper.h index 230bec2e10..1f3465e140 100644 --- a/include/openspace/engine/virtualpropertymanager.h +++ b/include/openspace/network/messagestructureshelper.h @@ -22,29 +22,36 @@ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ -#ifndef __OPENSPACE_CORE___VIRTUALPROPERTYMANAGER___H__ -#define __OPENSPACE_CORE___VIRTUALPROPERTYMANAGER___H__ +#ifndef __OPENSPACE_CORE___MESSAGESTRUCTURESHELPER___H__ +#define __OPENSPACE_CORE___MESSAGESTRUCTURESHELPER___H__ -#include +#include -#include -#include +namespace openspace::datamessagestructures { -namespace openspace { +/** + * Method that creates a CameraKeyframe object and populates + * it with the current properties of the camera from the navigation handler. + * \returns CameraKeyframe with current state from NavigationHandler +*/ +CameraKeyframe generateCameraKeyframe(); -class Property; +/** + * Method that creates a TimeKeyframe object and populates + * it with the current time values from the application time manager. + * \returns TimeKeyframe The time keyframe + */ +TimeKeyframe generateTimeKeyframe(); -class VirtualPropertyManager : public properties::PropertyOwner { -public: - VirtualPropertyManager(); +/** + * Method that creates a ScriptMessage object from a given script + * string, and populates the ScriptMessage with the script and timestamp + * of the current application time. + * \param script The script to execute in std::string form + * \returns ScriptMessage The ScriptMessage data structure with script + */ +ScriptMessage generateScriptMessage(std::string script); - void addProperty(std::unique_ptr prop); - void removeProperty(properties::Property* prop); +} // namespace openspace::datamessagestructures -private: - std::vector> _properties; -}; - -} // namespace openspace - -#endif // __OPENSPACE_CORE___VIRTUALPROPERTYMANAGER___H__ +#endif // __OPENSPACE_CORE___MESSAGESTRUCTURESHELPER___H__ diff --git a/include/openspace/network/parallelpeer.h b/include/openspace/network/parallelpeer.h index 3b9a523655..f9878473b4 100644 --- a/include/openspace/network/parallelpeer.h +++ b/include/openspace/network/parallelpeer.h @@ -25,16 +25,13 @@ #ifndef __OPENSPACE_CORE___PARALLELPEER___H__ #define __OPENSPACE_CORE___PARALLELPEER___H__ -#include -#include -#include -#include - #include +#include #include -#include #include +#include +#include #include #include #include @@ -133,8 +130,6 @@ private: std::unique_ptr _receiveThread = nullptr; std::shared_ptr> _connectionEvent; - ExternInteraction _externInteract; - ParallelConnection _connection; TimeManager::CallbackHandle _timeJumpCallback = -1; diff --git a/include/openspace/rendering/screenspacerenderable.h b/include/openspace/rendering/screenspacerenderable.h index a74919a457..6fc86729f5 100644 --- a/include/openspace/rendering/screenspacerenderable.h +++ b/include/openspace/rendering/screenspacerenderable.h @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -105,11 +106,12 @@ protected: properties::FloatProperty _scale; properties::Vec3Property _multiplyColor; + properties::Vec4Property _backgroundColor; properties::FloatProperty _opacity; properties::TriggerProperty _delete; glm::ivec2 _objectSize = glm::ivec2(0); - UniformCache(color, opacity, mvp, texture) _uniformCache; + UniformCache(color, opacity, mvp, texture, backgroundColor) _uniformCache; std::unique_ptr _shader; }; diff --git a/include/openspace/scene/asset.h b/include/openspace/scene/asset.h index 22af5c2cad..1b96ce95ae 100644 --- a/include/openspace/scene/asset.h +++ b/include/openspace/scene/asset.h @@ -117,6 +117,13 @@ public: */ void setSynchronizationStateRejected(); + + /** + * Register a SceneGraphNodeIdentifier with the asset + * (used to associate Nodes with asset meta) + */ + void addIdentifier(std::string identifier); + /** * If the asset has not yet been loaded, this function loads the asset and returns the * success state. If the loading succeeded, the Asset transitions into the \c Loaded diff --git a/include/openspace/scene/profile.h b/include/openspace/scene/profile.h index f9a1623305..450ba77119 100644 --- a/include/openspace/scene/profile.h +++ b/include/openspace/scene/profile.h @@ -80,6 +80,7 @@ public: std::string name; std::string value; }; + struct Action { std::string identifier; std::string documentation; @@ -88,10 +89,12 @@ public: bool isLocal; std::string script; }; + struct Keybinding { KeyWithModifier key; std::string action; }; + struct Time { enum class Type { Absolute, @@ -101,6 +104,7 @@ public: Type type; std::string value; }; + struct CameraNavState { static constexpr const char* Type = "setNavigationState"; @@ -112,6 +116,7 @@ public: std::optional yaw; std::optional pitch; }; + struct CameraGoToGeo { static constexpr const char* Type = "goToGeo"; @@ -120,6 +125,7 @@ public: double longitude; std::optional altitude; }; + using CameraType = std::variant; Profile() = default; diff --git a/include/openspace/scripting/scriptscheduler.h b/include/openspace/scripting/scriptscheduler.h index ab14b2f0ba..2479bb0570 100644 --- a/include/openspace/scripting/scriptscheduler.h +++ b/include/openspace/scripting/scriptscheduler.h @@ -150,16 +150,6 @@ public: */ void setTimeReferenceMode(openspace::interaction::KeyframeTimeRef refType); - /** - * Sets the mode for scripts being run from playback - */ - void triggerPlaybackStart(); - - /** - * Sets the flag for scripts no longer being run from playback - */ - void stopPlayback(); - static LuaLibrary luaLibrary(); void setModeApplicationTime(); void setModeRecordedTime(); @@ -174,7 +164,6 @@ private: int _currentIndex = 0; double _currentTime = 0; - bool _playbackModeEnabled = false; openspace::interaction::KeyframeTimeRef _timeframeMode = openspace::interaction::KeyframeTimeRef::Absolute_simTimeJ2000; diff --git a/include/openspace/util/timemanager.h b/include/openspace/util/timemanager.h index 0fbfc2bf97..4e53512e1d 100644 --- a/include/openspace/util/timemanager.h +++ b/include/openspace/util/timemanager.h @@ -126,8 +126,6 @@ public: void removeTimeChangeCallback(CallbackHandle handle); void removeDeltaTimeChangeCallback(CallbackHandle handle); void removeDeltaTimeStepsChangeCallback(CallbackHandle handle); - void triggerPlaybackStart(); - void stopPlayback(); void removeTimeJumpCallback(CallbackHandle handle); void removeTimelineChangeCallback(CallbackHandle handle); @@ -142,6 +140,8 @@ private: double currentApplicationTimeForInterpolation() const; double previousApplicationTimeForInterpolation() const; + bool isPlayingBackSessionRecording() const; + Timeline _timeline; SyncData