diff --git a/Environment/interpolator.xml b/Environment/interpolator.xml
index 638733ab3..400c08b86 100644
--- a/Environment/interpolator.xml
+++ b/Environment/interpolator.xml
@@ -73,6 +73,12 @@
/environment/config/enabled
+
+
+ /environment/config/presets/visibility-m-override
+
+ /environment/config/presets/visibility-m
+
/environment/config/interpolated/visibility-m
exponential
@@ -89,6 +95,12 @@
/environment/config/enabled
+
+
+ /environment/config/presets/wind-override
+
+ /environment/config/presets/wind-from-north-fps
+
/environment/config/interpolated/wind-from-north-fps
exponential
@@ -102,6 +114,12 @@
/environment/config/enabled
+
+
+ /environment/config/presets/wind-override
+
+ /environment/config/presets/wind-from-east-fps
+
/environment/config/interpolated/wind-from-east-fps
exponential
diff --git a/Nasal/environment.nas b/Nasal/environment.nas
new file mode 100755
index 000000000..c94c55453
--- /dev/null
+++ b/Nasal/environment.nas
@@ -0,0 +1,45 @@
+##
+## environment.nas
+##
+## Nasal code for implementing environment-specific functionality.
+
+##
+# Handler. Increase visibility by one step
+#
+var increaseVisibility = func {
+ adjustVisibility(1.1);
+}
+
+##
+# Handler. Decrease visibility by one step
+#
+var decreaseVisibility = func {
+ adjustVisibility(0.9);
+}
+
+var adjustVisibility = func( factor ) {
+ var val = visibilityProp.getValue() * factor;
+ if( val < 1.0 ) val = getprop("/environment/visibility-m");
+ if( val > 30 ) {
+ visibilityProp.setDoubleValue(val);
+ visibilityOverrideProp.setBoolValue(1);
+ gui.popupTip(sprintf("Visibility: %.0f m", val));
+ }
+}
+
+##
+# Handler. Reset visibility to default.
+#
+var resetVisibility = func {
+ visibilityProp.setDoubleValue(0);
+ visibilityOverrideProp.setBoolValue(0);
+}
+
+
+var visibilityProp = nil;
+var visibilityOverrideProp = nil;
+
+_setlistener("/sim/signals/nasal-dir-initialized", func {
+ visibilityProp = props.globals.initNode("/environment/config/presets/visibility-m", 0, "DOUBLE" );
+ visibilityOverrideProp = props.globals.initNode("/environment/config/presets/visibility-m-override", 0, "BOOL" );
+});
diff --git a/keyboard.xml b/keyboard.xml
index 0905f1b9b..2539f77f5 100644
--- a/keyboard.xml
+++ b/keyboard.xml
@@ -255,7 +255,16 @@ top down before the key bindings are parsed.
-
+
+ Ctrl-Z
+ Reset visibility to default
+
+ nasal
+
+
+
+
+
ESC
Prompt and quit FlightGear
@@ -765,7 +774,8 @@ top down before the key bindings are parsed.
Decrease Visibility
true
- decrease-visibility
+ nasal
+
@@ -1040,8 +1050,9 @@ top down before the key bindings are parsed.
z
Increase Visibility
true
-
- increase-visibility
+
+ nasal
+