##
## 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" );
});