diff --git a/scripts/bind_keys_newhorizons.lua b/scripts/bind_keys_newhorizons.lua index e20d5cf4b8..ca436024f9 100644 --- a/scripts/bind_keys_newhorizons.lua +++ b/scripts/bind_keys_newhorizons.lua @@ -1,30 +1,20 @@ --[[ OpenSpace keybinding script ]]-- --- This script sets the default keybindings and is executed at startup + +-- Load the common helper functions +dofile(openspace.absPath('${SCRIPTS}/common.lua')) openspace.clearKeys() -openspace.bindKey("F1", "openspace.gui.toggle()") -openspace.bindKey("F2", "openspace.setPerformanceMeasurement(true)") -openspace.bindKey("F3", "openspace.setPerformanceMeasurement(false)") +helper.setCommonKeys() + +helper.setDeltaTimeKeys({ + 1, 5, 10, 20, 40, 60, 120, 360, 540, 1080, + 2160, 4320, 8640 +}) + openspace.bindKey("F5", "openspace.setPropertyValue('Interaction.coordinateSystem', 'Sun'); openspace.printInfo('Changing Viewpoint to Sun-in-center');"); openspace.bindKey("F6", "openspace.setPropertyValue('Interaction.coordinateSystem', 'Jupiter'); openspace.printInfo('Changing Viewpoint to Jupiter-in-center');"); openspace.bindKey("F7", "openspace.setPropertyValue('Interaction.coordinateSystem', 'Pluto'); openspace.printInfo('Changing Viewpoint to Pluto-in-center');"); -openspace.bindKey("PRINT_SCREEN", "openspace.takeScreenshot()") - -openspace.bindKey("SPACE", "openspace.time.togglePause()") - --- Bookmarks for the New Horizons encounter -openspace.bindKey("1", "openspace.time.setDeltaTime(1)") -openspace.bindKey("2", "openspace.time.setDeltaTime(5)") -openspace.bindKey("3", "openspace.time.setDeltaTime(10)") -openspace.bindKey("4", "openspace.time.setDeltaTime(20)") -openspace.bindKey("5", "openspace.time.setDeltaTime(40)") -openspace.bindKey("6", "openspace.time.setDeltaTime(60)") -openspace.bindKey("7", "openspace.time.setDeltaTime(120)") -openspace.bindKey("8", "openspace.time.setDeltaTime(360)") -openspace.bindKey("9", "openspace.time.setDeltaTime(540)") -openspace.bindKey("9", "openspace.time.setDeltaTime(1080)") - openspace.bindKey("F8", "openspace.setPropertyValue('PlutoProjection.renderable.clearAllProjections', true); openspace.setPropertyValue('Charon.renderable.clearAllProjections', true);") -- Quickfix backjumps in pluto sequence @@ -33,7 +23,7 @@ openspace.bindKey("F10", "openspace.time.setTime('2015-07-14T10:00:00.00'); open openspace.bindKey("F11", "openspace.time.setTime('2015-07-14T11:17:00.00'); openspace.setPropertyValue('PlutoProjection.renderable.clearAllProjections', true); openspace.setPropertyValue('Charon.renderable.clearAllProjections', true);") openspace.bindKey("F12", "openspace.time.setTime('2015-07-14T12:45:00.00'); openspace.setPropertyValue('PlutoProjection.renderable.clearAllProjections', true); openspace.setPropertyValue('Charon.renderable.clearAllProjections', true);") -openspace.bindKey("r", "local b = openspace.getPropertyValue('PlutoProjection.renderable.fk'); openspace.setPropertyValue('PlutoProjection.renderable.fk', not b)") +openspace.bindKey("r", helper.property.invert('PlutoProjection.renderable.fk')) openspace.bindKey("a", "openspace.setPropertyValue('Interaction.origin', 'NewHorizons')") openspace.bindKey("s", "openspace.setPropertyValue('Interaction.origin', 'PlutoProjection')") @@ -41,51 +31,44 @@ openspace.bindKey("d", "openspace.setPropertyValue('Interaction.origin', 'Charon openspace.bindKey("z", "openspace.setPropertyValue('Interaction.origin', 'JupiterProjection')") openspace.bindKey("x", "openspace.setPropertyValue('Interaction.origin', 'Europa')") +openspace.bindKey("KP_8", helper.property.increment('PlutoProjection.renderable.heightExaggeration', 2)) +openspace.bindKey("KP_2", helper.property.decrement('PlutoProjection.renderable.heightExaggeration', 2)) + +openspace.bindKey("KP_9", helper.property.increment('Charon.renderable.heightExaggeration', 2)) +openspace.bindKey("KP_3", helper.property.decrement('Charon.renderable.heightExaggeration', 2)) + openspace.bindKey("g", "openspace.time.setTime('2007-02-28T11:40:00.00'); openspace.time.setDeltaTime(1);") openspace.bindKey("h", "openspace.time.setTime('2015-07-14T10:00:00.00'); openspace.time.setDeltaTime(1); openspace.setPropertyValue('Interaction.coordinateSystem', 'Pluto');openspace.setPropertyValue('Interaction.origin', 'PlutoProjection'); openspace.printInfo('Changing Viewpoint to Pluto-in-center');") -openspace.bindKey("i", "local b = openspace.getPropertyValue('PlutoTexture.renderable.enabled'); openspace.setPropertyValue('PlutoTexture.renderable.enabled', not b)") +openspace.bindKey("q", helper.property.invert('SunMarker.renderable.enabled')) +openspace.bindKey("e", helper.property.invert('EarthMarker.renderable.enabled')) +openspace.bindKey("o", helper.property.invert('PlutoTrail.renderable.enabled')) -openspace.bindKey("q", "local b = openspace.getPropertyValue('SunMarker.renderable.enabled'); openspace.setPropertyValue('SunMarker.renderable.enabled', not b)") -openspace.bindKey("e", "local b = openspace.getPropertyValue('EarthMarker.renderable.enabled'); openspace.setPropertyValue('EarthMarker.renderable.enabled', not b)") +openspace.bindKey("k", + helper.renderable.toggle('HydraText') .. helper.renderable.toggle('NixText') .. helper.renderable.toggle('KerberosText') .. helper.renderable.toggle('StyxText') +) +openspace.bindKey("j", helper.renderable.toggle('PlutoText')) -openspace.bindKey("o", "local b = openspace.getPropertyValue('PlutoTrail.renderable.enabled'); openspace.setPropertyValue('PlutoTrail.renderable.enabled', not b)") +openspace.bindKey("l", helper.property.invert('Labels.renderable.performFading')) -openspace.bindKey("k", "local b = openspace.getPropertyValue('HydraText.renderable.enabled'); openspace.setPropertyValue('HydraText.renderable.enabled', not b)") -openspace.bindKey("k", "local b = openspace.getPropertyValue('CharonText.renderable.enabled'); openspace.setPropertyValue('CharonText.renderable.enabled', not b)") -openspace.bindKey("k", "local b = openspace.getPropertyValue('NixText.renderable.enabled'); openspace.setPropertyValue('NixText.renderable.enabled', not b)") -openspace.bindKey("k", "local b = openspace.getPropertyValue('KerberosText.renderable.enabled'); openspace.setPropertyValue('KerberosText.renderable.enabled', not b)") -openspace.bindKey("k", "local b = openspace.getPropertyValue('StyxText.renderable.enabled'); openspace.setPropertyValue('StyxText.renderable.enabled', not b)") -openspace.bindKey("j", "local b = openspace.getPropertyValue('PlutoText.renderable.enabled'); openspace.setPropertyValue('PlutoText.renderable.enabled', not b)") +openspace.bindKey("m", + helper.property.invert('NH_LORRI.renderable.solidDraw') .. helper.property.invert('NH_RALPH_LEISA.renderable.solidDraw') .. + helper.property.invert('NH_RALPH_MVIC_PAN1.renderable.solidDraw') .. helper.property.invert('NH_RALPH_MVIC_PAN2.renderable.solidDraw') .. + helper.property.invert('NH_RALPH_MVIC_RED.renderable.solidDraw') .. helper.property.invert('NH_RALPH_MVIC_BLUE.renderable.solidDraw') .. + helper.property.invert('NH_RALPH_MVIC_FT.renderable.solidDraw') .. helper.property.invert('NH_RALPH_MVIC_METHANE.renderable.solidDraw') .. + helper.property.invert('NH_RALPH_MVIC_NIR.renderable.solidDraw') .. helper.property.invert('NH_ALICE_AIRGLOW.renderable.solidDraw') .. + helper.property.invert('NH_ALICE_SOC.renderable.solidDraw') +) -openspace.bindKey("l", "local b = openspace.getPropertyValue('Labels.renderable.performFading'); openspace.setPropertyValue('Labels.renderable.performFading', not b)") +openspace.bindKey("t", helper.renderable.toggle('PlutoShadow') .. helper.renderable.toggle('CharonShadow')) -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_LORRI.renderable.solidDraw'); openspace.setPropertyValue('NH_LORRI.renderable.solidDraw', not b)") -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_RALPH_LEISA.renderable.solidDraw'); openspace.setPropertyValue('NH_RALPH_LEISA.renderable.solidDraw', not b)") -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_RALPH_MVIC_PAN1.renderable.solidDraw'); openspace.setPropertyValue('NH_RALPH_MVIC_PAN1.renderable.solidDraw', not b)") -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_RALPH_MVIC_PAN2.renderable.solidDraw'); openspace.setPropertyValue('NH_RALPH_MVIC_PAN2.renderable.solidDraw', not b)") -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_RALPH_MVIC_RED.renderable.solidDraw'); openspace.setPropertyValue('NH_RALPH_MVIC_RED.renderable.solidDraw', not b)") -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_RALPH_MVIC_BLUE.renderable.solidDraw'); openspace.setPropertyValue('NH_RALPH_MVIC_BLUE.renderable.solidDraw', not b)") -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_RALPH_MVIC_FT.renderable.solidDraw'); openspace.setPropertyValue('NH_RALPH_MVIC_FT.renderable.solidDraw', not b)") -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_RALPH_MVIC_METHANE.renderable.solidDraw'); openspace.setPropertyValue('NH_RALPH_MVIC_METHANE.renderable.solidDraw', not b)") -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_RALPH_MVIC_NIR.renderable.solidDraw'); openspace.setPropertyValue('NH_RALPH_MVIC_NIR.renderable.solidDraw', not b)") -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_ALICE_AIRGLOW.renderable.solidDraw'); openspace.setPropertyValue('NH_ALICE_AIRGLOW.renderable.solidDraw', not b)") -openspace.bindKey("m", "local b = openspace.getPropertyValue('NH_ALICE_SOC.renderable.solidDraw'); openspace.setPropertyValue('NH_ALICE_SOC.renderable.solidDraw', not b)") - -openspace.bindKey("t", "local b = openspace.getPropertyValue('PlutoShadow.renderable.enabled'); openspace.setPropertyValue('PlutoShadow.renderable.enabled', not b)") -openspace.bindKey("t", "local b = openspace.getPropertyValue('CharonShadow.renderable.enabled'); openspace.setPropertyValue('CharonShadow.renderable.enabled', not b)") -openspace.bindKey("p", "local b = openspace.getPropertyValue('JupiterProjection.renderable.performProjection'); openspace.setPropertyValue('JupiterProjection.renderable.performProjection', not b)") -openspace.bindKey("p", "local b = openspace.getPropertyValue('Io.renderable.performProjection'); openspace.setPropertyValue('Io.renderable.performProjection', not b)") -openspace.bindKey("p", "local b = openspace.getPropertyValue('Ganymede.renderable.performProjection'); openspace.setPropertyValue('Ganymede.renderable.performProjection', not b)") -openspace.bindKey("p", "local b = openspace.getPropertyValue('Europa.renderable.performProjection'); openspace.setPropertyValue('Europa.renderable.performProjection', not b)") -openspace.bindKey("p", "local b = openspace.getPropertyValue('Callisto.renderable.performProjection'); openspace.setPropertyValue('Callisto.renderable.performProjection', not b)") -openspace.bindKey("p", "local b = openspace.getPropertyValue('PlutoProjection.renderable.performProjection'); openspace.setPropertyValue('PlutoProjection.renderable.performProjection', not b)") -openspace.bindKey("p", "local b = openspace.getPropertyValue('Charon.renderable.performProjection'); openspace.setPropertyValue('Charon.renderable.performProjection', not b)") +openspace.bindKey("p", + helper.property.invert('JupiterProjection.renderable.performProjection') .. helper.property.invert('Io.renderable.performProjection') .. + helper.property.invert('Ganymede.renderable.performProjection') .. helper.property.invert('Europa.renderable.performProjection') .. + helper.property.invert('Callisto.renderable.performProjection') .. helper.property.invert('PlutoProjection.renderable.performProjection') .. + helper.property.invert('Charon.renderable.performProjection') +) openspace.bindKey("c", "openspace.parallel.setAddress('130.236.142.51');openspace.parallel.setPassword('newhorizons-20150714');openspace.parallel.connect();") - - -openspace.bindKey("COMMA", "openspace.setRenderer('Framebuffer');") -openspace.bindKey("PERIOD", "openspace.setRenderer('ABuffer');") \ No newline at end of file diff --git a/scripts/common.lua b/scripts/common.lua new file mode 100644 index 0000000000..cef02c1794 --- /dev/null +++ b/scripts/common.lua @@ -0,0 +1,61 @@ +--[[ Commonly used OpenSpace configuration functions ]]-- + +helper = {} +helper.renderable = {} +helper.property = {} + +-- Function that sets the most common key bindings that are common to most (all?) +-- scenes +helper.setCommonKeys = function() + openspace.bindKey("F1", "openspace.gui.toggle()") + openspace.bindKey("F2", "openspace.setPerformanceMeasurement(true)") + openspace.bindKey("F3", "openspace.setPerformanceMeasurement(false)") + + openspace.bindKey("PRINT_SCREEN", "openspace.takeScreenshot()") + openspace.bindKey("SPACE", "openspace.time.togglePause()") + + openspace.bindKey("COMMA", "openspace.setRenderer('Framebuffer');") + openspace.bindKey("PERIOD", "openspace.setRenderer('ABuffer');") +end + +helper.setDeltaTimeKeys = function(t) + local Keys = { + '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', + 'Shift+1', 'Shift+2', 'Shift+3', 'Shift+4', 'Shift+5', 'Shift+6', 'Shift+7', 'Shift+8', 'Shift+9', 'Shift+0', + 'Ctrl+1', 'Ctrl+2', 'Ctrl+3', 'Ctrl+4', 'Ctrl+5', 'Ctrl+6', 'Ctrl+7', 'Ctrl+8', 'Ctrl+9', 'Ctrl+0', + 'Alt+1', 'Alt+2', 'Alt+3', 'Alt+4', 'Alt+5', 'Alt+6', 'Alt+7', 'Alt+8', 'Alt+9', 'Alt+0' + } + + if #t > #Keys then + openspace.printError("Error settings delta time keys: Too many delta times (" .. #t .. ")") + return + end + + for i, v in ipairs(t) do + openspace.bindKey(Keys[i], 'openspace.time.setDeltaTime(' .. v .. ")") + end +end + +-- Function that returns the string that inverts the fully qualified boolean property 'property' +helper.property.invert = function(property) + local escaped_property = "'" .. property .. "'" + return "openspace.setPropertyValue(" .. escaped_property .. ", not openspace.getPropertyValue(" .. escaped_property .. "));" +end + +-- Function that returns the string that increments the 'property' by the 'value' +helper.property.increment = function(property, value) + local v = value or 1 + local escaped_property = "'" .. property .. "'" + return "openspace.setPropertyValue(" .. escaped_property .. ", openspace.getPropertyValue(" .. escaped_property .. ") + " .. v .. ")" +end + +-- Function that returns the string that decrements the 'property' by the 'value' +helper.property.decrement = function(property, value) + return helper.property.increment(property, -value) +end + +-- Function that returns the string that enables/disables the renderable 'renderable' +helper.renderable.toggle = function(renderable) + return helper.property.invert(renderable .. ".renderable.enabled") +end +