Merge pull request #1053 from OpenSpace/feature/profile

Feature/profile
This commit is contained in:
Alexander Bock
2020-01-27 16:18:01 -05:00
committed by GitHub
22 changed files with 1035 additions and 6 deletions

View File

@@ -1187,7 +1187,7 @@ int main(int argc, char** argv) {
configurationFilePath
);
// If the user requested a commandline-based configuation script that should
// If the user requested a commandline-based configuration script that should
// overwrite some of the values, this is the time to do it
if (!commandlineArguments.configurationOverride.empty()) {
LDEBUG("Executing Lua script passed through the commandline:");

View File

@@ -0,0 +1,35 @@
#Version
1.0
#Asset
scene/solarsystem/planets/earth/moon/moon required
scene/solarsystem/missions/apollo/apollo8 required
scene/solarsystem/planets/earth/earth required
#Property
setPropertyValueSingle NavigationHandler.OrbitalNavigator.MinimumAllowedDistance 0.000000
setPropertyValueSingle Scene.Moon.Renderable.LodScaleFactor 24.0
#Keybinding
E Jump to right before the earthrise photo Set Earthrise time /Missions/Apollo/8 false "openspace.time.setPause(true); openspace.time.setDeltaTime(1); openspace.time.setTime('1968 DEC 24 16:37:31'); openspace.navigation.setNavigationState({Anchor = 'Apollo8', Position = { 1.494592E1, 3.236777E1, -4.171296E1 }, ReferenceFrame = 'Root', Up = { 0.960608E0, -0.212013E0, 0.179675E0 }}); openspace.setPropertyValue('*Trail.Renderable.Enabled', false)"
U Jump to time right before Apollo 8 liftoff, with its trail enabled Set Apollo 8 launch time /Missions/Apollo/8 false "openspace.time.setTime('1968-12-21T12:51:37.00'); openspace.setPropertyValueSingle('Scene.Apollo8LaunchTrail.Renderable.Enabled', true)"
K Toggles Moon Kaguya color layer Toggle Kaguya layer on the Moon /Missions/Apollo false propertyHelper.invert('Scene.Moon.Renderable.Layers.ColorLayers.Kaguya_Utah.Enabled')
T Toggles the trails of the Apollo 8 orbits, focused around the Moon Toggle Apollo 8 orbits /Missions/Apollo/8 false propertyHelper.invert('Scene.Apollo8MoonTrail.Renderable.Enabled')
SHIFT+T Toggles the trails of the Apollo 8 Launch, focused around the Earth Toggle Apollo 8 launch trail /Missions/Apollo/8 false propertyHelper.invert('Scene.Apollo8LaunchTrail.Renderable.Enabled')
CTRL+T Toggles the trails of the full Apollo 8, with Earth's frame of reference Toggles Apollo 8 full trail /Missions/Apollo/8 false propertyHelper.invert('Scene.Apollo8EarthBarycenterTrail.Renderable.Enabled')
S Toggles shading for the Moon Toggle Moon shading /Missions/Apollo false propertyHelper.invert('Scene.Moon.Renderable.PerformShading')
PAGE_UP Set camera focus to Apollo 8 Focus on Apollo 8 /Missions/Apollo/8 false "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo8'); openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
PAGE_DOWN Set camera focus to the Moon Focus on Moon /Missions/Apollo false "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Moon'); openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
HOME Set camera focus to the Earth Focus on Earth /Missions/Apollo false "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Earth'); openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
#Time
absolute 1968-12-21T12:51:51.0
#Camera
goToGeo "Earth" 20 -60 15000000
#MarkNodes
Earth
Moon
Apollo8
Apollo8Launch

View File

@@ -0,0 +1,36 @@
#Version
1.0
#Asset
scene/solarsystem/planets/earth/moon/moon required
scene/solarsystem/missions/apollo/apollo8 required
scene/solarsystem/missions/apollo/apollo11 required
scene/solarsystem/missions/apollo/a17_lem required
scene/solarsystem/missions/apollo/apollo_globebrowsing required
scene/solarsystem/missions/apollo/apollo_11_lem_flipbook required
scene/solarsystem/missions/apollo/insignias_map required
#Property
setPropertyValueSingle Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.BlendMode 0
setPropertyValueSingle Scene.Apollo11LemDescentModel.Renderable.RotationVector { 273.750,28.0,309.85 }
setPropertyValueSingle Scene.Apollo11LemLandedModel.Renderable.RotationVector { 273.750,28.0,309.85 }
setPropertyValueSingle Scene.Moon.Renderable.PerformShading false
#Keybinding
m Focus on Moon Focus on Moon /Missions/Apollo false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Moon'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);"
F9 Disable apollo site on moon when switching Disable Apollo site /Missions/Apollo false "openspace.setPropertyValue('Scene.Moon.Renderable.Layers.ColorLayers.A17_*.Enabled', false); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', false); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', false); openspace.setPropertyValueSingle('Scene.Apollo11MoonTrail.Renderable.Enabled', false); openspace.setPropertyValueSingle('Scene.Apollo11LemTrail.Renderable.Enabled', false); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', false);"
F11 Setup for A11 site Setup A11 site /Missions/Apollo/11 false "openspace.time.setTime('1969 JUL 20 20:17:40'); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', true); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', true); openspace.setPropertyValueSingle('Scene.Moon.Renderable.LodScaleFactor', 20.11); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo11LemPosition'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); openspace.setPropertyValueSingle('Scene.Apollo11MoonTrail.Renderable.Enabled', true); openspace.setPropertyValueSingle('Scene.Apollo11LemTrail.Renderable.Enabled', true);"
F7 Setup for A17 site Setup A17 site /Missions/Apollo/17 false "openspace.time.setTime('1972 DEC 12 19:47:11'); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.BlendMode', 0.000000); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.Enabled', true); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', true); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.Enabled', true); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.BlendMode', 0.000000); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.Enabled', true); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.BlendMode', 0.000000); openspace.setPropertyValueSingle('Scene.Moon.Renderable.LodScaleFactor', 20.17); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo17LemModel'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station7.BlendMode', 0.000000);"
#Time
absolute 1972 DEC 12 19:47:11
#Camera
goToGeo "Moon" 20 -60 15000000
#MarkNodes
Moon
Apollo11LemModel
Apollo17LemModel
Apollo11
Apollo11LunarLander

18
data/assets/dawn.profile Normal file
View File

@@ -0,0 +1,18 @@
#Version
1.0
#Asset
scene/solarsystem/missions/dawn/ceres required
scene/solarsystem/missions/dawn/dawn required
scene/solarsystem/missions/dawn/vesta required
#Time
absolute 2011 AUG 06 00:00:00
#Camera
setNavigationState "Dawn" 526781518487.171326, 257168309890.072144, -1381125204152.817383
#MarkNodes
Dawn
Ceres
Vesta

View File

@@ -0,0 +1,17 @@
#Version
1.0
#Asset
scene/solarsystem/planets/earth/earth required
#Time
relative -1d
#Camera
goToGeo "Earth" 58.5877 16.1924 20000000
#MarkNodes
Earth
Mars
Moon
Sun

View File

@@ -0,0 +1,23 @@
#Version
1.0
#Asset
scene/solarsystem/planets/earth/earth required
scene/solarsystem/planets/jupiter/minor_moons required
scene/solarsystem/planets/saturn/minor_moons required
scene/solarsystem/planets/uranus/minor_moons required
scene/solarsystem/planets/neptune/inner_moons required
scene/solarsystem/planets/neptune/irregular_prograde_moons required
scene/solarsystem/planets/neptune/irregular_retrograde_moons required
#Time
relative -1d
#Camera
goToGeo "Earth" 58.5877 16.1924 20000000
#MarkNodes
Earth
Mars
Moon
Sun

22
data/assets/gaia.profile Normal file
View File

@@ -0,0 +1,22 @@
#Version
1.0
#Module
Gaia openspace.printFatal('Could not load scene due to missing module "gaia"')
#Asset
scene/solarsystem/planets/earth/earth required
scene/milkyway/gaia/gaiastars required
scene/milkyway/gaia/apogee required
scene/milkyway/gaia/galah required
scene/solarsystem/missions/gaia/gaia required
scene/solarsystem/missions/gaia/trail required
#Property
setPropertyValueSingle Scene.Stars.Renderable.Enabled false
#Camera
setNavigationState "Earth" 1000000000000.0, 1000000000000.0, 1000000000000.0
#MarkNodes
Gaia

View File

@@ -0,0 +1,29 @@
#Version
1.0
#Asset
scene/solarsystem/missions/insight/edl required
#Property
setPropertyValueSingle Scene.PlutoBarycenterTrail.Renderable.Enabled false
setPropertyValueSingle Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset -469.300000
setPropertyValueSingle Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset -470.800006
setPropertyValueSingle Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled true
setPropertyValueSingle Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier 2.81690
setPropertyValueSingle Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma 0.938970
setPropertyValueSingle Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma 2.394370
setPropertyValueSingle Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled true
#Keybinding
i Setup Insight landing layers Setup Insight layers /Missions/Insight false "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', -469.300000); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', -470.800006); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Enabled', true); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', true); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier', 2.816900); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma', 0.938970); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma', 2.394370); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', true);"
SHIFT+i Undo Insight landing layers setup Unset Insight layers /Missions/Insight false "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', 0); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', 0); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Enabled', false); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', false); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', false); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier', 1.0); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma', 1.0); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma', 1.0);"
#Time
absolute 2018 NOV 26 19:39:03.68
#Camera
setNavigationState "Insight" "Root" 8.430115E0, -1.791710E1, 2.813660E0 0.494659E0,0.357162E0,0.792306E0
#MarkNodes
Insight

37
data/assets/juno.profile Normal file
View File

@@ -0,0 +1,37 @@
#Version
1.0
#Asset
scene/solarsystem/missions/juno/juno required
#Keybinding
1 Setting the simulation speed to 1 seconds per realtime second Set sim speed 1 /Simulation Speed false "openspace.time.interpolateDeltaTime(1)"
2 Setting the simulation speed to 5 seconds per realtime second Set sim speed 5 /Simulation Speed false "openspace.time.interpolateDeltaTime(5)"
3 Setting the simulation speed to 10 seconds per realtime second Set sim speed 10 /Simulation Speed false "openspace.time.interpolateDeltaTime(10)"
4 Setting the simulation speed to 20 seconds per realtime second Set sim speed 20 /Simulation Speed false "openspace.time.interpolateDeltaTime(20)"
5 Setting the simulation speed to 40 seconds per realtime second Set sim speed 40 /Simulation Speed false "openspace.time.interpolateDeltaTime(40)"
6 Setting the simulation speed to 90 seconds per realtime second Set sim speed 90 /Simulation Speed false "openspace.time.interpolateDeltaTime(90)"
7 Setting the simulation speed to 360 seconds per realtime second Set sim speed 360 /Simulation Speed false "openspace.time.interpolateDeltaTime(360)"
8 Setting the simulation speed to 720 seconds per realtime second Set sim speed 720 /Simulation Speed false "openspace.time.interpolateDeltaTime(720)"
9 Setting the simulation speed to 2880 seconds per realtime second Set sim speed 2880 /Simulation Speed false "openspace.time.interpolateDeltaTime(2880)"
0 Setting the simulation speed to 14400 seconds per realtime second Set sim speed 14400 /Simulation Speed false "openspace.time.interpolateDeltaTime(14400)"
Shift+1 Setting the simulation speed to 28800 seconds per realtime second Set sim speed 28800 /Simulation Speed false "openspace.time.interpolateDeltaTime(28800)"
Shift+2 Setting the simulation speed to 57600 seconds per realtime second Set sim speed 57600 /Simulation Speed false "openspace.time.interpolateDeltaTime(57600)"
Shift+3 Setting the simulation speed to 115200 seconds per realtime second Set sim speed 115200 /Simulation Speed false "openspace.time.interpolateDeltaTime(115200)"
Shift+4 Setting the simulation speed to 230400 seconds per realtime second Set sim speed 230400 /Simulation Speed false "openspace.time.interpolateDeltaTime(230400)"
Shift+5 Setting the simulation speed to 460800 seconds per realtime second Set sim speed 460800 /Simulation Speed false "openspace.time.interpolateDeltaTime(460800)"
Shift+6 Setting the simulation speed to 921600 seconds per realtime second Set sim speed 921600 /Simulation Speed false "openspace.time.interpolateDeltaTime(921600)"
Shift+7 Setting the simulation speed to 1843200 seconds per realtime second Set sim speed 1843200 /Simulation Speed false "openspace.time.interpolateDeltaTime(1843200)"
Shift+8 Setting the simulation speed to 3686400 seconds per realtime second Set sim speed 3686400 /Simulation Speed false "openspace.time.interpolateDeltaTime(3686400)"
Shift+9 Setting the simulation speed to 7372800 seconds per realtime second Set sim speed 7372800 /Simulation Speed false "openspace.time.interpolateDeltaTime(7372800)"
Shift+0 Setting the simulation speed to 14745600 seconds per realtime second Set sim speed 14745600 /Simulation Speed false "openspace.time.interpolateDeltaTime(14745600)"
#Time
absolute 2016-07-01T10:05:00.00
#Camera
setNavigationState "Juno" "Root" 1.243398E8, 7.176068E7, -1.519733E7 -0.377400E0, 0.764573E0, 0.522492E0
#MarkNodes
Jupiter
Juno

View File

@@ -0,0 +1,41 @@
#Version
1.0
#Module
Volume asset.require('scene/solarsystem/missions/messenger/mercurymagnetosphere') openspace.printWarning("Volume module is not loaded, skipping asset: mercurymagnetosphere")
#Asset
scene/solarsystem/missions/messenger/messengerSC required
#Keybinding
1 Setting the simulation speed to 1 seconds per realtime second Set sim speed 1 /Simulation Speed false "openspace.time.interpolateDeltaTime(1)"
2 Setting the simulation speed to 5 seconds per realtime second Set sim speed 5 /Simulation Speed false "openspace.time.interpolateDeltaTime(5)"
3 Setting the simulation speed to 10 seconds per realtime second Set sim speed 10 /Simulation Speed false "openspace.time.interpolateDeltaTime(10)"
4 Setting the simulation speed to 20 seconds per realtime second Set sim speed 20 /Simulation Speed false "openspace.time.interpolateDeltaTime(20)"
5 Setting the simulation speed to 40 seconds per realtime second Set sim speed 40 /Simulation Speed false "openspace.time.interpolateDeltaTime(40)"
6 Setting the simulation speed to 90 seconds per realtime second Set sim speed 90 /Simulation Speed false "openspace.time.interpolateDeltaTime(90)"
7 Setting the simulation speed to 360 seconds per realtime second Set sim speed 360 /Simulation Speed false "openspace.time.interpolateDeltaTime(360)"
8 Setting the simulation speed to 720 seconds per realtime second Set sim speed 720 /Simulation Speed false "openspace.time.interpolateDeltaTime(720)"
9 Setting the simulation speed to 2880 seconds per realtime second Set sim speed 2880 /Simulation Speed false "openspace.time.interpolateDeltaTime(2880)"
0 Setting the simulation speed to 14400 seconds per realtime second Set sim speed 14400 /Simulation Speed false "openspace.time.interpolateDeltaTime(14400)"
Shift+1 Setting the simulation speed to 28800 seconds per realtime second Set sim speed 28800 /Simulation Speed false "openspace.time.interpolateDeltaTime(28800)"
Shift+2 Setting the simulation speed to 57600 seconds per realtime second Set sim speed 57600 /Simulation Speed false "openspace.time.interpolateDeltaTime(57600)"
Shift+3 Setting the simulation speed to 115200 seconds per realtime second Set sim speed 115200 /Simulation Speed false "openspace.time.interpolateDeltaTime(115200)"
Shift+4 Setting the simulation speed to 230400 seconds per realtime second Set sim speed 230400 /Simulation Speed false "openspace.time.interpolateDeltaTime(230400)"
Shift+5 Setting the simulation speed to 460800 seconds per realtime second Set sim speed 460800 /Simulation Speed false "openspace.time.interpolateDeltaTime(460800)"
Shift+6 Setting the simulation speed to 921600 seconds per realtime second Set sim speed 921600 /Simulation Speed false "openspace.time.interpolateDeltaTime(921600)"
Shift+7 Setting the simulation speed to 1843200 seconds per realtime second Set sim speed 1843200 /Simulation Speed false "openspace.time.interpolateDeltaTime(1843200)"
Shift+8 Setting the simulation speed to 3686400 seconds per realtime second Set sim speed 3686400 /Simulation Speed false "openspace.time.interpolateDeltaTime(3686400)"
Shift+9 Setting the simulation speed to 7372800 seconds per realtime second Set sim speed 7372800 /Simulation Speed false "openspace.time.interpolateDeltaTime(7372800)"
Shift+0 Setting the simulation speed to 14745600 seconds per realtime second Set sim speed 14745600 /Simulation Speed false "openspace.time.interpolateDeltaTime(14745600)"
#Time
absolute 2011 MAY 13 00:05:18
#Camera
setNavigationState "Mercury" "Root" 2.423690E11, 1.979038E11, -2.241483E10 -0.492046E0, 0.666088E0, 0.560551E0
#MarkNodes
Mercury
Messenger
Sun

View File

@@ -0,0 +1,60 @@
#Version
1.0
#Asset
scene/solarsystem/missions/newhorizons/newhorizons required
scene/solarsystem/missions/newhorizons/model required
#Property
setPropertyValueSingle NavigationHandler.OrbitalNavigator.FollowAnchorNodeRotationDistance 20.000000
setPropertyValueSingle Scene.Pluto.Renderable.Enabled false
setPropertyValueSingle Scene.Charon.Renderable.Enabled false
setPropertyValueSingle Scene.PlutoBarycenterTrail.Renderable.Enabled false
#Keybinding
a Sets the focus of the camera on 'NewHorizons'. Focus on New Horizons /New Horizons false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'NewHorizons');openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
SHIFT+a Sets the focus of the camera on 'NewHorizons'. Anchor at New Horizons, Aim at Pluto /New Horizons false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'NewHorizons');openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', 'Pluto');openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
s Sets the focus of the camera on 'Pluto' Focus on Pluto /New Horizons false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Pluto') ;openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
d Sets the focus of the camera on 'Charon'. Focus on New Charon /New Horizons false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Charon');openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
F7 Toggles New Horizons image projection. Toggle NH Image Projection /New Horizons false [[local enabled = openspace.getPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.PerformProjection'); openspace.setPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.PerformProjection', not enabled); openspace.setPropertyValue('Scene.CharonProjection.Renderable.ProjectionComponent.PerformProjection', not enabled)]]
F8 Removes all image projections from Pluto and Charon. Clear image projections /New Horizons false "openspace.setPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.ClearAllProjections', true); openspace.setPropertyValue('Scene.CharonProjection.Renderable.ProjectionComponent.ClearAllProjections', true)"
F9 Jumps to the 14th of July 2015 at 0900 UTC and clears all projections. Reset time and projections /New Horizons false "openspace.time.setTime('2015-07-14T09:00:00.00');openspace.setPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.ClearAllProjections', true);openspace.setPropertyValue('Scene.CharonProjection.Renderable.ProjectionComponent.ClearAllProjections', true)"
KP_8 Increases the height map exaggeration on Pluto. Pluto HeightExaggeration + /New Horizons false propertyHelper.increment('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000)
CTRL+I Increases the height map exaggeration on Pluto. Pluto HeightExaggeration + /New Horizons false propertyHelper.increment('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000)
KP_2 Decreases the height map exaggeration on Pluto. Pluto HeightExaggeration - /New Horizons false propertyHelper.decrement('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000)
CTRL+K Decreases the height map exaggeration on Pluto. Pluto HeightExaggeration - /New Horizons false propertyHelper.decrement('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000)
KP_9 Increases the height map exaggeration on Charon. Charon HeightExaggeration + /New Horizons false propertyHelper.increment('Scene.CharonProjection.Renderable.HeightExaggeration', 5000)
CTRL+O Increases the height map exaggeration on Charon. Charon HeightExaggeration + /New Horizons false propertyHelper.increment('Scene.CharonProjection.Renderable.HeightExaggeration', 5000)
KP_3 Decreases the height map exaggeration on Charon. Charon HeightExaggeration - /New Horizons false propertyHelper.decrement('Scene.CharonProjection.Renderable.HeightExaggeration', 5000)
CTRL+L Decreases the height map exaggeration on Charon. Charon HeightExaggeration - /New Horizons false propertyHelper.decrement('Scene.CharonProjection.Renderable.HeightExaggeration', 5000)
o Toggles the visibility of the trail behind Pluto. Toggle Pluto Trail /New Horizons false propertyHelper.invert('Scene.PlutoBarycentricTrail.Renderable.Enabled')
j Toggles the visibility of the text labels of Pluto, Charon, Hydra, Nix, Kerberos, and Styx. Toggle Pluto Labels /New Horizons false renderableHelper.toggle('Scene.PlutoText') .. renderableHelper.toggle('Scene.CharonText') .. renderableHelper.toggle('Scene.HydraText') .. renderableHelper.toggle('Scene.NixText') .. renderableHelper.toggle('Scene.KerberosText') .. renderableHelper.toggle('Scene.StyxText')
l Toggles the visibility of the labels for the New Horizons instruments. Toggle New Horizons Labels /New Horizons false propertyHelper.fadeInOut('Scene.Labels.Renderable.Opacity', 2.0)
m Draws the instrument field of views in a solid color or as lines. Toggle instrument FOVs /New Horizons false propertyHelper.invert('Scene.NH_LORRI.Renderable.SolidDraw') .. propertyHelper.invert('Scene.NH_RALPH_LEISA.Renderable.SolidDraw') .. propertyHelper.invert('Scene.NH_RALPH_MVIC_PAN1.Renderable.SolidDraw') .. propertyHelper.invert('Scene.NH_RALPH_MVIC_PAN2.Renderable.SolidDraw') .. propertyHelper.invert('Scene.NH_RALPH_MVIC_RED.Renderable.SolidDraw') .. propertyHelper.invert('Scene.NH_RALPH_MVIC_BLUE.Renderable.SolidDraw') .. propertyHelper.invert('Scene.NH_RALPH_MVIC_FT.Renderable.SolidDraw') .. propertyHelper.invert('Scene.NH_RALPH_MVIC_METHANE.Renderable.SolidDraw') .. propertyHelper.invert('Scene.NH_RALPH_MVIC_NIR.Renderable.SolidDraw') .. propertyHelper.invert('Scene.NH_ALICE_AIRGLOW.Renderable.SolidDraw') .. propertyHelper.invert('Scene.NH_ALICE_SOC.Renderable.SolidDraw')
Shift+t Toggles the visibility of the shadow visualization of Pluto and Charon. Toggle Shadows /New Horizons false renderableHelper.toggle('Scene.PlutoShadow') .. renderableHelper.toggle('Scene.CharonShadow')
t Toggles the trail of New Horizons. Toggle NH Trail /New Horizons false renderableHelper.toggle('Scene.NewHorizonsTrailPluto')
h Disables visibility of the trails Hide Trails /Rendering false "local list = openspace.getProperty('*Trail.Renderable.Enabled'); for _,v in pairs(list) do openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end"
1 Setting the simulation speed to 1 seconds per realtime second Set sim speed 1 /Simulation Speed false "openspace.time.interpolateDeltaTime(1)"
2 Setting the simulation speed to 5 seconds per realtime second Set sim speed 5 /Simulation Speed false "openspace.time.interpolateDeltaTime(5)"
3 Setting the simulation speed to 10 seconds per realtime second Set sim speed 10 /Simulation Speed false "openspace.time.interpolateDeltaTime(10)"
4 Setting the simulation speed to 20 seconds per realtime second Set sim speed 20 /Simulation Speed false "openspace.time.interpolateDeltaTime(20)"
5 Setting the simulation speed to 40 seconds per realtime second Set sim speed 40 /Simulation Speed false "openspace.time.interpolateDeltaTime(40)"
6 Setting the simulation speed to 60 seconds per realtime second Set sim speed 60 /Simulation Speed false "openspace.time.interpolateDeltaTime(60)"
7 Setting the simulation speed to 120 seconds per realtime second Set sim speed 120 /Simulation Speed false "openspace.time.interpolateDeltaTime(120)"
8 Setting the simulation speed to 360 seconds per realtime second Set sim speed 360 /Simulation Speed false "openspace.time.interpolateDeltaTime(360)"
9 Setting the simulation speed to 540 seconds per realtime second Set sim speed 540 /Simulation Speed false "openspace.time.interpolateDeltaTime(540)"
0 Setting the simulation speed to 1080 seconds per realtime second Set sim speed 1080 /Simulation Speed false "openspace.time.interpolateDeltaTime(1080)"
Shift+1 Setting the simulation speed to 2160 seconds per realtime second Set sim speed 2160 /Simulation Speed false "openspace.time.interpolateDeltaTime(2160)"
Shift+2 Setting the simulation speed to 4320 seconds per realtime second Set sim speed 4320 /Simulation Speed false "openspace.time.interpolateDeltaTime(4320)"
Shift+3 Setting the simulation speed to 8640 seconds per realtime second Set sim speed 8640 /Simulation Speed false "openspace.time.interpolateDeltaTime(8640)"
#Time
absolute 2015-07-14T08:00:00.00
#Camera
setNavigationState "NewHorizons" "Root" -6.572656E1, -7.239404E1, -2.111890E1 0.102164, -0.362945, 0.926193
#MarkNodes
Pluto
NewHorizons
Charon

View File

@@ -0,0 +1,45 @@
#Version
1.0
#Asset
scene/solarsystem/missions/osirisrex/model required
scene/solarsystem/missions/osirisrex/osirisrex required
#Property
setPropertyValueSingle NavigationHandler.OrbitalNavigator.FollowAnchorNodeRotationDistance 20.000000
setPropertyValueSingle Scene.Pluto.Renderable.Enabled false
setPropertyValueSingle Scene.Charon.Renderable.Enabled false
setPropertyValueSingle Scene.PlutoBarycenterTrail.Renderable.Enabled false
#Keybinding
a Sets the focus of the camera on 'OsirisRex'. Focus on OsirisRex /Missions/Osiris Rex false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'OsirisRex'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
s Sets the focus of the camera on 'Bennu' Focus on Bennu /Missions/Osiris Rex false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'BennuBarycenter'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
F8 Sets the time to the approach at Bennu. Set Bennu approach time /Missions/Osiris Rex false "openspace.printInfo('Set time: Approach'); openspace.time.setTime('2018-SEP-11 21:31:01.183')"
F9 Sets the time to the preliminary survey of Bennu. Set Bennu survey time /Missions/Osiris Rex false "openspace.printInfo('Set time: Preliminary Survey'); openspace.time.setTime('2018-NOV-20 01:13:12.183')"
F10 Sets the time to the orbital B event. Set orbital B event time /Missions/Osiris Rex false "openspace.printInfo('Set time: Orbital B'); openspace.time.setTime('2019-APR-08 10:35:27.186')"
F11 Sets the time to the recon event. Set recon event time /Missions/Osiris Rex false "openspace.printInfo('Set time: Recon'); openspace.time.setTime('2019-MAY-25 03:50:31.195')"
q Toggles the visibility of the text marking the location of the Sun. Toggle Sun marker /Missions/Osiris Rex false propertyHelper.invert('Scene.SunMarker.Renderable.Enabled')
1 Setting the simulation speed to 1 seconds per realtime second Set sim speed 1 /Simulation Speed false "openspace.time.interpolateDeltaTime(1)"
2 Setting the simulation speed to 5 seconds per realtime second Set sim speed 5 /Simulation Speed false "openspace.time.interpolateDeltaTime(5)"
3 Setting the simulation speed to 10 seconds per realtime second Set sim speed 10 /Simulation Speed false "openspace.time.interpolateDeltaTime(10)"
4 Setting the simulation speed to 20 seconds per realtime second Set sim speed 20 /Simulation Speed false "openspace.time.interpolateDeltaTime(20)"
5 Setting the simulation speed to 40 seconds per realtime second Set sim speed 40 /Simulation Speed false "openspace.time.interpolateDeltaTime(40)"
6 Setting the simulation speed to 60 seconds per realtime second Set sim speed 60 /Simulation Speed false "openspace.time.interpolateDeltaTime(60)"
7 Setting the simulation speed to 120 seconds per realtime second Set sim speed 120 /Simulation Speed false "openspace.time.interpolateDeltaTime(120)"
8 Setting the simulation speed to 360 seconds per realtime second Set sim speed 360 /Simulation Speed false "openspace.time.interpolateDeltaTime(360)"
9 Setting the simulation speed to 540 seconds per realtime second Set sim speed 540 /Simulation Speed false "openspace.time.interpolateDeltaTime(540)"
0 Setting the simulation speed to 1080 seconds per realtime second Set sim speed 1080 /Simulation Speed false "openspace.time.interpolateDeltaTime(1080)"
Shift+1 Setting the simulation speed to 2160 seconds per realtime second Set sim speed 2160 /Simulation Speed false "openspace.time.interpolateDeltaTime(2160)"
Shift+2 Setting the simulation speed to 4320 seconds per realtime second Set sim speed 4320 /Simulation Speed false "openspace.time.interpolateDeltaTime(4320)"
Shift+3 Setting the simulation speed to 8640 seconds per realtime second Set sim speed 8640 /Simulation Speed false "openspace.time.interpolateDeltaTime(8640)"
#Time
absolute 2018 10 30 23:00:00.500
#Camera
setNavigationState "OsirisRex" 26974590199.661884, 76314608558.908020, -127086452897.101791
#MarkNodes
OsirisRex
BennuBarycenter
Earth

View File

@@ -0,0 +1,35 @@
#Version
1.0
#Module
Volume asset.require('scene/solarsystem/missions/messenger/mercurymagnetosphere') openspace.printWarning("Volume module is not loaded, skipping asset: mercurymagnetosphere")
#Asset
scene/solarsystem/missions/rosetta/67p required
scene/solarsystem/missions/rosetta/rosetta required
#Property
setPropertyValue Scene.67P.Renderable.PerformShading false
setPropertyValue Scene.ImagePlaneRosetta.Renderable.Enabled false
#Keybinding
a Sets the focus of the camera on '67P'. Focus on 67P /Missions/Rosetta false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', '67P'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
s Sets the focus of the camera on 'Rosetta' Focus on Rosetta /Missions/Rosetta false "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Rosetta'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)"
F5 Jumps to the time of initial approach of Rosetta to 67P. Set initial approach time /Missions/Rosetta false "openspace.time.setTime('2014-08-01T03:05:18.101')"
F6 Jumps to the time when the Philae lander is released. Set lander release time /Missions/Rosetta false "openspace.time.setTime('2014-11-12T08:20:00.00')"
F8 Removes all image projections from 67P. Clear 67P projections /Missions/Rosetta false "openspace.setPropertyValue('Scene.67P.Renderable.ProjectionComponent.ClearAllProjections', true)"
e Toggles the visibility of all trails further from the Sun than 67P. Toggle outer planetary trails /Missions/Rosetta false renderableHelper.toggle('Scene.JupiterTrail')..renderableHelper.toggle('Scene.SaturnTrail')..renderableHelper.toggle('Scene.UranusTrail')..renderableHelper.toggle('Scene.NeptuneTrail')
i Toggles the visibility of the free floating image plane. Toggle image plane /Missions/Rosetta false renderableHelper.toggle('Scene.ImagePlaneRosetta')
g Toggles the visibility of Philae's trail. Toggle Philae trail /Missions/Rosetta false renderableHelper.toggle('Scene.PhilaeTrail')
p Enables or disables the image projection on 67P. Toggle 67P projection /Missions/Rosetta false propertyHelper.invert('Scene.67P.Renderable.ProjectionComponent.PerformProjection')
#Time
absolute 2014-08-01T03:05:00.000
#Camera
setNavigationState "67P" "Root" -7.294781E5 , -6.657894E5, 2.509047E6 0.146529E0, 0.944727E0, 0.293290E0
#MarkNodes
67P
Rosetta
Philae

25
data/assets/touch.profile Normal file
View File

@@ -0,0 +1,25 @@
#Version
1.0
#Module
Touch local webGui = asset.require('util/webgui'); webGui.setCefRoute("ontouch") openspace.printFatal('Could not load scene due to missing module "touch"')
#Asset
scene/solarsystem/planets/earth/earth required
util/webgui required
#Property
setPropertyValueSingle Scene.Pluto.Renderable.Enabled false
setPropertyValueSingle Scene.Charon.Renderable.Enabled false
setPropertyValueSingle Scene.PlutoBarycenterTrail.Renderable.Enabled false
#Time
relative -1d
#Camera
setNavigationState "Earth" 58.5877,16.1924,20000000
#MarkNodes
Earth
Mars
Moon

View File

@@ -0,0 +1,54 @@
#Version
1.0
#Asset
scene/solarsystem/planets/jupiter/minor_moons required
scene/solarsystem/planets/saturn/minor_moons required
scene/solarsystem/planets/uranus/minor_moons required
scene/solarsystem/planets/neptune/inner_moons required
scene/solarsystem/planets/neptune/irregular_prograde_moons required
scene/solarsystem/planets/neptune/irregular_retrograde_moons required
scene/solarsystem/missions/voyager/voyager1 required
scene/solarsystem/missions/voyager/voyager2 required
#Keybinding
1 Setting the simulation speed to 1 seconds per realtime second Set sim speed 1 /Simulation Speed false "openspace.time.interpolateDeltaTime(1)"
2 Setting the simulation speed to 5 seconds per realtime second Set sim speed 5 /Simulation Speed false "openspace.time.interpolateDeltaTime(5)"
3 Setting the simulation speed to 10 seconds per realtime second Set sim speed 10 /Simulation Speed false "openspace.time.interpolateDeltaTime(10)"
4 Setting the simulation speed to 20 seconds per realtime second Set sim speed 20 /Simulation Speed false "openspace.time.interpolateDeltaTime(20)"
5 Setting the simulation speed to 40 seconds per realtime second Set sim speed 40 /Simulation Speed false "openspace.time.interpolateDeltaTime(40)"
6 Setting the simulation speed to 90 seconds per realtime second Set sim speed 90 /Simulation Speed false "openspace.time.interpolateDeltaTime(90)"
7 Setting the simulation speed to 360 seconds per realtime second Set sim speed 360 /Simulation Speed false "openspace.time.interpolateDeltaTime(360)"
8 Setting the simulation speed to 720 seconds per realtime second Set sim speed 720 /Simulation Speed false "openspace.time.interpolateDeltaTime(720)"
9 Setting the simulation speed to 2880 seconds per realtime second Set sim speed 2880 /Simulation Speed false "openspace.time.interpolateDeltaTime(2880)"
0 Setting the simulation speed to 14400 seconds per realtime second Set sim speed 14400 /Simulation Speed false "openspace.time.interpolateDeltaTime(14400)"
Shift+1 Setting the simulation speed to 28800 seconds per realtime second Set sim speed 28800 /Simulation Speed false "openspace.time.interpolateDeltaTime(28800)"
Shift+2 Setting the simulation speed to 57600 seconds per realtime second Set sim speed 57600 /Simulation Speed false "openspace.time.interpolateDeltaTime(57600)"
Shift+3 Setting the simulation speed to 115200 seconds per realtime second Set sim speed 115200 /Simulation Speed false "openspace.time.interpolateDeltaTime(115200)"
Shift+4 Setting the simulation speed to 230400 seconds per realtime second Set sim speed 230400 /Simulation Speed false "openspace.time.interpolateDeltaTime(230400)"
Shift+5 Setting the simulation speed to 460800 seconds per realtime second Set sim speed 460800 /Simulation Speed false "openspace.time.interpolateDeltaTime(460800)"
Shift+6 Setting the simulation speed to 921600 seconds per realtime second Set sim speed 921600 /Simulation Speed false "openspace.time.interpolateDeltaTime(921600)"
Shift+7 Setting the simulation speed to 1843200 seconds per realtime second Set sim speed 1843200 /Simulation Speed false "openspace.time.interpolateDeltaTime(1843200)"
Shift+8 Setting the simulation speed to 3686400 seconds per realtime second Set sim speed 3686400 /Simulation Speed false "openspace.time.interpolateDeltaTime(3686400)"
Shift+9 Setting the simulation speed to 7372800 seconds per realtime second Set sim speed 7372800 /Simulation Speed false "openspace.time.interpolateDeltaTime(7372800)"
Shift+0 Setting the simulation speed to 14745600 seconds per realtime second Set sim speed 14745600 /Simulation Speed false "openspace.time.interpolateDeltaTime(14745600)"
#Property
setPropertyValueSingle Scene.Pluto.Renderable.Enabled false
setPropertyValueSingle Scene.Charon.Renderable.Enabled false
setPropertyValueSingle Scene.PlutoBarycenterTrail.Renderable.Enabled false
#Time
absolute 1977 SEP 10 12:00:00
#Camera
setNavigationState "Voyager_1" "Root" 526781518487.171326, 257168309890.072144, -1381125204152.817383
#MarkNodes
Earth
Voyager 1
Voyager 2
Jupiter
Saturn
Uranus
Neptune

View File

@@ -44,6 +44,7 @@ struct Configuration {
std::string windowConfiguration = "${CONFIG}/single.xml";
std::string asset;
std::string profile;
std::vector<std::string> globalCustomizationScripts;
std::map<std::string, std::string> pathTokens = {
{ "CACHE" , "CACHE = \"${BASE}/cache\"" }

View File

@@ -108,6 +108,8 @@ private:
void loadFonts();
void runGlobalCustomizationScripts();
void configureLogging();
std::string generateFilePath(std::string openspaceRelativePath);
std::unique_ptr<Scene> _scene;
std::unique_ptr<AssetManager> _assetManager;

View File

@@ -84,9 +84,14 @@ void BrowserInstance::initialize() {
void BrowserInstance::loadUrl(std::string url) {
ghoul_assert(_isInitialized, "BrowserInstance should be initialized");
LDEBUG(fmt::format("Loading URL: {}", url));
CefString cefUrl = std::move(url);
_browser->GetMainFrame()->LoadURL(cefUrl);
if (!url.empty()) {
LDEBUG(fmt::format("Loading URL: {}", url));
CefString cefUrl = std::move(url);
_browser->GetMainFrame()->LoadURL(cefUrl);
}
else {
LWARNING("Provided browser URL is empty");
}
}
bool BrowserInstance::loadLocalPath(std::string path) {

View File

@@ -45,8 +45,7 @@ SGCTConfig = sgct.config.single{}
-- Sets the scene that is to be loaded by OpenSpace. A scene file is a description
-- of all entities that will be visible during an instance of OpenSpace
Asset = "default"
--Asset = "default"
-- Asset = "default_full"
-- Asset = "newhorizons"
-- Asset = "rosetta"
@@ -60,6 +59,11 @@ Asset = "default"
-- Asset = "apollo_sites"
-- Asset = "touch"
-- Sets the profile that should be loaded by OpenSpace. Profiles are going to replace
-- assets in a future versions and shouldn't be used at the same time as the 'Asset'
-- setting above
Profile = "default"
-- These scripts are executed after the initialization of each scene, thus making
-- it possible to have global overrides to default values or execute other scripts
-- regardless of the scene that is loaded

View File

@@ -0,0 +1,473 @@
version = ''
modulesTable = {}
assetsTable = {}
propertiesTable = {}
timeTable = {}
cameraTable = {}
markNodesTable = {}
keybindingsTable = {}
resultTable = {}
insideSection = false
currFunction = 'None'
currSection = 'None'
numLinesVersion = 0
lineIndex = 1
function printError(message)
print('Error @ line ' .. lineIndex .. ': ' .. message)
end
function splitByTab(inputstr)
sep = "\t"
t = {}
for match in (inputstr .. sep):gmatch('(.-)' .. sep) do
table.insert(t, match)
end
return t;
end
function parseVersion(line)
numLinesVersion = numLinesVersion + 1
if numLinesVersion > 1 then
printError('Too many lines in Version section')
os.exit()
else
lineS = splitByTab(line)
if tableLen(lineS) > 1 then
printError('No tabs allowed in version entry')
os.exit()
else
version = line
end
end
end
function parseMarkNodes(line)
lineS = splitByTab(line)
if tableLen(lineS) > 1 then
printError('No tabs allowed in MarkNodes entry')
os.exit()
else
table.insert(markNodesTable, line)
end
end
function parseModule(line)
t = {}
t = splitByTab(line)
if tableLen(t) ~= 3 then
printError('3 fields requried in a Module entry')
os.exit()
else
table.insert(modulesTable, t)
end
end
function parseAsset(line)
t = {}
t = splitByTab(line)
if tableLen(t) ~= 2 then
printError('2 fields required in a Asset entry')
os.exit()
else
local req = 'required'
if t[2] == 'requested' then
req = 'requested'
end
table.insert(assetsTable, {t[1], req})
end
end
function parseProperty(line)
t = {}
t = splitByTab(line)
if tableLen(t) ~= 3 then
printError('3 fields required in a Property entry')
os.exit()
elseif isBlank(t[1]) then
printError('Property set command (arg 1/3) is required')
os.exit()
elseif isBlank(t[2]) then
printError('Property name (arg 2/3) is required')
os.exit()
elseif isBlank(t[3]) then
printError('Property value to set (arg 3/3) is required')
os.exit()
end
if t[1] ~= 'setPropertyValue' and t[1] ~= 'setPropertyValueSingle' then
printError('Property set command "' .. t[1] .. '" is not supported')
os.exit()
end
table.insert(propertiesTable, t)
end
function parseKeybinding(line)
local numReqFields = 6
t = {}
t = splitByTab(line)
if tableLen(t) < numReqFields then
printError(numReqFields .. ' fields required in a Keybinding entry')
os.exit()
elseif isBlank(t[1]) then
printError('Keybinding key (arg 1/6) is required')
os.exit()
elseif isBlank(t[2]) then
printError('Keybinding documentation (arg 2/6) is required')
os.exit()
elseif isBlank(t[3]) then
printError('Keybinding name (arg 3/6) is required')
os.exit()
elseif isBlank(t[4]) then
printError('Keybinding GuiPath (arg 4/6) is required')
os.exit()
elseif isBlank(t[5]) then
printError('Keybinding local(T/F) (arg 5/6) is required')
os.exit()
elseif isBlank(t[6]) then
printError('Keybinding script to execute (arg 6/6) is required')
os.exit()
end
--If there are more than 6 fields then combine the final fields together
--assuming that this is a lua script that contains tabs
if tableLen(t) > numReqFields then
for i=(numReqFields + 1),tableLen(t) do
t[numReqFields] = t[numReqFields]..t[i]
end
end
if t[5] ~= 'true' and t[5] ~= 'false' then
printError('Keybinding local arg must be true or false')
os.exit()
end
table.insert(keybindingsTable, { t[1], t[2], t[3], t[4], t[5], t[6] })
end
function parseTime(line)
t = {}
t = splitByTab(line)
if tableLen(t) ~= 2 then
printError('2 fields required in a Time entry')
os.exit()
elseif isBlank(t[1]) then
printError('Time set type (arg 1/2) is required')
os.exit()
elseif isBlank(t[2]) then
printError('Time value to set (arg 2/2) is required')
os.exit()
end
if t[1] ~= 'absolute' and t[1] ~= 'relative' then
printError('Time set type "' .. t[1] .. '" is not supported')
os.exit()
end
table.insert(timeTable, t)
end
function parseCamera(line)
t = {}
t = splitByTab(line)
local cmd = t[1]
if cmd == 'setNavigationState' then
if tableLen(t) ~= 8 then
printError('8 fields required in camera "setNavigationState" line')
os.exit()
elseif isBlank(t[2]) then
printError('Camera setNavigationState Anchor (arg 1/7) is required')
os.exit()
elseif isBlank(t[5]) then
printError('Camera setNavigationState position vector (arg 4/7) is required')
os.exit()
end
elseif cmd == 'goToGeo' then
if tableLen(t) ~= 5 then
printError('5 fields required in camera "goToGeo" line')
os.exit()
elseif isBlank(t[3]) then
printError('Camera goToGeo Latitude (arg 2/4) is required')
os.exit()
elseif isBlank(t[4]) then
printError('Camera goToGeo Longitude (arg 3/4) is required')
os.exit()
end
else
printError('Camera position command "' .. cmd .. '" is not supported')
os.exit()
end
table.insert(cameraTable, t)
end
function file_exists(file)
local f = io.open(file, 'rb')
if f then
f:close()
end
return f ~= nil
end
function lines_from(file)
if not file_exists(file) then
return {}
end
lines = {}
for line in io.lines(file) do
lines[#lines + 1] = line
end
return lines
end
function determineSection(header)
header = header:sub(2)
for _,i in pairs(parsingSections) do
if i.section == header then
currSection = i.section
currFunction = i.func
return true
end
end
return false
end
function isBlank(line)
return line:match('%S') == nil
end
function parseCurrentSection(line)
currFunction(line)
end
function tableLen(T)
local size = 0
for _ in pairs(T) do
size = size + 1
end
return size
end
function parseProfile(fileIn)
local lines = lines_from(fileIn)
for k,v in pairs(lines) do
if insideSection then
if isBlank(v) then
insideSection = false
else
parseCurrentSection(v)
end
elseif v:sub(1, 1) == '#' then
if determineSection(v) then
insideSection = true
end
end
lineIndex = lineIndex + 1
end
resultTable['Version'] = version
resultTable['Module'] = modulesTable
resultTable['Asset'] = assetsTable
resultTable['Property'] = propertiesTable
resultTable['Time'] = timeTable
resultTable['Camera'] = cameraTable
resultTable['MarkNodes'] = markNodesTable
resultTable['Keybinding'] = keybindingsTable
return resultTable
end
function tableSize(T)
local size = 0
for _ in pairs(T) do
size = size + 1
end
return size
end
function generateAsset(T, fileOut)
file = io.open(fileOut, 'w')
io.output(file)
--Module section
for i,j in pairs(T['Module']) do
if not isBlank(j[2]) and not isBlank(j[3]) then
ModuleStr = ModuleStr .. 'if openspace.modules.isLoaded("' .. j[1] .. '") then\n'
ModuleStr = ModuleStr .. ' ' .. j[2] .. '\nelse\n' .. ' ' .. j[3] .. '\nend\n'
elseif not isBlank(j[3]) then
ModuleStr = ModuleStr .. 'if not openspace.modules.isLoaded("' .. j[1] .. '") then\n'
ModuleStr = ModuleStr .. ' ' .. j[3] .. '\nend\n'
elseif not isBlank(j[2]) then
ModuleStr = ModuleStr .. 'if openspace.modules.isLoaded("' .. j[1] .. '") then\n'
ModuleStr = ModuleStr .. ' ' .. j[2] .. '\nend\n'
end
end
--Asset section
AssetStr = AssetStr .. 'asset.require("base");\n'
AssetStr = AssetStr .. 'local assetHelper = asset.require("util/asset_helper")\n'
AssetStr = AssetStr .. 'local propertyHelper = asset.require("util/property_helper")\n'
AssetStr = AssetStr .. 'local sceneHelper = asset.require("util/scene_helper")\n'
AssetStr = AssetStr .. 'local renderableHelper = asset.require("util/renderable_helper")\n'
local assetType = ''
for i,j in pairs(T['Asset']) do
if isBlank(j[2]) then
assetType = 'require'
else
if (j[2] == 'required') then
assetType = 'require'
elseif (j[2] == 'requested') then
assetType = 'request'
else
printError('Asset arg 2/2 must be either "required" or "requested"')
os.exit()
end
end
AssetStr = AssetStr .. 'asset.' .. assetType .. '("' .. j[1] .. '")\n'
end
--Keybindings section
if not (tableSize(T['Keybinding']) == 0) then
KeyStr = KeyStr .. 'local Keybindings = {\n'
for i,j in pairs(T['Keybinding']) do
KeyStr = KeyStr..' {\n'
KeyStr = KeyStr..' Key = "' .. j[1] .. '",\n'
KeyStr = KeyStr..' Documentation = "' .. j[2] .. '",\n'
KeyStr = KeyStr..' Name = "' .. j[3] .. '",\n'
KeyStr = KeyStr..' GuiPath = "' .. j[4] .. '",\n'
KeyStr = KeyStr..' Local = ' .. j[5] .. ',\n'
KeyStr = KeyStr..' Command = ' .. j[6] .. '\n'
KeyStr = KeyStr..' },\n'
end
KeyStr = KeyStr.."}\n"
end
--Time section
for i,j in pairs(T['Time']) do
if not (j[1] == 'absolute') and not (j[1] == 'relative') then
printError('Time arg 1/1 must be either "absolute" or "relative"')
os.exit()
elseif (j[1] == 'absolute') then
TimeStr = TimeStr .. ' openspace.time.setTime("' .. j[2] .. '")\n'
elseif (j[1] == 'relative') then
TimeStr = TimeStr .. ' local now = openspace.time.currentWallTime();'
TimeStr = TimeStr .. ' openspace.time.setTime('
TimeStr = TimeStr .. 'openspace.time.advancedTime(now, "' .. j[2] .. '"))\n'
end
end
--MarkNodes section
mkNodLen = tableSize(T['MarkNodes'])
if not (mkNodLen == 0) then
MarkNodesStr = MarkNodesStr .. ' openspace.markInterestingNodes({'
for i, j in pairs(T['MarkNodes']) do
MarkNodesStr = MarkNodesStr .. '"' .. j .. '"'
if (i < mkNodLen) then
MarkNodesStr = MarkNodesStr .. ', '
end
end
MarkNodesStr = MarkNodesStr .. '})\n'
end
--Property section
for i, j in pairs(T['Property']) do
if not (j[1] == 'setPropertyValue') and not (j[1] == 'setPropertyValueSingle') then
printError('Property arg 1/1 must be "setPropertyValue[Single]"')
os.exit()
else
PropertyStr = PropertyStr .. ' openspace.' .. j[1] .. '("' .. j[2] .. '", ' .. j[3] .. ')\n'
end
end
--Camera section
for i,j in pairs(T['Camera']) do
if (j[1] == 'setNavigationState') then
CameraStr = CameraStr .. ' openspace.navigation.setNavigationState({'
CameraStr = CameraStr .. 'Anchor = ' .. j[2] .. ', '
if not isBlank(j[3]) then
CameraStr = CameraStr .. 'Aim = ' .. j[3] .. ', '
end
if not isBlank(j[4]) then
CameraStr = CameraStr .. 'ReferenceFrame = ' .. j[4] .. ', '
end
CameraStr = CameraStr .. 'Position = {' .. j[5] .. '}, '
if not isBlank(j[6]) then
CameraStr = CameraStr .. 'Up = {' .. j[6] .. '}, '
end
if not isBlank(j[7]) then
CameraStr = CameraStr .. 'Yaw = ' .. j[7] .. ', '
end
if not isBlank(j[8]) then
CameraStr = CameraStr .. 'Pitch = ' .. j[8]
end
CameraStr = CameraStr .. '})\n'
elseif (j[1] == 'goToGeo') then
CameraStr = CameraStr .. ' openspace.globebrowsing.goToGeo('
if not isBlank(j[2]) then
CameraStr = CameraStr .. j[2] .. ', '
end
CameraStr = CameraStr .. j[3] .. ', ' .. j[4]
if not isBlank(j[5]) then
CameraStr = CameraStr .. ', ' .. j[5]
end
CameraStr = CameraStr .. ')\n'
else
printError('Camera arg 1/1 must be "setNavigationState" or "goToGeo"')
os.exit()
end
end
--Write the file
io.write(ModuleStr .. '\n')
io.write(AssetStr .. '\n')
io.write(KeyStr .. '\n')
io.write('asset.onInitialize(function ()\n')
io.write(TimeStr .. '\n')
if not (tableSize(T['Keybinding']) == 0) then
io.write(' sceneHelper.bindKeys(Keybindings)\n')
end
io.write(MarkNodesStr .. '\n')
io.write(PropertyStr .. '\n')
io.write(CameraStr .. '\n')
io.write('end)\n')
io.close(file)
end
--[[
##########################################################################################
M a i n
##########################################################################################
]]--
ModuleStr = ''
AssetStr = ''
KeyStr = ''
TimeStr = ''
MarkNodesStr = ''
PropertyStr = ''
CameraStr = ''
parsingSections = {
{ section = 'Version', func = parseVersion },
{ section = 'Module', func = parseModule },
{ section = 'Asset', func = parseAsset },
{ section = 'Property', func = parseProperty },
{ section = 'Keybinding', func = parseKeybinding },
{ section = 'Time', func = parseTime },
{ section = 'Camera', func = parseCamera },
{ section = 'MarkNodes', func = parseMarkNodes }
}
profilePathIn = openspace.profile.getProfileInputPath()
scenePathOut = openspace.profile.getSceneOutputPath()
profileIn = profilePathIn .. '.profile'
assetOut = scenePathOut .. '.scene'
local resultTable = parseProfile(profileIn)
generateAsset(resultTable, assetOut)

View File

@@ -41,6 +41,7 @@ namespace {
// These are also used in the _doc include file
constexpr const char* KeySGCTConfig = "SGCTConfig";
constexpr const char* KeyAsset = "Asset";
constexpr const char* KeyProfile = "Profile";
constexpr const char* KeyGlobalCustomizationScripts = "GlobalCustomizationScripts";
constexpr const char* KeyPaths = "Paths";
constexpr const char* KeyFonts = "Fonts";
@@ -277,6 +278,7 @@ void parseLuaState(Configuration& configuration) {
getValue(s, KeySGCTConfig, c.windowConfiguration);
getValue(s, KeyAsset, c.asset);
getValue(s, KeyProfile, c.profile);
getValue(s, KeyGlobalCustomizationScripts, c.globalCustomizationScripts);
getValue(s, KeyPaths, c.pathTokens);
getValue(s, KeyFonts, c.fonts);

View File

@@ -99,6 +99,9 @@
namespace {
constexpr const char* _loggerCat = "OpenSpaceEngine";
constexpr const int CacheVersion = 1;
constexpr const char* ProfileToSceneConverter
= "${BASE}/scripts/convert_profile_to_scene.lua";
} // namespace
namespace openspace {
@@ -293,6 +296,48 @@ void OpenSpaceEngine::initialize() {
LDEBUG("Registering Lua libraries");
registerCoreClasses(global::scriptEngine);
// Convert profile to scene file (if was provided in configuration file)
if (!global::configuration.profile.empty()) {
LINFO(
fmt::format("Run Lua script to convert {}.profile to scene",
global::configuration.profile)
);
ghoul::lua::LuaState lState;
// We can't use the absPath function here because we pass the path into the Lua
// function, which requires additional escaping
std::string inputProfilePath = generateFilePath("${ASSETS}");
std::string outputScenePath = generateFilePath("${TEMPORARY}");
std::string setProfileFilenameInLuaState = fmt::format(R"(
openspace = {{}}
openspace.profile = {{}}
function openspace.profile.getFilename()
return "{}.profile"
end
function openspace.profile.getProfileInputPath()
return "{}"
end
function openspace.profile.getSceneOutputPath()
return "{}"
end
)",
global::configuration.profile,
inputProfilePath,
outputScenePath
);
ghoul::lua::runScript(lState, setProfileFilenameInLuaState);
ghoul::lua::runScriptFile(lState, absPath(ProfileToSceneConverter));
// Set asset name to that of the profile because a new scene file will be
// created with that name, and also because the profile name will override
// an asset name if both are provided.
global::configuration.asset =
absPath("${TEMPORARY}/") + global::configuration.profile;
}
// Set up asset loader
std::unique_ptr<SynchronizationWatcher> w =
std::make_unique<SynchronizationWatcher>();
@@ -341,6 +386,26 @@ void OpenSpaceEngine::initialize() {
LTRACE("OpenSpaceEngine::initialize(end)");
}
std::string OpenSpaceEngine::generateFilePath(std::string openspaceRelativePath) {
std::string path = absPath(openspaceRelativePath);
// Needs to handle either windows (which seems to require double back-slashes)
// or unix path slashes.
const std::string search = "\\";
const std::string replace = "\\\\";
if (path.find(search) != std::string::npos) {
size_t start_pos = 0;
while ((start_pos = path.find(search, start_pos)) != std::string::npos) {
path.replace(start_pos, search.length(), replace);
start_pos += replace.length();
}
path.append(replace);
}
else {
path.append("/");
}
return path.append(global::configuration.profile);
}
void OpenSpaceEngine::initializeGL() {
LTRACE("OpenSpaceEngine::initializeGL(begin)");