From c1c6e1397c90ff61948cf3152e37aeab6b3e803c Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Fri, 23 Feb 2018 22:52:22 -0500 Subject: [PATCH] Add checks to asset_helper that check the length of passed table to registerSceneGraphNodes and registerSceneGraphNodesAndExport Add check to procedural_globe that checks the parameters to createGlobes Fix issues with Ganymede, Triton, and Dione --- .../missions/newhorizons/charon.asset | 2 ++ .../missions/newhorizons/fov.asset | 2 ++ .../missions/newhorizons/kerberos.asset | 2 ++ .../missions/newhorizons/kernels.asset | 2 ++ .../missions/newhorizons/nix.asset | 2 ++ .../missions/newhorizons/pluto.asset | 2 ++ .../missions/newhorizons/styx.asset | 2 ++ .../solarsystem/missions/rosetta/67p.asset | 1 + .../missions/rosetta/rosetta.asset | 2 ++ .../missions/voyager/voyager1.asset | 2 ++ .../missions/voyager/voyager2.asset | 2 ++ .../planets/jupiter/ganymede/ganymede.asset | 2 +- .../solarsystem/planets/neptune/triton.asset | 2 +- .../planets/saturn/dione/dione.asset | 2 +- data/assets/util/asset_helper.asset | 29 +++++++++++++++++-- data/assets/util/procedural_globe.asset | 12 +++++++- 16 files changed, 62 insertions(+), 6 deletions(-) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/charon.asset b/data/assets/scene/solarsystem/missions/newhorizons/charon.asset index 4de0e626c7..66439faaa4 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/charon.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/charon.asset @@ -121,6 +121,8 @@ local CharonTrail = { GuiPath = "/Solar System/Dwarf Planets/Pluto" } + + assetHelper.registerSceneGraphNodesAndExport(asset, { Charon, CharonText, diff --git a/data/assets/scene/solarsystem/missions/newhorizons/fov.asset b/data/assets/scene/solarsystem/missions/newhorizons/fov.asset index 260742ac55..88f4827ff2 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/fov.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/fov.asset @@ -336,6 +336,8 @@ local Rex = { GuiPath = "/Solar System/Missions/New Horizons" } + + assetHelper.registerSceneGraphNodesAndExport(asset, { Lorri, RalphLeisa, diff --git a/data/assets/scene/solarsystem/missions/newhorizons/kerberos.asset b/data/assets/scene/solarsystem/missions/newhorizons/kerberos.asset index 2ad3560809..07298e75b2 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/kerberos.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/kerberos.asset @@ -77,6 +77,8 @@ local KerberosTrail = { GuiPath = "/Solar System/Dwarf Planets/Pluto" } + + assetHelper.registerSceneGraphNodesAndExport(asset, { Kerberos, KerberosText, diff --git a/data/assets/scene/solarsystem/missions/newhorizons/kernels.asset b/data/assets/scene/solarsystem/missions/newhorizons/kernels.asset index cb2d56be64..f86a31820f 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/kernels.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/kernels.asset @@ -41,6 +41,8 @@ local PlutoKernels = { Kernels .. "/new_horizons/spk/NavSE_plu047_od122.bsp" } + + asset.export("Kernels", Kernels) asset.export("NewHorizonsKernels", NewHorizonsKernels) asset.export("PlutoKernels", PlutoKernels) diff --git a/data/assets/scene/solarsystem/missions/newhorizons/nix.asset b/data/assets/scene/solarsystem/missions/newhorizons/nix.asset index f1b251131e..be2baf9b8c 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/nix.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/nix.asset @@ -65,6 +65,8 @@ local NixTrail = { GuiPath = "/Solar System/Dwarf Planets/Pluto" } + + assetHelper.registerSceneGraphNodesAndExport(asset, { Nix, NixText, diff --git a/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset b/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset index 8d45caf643..868e379234 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/pluto.asset @@ -266,6 +266,8 @@ local PlutoTrail = { GuiPath = "/Solar System/Dwarf Planets/Pluto" } + + assetHelper.registerSceneGraphNodesAndExport(asset, { Pluto, PlutoBarycenterLabel, diff --git a/data/assets/scene/solarsystem/missions/newhorizons/styx.asset b/data/assets/scene/solarsystem/missions/newhorizons/styx.asset index ada45ff6c5..4d29b3e179 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/styx.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/styx.asset @@ -73,6 +73,8 @@ local StyxTrail = { GuiPath = "/Solar System/Dwarf Planets/Pluto" } + + assetHelper.registerSceneGraphNodesAndExport(asset, { Styx, StyxText, diff --git a/data/assets/scene/solarsystem/missions/rosetta/67p.asset b/data/assets/scene/solarsystem/missions/rosetta/67p.asset index 558b100f60..7ebb619172 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/67p.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/67p.asset @@ -130,6 +130,7 @@ local Trail67P = { } + assetHelper.registerSceneGraphNodesAndExport(asset, { Barycenter, Comet67P, diff --git a/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset b/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset index 06bb949a01..85a1d50498 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset @@ -425,6 +425,8 @@ local PhilaeTrail = { GuiPath = "/Solar System/Missions/Rosetta" } + + assetHelper.registerSceneGraphNodesAndExport(asset, { Rosetta, RosettaModel, diff --git a/data/assets/scene/solarsystem/missions/voyager/voyager1.asset b/data/assets/scene/solarsystem/missions/voyager/voyager1.asset index faffa4e679..0e72159101 100644 --- a/data/assets/scene/solarsystem/missions/voyager/voyager1.asset +++ b/data/assets/scene/solarsystem/missions/voyager/voyager1.asset @@ -185,6 +185,8 @@ local VoyagerTrailCruiseSaturnInf = { GuiPath = "/Solar System/Missions/Voyager 1" } + + assetHelper.registerSceneGraphNodesAndExport(asset, { Voyager1, Voyager1Main, diff --git a/data/assets/scene/solarsystem/missions/voyager/voyager2.asset b/data/assets/scene/solarsystem/missions/voyager/voyager2.asset index c4253d5a65..7d8b94a965 100644 --- a/data/assets/scene/solarsystem/missions/voyager/voyager2.asset +++ b/data/assets/scene/solarsystem/missions/voyager/voyager2.asset @@ -267,6 +267,8 @@ local VoyagerTrailCruiseNeptuneInf = { GuiPath = "/Solar System/Missions/Voyager 2" } + + assetHelper.registerSceneGraphNodesAndExport(asset, { Voyager2, Voyager2Main, diff --git a/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset b/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset index 5c60a4948d..adce77b102 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset @@ -46,7 +46,7 @@ local Ganymede = { }, Tag = { "moon_solarSystem", "moon_giants", "moon_jupiter" }, GuiPath = "/Solar System/Planets/Jupiter/Moons" -}, +} diff --git a/data/assets/scene/solarsystem/planets/neptune/triton.asset b/data/assets/scene/solarsystem/planets/neptune/triton.asset index 1d0ebceb47..d60d52dd16 100644 --- a/data/assets/scene/solarsystem/planets/neptune/triton.asset +++ b/data/assets/scene/solarsystem/planets/neptune/triton.asset @@ -24,5 +24,5 @@ local Triton = { assetHelper.registerSceneGraphNodesAndExport( asset, - proceduralGlobes.createGlobes(Triton) + proceduralGlobes.createGlobes({ Triton }) ) diff --git a/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset b/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset index 98b0d6d509..bd8a1e0fd7 100644 --- a/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset +++ b/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset @@ -44,7 +44,7 @@ local Dione = { }, Tag = { "moon_solarSystem", "moon_giants", "moon_saturn" }, GuiPath = "/Solar System/Planets/Saturn/Moons" -}, +} diff --git a/data/assets/util/asset_helper.asset b/data/assets/util/asset_helper.asset index 6cab97ab0d..94a1ba0608 100644 --- a/data/assets/util/asset_helper.asset +++ b/data/assets/util/asset_helper.asset @@ -1,3 +1,10 @@ +local tableLength = function(table) + local count = 0 + for _ in pairs(nodes) do count = count + 1 end + return count +end + + local registerSpiceKernels = function (spiceAsset, kernels) spiceAsset.onInitialize(function () for i, kernel in ipairs(kernels) do @@ -12,7 +19,16 @@ local registerSpiceKernels = function (spiceAsset, kernels) end) end -local registerSceneGraphNodes = function (sceneAsset, nodes) +local registerSceneGraphNodes = function (sceneAsset, nodes, override) + override = override or false + if not override then + if tableLength(nodes) == 0 then + openspace.printWarning("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) @@ -26,7 +42,16 @@ local registerSceneGraphNodes = function (sceneAsset, nodes) end) end -local registerSceneGraphNodesAndExport = function (sceneAsset, nodes) +local registerSceneGraphNodesAndExport = function (sceneAsset, nodes, override) + override = override or false + if not override then + if tableLength(nodes) == 0 then + openspace.printWarning("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) diff --git a/data/assets/util/procedural_globe.asset b/data/assets/util/procedural_globe.asset index f3af18cb8c..c055d43420 100644 --- a/data/assets/util/procedural_globe.asset +++ b/data/assets/util/procedural_globe.asset @@ -41,7 +41,17 @@ end asset.export("createGlobe", createGlobe) local createGlobes = function(t) + + for _,v in pairs(t) do + if type(v) ~= "table" then + openspace.printWarning("The table passed to 'createGlobes' was not a table of tables") + -- We return an empty table of tables to silence a potential future warning + return {{}} + end + end + result = {} + for i, v in ipairs(t) do globe, trail = createGlobe( v.Name, @@ -61,4 +71,4 @@ local createGlobes = function(t) end return result end -asset.export("createGlobes", createGlobes) \ No newline at end of file +asset.export("createGlobes", createGlobes)