From a2c3eb2884200777dba144dc84e6f6263655b810 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Wed, 10 May 2023 00:58:09 +0200 Subject: [PATCH] Warn if profile contains empty property line, but do not crash. Cleanup JWST profile. Prevent crash when moving to early date in JWST (closes #2617) --- .../solarsystem/missions/jwst/jwst.asset | 48 ------------------- .../solarsystem/missions/jwst/timelapse.asset | 1 - data/profiles/jwst.profile | 8 +--- src/scene/scene.cpp | 4 ++ src/scripting/scriptscheduler.cpp | 3 +- 5 files changed, 8 insertions(+), 56 deletions(-) diff --git a/data/assets/scene/solarsystem/missions/jwst/jwst.asset b/data/assets/scene/solarsystem/missions/jwst/jwst.asset index 5cdff947e1..49884884f8 100644 --- a/data/assets/scene/solarsystem/missions/jwst/jwst.asset +++ b/data/assets/scene/solarsystem/missions/jwst/jwst.asset @@ -1,7 +1,5 @@ asset.require("spice/base") asset.require("./actions") -asset.require("scene/solarsystem/planets/earth/layers/colorlayers/terra_modis_temporal") -asset.require("scene/solarsystem/planets/earth/layers/colorlayers/esri_viirs_combo") local sun = asset.require("scene/solarsystem/sun/sun") local sunTransforms = asset.require("scene/solarsystem/sun/transforms") @@ -150,52 +148,6 @@ local JWSTLabel = { } asset.onInitialize(function() - -- Start of data outage, use Terra instead as replacement - openspace.scriptScheduler.loadScheduledScript( - "2021 DEC 19 00:00:00", - [[openspace.setPropertyValueSingle( - "Scene.Earth.Renderable.Layers.ColorLayers.Terra_Modis_Temporal.Enabled", - true - ) - openspace.setPropertyValueSingle( - "Scene.Earth.Renderable.Layers.ColorLayers.ESRI_VIIRS_Combo.Enabled", - false - )]], - [[openspace.setPropertyValueSingle( - "Scene.Earth.Renderable.Layers.ColorLayers.Terra_Modis_Temporal.Enabled", - false - ) - openspace.setPropertyValueSingle( - "Scene.Earth.Renderable.Layers.ColorLayers.ESRI_VIIRS_Combo.Enabled", - true - )]], - "", - 2 -- Not default group, never clear this script - ) - - -- End of data outage, Go back to VIIRS ESRI combo - openspace.scriptScheduler.loadScheduledScript( - "2021 DEC 30 00:00:00", - [[openspace.setPropertyValueSingle( - "Scene.Earth.Renderable.Layers.ColorLayers.Terra_Modis_Temporal.Enabled", - false - ) - openspace.setPropertyValueSingle( - "Scene.Earth.Renderable.Layers.ColorLayers.ESRI_VIIRS_Combo.Enabled", - true - )]], - [[openspace.setPropertyValueSingle( - "Scene.Earth.Renderable.Layers.ColorLayers.Terra_Modis_Temporal.Enabled", - true - ) - openspace.setPropertyValueSingle( - "Scene.Earth.Renderable.Layers.ColorLayers.ESRI_VIIRS_Combo.Enabled", - false - )]], - "", - 2 -- Not default group, never clear this script - ) - openspace.addSceneGraphNode(JWSTBand) openspace.addSceneGraphNode(JWSTModel) openspace.addSceneGraphNode(JWSTFov) diff --git a/data/assets/scene/solarsystem/missions/jwst/timelapse.asset b/data/assets/scene/solarsystem/missions/jwst/timelapse.asset index b14dab3ff3..961c7fb525 100644 --- a/data/assets/scene/solarsystem/missions/jwst/timelapse.asset +++ b/data/assets/scene/solarsystem/missions/jwst/timelapse.asset @@ -1,5 +1,4 @@ asset.require("spice/base") -- openspace.time.advancedTime depends on SPICE -asset.require("scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_2012") asset.require("scene/solarsystem/planets/earth/atmosphere") -- Function to advance a time stamp in the given number of days, hours, minutes and diff --git a/data/profiles/jwst.profile b/data/profiles/jwst.profile index a3136edb7a..5fcc28dc72 100644 --- a/data/profiles/jwst.profile +++ b/data/profiles/jwst.profile @@ -6,6 +6,7 @@ "base", "base_keybindings", "scene/solarsystem/planets/earth/earth", + "scene/solarsystem/planets/earth/layers/colorlayers/viirs_noaa20_temporal.asset", "scene/solarsystem/planets/earth/satellites/satellites", "scene/solarsystem/planets/earth/satellites/misc/hubble_trail", "scene/solarsystem/planets/earth/lagrange_points/lagrange_points", @@ -248,11 +249,6 @@ "type": "setPropertyValueSingle", "value": "false" }, - { - "name": "", - "type": "setPropertyValueSingle", - "value": "" - }, { "name": "Scene.Earth.Renderable.Layers.ColorLayers.VIIRS_NOAA20_Temporal.Enabled", "type": "setPropertyValueSingle", @@ -268,4 +264,4 @@ "major": 1, "minor": 2 } -} \ No newline at end of file +} diff --git a/src/scene/scene.cpp b/src/scene/scene.cpp index 0184c648cc..6d54e7a18b 100644 --- a/src/scene/scene.cpp +++ b/src/scene/scene.cpp @@ -574,6 +574,10 @@ void Scene::setPropertiesFromProfile(const Profile& p) { ghoul::lua::LuaState L(ghoul::lua::LuaState::IncludeStandardLibrary::Yes); for (const Profile::Property& prop : p.properties) { + if (prop.name.empty()) { + LWARNING("Property name in profile was empty"); + continue; + } std::string uriOrRegex = prop.name; std::string groupName; if (doesUriContainGroupTag(uriOrRegex, groupName)) { diff --git a/src/scripting/scriptscheduler.cpp b/src/scripting/scriptscheduler.cpp index 0cf65ad6ef..bbc5cdd451 100644 --- a/src/scripting/scriptscheduler.cpp +++ b/src/scripting/scriptscheduler.cpp @@ -227,7 +227,8 @@ std::vector ScriptScheduler::progressTo(double newTime) { _currentTime = newTime; // Construct result - auto start = _scripts.begin() + prevIndex - 1; + const size_t startOffset = prevIndex == 0 ? prevIndex : prevIndex - 1; + auto start = _scripts.begin() + startOffset; auto end = it; for (auto iter = start; iter != _scripts.end() && iter >= end; --iter) { std::string script = iter->universalScript.empty() ?