merge master into branch, after v0.21.2 and solved merge conflicts

This commit is contained in:
ElonOlsson
2025-08-07 16:48:42 -04:00
1650 changed files with 47950 additions and 38378 deletions

View File

@@ -1,6 +1,312 @@
asset.require("actions/trails/toggle_all_trails")
asset.require("actions/trails/toggle_trails_planets_moons")
asset.require("actions/planets/planet_lighting")
asset.require("actions/system/undo_event_fades")
asset.require("actions/trails/toggle_all_minor_moon_trails")
asset.require("actions/trails/on_off_all_minor_moons")
local ToggleShutdown = {
Identifier = "os.ToggleShutdown",
Name = "Toggle shutdown",
Command = "openspace.toggleShutdown()",
Documentation = [[
Toggles the shutdown that will stop OpenSpace after a grace period. Press again to
cancel the shutdown during this period]],
GuiPath = "/System",
IsLocal = true
}
-- Friction actions
local ToggleRotationFriction = {
Identifier = "os.ToggleRotationFriction",
Name = "Toggle rotation friction",
Command = [[openspace.invertBooleanProperty("NavigationHandler.OrbitalNavigator.Friction.RotationalFriction")]],
Documentation = [[Toggles the rotational friction of the camera. If it is disabled, the
camera rotates around the focus object indefinitely]],
GuiPath = "/Navigation",
IsLocal = true
}
local ToggleZoomFriction = {
Identifier = "os.ToggleZoomFriction",
Name = "Toggle zoom friction",
Command = [[openspace.invertBooleanProperty("NavigationHandler.OrbitalNavigator.Friction.ZoomFriction")]],
Documentation = [[Toggles the zoom friction of the camera. If it is disabled, the camera
rises up from or closes in towards the focus object indefinitely]],
GuiPath = "/Navigation",
IsLocal = true
}
local ToggleRollFriction = {
Identifier = "os.ToggleRollFriction",
Name = "Toggle roll friction",
Command = [[openspace.invertBooleanProperty("NavigationHandler.OrbitalNavigator.Friction.RollFriction")]],
Documentation = [[Toggles the roll friction of the camera. If it is disabled, the camera
rolls around its own axis indefinitely]],
GuiPath = "/Navigation",
IsLocal = true
}
-- UI actions
local ToggleMainGui = {
Identifier = "os.ToggleMainGui",
Name = "Toggle main GUI",
Command = [[
openspace.invertBooleanProperty("Modules.CefWebGui.Visible")
if not openspace.propertyValue("Modules.CefWebGui.Visible") then
local action_id = "os.ToggleMainGui"
local keys = openspace.keyBindingsForAction(action_id)
if #keys > 0 then
local key = keys[1]
openspace.printInfo(
"Hiding the user interface. You can restore it with the '" .. key .. "' key"
)
end
end
]],
Documentation = "Toggles the main GUI",
GuiPath = "/System/GUI",
IsLocal = true
}
local ToggleNativeUi = {
Identifier = "os.ToggleNativeUi",
Name = "Show native GUI",
Command = [[openspace.invertBooleanProperty("Modules.ImGUI.Enabled")]],
Documentation = "Shows or hides the native UI",
GuiPath = "/System/GUI",
IsLocal = true
}
local ReloadGui = {
Identifier = "os.ReloadGui",
Name = "Reload GUI",
Command = [[openspace.setPropertyValueSingle("Modules.CefWebGui.Reload", nil)]],
Documentation = "Reloads the GUI",
GuiPath = "/System/GUI",
IsLocal = true
}
-- Rendering actions
local TakeScreenshot = {
Identifier = "os.TakeScreenshot",
Name = "Take screenshot",
Command = "openspace.takeScreenshot()",
Documentation = [[Saves the contents of the screen to a file in the ${SCREENSHOTS}
directory]],
GuiPath = "/System/Rendering",
IsLocal = true
}
local FadeToBlack = {
Identifier = "os.FadeToBlack",
Name = "Fade to/from black",
Command = [[
if openspace.propertyValue("RenderEngine.BlackoutFactor") > 0.5 then
openspace.setPropertyValueSingle("RenderEngine.BlackoutFactor", 0.0, 3)
else
openspace.setPropertyValueSingle("RenderEngine.BlackoutFactor", 1.0, 3)
end
]],
Documentation = [[Toggles the fade to black within 3 seconds or shows the rendering
after 3 seconds]],
GuiPath = "/Rendering",
IsLocal = false
}
local ToggleOverlays = {
Identifier = "os.ToggleOverlays",
Name = "Toggle dashboard and overlays",
Command = [[
local isEnabled = openspace.propertyValue("Dashboard.IsEnabled")
openspace.setPropertyValueSingle("Dashboard.IsEnabled", not isEnabled)
openspace.setPropertyValueSingle("RenderEngine.ShowLog", not isEnabled)
openspace.setPropertyValueSingle("RenderEngine.ShowVersion", not isEnabled)
]],
Documentation = "Toggles the dashboard and overlays",
GuiPath = "/System/GUI",
IsLocal = true
}
local ToggleMasterRendering = {
Identifier = "os.ToggleMasterRendering",
Name = "Toggle rendering on master",
Command = [[openspace.invertBooleanProperty("RenderEngine.DisableMasterRendering")]],
Documentation = "Toggles the rendering on master",
GuiPath = "/System/Rendering",
IsLocal = true
}
-- Time actions
local TogglePauseInterpolated = {
Identifier = "os.TogglePauseInterpolated",
Name = "Toggle pause (interpolate)",
Command = "openspace.time.pauseToggleViaKeyboard()",
Documentation = "Smoothly starts and stops the simulation time",
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local TogglePauseImmediate = {
Identifier = "os.TogglePauseImmediate",
Name = "Toggle pause (immediate)",
Command = "openspace.time.togglePause()",
Documentation = "Immediately starts and stops the simulation time",
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local NextDeltaStepInterpolate = {
Identifier = "os.NextDeltaStepInterpolate",
Name = "Next simulation time step (interpolate)",
Command = "openspace.time.interpolateNextDeltaTimeStep()",
Documentation = [[Smoothly interpolates the simulation speed to the next simulation time
step, if one exists]],
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local NextDeltaStepImmediate = {
Identifier = "os.NextDeltaStepImmediate",
Name = "Next simulation time step (immediate)",
Command = "openspace.time.setNextDeltaTimeStep()",
Documentation = [[Immediately set the simulation speed to the next simulation time step,
if one exists]],
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local PreviousDeltaStepInterpolate = {
Identifier = "os.PreviousDeltaStepInterpolate",
Name = "Previous simulation time step (interpolate)",
Command = "openspace.time.interpolatePreviousDeltaTimeStep()",
Documentation = [[Smoothly interpolates the simulation speed to the previous simulation
time step, if one exists]],
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local PreviousDeltaStepImmediate = {
Identifier = "os.PreviousDeltaStepImmediate",
Name = "Previous simulation time step (immediate)",
Command = "openspace.time.setPreviousDeltaTimeStep()",
Documentation = [[Immediately set the simulation speed to the previous simulation time
step, if one exists]],
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local RealTimeDeltaStepInterpolate = {
Identifier = "os.RealTimeDeltaStepInterpolate",
Name = "Reset the simulation time to realtime (interpolate)",
Command = "openspace.time.interpolateDeltaTime(1)",
Documentation = "Smoothly interpolate the simulation speed to match real-time speed",
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local RealTimeDeltaStepImmediate = {
Identifier = "os.RealTimeDeltaStepImmediate",
Name = "Reset the simulation time to realtime (immediate)",
Command = "openspace.time.setDeltaTime(1)",
Documentation = "Immediately set the simulation speed to match real-time speed",
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
asset.onInitialize(function()
openspace.action.registerAction(ToggleShutdown)
-- Friction
openspace.action.registerAction(ToggleRotationFriction)
openspace.action.registerAction(ToggleZoomFriction)
openspace.action.registerAction(ToggleRollFriction)
-- UI
openspace.action.registerAction(ToggleMainGui)
openspace.action.registerAction(ToggleNativeUi)
openspace.action.registerAction(ReloadGui)
-- Rendering
openspace.action.registerAction(TakeScreenshot)
openspace.action.registerAction(FadeToBlack)
openspace.action.registerAction(ToggleOverlays)
openspace.action.registerAction(ToggleMasterRendering)
-- Time
openspace.action.registerAction(TogglePauseInterpolated)
openspace.action.registerAction(TogglePauseImmediate)
openspace.action.registerAction(NextDeltaStepInterpolate)
openspace.action.registerAction(NextDeltaStepImmediate)
openspace.action.registerAction(PreviousDeltaStepInterpolate)
openspace.action.registerAction(PreviousDeltaStepImmediate)
openspace.action.registerAction(RealTimeDeltaStepInterpolate)
openspace.action.registerAction(RealTimeDeltaStepImmediate)
end)
asset.onDeinitialize(function()
-- Time
openspace.action.removeAction(RealTimeDeltaStepImmediate)
openspace.action.removeAction(RealTimeDeltaStepInterpolate)
openspace.action.removeAction(PreviousDeltaStepImmediate)
openspace.action.removeAction(PreviousDeltaStepInterpolate)
openspace.action.removeAction(NextDeltaStepImmediate)
openspace.action.removeAction(NextDeltaStepInterpolate)
openspace.action.removeAction(TogglePauseImmediate)
openspace.action.removeAction(TogglePauseInterpolated)
-- Rendering
openspace.action.removeAction(ToggleMasterRendering)
openspace.action.removeAction(ToggleOverlays)
openspace.action.removeAction(FadeToBlack)
openspace.action.removeAction(TakeScreenshot)
-- UI
openspace.action.removeAction(ReloadGui)
openspace.action.removeAction(ToggleNativeUi)
openspace.action.removeAction(ToggleMainGui)
-- Friction
openspace.action.removeAction(ToggleRollFriction)
openspace.action.removeAction(ToggleZoomFriction)
openspace.action.removeAction(ToggleRotationFriction)
openspace.action.removeAction(ToggleShutdown)
end)
asset.export("ToggleShutdown", ToggleShutdown.Identifier)
asset.export("ToggleRotationFriction", ToggleRotationFriction.Identifier)
asset.export("ToggleZoomFriction", ToggleZoomFriction.Identifier)
asset.export("ToggleRollFriction", ToggleRollFriction.Identifier)
asset.export("ToggleMainGui", ToggleMainGui.Identifier)
asset.export("ToggleNativeUi", ToggleNativeUi.Identifier)
asset.export("ReloadGui", ReloadGui.Identifier)
asset.export("TakeScreenshot", TakeScreenshot.Identifier)
asset.export("FadeToBlack", FadeToBlack.Identifier)
asset.export("ToggleOverlays", ToggleOverlays.Identifier)
asset.export("ToggleMasterRendering", ToggleMasterRendering.Identifier)
asset.export("TogglePauseInterpolated", TogglePauseInterpolated.Identifier)
asset.export("TogglePauseImmediate", TogglePauseImmediate.Identifier)
asset.export("NextDeltaStepInterpolate", NextDeltaStepInterpolate.Identifier)
asset.export("NextDeltaStepImmediate", NextDeltaStepImmediate.Identifier)
asset.export("PreviousDeltaStepInterpolate", PreviousDeltaStepInterpolate.Identifier)
asset.export("PreviousDeltaStepImmediate", PreviousDeltaStepImmediate.Identifier)
asset.export("RealTimeDeltaStepInterpolate", RealTimeDeltaStepInterpolate.Identifier)
asset.export("RealTimeDeltaStepImmediate", RealTimeDeltaStepImmediate.Identifier)
asset.meta = {
Name = "Actions - Default",
Description = "Asset providing default actions that are useful in every profile",
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -61,7 +61,7 @@ local LookingNorth = {
Command = [[
local currentNavState = openspace.navigation.getNavigationState()
local newNavState = {
Pitch = math.pi / 2.0,
Pitch = math.pi,
Anchor = currentNavState["Anchor"],
Yaw = currentNavState["Yaw"],
Position = currentNavState["Position"],
@@ -74,13 +74,36 @@ local LookingNorth = {
IsLocal = false
}
local LookingEast = {
Identifier = "os.nightsky.LookingEast",
Name = "Looking East",
Command = [[
local lat, lon, alt = openspace.globebrowsing.geoPositionForCamera()
local lon_rad = math.rad(lon)
local upx = -math.sin(lon_rad)
local upy = math.cos(lon_rad)
local currentNavState = openspace.navigation.getNavigationState()
local newNavState = {
Pitch = math.pi,
Anchor = currentNavState["Anchor"],
Yaw = currentNavState["Yaw"],
Position = currentNavState["Position"],
Up = { upx, upy, 0 }
}
openspace.navigation.setNavigationState(newNavState)
]],
Documentation = "Sets the view looking up and East.",
GuiPath = "/Night Sky/View",
IsLocal = false
}
local LookingSouth = {
Identifier = "os.nightsky.LookingSouth",
Name = "Looking South",
Command = [[
local currentNavState = openspace.navigation.getNavigationState()
local newNavState = {
Pitch = math.pi / 2.0,
Pitch = math.pi,
Anchor = currentNavState["Anchor"],
Yaw = currentNavState["Yaw"],
Position = currentNavState["Position"],
@@ -88,22 +111,48 @@ local LookingSouth = {
}
openspace.navigation.setNavigationState(newNavState)
]],
Documentation = "Sets the view for a horizon looking South.",
Documentation = "Sets the view looking up and South.",
GuiPath = "/Night Sky/View",
IsLocal = false
}
local LookingWest = {
Identifier = "os.nightsky.LookingWest",
Name = "Looking West",
Command = [[
local lat, lon, alt = openspace.globebrowsing.geoPositionForCamera()
local lon_rad = math.rad(lon)
local upx = math.sin(lon_rad)
local upy = -math.cos(lon_rad)
local currentNavState = openspace.navigation.getNavigationState()
local newNavState = {
Pitch = math.pi,
Anchor = currentNavState["Anchor"],
Yaw = currentNavState["Yaw"],
Position = currentNavState["Position"],
Up = { upx, upy, 0 }
}
openspace.navigation.setNavigationState(newNavState)
]],
Documentation = "Sets the view looking up and West.",
GuiPath = "/Night Sky/View",
IsLocal = false
}
asset.onInitialize(function()
openspace.action.registerAction(LookUp)
openspace.action.registerAction(LevelHorizonYaw)
openspace.action.registerAction(LevelHorizonPitch)
openspace.action.registerAction(LookingNorth)
openspace.action.registerAction(LookingEast)
openspace.action.registerAction(LookingSouth)
openspace.action.registerAction(LookingWest)
end)
asset.onDeinitialize(function()
openspace.action.removeAction(LookingWest)
openspace.action.removeAction(LookingSouth)
openspace.action.removeAction(LookingEast)
openspace.action.removeAction(LookingNorth)
openspace.action.removeAction(LevelHorizonPitch)
openspace.action.removeAction(LevelHorizonYaw)
@@ -114,4 +163,6 @@ asset.export("LookUp", LookUp.Identifier)
asset.export("LevelHorizonYaw", LevelHorizonYaw.Identifier)
asset.export("LevelHorizonPitch", LevelHorizonPitch.Identifier)
asset.export("LookingNorth", LookingNorth.Identifier)
asset.export("LookingEast", LookingEast.Identifier)
asset.export("LookingSouth", LookingSouth.Identifier)
asset.export("LookingWest", LookingWest.Identifier)

View File

@@ -0,0 +1,66 @@
local AddSunTrail = {
Identifier = "os.nightsky.AddSunTrail",
Name = "Add sun trail",
Command = [[
local date
if is_declared("args") then
if (args.Date == "NOW") then
date = openspace.time.currentWallTime()
elseif (args.Date == "UTC") then
date = openspace.time.UTC()
else
date = args.Date
end
else
date = openspace.time.UTC()
end
local datePlus = openspace.time.advancedTime(date, '1d')
date = string.sub(date, 1, string.find(date, "T") - 1)
datePlus = string.sub(datePlus, 1, string.find(datePlus, "T") - 1)
local SunTrailEarth = {
Identifier = "SunTrailEarth" .. date,
Parent = "Earth",
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = "SUN",
Observer = "EARTH",
Frame = "IAU_EARTH",
},
EnableFade = false,
StartTime = date,
EndTime = datePlus,
SampleInterval = 1000,
ShowFullTrail = true,
Color = { 0.9, 1.0, 0.0 },
},
Tag = { "sun_trail" },
GUI = {
Name = "Sun Trail " .. date,
Path = "/Night Sky/Sun Trails",
}
}
openspace.addSceneGraphNode(SunTrailEarth)
]],
Documentation = [[
Adds a trail for the sun, if an argument is provided, that date will be used instead of now
]],
GuiPath = "/Night Sky/Sun Trails",
IsLocal = false
}
asset.onInitialize(function()
openspace.action.registerAction(AddSunTrail)
end)
asset.onDeinitialize(function()
openspace.action.removeAction(AddSunTrail)
end)
asset.export("AddSunTrail", AddSunTrail.Identifier)

View File

@@ -0,0 +1,112 @@
local textures = asset.resource({
Name = "Cardinal Directions Textures",
Type = "HttpSynchronization",
Identifier = "cardinal_directions_textures",
Version = 1
})
local FadeInConstellationLabels = {
Identifier = "os.nightsky.FadeInConstellationLabels",
Name = "Fade In Constellation Labels",
Command = [[openspace.fadeIn("Scene.Constellations.Renderable.Labels",nil)]],
Documentation = "Fades in the constllation labels",
GuiPath = "/Constellations/Lines",
IsLocal = false
}
local FadeOutConstellationLabels = {
Identifier = "os.nightsky.FadeOutConstellationLabels",
Name = "Fade Out Constellation Labels",
Command = [[openspace.fadeOut("Scene.Constellations.Renderable.Labels")]],
Documentation = "Fades out the constellation labels",
GuiPath = "/Constellations/Lines",
IsLocal = false
}
local ShowConstellationElements = {
Identifier = "os.nightsky.ShowConstellationElements",
Name = "Show Constellation Elements",
Command = [[
openspace.setPropertyValueSingle('Scene.Constellations.Renderable.DrawElements', true)
openspace.setPropertyValueSingle('Scene.Constellations.Renderable.Fade', 0)
local fadeSpeed = openspace.propertyValue("OpenSpaceEngine.FadeDuration")
openspace.fadeIn("Scene.Constellations.Renderable", fadeSpeed, "")
]],
Documentation = "Shows the constellation lines with consideration of label state",
GuiPath = "/Constellations/Lines",
IsLocal = false
}
local HideAllMarkings = {
Identifier = "os.nightsky.HideAllMarkings",
Name = "Hide All Markings",
Command = [[
openspace.fadeOut("Scene.Constellations.Renderable")
openspace.fadeOut("{nightsky_marking}")
openspace.fadeOut("{du_grid}")
openspace.fadeOut("{du_grid_labels}")
openspace.fadeOut("{image_constellation}")
]],
Documentation = "Hides all markings in the night sky",
GuiPath = "/Night Sky/Markings",
IsLocal = false
}
local AddTickMarksBand = {
Identifier = "os.nightsky.AddNeswBandMarks",
Name = "Add a band to cardinal directions",
Command = [[
local tex = openspace.propertyValue("Scene.CardinalDirectionSphere.Renderable.Texture")
if (string.find(tex, "small")) then
openspace.setPropertyValueSingle("Scene.CardinalDirectionSphere.Renderable.Texture", "]].. textures:gsub("\\","/") .. [[nesw_lines_red_small.png")
else
openspace.setPropertyValueSingle("Scene.CardinalDirectionSphere.Renderable.Texture", "]].. textures:gsub("\\","/") .. [[nesw_lines_red.png")
end
]],
Documentation = "Adds tick marks to the cardinal directions",
GuiPath = "/Night Sky/Directions",
IsLocal = false
}
local RemoveTickMarksBand = {
Identifier = "os.nightsky.RemoveNeswBandMarks",
Name = "Add a band to cardinal directions",
Command = [[
local tex = openspace.propertyValue("Scene.CardinalDirectionSphere.Renderable.Texture")
if (string.find(tex, "small")) then
openspace.setPropertyValueSingle("Scene.CardinalDirectionSphere.Renderable.Texture", "]].. textures:gsub("\\","/") .. [[nesw_red_small.png")
else
openspace.setPropertyValueSingle("Scene.CardinalDirectionSphere.Renderable.Texture", "]].. textures:gsub("\\","/") .. [[nesw_red.png")
end
]],
Documentation = "Removes tick marks to the cardinal directions",
GuiPath = "/Night Sky/Directions",
IsLocal = false
}
asset.onInitialize(function()
openspace.action.registerAction(FadeInConstellationLabels)
openspace.action.registerAction(FadeOutConstellationLabels)
openspace.action.registerAction(ShowConstellationElements)
openspace.action.registerAction(HideAllMarkings)
openspace.action.registerAction(AddTickMarksBand)
openspace.action.registerAction(RemoveTickMarksBand)
end)
asset.onDeinitialize(function()
openspace.action.removeAction(RemoveTickMarksBand)
openspace.action.removeAction(AddTickMarksBand)
openspace.action.removeAction(HideAllMarkings)
openspace.action.removeAction(ShowConstellationElements)
openspace.action.removeAction(FadeOutConstellationLabels)
openspace.action.removeAction(FadeInConstellationLabels)
end)
asset.export("FadeInConstellationLabels", FadeInConstellationLabels.Identifier)
asset.export("FadeOutConstellationLabels", FadeOutConstellationLabels.Identifier)
asset.export("ShowConstellationElements", ShowConstellationElements.Identifier)
asset.export("HideAllMarkings", HideAllMarkings.Identifier)
asset.export("AddTickMarksBand", AddTickMarksBand.Identifier)
asset.export("RemoveTickMarksBand", RemoveTickMarksBand.Identifier)

View File

@@ -0,0 +1,59 @@
local NorthPole = {
Identifier = "os.nightsky.position.NorthPole",
Name = "Jump to the North Pole",
Command = [[
openspace.navigation.jumpToGeo("Earth", 90.0001, 0.0001, 500)
local script = 'local wait = openspace.propertyValue("NavigationHandler.JumpToFadeDuration")openspace.action.triggerAction("os.nightsky.LookUp");openspace.setPropertyValueSingle("RenderEngine.BlackoutFactor", 1, wait)'
local wait = openspace.propertyValue("NavigationHandler.JumpToFadeDuration")
openspace.scheduleScript(script, wait + 0.1)
]],
Documentation = "",
GuiPath = "/Night Sky/Position",
IsLocal = false
}
local SouthPole = {
Identifier = "os.nightsky.position.SouthPole",
Name = "Jump to the South Pole",
Command = [[
openspace.navigation.jumpToGeo("Earth", -89.9, 0.001, 2800);
local script = 'local wait = openspace.propertyValue("NavigationHandler.JumpToFadeDuration")openspace.action.triggerAction("os.nightsky.LookUp");openspace.setPropertyValueSingle("RenderEngine.BlackoutFactor", 1, wait)'
local wait = openspace.propertyValue("NavigationHandler.JumpToFadeDuration")
openspace.scheduleScript(script, wait + 0.1)
]],
Documentation = "",
GuiPath = "/Night Sky/Position",
IsLocal = false
}
local Equator = {
Identifier = "os.nightsky.position.Equator",
Name = "Jump to the Equator",
Command = [[
local _, long, _ = openspace.globebrowsing.geoPositionForCamera(false);
openspace.navigation.jumpToGeo("Earth", 0.0001, long, 500);
local script = 'local wait = openspace.propertyValue("NavigationHandler.JumpToFadeDuration")openspace.action.triggerAction("os.nightsky.LookUp");openspace.setPropertyValueSingle("RenderEngine.BlackoutFactor", 1, wait)'
local wait = openspace.propertyValue("NavigationHandler.JumpToFadeDuration")
openspace.scheduleScript(script, wait + 0.1)
]],
Documentation = "",
GuiPath = "/Night Sky/Position",
IsLocal = false
}
asset.onInitialize(function()
openspace.action.registerAction(NorthPole)
openspace.action.registerAction(SouthPole)
openspace.action.registerAction(Equator)
end)
asset.onDeinitialize(function()
openspace.action.removeAction(Equator)
openspace.action.removeAction(SouthPole)
openspace.action.removeAction(NorthPole)
end)
asset.export("NorthPole", NorthPole.Identifier)
asset.export("SouthPole", SouthPole.Identifier)
asset.export("Equator", Equator.Identifier)

View File

@@ -0,0 +1,83 @@
local LockCurrent = {
Identifier = "os.temporalLayer.LockCurrent",
Name = "Lock Focus Node Temporal Layers",
Command = [[
local j2000 = openspace.time.currentTime()
local dateTime = openspace.time.convertTime(j2000)
local focusName = openspace.propertyValue("NavigationHandler.OrbitalNavigator.Anchor")
openspace.setPropertyValue("Scene." .. focusName .. ".*.FixedTime", dateTime)
openspace.setPropertyValue("Scene." .. focusName .. ".*.UseFixedTime", true)
]],
Documentation = [[Set fixed date for all temporal layers for the currently
focused node.]],
GuiPath = "/Solar System",
IsLocal = false
}
local UnlockCurrent = {
Identifier = "os.temporalLayer.UnlockCurrent",
Name = "Unlock Focus Node Temporal Layers",
Command = [[
local j2000 = openspace.time.currentTime()
local dateTime = openspace.time.convertTime(j2000)
local focusName = openspace.propertyValue("NavigationHandler.OrbitalNavigator.Anchor")
openspace.setPropertyValue("Scene." .. focusName .. ".*.UseFixedTime", false)
openspace.setPropertyValue("Scene." .. focusName .. ".*.FixedTime", "")
]],
Documentation = [[Removes fixed date for all temporal layers for the currently
focused node.]],
GuiPath = "/Solar System",
IsLocal = false
}
local LockAll = {
Identifier = "os.temporalLayer.LockAll",
Name = "Lock All Temporal Layers",
Command = [[
local j2000 = openspace.time.currentTime()
local dateTime = openspace.time.convertTime(j2000)
openspace.setPropertyValue("Scene.*.FixedTime", dateTime)
openspace.setPropertyValue("Scene.*.UseFixedTime", true)
]],
Documentation = "Set fixed date for all temporal layers in the scene.",
GuiPath = "/Solar System",
IsLocal = false
}
local UnlockAll = {
Identifier = "os.temporalLayer.UnlockAll",
Name = "Unlock All Temporal Layers",
Command = [[
openspace.setPropertyValue("Scene.*.UseFixedTime", false)
openspace.setPropertyValue("Scene.*.FixedTime", "")
]],
Documentation = "Removes fixed date for all temporal layers in the scene.",
GuiPath = "/Solar System",
IsLocal = false
}
asset.onInitialize(function()
openspace.action.registerAction(LockCurrent);
openspace.action.registerAction(UnlockCurrent);
openspace.action.registerAction(LockAll);
openspace.action.registerAction(UnlockAll);
end)
asset.onDeinitialize(function()
openspace.action.removeAction(UnlockAll);
openspace.action.removeAction(LockAll);
openspace.action.removeAction(UnlockCurrent);
openspace.action.removeAction(LockCurrent);
end)
asset.meta = {
Name = "Temporal Layers - Lock Date",
Version = "1.0",
Description = [[Provides actions for locking and unlocking temporal layers to the
current date.]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -90,8 +90,10 @@ local AllGlobesGlobalIllumination = {
Identifier = "os.AllGlobesGlobalIllumination",
Name = "All globes global illumination",
Command = [[
openspace.setPropertyValue("{planet_solarSystem}.Renderable.PerformShading", false)
openspace.setPropertyValue("{moon_solarSystem}.Renderable.PerformShading", false)
local allGlobes = openspace.nodeByRenderableType("RenderableGlobe")
for _, globe in ipairs(allGlobes) do
openspace.setPropertyValue("Scene." .. globe .. ".Renderable.PerformShading", false)
end
openspace.setPropertyValue("Scene.*Atmosphere.Renderable.SunFollowingCamera", true)
openspace.setPropertyValue("Scene.*.Renderable.ShadowsComponent.DistanceFraction", 3000)
openspace.setPropertyValue("Scene.Earth.Renderable.Layers.NightLayers.Earth_at_Night_2012.Enabled", false)
@@ -105,8 +107,10 @@ local AllGlobesStandardIllumination = {
Identifier = "os.AllGlobesStandardIllumination",
Name = "All globes standard illumination",
Command = [[
openspace.setPropertyValue("{planet_solarSystem}.Renderable.PerformShading", true)
openspace.setPropertyValue("{moon_solarSystem}.Renderable.PerformShading", true)
local allGlobes = openspace.nodeByRenderableType("RenderableGlobe")
for _, globe in ipairs(allGlobes) do
openspace.setPropertyValue("Scene." .. globe .. ".Renderable.PerformShading", true)
end
openspace.setPropertyValue("Scene.*Atmosphere.Renderable.SunFollowingCamera", false)
openspace.setPropertyValue("Scene.*.Renderable.ShadowsComponent.DistanceFraction", 40)
openspace.setPropertyValueSingle("Scene.Earth.Renderable.Layers.NightLayers.Earth_at_Night_2012.Enabled", true)

View File

@@ -0,0 +1,6 @@
asset.require("actions/trails/toggle_all_trails")
asset.require("actions/trails/toggle_trails_planets_moons")
asset.require("actions/planets/planet_lighting")
asset.require("actions/system/undo_event_fades")
asset.require("actions/trails/toggle_all_minor_moon_trails")
asset.require("actions/trails/on_off_all_minor_moons")

View File

@@ -31,14 +31,92 @@ openspace.time.setTime(openspace.time.advancedTime(openspace.time.currentTime(),
IsLocal = false
}
local SiderealWeekIncrease = {
Identifier = "os.time.siderealWeekIncrease",
Name = "Advance 1 sidereal week",
Command = [[
openspace.time.setTime(openspace.time.advancedTime(openspace.time.currentTime(), 86164.0905 * 7));
]],
Documentation = [[Advances time by a sidereal week (Instant)]],
GuiPath = "/Time",
IsLocal = false
}
local SiderealWeekDecrease = {
Identifier = "os.time.siderealWeekDecrease",
Name = "Decrement 1 sidereal week",
Command = [[
openspace.time.setTime(openspace.time.advancedTime(openspace.time.currentTime(), -86164.0905 * 7));
]],
Documentation = [[Decrements time by a sidereal week (Instant)]],
GuiPath = "/Time",
IsLocal = false
}
local SolarDayIncrease = {
Identifier = "os.time.SolarDayIncrease",
Name = "Advance 1 solar day",
Command = [[
openspace.time.setTime(openspace.time.advancedTime(openspace.time.UTC(), "1d"));
]],
Documentation = [[Advances time by a solar day (Instant)]],
GuiPath = "/Time",
IsLocal = false
}
local SolarDayDecrease = {
Identifier = "os.time.SolarDayDecrease",
Name = "Decrement 1 solar day",
Command = [[
openspace.time.setTime(openspace.time.advancedTime(openspace.time.UTC(), "-1d"));
]],
Documentation = [[Decrements time by a solar day (Instant)]],
GuiPath = "/Time",
IsLocal = false
}
local SolarWeekIncrease = {
Identifier = "os.time.SolarWeekIncrease",
Name = "Advance 1 solar week",
Command = [[
openspace.time.setTime(openspace.time.advancedTime(openspace.time.UTC(), "7d"));
]],
Documentation = [[Advances time by a solar week (Instant)]],
GuiPath = "/Time",
IsLocal = false
}
local SolarWeekDecrease = {
Identifier = "os.time.SolarWeekDecrease",
Name = "Decrement 1 solar week",
Command = [[
openspace.time.setTime(openspace.time.advancedTime(openspace.time.UTC(), "-7d"));
]],
Documentation = [[Decrements time by a solar week (Instant)]],
GuiPath = "/Time",
IsLocal = false
}
asset.onInitialize(function()
openspace.action.registerAction(ReverseRate)
openspace.action.registerAction(SiderealDayIncrease)
openspace.action.registerAction(SiderealDayDecrease)
openspace.action.registerAction(SiderealWeekIncrease)
openspace.action.registerAction(SiderealWeekDecrease)
openspace.action.registerAction(SolarDayIncrease)
openspace.action.registerAction(SolarDayDecrease)
openspace.action.registerAction(SolarWeekIncrease)
openspace.action.registerAction(SolarWeekDecrease)
end)
asset.onDeinitialize(function()
openspace.action.removeAction(SolarWeekDecrease)
openspace.action.removeAction(SolarWeekIncrease)
openspace.action.removeAction(SolarDayDecrease)
openspace.action.removeAction(SolarDayIncrease)
openspace.action.removeAction(SiderealWeekDecrease)
openspace.action.removeAction(SiderealWeekIncrease)
openspace.action.removeAction(SiderealDayDecrease)
openspace.action.removeAction(SiderealDayIncrease)
openspace.action.removeAction(ReverseRate)
@@ -47,6 +125,12 @@ end)
asset.export("ReverseRate", ReverseRate.Identifier)
asset.export("SiderealDayIncrease", SiderealDayIncrease.Identifier)
asset.export("SiderealDayDecrease", SiderealDayDecrease.Identifier)
asset.export("SiderealWeekIncrease", SiderealWeekIncrease.Identifier)
asset.export("SiderealWeekDecrease", SiderealWeekDecrease.Identifier)
asset.export("SolarDayIncrease", SolarDayIncrease.Identifier)
asset.export("SolarDayDecrease", SolarDayDecrease.Identifier)
asset.export("SolarWeekIncrease", SolarWeekIncrease.Identifier)
asset.export("SolarWeekDecrease", SolarWeekDecrease.Identifier)

View File

@@ -2,21 +2,8 @@ local MinorMoonsOn = {
Identifier = "os.MinorMoonsOn",
Name = "Turn on minor moons and trails",
Command = [[
local trails = openspace.property("{moonTrail_minor}.Renderable.Enabled")
local trails_fade = openspace.property("{moonTrail_minor}.Renderable.Fade")
local moons = openspace.property("{moon_minor}.Renderable.Enabled")
local moons_fade = openspace.property("{moon_minor}.Renderable.Fade")
for i, v in pairs(trails_fade) do
openspace.setPropertyValueSingle(trails[i], true)
openspace.setPropertyValueSingle(v, 1, 2, "Linear")
end
for i, v in pairs(moons_fade) do
openspace.setPropertyValueSingle(moons[i], true)
openspace.setPropertyValueSingle(v, 1, 2, "Linear")
end
openspace.fadeIn("{moonTrail_minor}.Renderable")
openspace.fadeIn("{moon_minor}.Renderable")
]],
Documentation = "Turn ON minor moons and their trails for all planets in the solar system",
GuiPath = "/Solar System/Minor Moons",
@@ -27,31 +14,8 @@ local MinorMoonsOff = {
Identifier = "os.MinorMoonsOff",
Name = "Turn off minor moons and trails",
Command = [[
local trails = openspace.property("{moonTrail_minor}.Renderable.Enabled")
local trails_fade = openspace.property("{moonTrail_minor}.Renderable.Fade")
local moons = openspace.property("{moon_minor}.Renderable.Enabled")
local moons_fade = openspace.property("{moon_minor}.Renderable.Fade")
for i, v in pairs(trails_fade) do
openspace.setPropertyValueSingle(
v,
0,
2,
"Linear",
"openspace.setPropertyValueSingle('" .. trails[i] .. "', false)"
)
end
for i, v in pairs(moons_fade) do
openspace.setPropertyValueSingle(
v,
0,
2,
"Linear",
"openspace.setPropertyValueSingle('" .. moons[i] .. "', false)"
)
end
openspace.fadeOut("{moonTrail_minor}.Renderable")
openspace.fadeOut("{moon_minor}.Renderable")
]],
Documentation = "Turn OFF minor moons and their trails for all planets in the solar system",
GuiPath = "/Solar System/Minor Moons",
@@ -76,7 +40,7 @@ asset.export("MinorMoonsOff", MinorMoonsOff.Identifier)
asset.meta = {
Name = "Actions - Turn ON/OFF all Minor Moons",
Description = "Asset providing actions to turn ON/OFF all minor moons and their trails",
Description = "Asset providing actions to turn ON/OFF all minor moons and their trails",
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"

View File

@@ -1,12 +1,7 @@
local ToggleDwarfPlanetTrails = {
Identifier = "os.ToggleDwarfPlanetTrails",
Name = "Toggle dwarf planet trails",
Command = [[
local list = openspace.property("{planetTrail_dwarf}.Renderable.Enabled")
for _,v in pairs(list) do
openspace.setPropertyValueSingle(v, not openspace.propertyValue(v))
end
]],
Command = [[openspace.toggleFade("{planetTrail_dwarf}.Renderable")]],
Documentation = "Toggle on/off trails for all dwarf planets in the solar system",
GuiPath = "/Trails",
IsLocal = false

View File

@@ -1,12 +1,7 @@
local ToggleMinorMoonTrails = {
Identifier = "os.ToggleMinorMoonTrails",
Name = "Toggle minor moon trails",
Command = [[
local list = openspace.property("{moonTrail_minor}.Renderable.Enabled")
for _,v in pairs(list) do
openspace.setPropertyValueSingle(v, not openspace.propertyValue(v))
end
]],
Command = [[openspace.toggleFade("{moonTrail_minor}.Renderable")]],
Documentation = "Toggle on/off minor moon trails for all planets in the solar system",
GuiPath = "/Trails",
IsLocal = false

View File

@@ -2,14 +2,8 @@ local FadeUpTrails = {
Identifier = "os.FadeUpTrails",
Name = "Show all trails",
Command = [[
local capList = openspace.property("Scene.*Trail.Renderable.Fade")
for _,v in ipairs(capList) do
openspace.setPropertyValueSingle(v, 1, 2)
end
local list = openspace.property("Scene.*trail.Renderable.Fade")
for _,v in ipairs(list) do
openspace.setPropertyValueSingle(v, 1, 2)
end
openspace.fadeIn("Scene.*Trail.Renderable")
openspace.fadeIn("Scene.*trail.Renderable")
]],
Documentation = "Fade up all enabled trails in the Scene",
GuiPath = "/Trails",
@@ -20,14 +14,8 @@ local FadeDownTrails = {
Identifier = "os.FadeDownTrails",
Name = "Hide all trails",
Command = [[
local capList = openspace.property("Scene.*Trail.Renderable.Fade")
for _,v in ipairs(capList) do
openspace.setPropertyValueSingle(v, 0, 2)
end
local list = openspace.property("Scene.*trail.Renderable.Fade")
for _,v in ipairs(list) do
openspace.setPropertyValueSingle(v, 0, 2)
end
openspace.fadeOut("Scene.*Trail.Renderable")
openspace.fadeOut("Scene.*trail.Renderable")
]],
Documentation = "Fade down all enabled trails in the Scene",
GuiPath = "/Trails",
@@ -38,30 +26,8 @@ local ToggleTrails = {
Identifier = "os.ToggleTrails",
Name = "Toggle all trails",
Command = [[
local capList = openspace.property("*Trail.Renderable.Fade")
local list = openspace.property("*trail.Renderable.Fade")
if (#capList == 0) and (#list == 0) then
openspace.printWarning("No trails to toggle")
else
local prop
if #capList > 0 then
prop = capList[1]
else
prop = list[1]
end
local currentFade = openspace.propertyValue(prop)
local newFade = 0
if currentFade < 1 then
newFade = 1
end
if (#capList > 0) then
openspace.setPropertyValue("Scene.*Trail.Renderable.Fade", newFade, 2)
end
if (#list > 0) then
openspace.setPropertyValue("Scene.*trail.Renderable.Fade", newFade, 2)
end
openspace.setPropertyValue("Scene.*TrailEarth.Renderable.Fade", newFade, 2)
end
openspace.toggleFade("Scene.*Trail.Renderable")
openspace.toggleFade("Scene.*trail.Renderable")
]],
Documentation = "Toggle fade for all trails in the Scene",
GuiPath = "/Trails",
@@ -72,29 +38,8 @@ local ToggleTrailsInstant = {
Identifier = "os.ToggleTrailsInstant",
Name = "Toggle all trails instantly",
Command = [[
local capList = openspace.property("*Trail.Renderable.Fade")
local list = openspace.property("*trail.Renderable.Fade")
if (#capList == 0) and (#list == 0) then
openspace.printWarning("No trails to toggle")
else
local prop
if #capList > 0 then
prop = capList[1]
else
prop = list[1]
end
local currentFade = openspace.propertyValue(prop)
local newFade = 0
if currentFade < 1 then
newFade = 1
end
if (#capList > 0) then
openspace.setPropertyValue("Scene.*Trail.Renderable.Fade", newFade)
end
if (#list > 0) then
openspace.setPropertyValue("Scene.*trail.Renderable.Fade", newFade)
end
end
openspace.toggleFade("Scene.*Trail.Renderable", 0.0)
openspace.toggleFade("Scene.*trail.Renderable", 0.0)
]],
Documentation = "Toggle fade instantly for all trails in the Scene",
GuiPath = "/Trails",

View File

@@ -2,15 +2,8 @@ local ToggleTrailsInstant = {
Identifier = "os.ToggleTrailsInstant",
Name = "Toggle planet and moon trails (instant)",
Command = [[
local list = openspace.property("{planetTrail_solarSystem}.Renderable.Enabled")
for _,v in pairs(list) do
openspace.setPropertyValueSingle(v, not openspace.propertyValue(v))
end
local moonlist = openspace.property("{moonTrail_solarSystem}.Renderable.Enabled")
for _,v in pairs(moonlist) do
openspace.setPropertyValueSingle(v, not openspace.propertyValue(v))
end
openspace.toggleFade("{planetTrail_solarSystem}.Renderable", 0.0)
openspace.toggleFade("{moonTrail_solarSystem}.Renderable", 0.0)
]],
Documentation = "Toggles the visibility of planet and moon trails",
GuiPath = "/Solar System",

View File

@@ -2,8 +2,8 @@ local FadeUpTrails = {
Identifier = "os.planetsmoons.FadeUpTrails",
Name = "Show planet and moon trails",
Command = [[
openspace.setPropertyValue("{planetTrail_solarSystem}.Renderable.Fade", 1, 2)
openspace.setPropertyValue("{moonTrail_solarSystem}.Renderable.Fade", 1, 2)
openspace.fadeIn("{planetTrail_solarSystem}.Renderable")
openspace.fadeIn("{moonTrail_solarSystem}.Renderable")
]],
Documentation = "Fade up all planet and moon trails in the Scene",
GuiPath = "/Trails",
@@ -14,8 +14,8 @@ local FadeDownTrails = {
Identifier = "os.planetsmoons.FadeDownTrails",
Name = "Hide planet and moon trails",
Command = [[
openspace.setPropertyValue("{planetTrail_solarSystem}.Renderable.Fade", 0, 2)
openspace.setPropertyValue("{moonTrail_solarSystem}.Renderable.Fade", 0, 2)
openspace.fadeOut("{planetTrail_solarSystem}.Renderable")
openspace.fadeOut("{moonTrail_solarSystem}.Renderable")
]],
Documentation = "Fade down all planet and moon trails in the Scene",
GuiPath = "/Trails",
@@ -26,25 +26,8 @@ local ToggleTrails = {
Identifier = "os.planetsmoons.ToggleTrails",
Name = "Toggle planet and moon trails",
Command = [[
local capList = openspace.property("{planetTrail_solarSystem}.Renderable.Fade")
local list = openspace.property("{moonTrail_solarSystem}.Renderable.Fade")
if (#capList == 0) and (#list == 0) then
openspace.printWarning("No trails to toggle")
else
local prop
if (#capList > 0) then
prop = capList[1]
else
prop = list[1]
end
local currentFade = openspace.propertyValue(prop)
local newFade = 0
if currentFade < 1 then
newFade = 1
end
openspace.setPropertyValue("{planetTrail_solarSystem}.Renderable.Fade", newFade, 2)
openspace.setPropertyValue("{moonTrail_solarSystem}.Renderable.Fade", newFade, 2)
end
openspace.toggleFade("{planetTrail_solarSystem}.Renderable.Fade")
openspace.toggleFade("{moonTrail_solarSystem}.Renderable.Fade")
]],
Documentation = "Toggle fade for planet and moon trails in the Scene",
GuiPath = "/Trails",

View File

@@ -38,47 +38,11 @@ else
asset.require("scene/solarsystem/planets/default_layers")
end
asset.require("scene/digitaluniverse/2dF")
asset.require("scene/digitaluniverse/2mass")
asset.require("scene/digitaluniverse/6dF")
asset.require("scene/digitaluniverse/abell")
asset.require("scene/digitaluniverse/allsky_hydrogenalpha")
asset.require("scene/digitaluniverse/allsky_visible")
asset.require("scene/digitaluniverse/alternatestarlabels")
asset.require("scene/digitaluniverse/backgroundradiation")
asset.require("scene/digitaluniverse/brown_dwarfs")
asset.require("scene/digitaluniverse/galaxy_clusters")
asset.require("scene/digitaluniverse/constellationbounds")
asset.require("scene/digitaluniverse/constellations")
asset.require("scene/digitaluniverse/exoplanets")
asset.require("scene/digitaluniverse/exoplanets_candidates")
asset.require("scene/digitaluniverse/globularclusters")
asset.require("scene/digitaluniverse/grids")
asset.require("scene/digitaluniverse/galaxy_groups")
asset.require("scene/digitaluniverse/h2regions")
asset.require("scene/digitaluniverse/local_group_dwarfs")
asset.require("scene/digitaluniverse/milkyway")
asset.require("scene/digitaluniverse/milkyway_arm_labels")
asset.require("scene/digitaluniverse/milkyway_label")
asset.require("scene/digitaluniverse/obassociations")
asset.require("scene/digitaluniverse/oort_cloud")
asset.require("scene/digitaluniverse/openclusters")
asset.require("scene/digitaluniverse/planetarynebulae")
asset.require("scene/digitaluniverse/pulsars")
asset.require("scene/digitaluniverse/quasars")
asset.require("scene/digitaluniverse/star_uncertainty")
asset.require("scene/digitaluniverse/starlabels")
asset.require("scene/digitaluniverse/starorbits")
asset.require("scene/digitaluniverse/stars")
asset.require("scene/digitaluniverse/superclusters")
asset.require("scene/digitaluniverse/supernovaremnants")
asset.require("scene/digitaluniverse/tully")
asset.require("scene/digitaluniverse/voids")
asset.require("scene/digitaluniverse/white_dwarfs")
asset.require("scene/digitaluniverse/digitaluniverse")
asset.require("nightsky/nightsky")
asset.require("customization/globebrowsing")
asset.require("actions/default_actions")
asset.require("actions/solarsystem_actions")
asset.require("modules/exoplanets/exoplanets")
asset.require("modules/skybrowser/skybrowser")

View File

@@ -4,11 +4,10 @@
asset.require("spice/core")
asset.require("dashboard/default_dashboard")
-- Load default key bindings applicable to most scenes
asset.require("./default_keybindings")
-- Load web gui
local webGui = asset.require("util/webgui")
-- Load default actions and key bindings applicable to most scenes
asset.require("actions/default_actions")
asset.require("./default_keybindings")
-- Scale the different UI components based on the operating system's DPI scaling value
asset.require("util/dpiscaling")
@@ -19,8 +18,12 @@ asset.require("util/launcher_images")
-- Modules and component settings
asset.require("modules/touch/default_settings")
-- Load web gui
local webGui = asset.require("util/webgui")
asset.onInitialize(function()
webGui.setCefRoute("onscreen")
openspace.setPropertyValueSingle("RenderEngine.VerticalLogOffset", 0.100000)
openspace.setPropertyValueSingle("RenderEngine.VerticalLogOffset", 0.1)
openspace.setPropertyValueSingle("Dashboard.StartPositionOffset", { 15.0, 49.0 })
openspace.setPropertyValueSingle("RenderEngine.ShowCamera", false)
end)

View File

@@ -7,12 +7,7 @@ local allTrailsInstantAction = asset.require("actions/trails/toggle_all_trails")
local TogglePlanetLabels = {
Identifier = "os_default.TogglePlanetLabels",
Name = "Toggle planet labels",
Command = [[
local list = openspace.property("{solarsystem_labels}.Renderable.Enabled")
for _,v in pairs(list) do
openspace.setPropertyValueSingle(v, not openspace.propertyValue(v))
end
]],
Command = [[openspace.toggleFade("{solarsystem_labels}.Renderable")]],
Documentation = "Turns on visibility for all solar system labels",
GuiPath = "/Solar System",
IsLocal = false

View File

@@ -3,9 +3,9 @@ asset.export("webguiDevelopmentMode", false)
-- To make changes to the webgui:
-- 1) Set the above `webguiDevelopmentMode` to true
-- 2) Clone the repository: https://github.com/OpenSpace/OpenSpace-WebGuiFrontend
-- 2) Clone the repository: https://github.com/OpenSpace/OpenSpace-WebGui
-- 3) Install nodejs (including npm)
-- 4) Within the repository, run `npm install` and `npm start`
-- 4) Within the repository, run `npm install` and `npm run dev`
asset.meta = {

View File

@@ -1,7 +1,9 @@
local Item = {
Type = "DashboardItemDistance",
Identifier = "Distance",
GuiName = "Distance"
GuiName = "Distance",
SourceType = "Camera",
DestinationType = "Focus"
}

View File

@@ -1,348 +1,76 @@
local propertyHelper = asset.require("util/property_helper")
local ToggleNativeUi = {
Identifier = "os.ToggleNativeUi",
Name = "Show native GUI",
Command = propertyHelper.invert("Modules.ImGUI.Enabled"),
Documentation = "Shows or hides the native UI",
GuiPath = "/System/GUI",
IsLocal = true
}
local ToggleShutdown = {
Identifier = "os.ToggleShutdown",
Name = "Toggle shutdown",
Command = "openspace.toggleShutdown()",
Documentation = [[
Toggles the shutdown that will stop OpenSpace after a grace period. Press again to
cancel the shutdown during this period]],
GuiPath = "/System",
IsLocal = true
}
local TakeScreenshot = {
Identifier = "os.TakeScreenshot",
Name = "Take screenshot",
Command = "openspace.takeScreenshot()",
Documentation = [[Saves the contents of the screen to a file in the ${SCREENSHOTS}
directory]],
GuiPath = "/System/Rendering",
IsLocal = true
}
local TogglePauseInterpolated = {
Identifier = "os.TogglePauseInterpolated",
Name = "Toggle pause (interpolate)",
Command = "openspace.time.pauseToggleViaKeyboard()",
Documentation = "Smoothly starts and stops the simulation time",
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local TogglePauseImmediate = {
Identifier = "os.TogglePauseImmediate",
Name = "Toggle pause (immediate)",
Command = "openspace.time.togglePause()",
Documentation = "Immediately starts and stops the simulation time",
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local ToggleRotationFriction = {
Identifier = "os.ToggleRotationFriction",
Name = "Toggle rotation friction",
Command = propertyHelper.invert("NavigationHandler.OrbitalNavigator.Friction.RotationalFriction"),
Documentation = [[Toggles the rotational friction of the camera. If it is disabled, the
camera rotates around the focus object indefinitely]],
GuiPath = "/Navigation",
IsLocal = true
}
local ToggleZoomFriction = {
Identifier = "os.ToggleZoomFriction",
Name = "Toggle zoom friction",
Command = propertyHelper.invert("NavigationHandler.OrbitalNavigator.Friction.ZoomFriction"),
Documentation = [[Toggles the zoom friction of the camera. If it is disabled, the camera
rises up from or closes in towards the focus object indefinitely]],
GuiPath = "/Navigation",
IsLocal = true
}
local ToggleRollFriction = {
Identifier = "os.ToggleRollFriction",
Name = "Toggle roll friction",
Command = propertyHelper.invert("NavigationHandler.OrbitalNavigator.Friction.RollFriction"),
Documentation = [[Toggles the roll friction of the camera. If it is disabled, the camera
rolls around its own axis indefinitely]],
GuiPath = "/Navigation",
IsLocal = true
}
local FadeToBlack = {
Identifier = "os.FadeToBlack",
Name = "Fade to/from black",
Command = [[
if openspace.propertyValue("RenderEngine.BlackoutFactor") > 0.5 then
openspace.setPropertyValueSingle("RenderEngine.BlackoutFactor", 0.0, 3)
else
openspace.setPropertyValueSingle("RenderEngine.BlackoutFactor", 1.0, 3)
end
]],
Documentation = [[Toggles the fade to black within 3 seconds or shows the rendering
after 3 seconds]],
GuiPath = "/Rendering",
IsLocal = false
}
local ToggleMainGui = {
Identifier = "os.ToggleMainGui",
Name = "Toggle main GUI",
Command = propertyHelper.invert("Modules.CefWebGui.Visible"),
Documentation = "Toggles the main GUI",
GuiPath = "/System/GUI",
IsLocal = true
}
local ToggleOverlays = {
Identifier = "os.ToggleOverlays",
Name = "Toggle dashboard and overlays",
Command = [[
local isEnabled = openspace.propertyValue("Dashboard.IsEnabled")
openspace.setPropertyValueSingle("Dashboard.IsEnabled", not isEnabled)
openspace.setPropertyValueSingle("RenderEngine.ShowLog", not isEnabled)
openspace.setPropertyValueSingle("RenderEngine.ShowVersion", not isEnabled)
openspace.setPropertyValueSingle("RenderEngine.ShowCamera", not isEnabled)
]],
Documentation = "Toggles the dashboard and overlays",
GuiPath = "/System/GUI",
IsLocal = true
}
local ToggleMasterRendering = {
Identifier = "os.ToggleMasterRendering",
Name = "Toggle rendering on master",
Command = propertyHelper.invert("RenderEngine.DisableMasterRendering"),
Documentation = "Toggles the rendering on master",
GuiPath = "/System/Rendering",
IsLocal = true
}
local NextDeltaStepInterpolate = {
Identifier = "os.NextDeltaStepInterpolate",
Name = "Next simulation time step (interpolate)",
Command = "openspace.time.interpolateNextDeltaTimeStep()",
Documentation = [[Smoothly interpolates the simulation speed to the next simulation time
step, if one exists]],
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local NextDeltaStepImmediate = {
Identifier = "os.NextDeltaStepImmediate",
Name = "Next simulation time step (immediate)",
Command = "openspace.time.setNextDeltaTimeStep()",
Documentation = [[Immediately set the simulation speed to the next simulation time step,
if one exists]],
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local PreviousDeltaStepInterpolate = {
Identifier = "os.PreviousDeltaStepInterpolate",
Name = "Previous simulation time step (interpolate)",
Command = "openspace.time.interpolatePreviousDeltaTimeStep()",
Documentation = [[Smoothly interpolates the simulation speed to the previous simulation
time step, if one exists]],
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local PreviousDeltaStepImmediate = {
Identifier = "os.PreviousDeltaStepImmediate",
Name = "Previous simulation time step (immediate)",
Command = "openspace.time.setPreviousDeltaTimeStep()",
Documentation = [[Immediately set the simulation speed to the previous simulation time
step, if one exists]],
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local RealTimeDeltaStepInterpolate = {
Identifier = "os.RealTimeDeltaStepInterpolate",
Name = "Reset the simulation time to realtime (interpolate)",
Command = "openspace.time.interpolateDeltaTime(1)",
Documentation = "Smoothly interpolate the simulation speed to match real-time speed",
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local RealTimeDeltaStepImmediate = {
Identifier = "os.RealTimeDeltaStepImmediate",
Name = "Reset the simulation time to realtime (immediate)",
Command = "openspace.time.setDeltaTime(1)",
Documentation = "Immediately set the simulation speed to match real-time speed",
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local DateToNowInterpolate = {
Identifier = "os.DateToNowInterpolate",
Name = "Set the in-game time to now (interpolate)",
Command = "openspace.time.interpolateTime(openspace.time.currentWallTime())",
Documentation = "Immediately set the current in-game time to the 'now' time",
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local DateToNowImmediate = {
Identifier = "os.DateToNowImmediate",
Name = "Set the in-game time to now (immediate)",
Command = "openspace.time.setTime(openspace.time.currentWallTime())",
Documentation = "Smoothly interpolate the current in-game time to the 'now' time",
GuiPath = "/Time/Simulation Speed",
IsLocal = true
}
local ReloadGui = {
Identifier = "os.ReloadGui",
Name = "Reload GUI",
Command = [[openspace.setPropertyValueSingle("Modules.CefWebGui.Reload", nil)]],
Documentation = "Reloads the GUI",
GuiPath = "/System/GUI",
IsLocal = true
}
local actions = asset.require("actions/default_actions")
asset.onInitialize(function()
openspace.action.registerAction(ToggleNativeUi)
openspace.bindKey("F1", ToggleNativeUi.Identifier)
openspace.bindKey("Ctrl+Q", actions.ToggleShutdown)
openspace.action.registerAction(ToggleShutdown)
openspace.bindKey("ESC", ToggleShutdown.Identifier)
openspace.bindKey("F12", actions.TakeScreenshot)
openspace.bindKey("PRINT_SCREEN", actions.TakeScreenshot)
openspace.action.registerAction(TakeScreenshot)
openspace.bindKey("F12", TakeScreenshot.Identifier)
openspace.bindKey("PRINT_SCREEN", TakeScreenshot.Identifier)
openspace.bindKey("SPACE", actions.TogglePauseInterpolated)
openspace.bindKey("Shift+SPACE", actions.TogglePauseImmediate)
openspace.action.registerAction(TogglePauseInterpolated)
openspace.bindKey("SPACE", TogglePauseInterpolated.Identifier)
openspace.bindKey("F", actions.ToggleRotationFriction)
openspace.bindKey("Shift+F", actions.ToggleZoomFriction)
openspace.bindKey("Ctrl+F", actions.ToggleRollFriction)
openspace.action.registerAction(TogglePauseImmediate)
openspace.bindKey("Shift+SPACE", TogglePauseImmediate.Identifier)
openspace.bindKey("B", actions.FadeToBlack)
openspace.action.registerAction(ToggleRotationFriction)
openspace.bindKey("F", ToggleRotationFriction.Identifier)
openspace.bindKey("F1", actions.ToggleMainGui)
openspace.bindKey("Shift+F1", actions.ToggleOverlays)
openspace.action.registerAction(ToggleZoomFriction)
openspace.bindKey("Shift+F", ToggleZoomFriction.Identifier)
openspace.bindKey("F2", actions.ToggleNativeUi)
openspace.action.registerAction(ToggleRollFriction)
openspace.bindKey("Ctrl+F", ToggleRollFriction.Identifier)
openspace.bindKey("Right", actions.NextDeltaStepInterpolate)
openspace.bindKey("Shift+Right", actions.NextDeltaStepImmediate)
openspace.action.registerAction(FadeToBlack)
openspace.bindKey("B", FadeToBlack.Identifier)
openspace.bindKey("Left", actions.PreviousDeltaStepInterpolate)
openspace.bindKey("Shift+Left", actions.PreviousDeltaStepImmediate)
openspace.action.registerAction(ToggleMainGui)
openspace.bindKey("TAB", ToggleMainGui.Identifier)
openspace.bindKey("Down", actions.RealTimeDeltaStepInterpolate)
openspace.bindKey("Shift+Down", actions.RealTimeDeltaStepImmediate)
openspace.action.registerAction(ToggleOverlays)
openspace.bindKey("Shift+TAB", ToggleOverlays.Identifier)
openspace.action.registerAction(ToggleMasterRendering)
openspace.bindKey("Alt+R", ToggleMasterRendering.Identifier)
openspace.action.registerAction(NextDeltaStepInterpolate)
openspace.bindKey("Right", NextDeltaStepInterpolate.Identifier)
openspace.action.registerAction(NextDeltaStepImmediate)
openspace.bindKey("Shift+Right", NextDeltaStepImmediate.Identifier)
openspace.action.registerAction(PreviousDeltaStepInterpolate)
openspace.bindKey("Left", PreviousDeltaStepInterpolate.Identifier)
openspace.action.registerAction(PreviousDeltaStepImmediate)
openspace.bindKey("Shift+Left", PreviousDeltaStepImmediate.Identifier)
openspace.action.registerAction(RealTimeDeltaStepInterpolate)
openspace.bindKey("Down", RealTimeDeltaStepInterpolate.Identifier)
openspace.action.registerAction(RealTimeDeltaStepImmediate)
openspace.bindKey("Shift+Down", RealTimeDeltaStepImmediate.Identifier)
openspace.action.registerAction(DateToNowInterpolate)
openspace.bindKey("Up", DateToNowInterpolate.Identifier)
openspace.action.registerAction(DateToNowImmediate)
openspace.bindKey("Shift+Up", DateToNowImmediate.Identifier)
openspace.action.registerAction(ReloadGui)
openspace.bindKey("F5", ReloadGui.Identifier)
openspace.bindKey("F5", actions.ReloadGui)
end)
asset.onDeinitialize(function()
openspace.clearKey("F5")
openspace.action.removeAction(ReloadGui)
openspace.clearKey("F5") -- actions.ReloadGui
openspace.clearKey("Shift+Up")
openspace.action.removeAction(DateToNowImmediate)
openspace.clearKey("Shift+Down") -- actions.RealTimeDeltaStepImmediate
openspace.clearKey("Down") -- actions.RealTimeDeltaStepInterpolate
openspace.clearKey("Up")
openspace.action.removeAction(DateToNowInterpolate)
openspace.clearKey("Shift+Left") -- actions.PreviousDeltaStepImmediate
openspace.clearKey("Left") -- actions.PreviousDeltaStepInterpolate
openspace.clearKey("Shift+Down")
openspace.action.removeAction(RealTimeDeltaStepImmediate)
openspace.clearKey("Shift+Right") -- actions.NextDeltaStepImmediate
openspace.clearKey("Right") -- actions.NextDeltaStepInterpolate
openspace.clearKey("Down")
openspace.action.removeAction(RealTimeDeltaStepInterpolate)
openspace.clearKey("F2") -- actions.ToggleNativeUi
openspace.clearKey("Shift+Left")
openspace.action.removeAction(PreviousDeltaStepImmediate)
openspace.clearKey("Shift+F1") -- actions.ToggleOverlays
openspace.clearKey("F1") -- actions.ToggleMainGui
openspace.clearKey("Left")
openspace.action.removeAction(PreviousDeltaStepInterpolate)
openspace.clearKey("B") -- actions.FadeToBlack
openspace.clearKey("Shift+Right")
openspace.action.removeAction(NextDeltaStepImmediate)
openspace.clearKey("Ctrl+F") -- actions.ToggleRollFriction
openspace.clearKey("Shift+F") -- actions.ToggleZoomFriction
openspace.clearKey("F") -- actions.ToggleRotationFriction
openspace.clearKey("Right")
openspace.action.removeAction(NextDeltaStepInterpolate)
openspace.clearKey("Shift+SPACE") -- actions.TogglePauseImmediate
openspace.clearKey("SPACE") -- actions.TogglePauseInterpolated
openspace.clearKey("Alt+R")
openspace.action.removeAction(ToggleMasterRendering)
openspace.clearKey("F12") -- actions.TakeScreenshot
openspace.clearKey("PRINT_SCREEN") -- actions.TakeScreenshot
openspace.clearKey("Shift+TAB")
openspace.action.removeAction(ToggleOverlays)
openspace.clearKey("TAB")
openspace.action.removeAction(ToggleMainGui)
openspace.clearKey("B")
openspace.action.removeAction(FadeToBlack)
openspace.clearKey("Ctrl+F")
openspace.action.removeAction(ToggleRollFriction)
openspace.clearKey("Shift+F")
openspace.action.removeAction(ToggleZoomFriction)
openspace.clearKey("F")
openspace.action.removeAction(ToggleRotationFriction)
openspace.clearKey("Shift+SPACE")
openspace.action.removeAction(TogglePauseImmediate)
openspace.clearKey("SPACE")
openspace.action.removeAction(TogglePauseInterpolated)
openspace.clearKey("F12")
openspace.clearKey("PRINT_SCREEN")
openspace.action.removeAction(TakeScreenshot)
openspace.clearKey("ESC")
openspace.action.removeAction(ToggleShutdown)
openspace.clearKey("F1")
openspace.action.removeAction(ToggleNativeUi)
openspace.clearKey("Ctrl+Q") -- actions.ToggleShutdown
end)
asset.meta = {
Name = "Default Keybindings",
Description ="Asset with default key bindings that are useful for all profiles",
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -3,7 +3,8 @@ local ToggleSun = {
Name = "Toggle Sun",
Command = [[
if not is_declared("args") then
openspace.printError("Cannot execute 'os.ToggleSun' manually")
openspace.toggleFade("Scene.Sun.Renderable")
openspace.toggleFade("Scene.SunGlare.Renderable")
return
end

View File

@@ -0,0 +1,61 @@
-- Three nodes
-- This example adds three invisible scene graph nodes and then shows the angle between
-- those three nodes.
local Node1 = {
Identifier = "DashboardItemAngle_Example_ThreeNodes_Node1",
GUI = {
Name = "DashboardItemAngle - Three Nodes (Node 1)"
}
}
local Node2 = {
Identifier = "DashboardItemAngle_Example_ThreeNodes_Node2",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 2.0, 1.0, 0.0 }
}
},
GUI = {
Name = "DashboardItemAngle - Three Nodes (Node 2)"
}
}
local Node3 = {
Identifier = "DashboardItemAngle_Example_ThreeNodes_Node3",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { -2.0, 1.0, 0.0 }
}
},
GUI = {
Name = "DashboardItemAngle - Three Nodes (Node 3)"
}
}
local Item = {
Identifier = "DashboardItemAngle_Example_ThreeNodes",
Type = "DashboardItemAngle",
SourceType = "Node",
SourceNodeIdentifier = Node1.Identifier,
ReferenceType = "Node",
ReferenceNodeIdentifier = Node2.Identifier,
DestinationType = "Node",
DestinationNodeIdentifier = Node3.Identifier
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node1)
openspace.addSceneGraphNode(Node2)
openspace.addSceneGraphNode(Node3)
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
openspace.removeSceneGraphNode(Node3)
openspace.removeSceneGraphNode(Node2)
openspace.removeSceneGraphNode(Node1)
end)

View File

@@ -0,0 +1,45 @@
-- Two nodes and camera
-- This example adds two invisible scene graph nodes and then shows the angle between the
-- camera and those two nodes.
local Node1 = {
Identifier = "DashboardItemAngle_Example_TwoNodesCamera_Node1",
GUI = {
Name = "DashboardItemAngle - Two Nodes & Camera (Node 1)"
}
}
local Node2 = {
Identifier = "DashboardItemAngle_Example_TwoNodesCamera_Node2",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 20.0, 1.0, 0.0 }
}
},
GUI = {
Name = "DashboardItemAngle - Two Nodes & Camera (Node 2)"
}
}
local Item = {
Identifier = "DashboardItemAngle_Example_TwoNodesCamera",
Type = "DashboardItemAngle",
SourceType = "Camera",
ReferenceType = "Node",
ReferenceNodeIdentifier = Node1.Identifier,
DestinationType = "Node",
DestinationNodeIdentifier = Node2.Identifier
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node1)
openspace.addSceneGraphNode(Node2)
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
openspace.removeSceneGraphNode(Node2)
openspace.removeSceneGraphNode(Node1)
end)

View File

@@ -0,0 +1,45 @@
-- Two nodes and focus
-- This example adds two invisible scene graph nodes and then shows the angle between the
-- current focus node and those two nodes.
local Node1 = {
Identifier = "DashboardItemAngle_Example_TwoNodesFocus_Node1",
GUI = {
Name = "DashboardItemAngle - Two Nodes & Focus (Node 1)"
}
}
local Node2 = {
Identifier = "DashboardItemAngle_Example_TwoNodesFocus_Node2",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 20.0, 1.0, 0.0 }
}
},
GUI = {
Name = "DashboardItemAngle - Two Nodes & Focus (Node 2)"
}
}
local Item = {
Identifier = "DashboardItemAngle_Example_TwoNodesFocus",
Type = "DashboardItemAngle",
SourceType = "Focus",
ReferenceType = "Node",
ReferenceNodeIdentifier = Node1.Identifier,
DestinationType = "Node",
DestinationNodeIdentifier = Node2.Identifier
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node1)
openspace.addSceneGraphNode(Node2)
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
openspace.removeSceneGraphNode(Node2)
openspace.removeSceneGraphNode(Node1)
end)

View File

@@ -0,0 +1,15 @@
-- Basic
-- This example adds a new DashboardItem that shows the current in-game simulation date.
local Item = {
Identifier = "DashboardItemDate_Example",
Type = "DashboardItemDate"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Day of Year
-- This example adds a new DashboardItem that shows the current in-game simulation date
-- showing the current year and the number of days that have passed in the year.
local Item = {
Identifier = "DashboardItemDate_Example_DayOfYear",
Type = "DashboardItemDate",
TimeFormat = "YYYY DOY"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- No Decorations
-- This example adds a new DashboardItem that shows the current in-game simulation date
-- without any additional text surrounding the current date
local Item = {
Identifier = "DashboardItemDate_Example_NoDecoration",
Type = "DashboardItemDate",
FormatString = "{}"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Timezone
-- This example adds a new DashboardItem that shows the current in-game simulation date
-- with a timezone of UTC-7 (=PDT)
local Item = {
Identifier = "DashboardItemDate_Example_Timezone",
Type = "DashboardItemDate",
TimeFormat = "YYYY MON DD HR:MN:SC.### PDT ::UTC-7"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Year Month Day
-- This example adds a new DashboardItem that shows the current in-game simulation date
-- with a resolution of days.
local Item = {
Identifier = "DashboardItemDate_Example_YearMonthDay",
Type = "DashboardItemDate",
TimeFormat = "YYYY MON DD"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,28 @@
-- Node-Camera
-- This example adds an invisible node and a dashboard item that shows the distance
-- between this node and the current focus node.
local Node = {
Identifier = "DashboardItemDistance_Example_NodeCamera_Node",
GUI = {
Name = "DashboardItemDistance - Node-Camera"
}
}
local Item = {
Identifier = "DashboardItemDistance_Example_NodeCamera",
Type = "DashboardItemDistance",
SourceType = "Node",
SourceNodeIdentifier = Node.Identifier,
DestinationType = "Camera"
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
openspace.removeSceneGraphNode(Node)
end)

View File

@@ -0,0 +1,28 @@
-- Node-Focus
-- This example adds an invisible node and a dashboard item that shows the distance
-- between this node and the current focus node.
local Node = {
Identifier = "DashboardItemDistance_Example_NodeFocus_Node",
GUI = {
Name = "DashboardItemDistance - Node-Focus"
}
}
local Item = {
Identifier = "DashboardItemDistance_Example_NodeFocus",
Type = "DashboardItemDistance",
SourceType = "Node",
SourceNodeIdentifier = Node.Identifier,
DestinationType = "Focus"
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
openspace.removeSceneGraphNode(Node1)
end)

View File

@@ -0,0 +1,44 @@
-- Node-Node
-- This example adds two invisible nodes and a dashboard item that shows the distance
-- between those two nodes.
local Node1 = {
Identifier = "DashboardItemDistance_Example_NodeNode_Node1",
GUI = {
Name = "DashboardItemDistance - Node-Node (Node 1)"
}
}
local Node2 = {
Identifier = "DashboardItemDistance_Example_NodeNode_Node2",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 2.0, 0.0, 0.0 }
}
},
GUI = {
Name = "DashboardItemDistance - Node-Node (Node 2)"
}
}
local Item = {
Identifier = "DashboardItemDistance_Example_NodeNode",
Type = "DashboardItemDistance",
SourceType = "Node",
SourceNodeIdentifier = Node1.Identifier,
DestinationType = "Node",
DestinationNodeIdentifier = Node2.Identifier
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node1)
openspace.addSceneGraphNode(Node2)
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
openspace.removeSceneGraphNode(Node2)
openspace.removeSceneGraphNode(Node1)
end)

View File

@@ -0,0 +1,29 @@
-- NodeSurface-Camera
-- This example adds two invisible nodes and a dashboard item that shows the distance
-- between those two nodes
local Node = {
Identifier = "DashboardItemDistance_Example_NodeSurfaceCamera_Node",
BoundingSphere = 200.0,
GUI = {
Name = "DashboardItemDistance - NodeSurface-Camera"
}
}
local Item = {
Identifier = "DashboardItemDistance_Example_NodeSurfaceCamera",
Type = "DashboardItemDistance",
SourceType = "Node Surface",
SourceNodeIdentifier = Node.Identifier,
DestinationType = "Camera"
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
openspace.removeSceneGraphNode(Node)
end)

View File

@@ -0,0 +1,17 @@
-- Basic
-- This example adds a dashboard item that shows the remaining time or the elapsed time
-- since midday 2000 JAN 01.
local Item = {
Identifier = "DashboardItemElapsedTime_Example",
Type = "DashboardItemElapsedTime",
ReferenceTime = "2000 JAN 01 12:00:00"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,18 @@
-- Fixed Time
-- This example adds a dashboard item that shows the remaining time or the elapsed time
-- since 2000 JAN 01 but ignoring any unit smaller than days.
local Item = {
Identifier = "DashboardItemElapsedTime_Example_FixedTime",
Type = "DashboardItemElapsedTime",
ReferenceTime = "2000 JAN 01 12:00:00",
LowestTimeUnit = "Day"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,19 @@
-- No Decorations
-- This example adds a dashboard item that shows the remaining time or the elapsed time
-- since midday 2000 JAN 01 without any additional text decoration and only printing the
-- remaining time.
local Item = {
Identifier = "DashboardItemElapsedTime_Example_NoDecorations",
Type = "DashboardItemElapsedTime",
ReferenceTime = "2000 JAN 01 12:00:00",
FormatString = "{}"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,16 @@
-- Basic
-- This example adds a dashboard item that shows the average number of frames per second,
-- which is the default value for the frame time type setting.
local Item = {
Identifier = "DashboardItemFramerate_Example",
Type = "DashboardItemFramerate"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Delta Time
-- This example adds a dashboard item that shows the frame rate of the last frame in
-- milliseconds.
local Item = {
Identifier = "DashboardItemFramerate_Example_DeltaTime",
Type = "DashboardItemFramerate",
FrametimeType = "Deltatime"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,16 @@
-- Basic
-- This example adds a dashboard item that shows the position of the camera relative to
-- the focus node, if that focus node is a globe.
local Item = {
Identifier = "DashboardItemGlobeLocation_Example",
Type = "DashboardItemGlobeLocation"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,18 @@
-- Degree/Minute/Seconds
-- This example adds a dashboard item that shows the position of the camera relative to
-- the focus node, if that focus node is a globe. The longitude and latitude of the camera
-- is provided in the sexagesimal system (degrees, minutes, seconds).
local Item = {
Identifier = "DashboardItemGlobeLocation_Example",
Type = "DashboardItemGlobeLocation",
DisplayFormat = "DegreeMinuteSeconds"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,16 @@
-- Basic
-- This example adds a dashboard item that shows the input state of the mouse, keyboard,
-- and joystick input devices.
local Item = {
Identifier = "DashboardItemInputState_Example",
Type = "DashboardItemInputState"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Mouse Only
-- This example adds a dashboard item that only shows the input state of the mouse inputs.
local Item = {
Identifier = "DashboardItemInputState_Example_MouseOnly",
Type = "DashboardItemInputState",
ShowKeyboard = false,
ShowJoystick = false
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Only disabled
-- This example adds a dashboard item that shows the input state of the mouse, keyboard,
-- and joystick input devices but only when they are disabled.
local Item = {
Identifier = "DashboardItemInputState_Example_OnlyDisabled",
Type = "DashboardItemInputState",
ShowWhenDisabled = true
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,16 @@
-- Basic
-- This example adds a dashboard item that shows the status of the currently active
-- mission.
local Item = {
Identifier = "DashboardItemMission_Example",
Type = "DashboardItemMission"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,15 @@
-- Basic
-- This example adds a dashboard item that shows the status of the parallel connection.
local Item = {
Identifier = "DashboardItemParallelConnection_Example",
Type = "DashboardItemParallelConnection"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Bool
-- This example adds a dashboard item that shows the state of a boolean property.
local Item = {
Identifier = "DashboardItemPropertyValue_Example_Bool",
Type = "DashboardItemPropertyValue",
URI = "NavigationHandler.OrbitalNavigator.Friction.RotationalFriction",
DisplayString = "Rotational Friction is: {}"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,18 @@
-- Float
-- This example adds a dashboard item that shows the state of a floating point value
-- property.
local Item = {
Identifier = "DashboardItemPropertyValue_Example_Float",
Type = "DashboardItemPropertyValue",
URI = "RenderEngine.Gamma",
DisplayString = "Gamma Correction: {}"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,18 @@
-- Int
-- This example adds a dashboard item that shows the state of a integer point value
-- property.
local Item = {
Identifier = "DashboardItemPropertyValue_Example_Int",
Type = "DashboardItemPropertyValue",
URI = "LuaConsole.HistoryLength",
DisplayString = "Lua Console History Length: {}"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Vec3
-- This example adds a dashboard item that shows the state of a 3-vector value property.
local Item = {
Identifier = "DashboardItemPropertyValue_Example_Vec3",
Type = "DashboardItemPropertyValue",
URI = "RenderEngine.GlobalRotation",
DisplayString = "Global Rotation: ({}, {}, {})"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Vec4
-- This example adds a dashboard item that shows the state of a 4-vector value property.
local Item = {
Identifier = "DashboardItemPropertyValue_Example_Vec4",
Type = "DashboardItemPropertyValue",
URI = "RenderEngine.EnabledFontColor",
DisplayString = "Font Color (enabled): ({}, {}, {}, {})"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,15 @@
-- Basic
-- This example adds a dashboard item that shows the current simulation increment.
local Item = {
Identifier = "DashboardItemSimulationIncrement_Example",
Type = "DashboardItemSimulationIncrement"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Nanoseconds
-- This example adds a dashboard item that shows the current simulation increment always
-- expressed in nanoseconds.
local Item = {
Identifier = "DashboardItemSimulationIncrement_Example_NoDecoration",
Type = "DashboardItemSimulationIncrement",
RequestedUnit = "Nanosecond"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,22 @@
-- No Decoration
-- This example adds a dashboard item that shows the current simulation increment without
-- any textual decorations. This example also shows how to ignore the first two parameters
-- the `TransitionFormat` format string. Both the `TransitionFormat` and the
-- `RegularFormat` string replacement markers allow the setting of numbers to determine
-- which argument should be placed in here. The `TransitionFormat` in this example omits
-- the numbers 0 and 1, thus ignoring the first two arguments to the string.
local Item = {
Identifier = "DashboardItemSimulationIncrement_Example_NoDecoration",
Type = "DashboardItemSimulationIncrement",
TransitionFormat = "{3:.1f} {4:s} / second{2:s}",
RegularFormat = "{:.1f} {:s} / second{:s}"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,16 @@
-- Basic
-- This example adds a dashboard item that adds a spacing to the dashboard. This example
-- will not show anything by itself.
local Item = {
Identifier = "DashboardItemSpacing_Example",
Type = "DashboardItemSpacing"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,9 @@
{
"data": [
[ "2024-05-10T00:00:00Z", 2.33 ],
[ "2024-05-10T03:00:00Z", 3 ],
[ "2024-05-10T06:00:00Z", 3 ],
[ "2024-05-10T09:00:00Z", 2.67 ],
[ "2024-05-10T12:00:00Z", 2.33 ]
]
}

View File

@@ -0,0 +1,10 @@
{
"data": [
[ "2024-05-10T00:00:00Z", 2.33 ],
[ "2024-05-10T03:00:00Z", true ],
[ "2024-05-10T06:00:00Z", "Test string" ],
[ "2024-05-10T09:00:00Z", { "a": 1.0, "b": 2.0 } ],
[ "2024-05-10T12:00:00Z", [ 1.0, 2.0, 3.0 ] ],
[ "2024-05-10T15:00:00Z", 3 ]
]
}

View File

@@ -0,0 +1,16 @@
-- Basic
-- This example shows how to create a time-varying text dashboard item.
local Item = {
Type = "DashboardItemTimeVaryingText",
Identifier = "DashboardItemTimeVaryingText_Example",
DataFile = asset.resource("data/dummydata.json"),
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Mixed
-- This example shows how to create a time-varying text dashboard item that is using a
-- mixed type of data entries in the `DataFile`.
local Item = {
Type = "DashboardItemTimeVaryingText",
Identifier = "DashboardItemTimeVaryingText_Example_Mixed",
DataFile = asset.resource("data/dummydata_mixed.json"),
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,19 @@
-- Styled
-- This example shows how to create a time-varying text dashboard item.
-- It has a custom font size and text before the time varying text.
local Item = {
Type = "DashboardItemTimeVaryingText",
Identifier = "DashboardItemTimeVaryingText_Example_Styled",
DataFile = asset.resource("data/dummydata.json"),
FormatString = "Observed KP index: {}",
FontSize = 40
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,15 @@
-- Basic
-- This example adds a dashboard item that shows the speed of the camera.
local Item = {
Identifier = "DashboardItemVelocity_Example",
Type = "DashboardItemVelocity"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -0,0 +1,17 @@
-- Nautical Miles
-- This example adds a dashboard item that shows the speed of the camera, but always
-- displayed in nautical miles per second (or knots).
local Item = {
Identifier = "DashboardItemVelocity_Example_NauticalMiles",
Type = "DashboardItemVelocity",
RequestedUnit = "Nautical Mile"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Item)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(Item)
end)

View File

@@ -1,201 +0,0 @@
asset.require("scene/solarsystem/planets/earth/earth")
asset.require("scene/solarsystem/planets/earth/moon/moon")
local Angle = {
Type = "DashboardItemAngle",
Identifier = "Angle",
ReferenceType = "Node",
ReferenceNodeName = "Earth",
DestinationType = "Node",
DestinationNodeName = "Moon"
}
local Date = {
Type = "DashboardItemDate",
Identifier = "Date"
}
local SimulationIncrement = {
Type = "DashboardItemSimulationIncrement",
Identifier = "SimulationIncrement",
GuiName = "Simulation Increment"
}
local Distance = {
Type = "DashboardItemDistance",
Identifier = "Distance"
}
local Framerate = {
Type = "DashboardItemFramerate",
Identifier = "Framerate"
}
local ParallelConnection = {
Type = "DashboardItemParallelConnection",
Identifier = "ParallelConnection",
GuiName = "Parallel Connection"
}
local Mission = {
Type = "DashboardItemMission",
Identifier = "Mission"
}
local PropertyValue = {
Type = "DashboardItemPropertyValue",
Identifier = "DashbaordItemPropertyValue",
URI = "Scene.Earth.Renderable.Enabled",
DisplayString = "Earth is enabled: {}"
}
local PropertyValueFloat = {
Type = "DashboardItemPropertyValue",
Identifier = "DashbaordItemPropertyValue_Float",
URI = "Scene.Earth.Renderable.TargetLodScaleFactor",
DisplayString = "Earth LOD is {:.5f}"
}
local PropertyValueDouble = {
Type = "DashboardItemPropertyValue",
Identifier = "DashbaordItemPropertyValue_Double",
URI = "NavigationHandler.PathNavigator.ArrivalDistanceFactor",
DisplayString = "Arrival Distance Factor is {:.8f}"
}
local PropertyValueInt = {
Type = "DashboardItemPropertyValue",
Identifier = "DashbaordItemPropertyValue_Int",
URI = "LuaConsole.HistoryLength",
DisplayString = "History length is {}"
}
local PropertyValueUInt = {
Type = "DashboardItemPropertyValue",
Identifier = "DashboardItemPropertyValue_UInt",
URI = "Modules.Globebrowsing.TileCacheSize",
DisplayString = "Tile Cache Size is {}"
}
local PropertyValueDVec3 = {
Type = "DashboardItemPropertyValue",
Identifier = "DashboardItemPropertyValue_DVec3",
URI = "Scene.SolarSystemBarycenter.Transform.Transform",
DisplayString = "SSB Transform is: ({}, {}, {})"
}
local PropertyValueIVec2 = {
Type = "DashboardItemPropertyValue",
Identifier = "DashboardItemPropertyValue_IVec2",
URI = "Scene.SolarSystemBarycenter.Renderable.ScreenSpacePosition",
DisplayString = "Random ScreenSpace Position: ({}, {})"
}
local PropertyValueVec2 = {
Type = "DashboardItemPropertyValue",
Identifier = "DashboardItemPropertyValue_Vec2",
URI = "Scene.EarthAtmosphere.Renderable.AtmosphereDimmingSunsetAngle",
DisplayString = "Sunset Angle is ({}, {})"
}
local PropertyValueVec3 = {
Type = "DashboardItemPropertyValue",
Identifier = "DashboardItemPropertyValue_Vec3",
URI = "RenderEngine.GlobalRotation",
DisplayString = "Global Rotation is ({}, {}, {})"
}
local PropertyValueVec4 = {
Type = "DashboardItemPropertyValue",
Identifier = "DashboardItemPropertyValue_Vec4",
URI = "LuaConsole.BackgroundColor",
DisplayString = "Background Coolor is ({}, {}, {}, {})"
}
local ElapsedTime = {
Type = "DashboardItemElapsedTime",
Identifier = "ElapsedTime",
ReferenceTime = "2022-10-12 12:00:00"
}
local InputState = {
Type = "DashboardItemInputState",
Identifier = "InputState"
}
asset.onInitialize(function()
openspace.dashboard.addDashboardItem(Angle)
openspace.dashboard.addDashboardItem(Date)
openspace.dashboard.addDashboardItem(SimulationIncrement)
openspace.dashboard.addDashboardItem(Distance)
openspace.dashboard.addDashboardItem(Framerate)
openspace.dashboard.addDashboardItem(ParallelConnection)
openspace.dashboard.addDashboardItem(Mission)
openspace.dashboard.addDashboardItem(PropertyValue)
openspace.dashboard.addDashboardItem(PropertyValueFloat)
openspace.dashboard.addDashboardItem(PropertyValueDouble)
openspace.dashboard.addDashboardItem(PropertyValueInt)
openspace.dashboard.addDashboardItem(PropertyValueUInt)
openspace.dashboard.addDashboardItem(PropertyValueDVec3)
openspace.dashboard.addDashboardItem(PropertyValueIVec2)
openspace.dashboard.addDashboardItem(PropertyValueVec2)
openspace.dashboard.addDashboardItem(PropertyValueVec3)
openspace.dashboard.addDashboardItem(PropertyValueVec4)
openspace.dashboard.addDashboardItem(ElapsedTime)
openspace.dashboard.addDashboardItem(InputState)
end)
asset.onDeinitialize(function()
openspace.dashboard.removeDashboardItem(InputState)
openspace.dashboard.removeDashboardItem(ElapsedTime)
openspace.dashboard.removeDashboardItem(PropertyValueVec4)
openspace.dashboard.removeDashboardItem(PropertyValueVec3)
openspace.dashboard.removeDashboardItem(PropertyValueVec2)
openspace.dashboard.removeDashboardItem(PropertyValueIVec2)
openspace.dashboard.removeDashboardItem(PropertyValueDVec3)
openspace.dashboard.removeDashboardItem(PropertyValueUInt)
openspace.dashboard.removeDashboardItem(PropertyValueInt)
openspace.dashboard.removeDashboardItem(PropertyValueDouble)
openspace.dashboard.removeDashboardItem(PropertyValueFloat)
openspace.dashboard.removeDashboardItem(PropertyValue)
openspace.dashboard.removeDashboardItem(Mission)
openspace.dashboard.removeDashboardItem(ParallelConnection)
openspace.dashboard.removeDashboardItem(Framerate)
openspace.dashboard.removeDashboardItem(Distance)
openspace.dashboard.removeDashboardItem(SimulationIncrement)
openspace.dashboard.removeDashboardItem(Date)
openspace.dashboard.removeDashboardItem(Angle)
end)
asset.export(Angle)
asset.export(Date)
asset.export(SimulationIncrement)
asset.export(Distance)
asset.export(Framerate)
asset.export(ParallelConnection)
asset.export(Mission)
asset.export(PropertyValue)
asset.export(PropertyValueFloat)
asset.export(PropertyValueDouble)
asset.export(PropertyValueInt)
asset.export(PropertyValueUInt)
asset.export(PropertyValueDVec3)
asset.export(PropertyValueIVec2)
asset.export(PropertyValueVec2)
asset.export(PropertyValueVec3)
asset.export(PropertyValueVec4)
asset.export(ElapsedTime)
asset.export(InputState)
asset.meta = {
Name = "Dashboard Items Example",
Description = [[Examples of different types of dashboard items. These are dynamic
information texts that will be shown over the rendering (per default in the top
left corner, on flat screens).]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,51 @@
local earth = asset.require("scene/solarsystem/planets/earth/earth")
-- These two files are downloaded from the servers when the asset gets loaded. Specifying
-- these two URLs in this way will cause them to be downloaded into the same folder on the
-- harddisk. For this example this is important as the points-relative.geojson will ask
-- for the image.png in the same folder by specifying "./image.png"
local data = asset.resource({
Name = "GeoJSON Example Relative Texture Path",
Type = "UrlSynchronization",
Identifier = "geojson_example_points_relative_path",
Url = {
"http://liu-se.cdn.openspaceproject.com/files/examples/geojson/points-relative.geojson",
"http://liu-se.cdn.openspaceproject.com/files/examples/geojson/image.png"
}
})
local ExamplePoints = {
Identifier = "Points-Example-RelativeTexturePath",
File = data .. "points-relative.geojson",
HeightOffset = 20000.0,
DefaultProperties = {
PointSize = 10.0
},
Name = "Example Points (Relative Texture Path)"
}
asset.onInitialize(function()
openspace.globebrowsing.addGeoJson(earth.Earth.Identifier, ExamplePoints)
end)
asset.onDeinitialize(function()
openspace.globebrowsing.deleteGeoJson(earth.Earth.Identifier, ExamplePoints)
end)
asset.export(ExamplePoints)
asset.meta = {
Name = "GeoJson Example - Points (Relative Texture Path)",
Description = [[GeoJson example asset with points that are facing the camera
(default). This example is using a relative path to specify the location of the image
that is to be used.]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -2,8 +2,8 @@
-- This example adds a box grid, which is a 3D box rendered using grid lines, to the
-- scene.
--
-- Per default, the box will be given a size of 1x1x1 meters, and here it is scaled up by a
-- factor of 100. It will hence have a size of 100x100x100 meters.
-- Per default, the box will be given a size of 1x1x1 meters, and here it is scaled up by
-- a factor of 100. It will hence have a size of 100x100x100 meters.
local Node = {
Identifier = "RenderableBoxGrid_Example",

View File

@@ -1,9 +1,18 @@
-- Styled
-- This example creates a box grid where the grid lines are styled to have a specific
-- color and line width.
--
-- Per default, the box will be given a size of 1x1x1 meters, and here it is scaled up by
-- a factor of 100. It will hence have a size of 100x100x100 meters.
local Node = {
Identifier = "RenderableBoxGrid_Example_Styled",
Transform = {
Scale = {
Type = "StaticScale",
Scale = 100
}
},
Renderable = {
Type = "RenderableBoxGrid",
LineWidth = 4.0,

View File

@@ -1,6 +1,6 @@
-- Basic
-- This example creates a SceneGraphNode that only displays coordinate axes. The
-- parent is not set which defaults to placing the axes at the center of the Sun.
-- This example creates a scene graph node that only displays coordinate axes. The parent
-- is not set which defaults to placing the axes at the center of the Sun.
local Node = {
Identifier = "RenderableCartesianAxes_Example",

View File

@@ -1,6 +1,6 @@
-- With Parent
-- This example creates a SceneGraphNode that displays coordinate axes of the given parent
-- node, in this case Earth.
-- This example creates a scene graph node that displays coordinate axes of the given
-- parent node, in this case Earth.
local earth = asset.require("scene/solarsystem/planets/earth/earth")

View File

@@ -24,7 +24,9 @@ local Node = {
-- the arrow
ArrowHeadSize = 0.25,
-- Set the arrow head width. A value of 1 makes it as wide as the body of the arrow
ArrowHeadWidthFactor = 1.0
ArrowHeadWidthFactor = 1.0,
-- How wide should the arrow be (meters)
Width = 1000000.0
},
GUI = {
Name = "RenderableNodeArrow - Custom Appearance (Colored & Inverted)",

View File

@@ -0,0 +1,24 @@
-- Basic
-- This example shows how to create a textured plane in 3D space, where the texture is
-- loaded from a local file on disk.
local Node = {
Identifier = "RenderablePlaneImageLocal_Example",
Renderable = {
Type = "RenderablePlaneImageLocal",
Size = 3.0E11,
Texture = openspace.absPath("${DATA}/test2.jpg")
},
GUI = {
Name = "RenderablePlaneImageLocal - Basic",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
end)

View File

@@ -0,0 +1,26 @@
-- Billboard Image
-- This example shows how to create a textured plane in 3D space, where the texture is
-- loaded from a local file on disk and the plane is billboarded to always face the
-- camera.
local Node = {
Identifier = "RenderablePlaneImageLocal_Example_Billboard",
Renderable = {
Type = "RenderablePlaneImageLocal",
Size = 3.0E11,
Texture = openspace.absPath("${DATA}/test2.jpg"),
Billboard = true
},
GUI = {
Name = "RenderablePlaneImageLocal - Billboard",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
end)

View File

@@ -0,0 +1,34 @@
-- Scale by Distance to Camera
-- This example creates a textured plane that is scaled based on the distance to the
-- camera, so that it stays a constant size in screen space. The scale is limited so that
-- the plane does not become larger or smaller than a given max height and min height, in
-- meters.
local earth = asset.require("scene/solarsystem/planets/earth/earth")
local Node = {
Identifier = "RenderablePlaneImageLocal_Example_ScaleByDistance",
Renderable = {
Type = "RenderablePlaneImageLocal",
Size = 100000,
Texture = openspace.absPath("${DATA}/test2.jpg"),
DistanceScalingSettings = {
ScaleByDistance = true,
ApparentSizeMultiplier = 0.01,
ScaleByDistanceMaxHeight = 200000,
ScaleByDistanceMinHeight = 30000
}
},
GUI = {
Name = "RenderablePlaneImageLocal - ScaleByDistance",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
end)

View File

@@ -1,18 +1,18 @@
-- Billboarded Image
-- Billboard Image
-- This example shows how to create a textured plane in 3D space, where the texture is
-- loaded from the internet though a web URL and the plane is billboarded to always
-- face the camera.
local Node = {
Identifier = "RenderablePlaneImageOnline_Example_Billboarded",
Identifier = "RenderablePlaneImageOnline_Example_Billboard",
Renderable = {
Type = "RenderablePlaneImageOnline",
Size = 3.0E11,
URL = "http://data.openspaceproject.com/examples/renderableplaneimageonline.jpg",
Billboarded = true
Billboard = true
},
GUI = {
Name = "RenderablePlaneImageOnline - Billboarded",
Name = "RenderablePlaneImageOnline - Billboard",
Path = "/Examples"
}
}

View File

@@ -29,7 +29,7 @@ local Node = {
},
GUI = {
Name = "RenderablePointCloud - Labels",
Path = "/Examples/Advanced"
Path = "/Examples/RenderablePointCloud/Advanced"
}
}
@@ -66,7 +66,7 @@ local Node_LabelsFile = {
}
},
GUI = {
Name = "Labels - Custom File",
Name = "RenderablePointCloud - Labels Custom File",
Path = "/Examples/RenderablePointCloud/Advanced",
Description = [[Example of a point cloud with labels, created from a .label file]]
}

View File

@@ -60,13 +60,11 @@ local Node_Interpolated = {
}
-- Load data from a Speck file. This allows storing all data in one single file, including
-- the texture mapping) Note that we disable this scene graph node per default here, as it
-- shows the same information as the CSV version
-- the texture mapping).
local Node_Speck = {
Identifier = "RenderablePointCloud_Example_MultiTextured_Speck",
Renderable = {
Type = "RenderablePointCloud",
Enabled = false,
-- When loading multi-texture information from a speck file, we do not need a
-- DataMapping entry - all information is in the file
File = asset.resource("../data/multitextured_speck/textures_points.speck"),

View File

@@ -9,13 +9,13 @@
-- See Textured example for more details.
local Node = {
Identifier = "RenderablePointCloud_Example_FaceCameraPosition",
Identifier = "RenderablePointCloud_Example_Textured_FaceCameraPosition",
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
-- Change the orientation render option to face the camera position instead
-- of its view direction
OrientationRenderOption = "Camera Position Normal",
Billboard = "Camera Position Normal",
-- Add a texture so we can more easily see how the orientation is changed
Texture = {
File = openspace.absPath("${DATA}/test3.jpg")
@@ -23,7 +23,7 @@ local Node = {
UseAdditiveBlending = false
},
GUI = {
Name = "RenderablePointCloud - Face Camera Position",
Name = "RenderablePointCloud - Textured Face Camera Position",
Path = "/Examples"
}
}

View File

@@ -0,0 +1,36 @@
-- Basic
-- This example shows how to create a renderable that switches between two textured planes
-- in 3D space, where one texture is loaded from a local file on disk and the other is
-- loaded from the internet though a web URL.
-- The switch is done based on the distance from the camera to the renderable.
local Node = {
Identifier = "RenderableSwitch_Example",
Renderable = {
Type = "RenderableSwitch",
RenderableNear = {
Type = "RenderablePlaneImageLocal",
Size = 300000000000,
Texture = openspace.absPath("${DATA}/test.jpg")
},
RenderableFar = {
Type = "RenderablePlaneImageOnline",
Size = 300000000000,
URL = "http://data.openspaceproject.com/examples/renderableplaneimageonline.jpg"
},
DistanceThreshold = 2000000000000
},
GUI = {
Name = "RenderableSwitch - Basic",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
end)

View File

@@ -0,0 +1,30 @@
-- Only Far Renderable
-- This example uses only shows a textured plane when the camera is further than the
-- specified distance from the object and shows nothing if the camera is closer than that
-- distance
local Node = {
Identifier = "RenderableSwitch_Example-Far",
Renderable = {
Type = "RenderableSwitch",
RenderableFar = {
Type = "RenderablePlaneImageLocal",
Size = 300000000000,
Texture = openspace.absPath("${DATA}/test.jpg")
},
DistanceThreshold = 3000000000000
},
GUI = {
Name = "RenderableSwitch - Far",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
end)

View File

@@ -0,0 +1,29 @@
-- Only Near Renderable
-- This example uses only shows a textured plane when the camera is within the specified
-- distance from the object and shows nothing if the camera is further away.
local Node = {
Identifier = "RenderableSwitch_Example-Near",
Renderable = {
Type = "RenderableSwitch",
RenderableNear = {
Type = "RenderablePlaneImageLocal",
Size = 300000000000,
Texture = openspace.absPath("${DATA}/test.jpg")
},
DistanceThreshold = 2000000000000
},
GUI = {
Name = "RenderableSwitch - Near",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
end)

View File

@@ -0,0 +1,56 @@
-- Basic
-- This asset creates a rotation that places coordinate axes close to a sphere with the
-- z axis pointing towards the sphere. The coordinate axes are translated away from the
-- sphere to make that orientation more obvious.
--
-- Making the `YAxis` `{ 0.0, 1.0, 0.0 }` and actually using the orthogonal projection of
-- that direction means that the y axis of the new coordinate system will point in the
-- hemisphere in which the old y-axis was pointing, albeit being orthogonal to the other
-- specified axis. That axis is pointing towards the scene graph node holding the sphere.
local Sphere = {
Identifier = "FixedRotation_Example_Sphere",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 2.0, 1.5, 1.0 }
}
},
Renderable = {
Type = "RenderableSphericalGrid"
},
GUI = {
Name = "FixedRotation - Basic (Sphere)",
Path = "/Examples"
}
}
local Node = {
Identifier = "FixedRotation_Example",
Transform = {
Rotation = {
Type = "FixedRotation",
Attached = "FixedRotation_Example",
YAxis = { 0.0, 1.0, 0.0 },
YAxisOrthogonal = true,
ZAxis = "FixedRotation_Example_Sphere"
}
},
Renderable = {
Type = "RenderableCartesianAxes"
},
GUI = {
Name = "FixedRotation - Basic",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Sphere)
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
openspace.removeSceneGraphNode(Sphere)
end)

View File

@@ -0,0 +1,33 @@
-- Axis Mapping
-- This asset creates a rotation that shows coordinate axes in which the x and the y axes
-- are flipped. While this could also be achieved with a
-- [ConstantRotation](#base_transform_rotation_constant) class, this serves as an example
-- for more elaborate coordinate system mappings, such as converting to a coordinate
-- system with a known coordinate axes.
local Node = {
Identifier = "FixedRotation_Example_Mapping",
Transform = {
Rotation = {
Type = "FixedRotation",
XAxis = { 0.0, 1.0, 0.0 },
YAxis = { 1.0, 0.0, 0.0 },
ZAxis = { 0.0, 0.0, 1.0 }
}
},
Renderable = {
Type = "RenderableCartesianAxes"
},
GUI = {
Name = "FixedRotation - Mapping",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
end)

View File

@@ -0,0 +1,56 @@
-- Inverted Axis
-- This asset creates a rotation that places coordinate axes close to a sphere with the z
-- axis pointing away from the sphere. The coordinate axes are translated away from the
-- sphere to make that orientation more obvious.
--
-- Making the `YAxis` { 0.0, 1.0, 0.0 } and actually using the orthogonal projection of
-- that direction means that the y axis of the new coordinate system will point in the
-- hemisphere in which the old y-axis was pointing, albeit being orthogonal to the other
-- specified axis. That axis is pointing towards the scene graph node holding the sphere.
local Sphere = {
Identifier = "FixedRotation_Example_InvertedAxis_Sphere",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 2.0, 1.5, 1.0 }
}
},
Renderable = {
Type = "RenderableSphericalGrid"
},
GUI = {
Name = "FixedRotation - Inverted Axis (Sphere)",
Path = "/Examples"
}
}
local Node = {
Identifier = "FixedRotation_Example_InvertedAxis",
Transform = {
Rotation = {
Type = "FixedRotation",
Attached = "FixedRotation_Example_InvertedAxis",
YAxis = { 0.0, 1.0, 0.0 },
YAxisOrthogonal = true,
ZAxis = Sphere.Identifier,
ZAxisInvert = true
}
},
Renderable = {
Type = "RenderableCartesianAxes"
},
GUI = {
Name = "FixedRotation - Inverted Axis",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Sphere)
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
openspace.removeSceneGraphNode(Sphere)
end)

View File

@@ -0,0 +1,87 @@
-- Rotation Following Two Moving Objects
-- This asset creates a rotation that places coordinate axes orbiting close to two spheres
-- with the y axis always pointing towards the first sphere and the z axis always pointing
-- towards the second sphere as the coordinate system moves around. The set of coordinate
-- axes are orbiting using a [KeplerTranslation](#space_transform_kepler) that provides a
-- configurable orbital motion. The use of the
-- [KeplerTranslation](#space_transform_kepler) in this example is arbitrary and the
-- FixedRotation does not depend on the use of that class. We use it in this example as we
-- want a moving object to show that the `FixedRotation` will always point at the object,
-- even as it is moving.
--
-- Note that in this example the coordinate system will be skewed as, in general, it is
-- not guaranteed that the direction from the node to the two spheres will be an
-- orthogonal vector.
local Sphere1 = {
Identifier = "FixedRotation_Example_Moving_TwoObjects_Sphere1",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 3.0, -2.0, 0.0 }
}
},
Renderable = {
Type = "RenderableSphericalGrid"
},
GUI = {
Name = "FixedRotation - Moving Two Objects (Sphere 1)",
Path = "/Examples"
}
}
local Sphere2 = {
Identifier = "FixedRotation_Example_Moving_TwoObjects_Sphere2",
Transform = {
Translation = {
Type = "KeplerTranslation",
Eccentricity = 0.5,
SemiMajorAxis = 0.0025,
Inclination = 0.0,
AscendingNode = 0.0,
ArgumentOfPeriapsis = 0.0,
MeanAnomaly = 0.0,
Epoch = "2000 JAN 01 12:00:00",
Period = 10.0
}
},
Renderable = {
Type = "RenderableSphericalGrid"
},
GUI = {
Name = "FixedRotation - Moving Two Objects (Sphere 2)",
Path = "/Examples"
}
}
local Node = {
Identifier = "FixedRotation_Example_Moving_TwoObjects",
Transform = {
Rotation = {
Type = "FixedRotation",
Attached = "FixedRotation_Example_Moving_TwoObjects",
YAxis = Sphere1.Identifier,
YAxisOrthogonal = true,
ZAxis = Sphere2.Identifier
}
},
Renderable = {
Type = "RenderableCartesianAxes"
},
GUI = {
Name = "FixedRotation - Moving Two Objects",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Sphere1)
openspace.addSceneGraphNode(Sphere2)
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
openspace.removeSceneGraphNode(Sphere2)
openspace.removeSceneGraphNode(Sphere1)
end)

View File

@@ -0,0 +1,63 @@
-- Rotation Following One Moving Object
-- This asset creates a rotation that places coordinate axes orbiting close to a sphere
-- with the z axis always pointing towards the sphere as it orbits around the sphere. The
-- coordinate axes are translated away from the sphere to make that orientation more
-- obvious.
--
-- Making the `YAxis` { 0.0, 1.0, 0.0 } and actually using the orthogonal projection of
-- that direction means that the y axis of the new coordinate system will point in the
-- hemisphere in which the old y-axis was pointing, albeit being orthogonal to the other
-- specified axis. That axis is pointing towards the scene graph node holding the sphere.
local Sphere = {
Identifier = "FixedRotation_Example_Moving_Sphere",
Transform = {
Translation = {
Type = "KeplerTranslation",
Eccentricity = 0.5,
SemiMajorAxis = 0.0025,
Inclination = 0.0,
AscendingNode = 0.0,
ArgumentOfPeriapsis = 0.0,
MeanAnomaly = 0.0,
Epoch = "2000 JAN 01 12:00:00",
Period = 10.0
}
},
Renderable = {
Type = "RenderableSphericalGrid"
},
GUI = {
Name = "FixedRotation - Moving (Sphere)",
Path = "/Examples"
}
}
local Node = {
Identifier = "FixedRotation_Example_Moving",
Transform = {
Rotation = {
Type = "FixedRotation",
Attached = "FixedRotation_Example_Moving",
YAxis = { 0.0, 1.0, 0.0 },
YAxisOrthogonal = true,
ZAxis = Sphere.Identifier
}
},
Renderable = {
Type = "RenderableCartesianAxes"
},
GUI = {
Name = "FixedRotation - Moving",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Sphere)
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
openspace.removeSceneGraphNode(Sphere)
end)

View File

@@ -1,7 +1,7 @@
-- Basic
-- This asset creates a SceneGraphNode that only displays coordinate axes. The rotation of
-- coordinate axes are determined by executing a Lua file that returns the rotation matrix
-- to be used.
-- This asset creates a scene graph node that only displays coordinate axes. The rotation
-- of coordinate axes are determined by executing a Lua file that returns the rotation
-- matrix to be used.
--
-- ```{literalinclude} example.lua
-- :language: lua

View File

@@ -1,6 +1,6 @@
-- Basic
-- This asset creates a SceneGraphNode that only displays coordinate axes. The rotation of
-- the coordinate axes are determined by a combination of individual rotations. The
-- This asset creates a scene graph node that only displays coordinate axes. The rotation
-- of the coordinate axes are determined by a combination of individual rotations. The
-- rotations are applied in the order in which they are specified
local Node = {

View File

@@ -1,8 +1,8 @@
-- Basic
-- This asset creates a rotation provided by a SPICE kernel and applies it to a
-- SceneGraphNode that only displays coordinate axes. The rotation of the coordinate axes
-- are determined by SPICE, in this case pretending that the coordinate axes are rotating
-- at the same rate as Earth.
-- This asset creates a rotation provided by a SPICE kernel and applies it to a scene
-- graph node that only displays coordinate axes. The rotation of the coordinate axes are
-- determined by SPICE, in this case pretending that the coordinate axes are rotating at
-- the same rate as Earth.
-- For more information about SPICE see: https://naif.jpl.nasa.gov/naif/
-- Load the default SPICE kernels, which are the planetary constants and the DE430 kernel

View File

@@ -1,9 +1,9 @@
-- Fixed Date
-- This asset creates a rotation provided by a SPICE kernel and applies it to a
-- SceneGraphNode that only displays coordinate axes. The rotation of the coordinate axes
-- are determined by SPICE, in this case pretending that the coordinate axes are rotating
-- at the same rate as Earth. In this specific example, the orientation is independent of
-- the actual in-game time in OpenSpace and only uses a fixed date of 2000 JAN 01 instead.
-- This asset creates a rotation provided by a SPICE kernel and applies it to a scene
-- graph node that only displays coordinate axes. The rotation of the coordinate axes are
-- determined by SPICE, in this case pretending that the coordinate axes are rotating at
-- the same rate as Earth. In this specific example, the orientation is independent of the
-- actual in-game time in OpenSpace and only uses a fixed date of 2000 JAN 01 instead.
-- Load the default SPICE kernels, which is the planetary constants and the DE430 kernel
asset.require("spice/core")

View File

@@ -1,10 +1,10 @@
-- TimeFrame
-- This asset creates a rotation provided by a SPICE kernel and applies it to a
-- SceneGraphNode that only displays coordinate axes. The rotation of the coordinate axes
-- are determined by SPICE, in this case pretending that the coordinate axes are rotating
-- at the same rate as Earth. In this example, the rotation is only calculated between
-- 2000 JAN 01 and 2002 JAN 01 to exemplify a use-case in which the data from the SPICE
-- kernel is not available for the whole duration.
-- This asset creates a rotation provided by a SPICE kernel and applies it to a scene
-- graph node that only displays coordinate axes. The rotation of the coordinate axes are
-- determined by SPICE, in this case pretending that the coordinate axes are rotating at
-- the same rate as Earth. In this example, the rotation is only calculated between 2000
-- JAN 01 and 2002 JAN 01 to exemplify a use-case in which the data from the SPICE kernel
-- is not available for the whole duration.
-- Load the default SPICE kernels, which is the planetary constants and the DE430 kernel
asset.require("spice/core")

View File

@@ -1,8 +1,8 @@
-- Time offset
-- This asset creates a rotation provided by a SPICE kernel and applies it to a
-- SceneGraphNode that only displays coordinate axes. The rotation of the coordinate axes
-- are determined by SPICE, in this case pretending that the coordinate axes are rotating
-- at the same rate as Earth. In this specific example, the orientation is offset 8h back
-- This asset creates a rotation provided by a SPICE kernel and applies it to a scene
-- graph node that only displays coordinate axes. The rotation of the coordinate axes are
-- determined by SPICE, in this case pretending that the coordinate axes are rotating at
-- the same rate as Earth. In this specific example, the orientation is offset 8h back
-- compared to the actual in-game time in OpenSpace.
-- Load the default SPICE kernels, which is the planetary constants and the DE430 kernel

View File

@@ -1,7 +1,7 @@
-- Euler Angles
-- This asset creates a rotation provided by Euler angles and applies it to a
-- SceneGraphNode that only displays coordinate axes. The rotation of the coordinate axes
-- are determined by a constant and unchanging static rotation.
-- This asset creates a rotation provided by Euler angles and applies it to a scene graph
-- node that only displays coordinate axes. The rotation of the coordinate axes are
-- determined by a constant and unchanging static rotation.
local Node = {
Identifier = "StaticRotation_Example_Euler",

View File

@@ -1,7 +1,7 @@
-- Matrix
-- This asset creates a SceneGraphNode that only displays coordinate axes. The rotation of
-- the coordinate axes are determined by a constant and unchanging static rotation that is
-- provided by a 3-by-3 rotation matrix in column-major order.
-- This asset creates a scene graph node that only displays coordinate axes. The rotation
-- of the coordinate axes are determined by a constant and unchanging static rotation that
-- is provided by a 3-by-3 rotation matrix in column-major order.
local Node = {
Identifier = "StaticRotation_Example_Matrix",

View File

@@ -1,7 +1,7 @@
-- Quaternion
-- This asset creates a SceneGraphNode that only displays coordinate axes. The rotation of
-- the coordinate axes are determined by a constant and unchanging static rotation that is
-- provided by a four-dimensional quaternion.
-- This asset creates a scene graph node that only displays coordinate axes. The rotation
-- of the coordinate axes are determined by a constant and unchanging static rotation that
-- is provided by a four-dimensional quaternion.
local Node = {
Identifier = "StaticRotation_Example_Quaternion",

View File

@@ -1,9 +1,9 @@
-- Basic
-- This asset creates a SceneGraphNode that only displays coordinate axes. The rotation of
-- the coordinate axes are determined by a timeline of individual rotations. These rotations
-- are keyframes that are used to seamlessly change between different orientations. This
-- example transitions between three rotations over a long time span. This example will
-- only work if the in-game time is set to January 1st, 2000.
-- This asset creates a scene graph node that only displays coordinate axes. The rotation
-- of the coordinate axes are determined by a timeline of individual rotations. These
-- rotations are keyframes that are used to seamlessly change between different
-- orientations. This example transitions between three rotations over a long time span.
-- This example will only work if the in-game time is set to January 1st, 2000.
local Node = {
Identifier = "TimelineRotation_Example",

View File

@@ -1,13 +1,13 @@
-- No Interpolation
-- This asset creates a SceneGraphNode that only displays coordinate axes. The rotation of
-- the coordinate axes are determined by a timeline of individual rotations that are used
-- without interpolating between the timeline entries. These rotations are keyframes that
-- are used to change between different orientations. This example transitions between
-- three rotations. In this example, the interpolation between entries is disabled, which
-- will cause the coordinate axes to change their orientation abruptly when the rotation
-- changes. If the interpolation were enabled, the orientation of the coordinate axes
-- would transition seamlessly instead at the provided times. This example will only work
-- if the in-game time is set to January 1st, 2000.
-- This asset creates a scene graph node that only displays coordinate axes. The rotation
-- of the coordinate axes are determined by a timeline of individual rotations that are
-- used without interpolating between the timeline entries. These rotations are keyframes
-- that are used to change between different orientations. This example transitions
-- between three rotations. In this example, the interpolation between entries is
-- disabled, which will cause the coordinate axes to change their orientation abruptly
-- when the rotation changes. If the interpolation were enabled, the orientation of the
-- coordinate axes would transition seamlessly instead at the provided times. This example
-- will only work if the in-game time is set to January 1st, 2000.
local Node = {
Identifier = "TimelineRotation_Example_NoInterpolation",

View File

@@ -1,5 +1,5 @@
-- Basic
-- This asset creates a SceneGraphNode that only displays coordinate axes. The sizes of
-- This asset creates a scene graph node that only displays coordinate axes. The sizes of
-- coordinate axes are determined by executing a Lua file that returns the scaling
-- parameters to be used as a table.
--

View File

@@ -1,5 +1,5 @@
-- Basic
-- This asset creates a SceneGraphNode that only displays coordinate axes, with a set of
-- This asset creates a scene graph node that only displays coordinate axes, with a set of
-- multiple scales that are applied one after the other.
local Node = {

View File

@@ -1,10 +1,10 @@
-- Basic
-- This asset creates a SceneGraphNode that only displays coordinate axes. The coordinate
-- axis normally have a length of 1 meter and are scaled in this example by different
-- values for each axis. The x axis is scaled by a factor of 149597870700, which means
-- they will be 149597870700 m (1 AU) long and thus reaching the same distance as Earth's
-- orbit around the Sun. The y-axis stays at its original size, and the z-axis will be
-- hidden entirely by setting the scale value close to 0.
-- This asset creates a scene graph node that only displays coordinate axes. The
-- coordinate axis normally have a length of 1 meter and are scaled in this example by
-- different values for each axis. The x axis is scaled by a factor of 149597870700, which
-- means they will be 149597870700 m (1 AU) long and thus reaching the same distance as
-- Earth's orbit around the Sun. The y-axis stays at its original size, and the z-axis
-- will be hidden entirely by setting the scale value close to 0.
local Node = {
Identifier = "NonUniformStaticScale_Example",

Some files were not shown because too many files have changed in this diff Show More