mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-05 11:09:37 -06:00
merge master into branch, after v0.21.2 and solved merge conflicts
This commit is contained in:
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
66
data/assets/actions/nightsky/createsuntrails.asset
Normal file
66
data/assets/actions/nightsky/createsuntrails.asset
Normal 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)
|
||||
112
data/assets/actions/nightsky/misc.asset
Normal file
112
data/assets/actions/nightsky/misc.asset
Normal 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)
|
||||
59
data/assets/actions/nightsky/position.asset
Normal file
59
data/assets/actions/nightsky/position.asset
Normal 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)
|
||||
83
data/assets/actions/planets/lock_temporal_layer.asset
Normal file
83
data/assets/actions/planets/lock_temporal_layer.asset
Normal 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"
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
6
data/assets/actions/solarsystem_actions.asset
Normal file
6
data/assets/actions/solarsystem_actions.asset
Normal 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")
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
local Item = {
|
||||
Type = "DashboardItemDistance",
|
||||
Identifier = "Distance",
|
||||
GuiName = "Distance"
|
||||
GuiName = "Distance",
|
||||
SourceType = "Camera",
|
||||
DestinationType = "Focus"
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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 ]
|
||||
]
|
||||
}
|
||||
@@ -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 ]
|
||||
]
|
||||
}
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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")
|
||||
|
||||
|
||||
@@ -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)",
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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]]
|
||||
}
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
56
data/assets/examples/rotation/fixedrotation/fixed.asset
Normal file
56
data/assets/examples/rotation/fixedrotation/fixed.asset
Normal 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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
@@ -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")
|
||||
@@ -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
|
||||
@@ -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",
|
||||
@@ -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",
|
||||
@@ -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",
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
@@ -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.
|
||||
--
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user