added states and functions for esero 2025 installation

This commit is contained in:
Arohdin
2025-05-12 14:25:52 +02:00
parent 2d89a09098
commit d10b91ca61
11 changed files with 457 additions and 5 deletions
@@ -30,5 +30,10 @@ local linearFlight = [[
]] .. util.flyLinearlyToNode('Sun-Handle', solarTargetDistance) .. [[
]]
local jumpFlight = [[
]] .. util.jumpToNode('Sun-Handle', solarTargetDistance) .. [[
]]
asset.export("cameraPath", cameraPath)
asset.export("linearFlight", linearFlight)
asset.export("jumpFlight", jumpFlight)
@@ -44,6 +44,14 @@ asset.require("scene/solarsystem/missions/apollo/insignias_map")
-- Voyager & Pioneer mission
asset.require("scene/solarsystem/missions/voyagerpioneer/voyager1_2__pioneer10_11")
-- Juice mission
asset.require("scene/solarsystem/missions/juice/model")
asset.require("scene/solarsystem/missions/juice/fieldlines")
asset.require("scene/solarsystem/missions/juice/trails/ssb")
asset.require("scene/solarsystem/missions/juice/trails/earth")
asset.require("scene/solarsystem/missions/juice/trails/jupiter")
asset.require("scene/solarsystem/missions/juice/trails/ganymede")
-- ISS
asset.require("scene/solarsystem/planets/earth/satellites/misc/iss")
@@ -113,6 +121,24 @@ asset.onInitialize(function ()
-- Have Cassini missing trails faded out per default
openspace.setPropertyValue("{cassini_trail}.Renderable.Fade", 0.0)
-- Hides Juice trails by default
openspace.setPropertyValueSingle("Scene.JuiceTrail.Renderable.Enabled", false)
openspace.setPropertyValueSingle("Scene.JuiceTrail.Renderable.Fade", 0.0)
openspace.setPropertyValueSingle("Scene.JuiceTrailEarth.Renderable.Enabled", false)
openspace.setPropertyValueSingle("Scene.JuiceTrailEarth.Renderable.Fade", 0.0)
openspace.setPropertyValueSingle("Scene.JuiceTrailJupiter.Renderable.Enabled", false)
openspace.setPropertyValueSingle("Scene.JuiceTrailJupiter.Renderable.Fade", 0.0)
openspace.setPropertyValueSingle("Scene.JuiceTrailGanymede.Renderable.Enabled", false)
openspace.setPropertyValueSingle("Scene.JuiceTrailGanymede.Renderable.Fade", 0.0)
-- Enable Ganymede Magnetosphere flow animation for fieldlines and hides them by default
openspace.setPropertyValueSingle("Scene.GanymedeMagnetosphere.Renderable.Enabled", false)
openspace.setPropertyValueSingle("Scene.GanymedeMagnetosphere.Renderable.Fade", 0.0)
--openspace.setPropertyValueSingle("Scene.GanymedeMagnetosphere.Renderable.DomainEnabled", false)
--openspace.setPropertyValueSingle("Scene.GanymedeMagnetosphere.Renderable.FlowEnabled", true)
-- Other planet color layers
openspace.setPropertyValueSingle("Scene.Neptune.Renderable.Layers.ColorLayers.Texture.Enabled", true)
openspace.setPropertyValueSingle("Scene.Earth.Renderable.Layers.NightLayers.Earth_at_Night_2012.Settings.Gamma", 0.5)
@@ -2,6 +2,8 @@ local util = asset.require('./utility_functions')
local flyHome = asset.require('./fly_home_alternatives')
local defaultTime = asset.require('./default_time').time
local inactivityView = {}
----------------------------------------------------------------
-- STATES
----------------------------------------------------------------
@@ -9,6 +11,20 @@ local startState = {
Identifier = "Start",
}
local inactiveState = {
Identifier = "Inactive",
Enter = [[
]] .. util.jumpToNode("Earth", 6000000) .. [[
openspace.setPropertyValueSingle("NavigationHandler.OrbitalNavigator.LimitZoom.EnableMaximumAllowedDistance", false)
openspace.setPropertyValueSingle("NavigationHandler.OrbitalNavigator.DisableZoom", true);
openspace.setPropertyValueSingle('Modules.Touch.TouchInteraction.DisableZoom', true);
]],
Exit = [[
openspace.setPropertyValueSingle("NavigationHandler.OrbitalNavigator.DisableZoom", false);
openspace.setPropertyValueSingle('Modules.Touch.TouchInteraction.DisableZoom', false);
]]
}
local homeState = {
Identifier = "Home",
Enter = [[
@@ -50,13 +66,19 @@ local substateApollo = asset.require('./substates/missions/apollo')
local substateMarsRovers = asset.require('./substates/missions/mars_rovers')
local substateCassini = asset.require('./substates/missions/cassini')
local substateVoyagerPioneer = asset.require('./substates/missions/voyager_pioneer')
local substateJuice = asset.require('./substates/missions/juice')
-- Others
local substateUniverse = asset.require('./substates/universe')
local substateCBR = asset.require('./substates/cbr')
local substateExoplanets = asset.require('./substates/exoplanets')
local subStateDwarfPlanets = asset.require('./substates/dwarfplanets')
local subStatePluto = asset.require('./substates/pluto')
local subStateCeres = asset.require('./substates/ceres')
local states = {
startState,
inactiveState,
homeState,
solarSystemState
}
@@ -65,8 +87,13 @@ util.appendTable(states, substateApollo.states)
util.appendTable(states, substateMarsRovers.states)
util.appendTable(states, substateCassini.states)
util.appendTable(states, substateVoyagerPioneer.states)
util.appendTable(states, substateJuice.states)
util.appendTable(states, substateUniverse.states)
util.appendTable(states, substateCBR.states)
util.appendTable(states, substateExoplanets.states)
util.appendTable(states, subStateDwarfPlanets.states)
util.appendTable(states, subStatePluto.states)
util.appendTable(states, subStateCeres.states)
----------------------------------------------------------------
-- TRANSITIONS
@@ -105,6 +132,44 @@ local transitions = {
From = "Home",
To = "SolarSystem"
},
-- Home <-> Inactive
{
From = "Home",
To = "Inactive",
Action = [[
openspace.setPropertyValueSingle("Scene.MercuryTrail.Renderable.Enabled", false);
openspace.setPropertyValueSingle("Scene.VenusTrail.Renderable.Enabled", false);
openspace.setPropertyValueSingle("Scene.EarthTrail.Renderable.Enabled", false);
openspace.setPropertyValueSingle("Scene.MarsTrail.Renderable.Enabled", false);
openspace.setPropertyValueSingle("Scene.JupiterTrail.Renderable.Enabled", false);
openspace.setPropertyValueSingle("Scene.SaturnTrail.Renderable.Enabled", false);
openspace.setPropertyValueSingle("Scene.NeptuneTrail.Renderable.Enabled", false);
openspace.setPropertyValueSingle("Scene.UranusTrail.Renderable.Enabled", false);
openspace.setPropertyValueSingle("Scene.MoonTrail.Renderable.Enabled", false);
openspace.setPropertyValueSingle("Scene.ISS_trail.Renderable.Enabled", false);
]]
},
{
From = "Inactive",
To = "Home",
Action = [[
local anchor = openspace.propertyValue("NavigationHandler.OrbitalNavigator.Anchor")
if (anchor ~= 'Sun-Handle' ) then ]]
.. flyHome.cameraPath ..
[[end
openspace.setPropertyValueSingle("Scene.MercuryTrail.Renderable.Enabled", true);
openspace.setPropertyValueSingle("Scene.VenusTrail.Renderable.Enabled", true);
openspace.setPropertyValueSingle("Scene.EarthTrail.Renderable.Enabled", true);
openspace.setPropertyValueSingle("Scene.MarsTrail.Renderable.Enabled", true);
openspace.setPropertyValueSingle("Scene.JupiterTrail.Renderable.Enabled", true);
openspace.setPropertyValueSingle("Scene.SaturnTrail.Renderable.Enabled", true);
openspace.setPropertyValueSingle("Scene.NeptuneTrail.Renderable.Enabled", true);
openspace.setPropertyValueSingle("Scene.UranusTrail.Renderable.Enabled", true);
openspace.setPropertyValueSingle("Scene.MoonTrail.Renderable.Enabled", true);
openspace.setPropertyValueSingle("Scene.ISS_trail.Renderable.Enabled", true);
]]
}
-- The rest are in the substates
}
@@ -112,8 +177,13 @@ util.appendTable(transitions, substateApollo.transitions)
util.appendTable(transitions, substateMarsRovers.transitions)
util.appendTable(transitions, substateCassini.transitions)
util.appendTable(transitions, substateVoyagerPioneer.transitions)
util.appendTable(transitions, substateJuice.transitions)
util.appendTable(transitions, substateUniverse.transitions)
util.appendTable(transitions, substateCBR.transitions)
util.appendTable(transitions, substateExoplanets.transitions)
util.appendTable(transitions, subStateDwarfPlanets.transitions)
util.appendTable(transitions, subStatePluto.transitions)
util.appendTable(transitions, subStateCeres.transitions)
asset.onInitialize(function()
openspace.statemachine.createStateMachine(states, transitions, "Start")
@@ -27,10 +27,15 @@ local states = { cbrState }
local transitions = {
-- Transition to/from this state
{
From = "Home",
From = "Universe",
To = "CBR",
Action = [[]] -- This flight happens on the webpage
},
{
From = "CBR",
To = "Universe",
Action = flyHome.linearFlight
},
{
From = "CBR",
To = "Home",
@@ -0,0 +1,44 @@
local util = asset.require('./../utility_functions')
local flyHome = asset.require('./../fly_home_alternatives')
----------------------------------------------------------------
-- STATES
----------------------------------------------------------------
local ceresState = {
Identifier = "Ceres",
Enter = [[]],
Exit = [[]]
}
local states = { ceresState }
----------------------------------------------------------------
-- TRANSITIONS within this substate
----------------------------------------------------------------
local transitions = {
-- Transition to/from this state
{
From = "DwarfPlanets",
To = "Ceres"
},
{
From = "Ceres",
To = "Pluto"
},
{
From = "Pluto",
To = "Ceres"
},
{
From = "Ceres",
To = "DwarfPlanets"
},
{
From = "Ceres",
To = "Home",
Action = flyHome.linearFlight
}
}
asset.export("states", states)
asset.export("transitions", transitions)
@@ -0,0 +1,60 @@
local util = asset.require('./../utility_functions')
local flyHome = asset.require('./../fly_home_alternatives')
----------------------------------------------------------------
-- STATES
----------------------------------------------------------------
local dwarfPlanetState = {
Identifier = "DwarfPlanets",
Enter = [[
]] .. util.setOrbitSpeedFactor(0.4) .. [[
]] .. util.startOrbiting() .. [[
]] .. util.orbitAroundUpOnArrival() .. [[
openspace.setPropertyValueSingle("Scene.Jupiter.Renderable.Layers.ColorLayers.JupiterVideo.TileProvider.VideoPlayer.Play", nil)
]],
Exit = [[
openspace.setPropertyValue('{moonTrail_minor}.Renderable.Enabled', false);
openspace.setPropertyValueSingle("Scene.Jupiter.Renderable.Layers.ColorLayers.JupiterVideo.TileProvider.VideoPlayer.Pause", nil)
]] .. util.stopOrbiting() .. [[
]]
}
local states = { dwarfPlanetState }
----------------------------------------------------------------
-- TRANSITIONS within this substate
----------------------------------------------------------------
local transitions = {
-- Transition to/from this state
{
From = "SolarSystem",
To = "DwarfPlanets"
},
{
From = "DwarfPlanets",
To = "Pluto"
},
{
From = "DwarfPlanets",
To = "Ceres"
},
{
From = "Pluto",
To = "DwarfPlanets"
},
{
From = "Ceres",
To = "DwarfPlanets"
},
{
From = "DwarfPlanets",
To = "SolarSystem"
},
{
From = "DwarfPlanets",
To = "Home"
}
}
asset.export("states", states)
asset.export("transitions", transitions)
@@ -35,14 +35,19 @@ local states = { exoplanetsState }
local transitions = {
-- Transition to/from this state
{
From = "Home",
From = "Universe",
To = "Exoplanets"
},
{
From = "Exoplanets",
To = "Home"
To = "Universe"
-- No action. Should already be at the desired distance
}
},
{
From = "Exoplanets",
To = "Home",
Action = flyHome.linearFlight
},
}
asset.export("states", states)
@@ -0,0 +1,111 @@
local util = asset.require('./../../utility_functions')
local flyHome = asset.require('./../../fly_home_alternatives')
local defaultTime = asset.require('./../../default_time').time
-- local predefinedTime = "2025-04-15T14:00:00.505"
local heightNear = 10
local heightFar = 1.0E12
----------------------------------------------------------------
-- STATES
----------------------------------------------------------------
local trails = { "JuiceTrail", "JuiceTrailEarth", "JuiceTrailJupiter", "JuiceTrailGanymede" }
local juiceNavigationState = [[{
Anchor="Juice",
Pitch = 1.3745455550924389e-05,
Position = { -12.507247924804688, 3.0131072998046875, -1.77764892578125 },
ReferenceFrame = "Root",
Up = { 0.04795887271975485, -0.352338472374508, -0.934643005329975 },
Yaw = -9.46004722316628e-06
}]]
local juiceState = {
Identifier = "Juice"
}
local juiceGoToNearState = {
Identifier = "JuiceGoToNear",
Enter = util.flyLinearlyToHeightInTime(heightNear, 3),
Exit = [[]]
}
local juiceGoToFarState = {
Identifier = "JuiceGoToFar",
Enter = util.flyLinearlyToHeightInTime(heightFar, 3),
Exit = [[]]
}
local states = {
juiceState,
juiceGoToNearState,
juiceGoToFarState
}
----------------------------------------------------------------
-- TRANSITIONS within this substate
----------------------------------------------------------------
-- The action we want to happen when moving from any of the substates back
-- to the Home state
local onLeavingMainStateAction = [[
]] .. util.setTime(defaultTime) .. [[
]] .. flyHome.jumpFlight .. [[
]] .. util.disableRoll() .. [[
]] .. util.stopOrbiting() .. [[
]] .. util.fadeOutNodes(trails) .. [[
]]
local arrivalDistance = 25.0
local transitions = {
{
-- Note: Juice mission is only valid until 2035 OCT 05. After this this part of the code will result in incorrect visuals :)
From = "Home",
To = "Juice",
Action = [[
]] .. util.setCurveType("AvoidCollisionWithLookAt") .. [[
]] .. util.orbitConstantLatitudeOnArrival() .. [[
]] .. util.enableRoll() .. [[
]] .. util.fadeInNodes({ "JuiceTrail" }) .. [[
]] .. util.jumpToNavState(juiceNavigationState) .. [[
]]
},
-- Juice to X transition
{
From = "Juice",
To = "JuiceGoToFar"
},
-- Near to X transitions
{
From = "JuiceGoToNear",
To = "JuiceGoToFar",
},
-- Far to X transitions
{
From = "JuiceGoToFar",
To = "JuiceGoToNear"
},
-- Home transitions
{
From = "Juice",
To = "Home",
Action = onLeavingMainStateAction
},
{
From = "JuiceGoToNear",
To = "Home",
Action = onLeavingMainStateAction
},
{
From = "JuiceGoToFar",
To = "Home",
Action = onLeavingMainStateAction
},
}
asset.export("states", states)
asset.export("transitions", transitions)
@@ -0,0 +1,44 @@
local util = asset.require('./../utility_functions')
local flyHome = asset.require('./../fly_home_alternatives')
----------------------------------------------------------------
-- STATES
----------------------------------------------------------------
local plutoState = {
Identifier = "Pluto",
Enter = [[]],
Exit = [[]]
}
local states = { plutoState }
----------------------------------------------------------------
-- TRANSITIONS within this substate
----------------------------------------------------------------
local transitions = {
-- Transition to/from this state
{
From = "DwarfPlanets",
To = "Pluto"
},
{
From = "Pluto",
To = "Ceres"
},
{
From = "Ceres",
To = "Pluto"
},
{
From = "Pluto",
To = "DwarfPlanets"
},
{
From = "Pluto",
To = "Home",
Action = flyHome.linearFlight
}
}
asset.export("states", states)
asset.export("transitions", transitions)
@@ -0,0 +1,56 @@
local util = asset.require('./../utility_functions')
local flyHome = asset.require('./../fly_home_alternatives')
----------------------------------------------------------------
-- STATES
----------------------------------------------------------------
local universeState = {
Identifier = "Universe",
Enter = [[
]] .. util.setOrbitSpeedFactor(0.4) .. [[
]] .. util.startOrbiting() .. [[
]] .. util.orbitAroundUpOnArrival() .. [[
openspace.setPropertyValueSingle("Scene.Jupiter.Renderable.Layers.ColorLayers.JupiterVideo.TileProvider.VideoPlayer.Play", nil)
]],
Exit = [[
openspace.setPropertyValue('{moonTrail_minor}.Renderable.Enabled', false);
openspace.setPropertyValueSingle("Scene.Jupiter.Renderable.Layers.ColorLayers.JupiterVideo.TileProvider.VideoPlayer.Pause", nil)
]] .. util.stopOrbiting() .. [[
]]
}
local states = { universeState }
----------------------------------------------------------------
-- TRANSITIONS within this substate
----------------------------------------------------------------
local transitions = {
-- Transition to/from this state
{
From = "Home",
To = "Universe"
},
{
From = "Universe",
To = "CBR"
},
{
From = "Universe",
To = "Exoplanets"
},
{
From = "CBR",
To = "Universe"
},
{
From = "Exoplanets",
To = "Universe"
},
{
From = "Universe",
To = "Home"
}
}
asset.export("states", states)
asset.export("transitions", transitions)
@@ -117,12 +117,24 @@ local flyToNavState = function(state)
]]
end
local flyLinearlyToHeight = function(height)
local jumpToNavState = function(state)
return [[
openspace.pathnavigation.flyToNavigationState(]] .. state .. [[, 0)
]]
end
local flyLinearlyToHeight = function(height, seconds)
return [[
openspace.pathnavigation.zoomToDistance(]] .. tostring(height) .. [[)
]]
end
local flyLinearlyToHeightInTime = function(height, seconds)
return [[
openspace.pathnavigation.zoomToDistance(]] .. tostring(height) .. "," .. seconds .. [[)
]]
end
local flyLinearlyToNode = function(node, distance)
return [[
openspace.pathnavigation.createPath({
@@ -134,6 +146,17 @@ local flyLinearlyToNode = function(node, distance)
]]
end
local jumpToNode = function(node, distance)
return [[
openspace.pathnavigation.createPath({
TargetType = 'Node',
Target = ']] .. node ..[[',
Height = ]] .. tostring(distance or nil) .. [[,
Duration = 0.0
})
]]
end
local setCurveType = function(type)
local typeAsInt = 0
if (type == "ZoomOutOverview") then
@@ -223,8 +246,11 @@ asset.export("changeAnchor", changeAnchor)
asset.export("enableRoll", enableRoll)
asset.export("disableRoll", disableRoll)
asset.export("flyToNavState", flyToNavState)
asset.export("jumpToNavState", jumpToNavState)
asset.export("flyLinearlyToHeight", flyLinearlyToHeight)
asset.export("flyLinearlyToHeightInTime", flyLinearlyToHeightInTime)
asset.export("flyLinearlyToNode", flyLinearlyToNode)
asset.export("jumpToNode", jumpToNode)
asset.export("setCurveType", setCurveType)
asset.export("setTime", setTime)
asset.export("interpolateTime", interpolateTime)