From 78e45727d0971de7fdd96a0f6e67b1e0951a8036 Mon Sep 17 00:00:00 2001 From: torsten Date: Sat, 28 Feb 2009 20:19:39 +0000 Subject: [PATCH] Added support for elements under elements. The old and elements are still supported but ignored, if a element exists. Also for the DigitalFilter --- src/Autopilot/xmlauto.cxx | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/Autopilot/xmlauto.cxx b/src/Autopilot/xmlauto.cxx index a5adb1c3d..fb52efc78 100644 --- a/src/Autopilot/xmlauto.cxx +++ b/src/Autopilot/xmlauto.cxx @@ -827,13 +827,16 @@ FGDigitalFilter::FGDigitalFilter(SGPropertyNode *node): } else if ( cname == "debug" ) { debug = child->getBoolValue(); } else if ( cname == "enable" ) { - SGPropertyNode *prop = child->getChild( "prop" ); - if ( prop != NULL ) { - enable_prop = fgGetNode( prop->getStringValue(), true ); - } - SGPropertyNode *val = child->getChild( "value" ); - if ( val != NULL ) { - enable_value = val->getStringValue(); + _condition = getCondition( child ); + if( _condition == NULL ) { + SGPropertyNode *prop = child->getChild( "prop" ); + if ( prop != NULL ) { + enable_prop = fgGetNode( prop->getStringValue(), true ); + } + SGPropertyNode *val = child->getChild( "value" ); + if ( val != NULL ) { + enable_value = val->getStringValue(); + } } SGPropertyNode *pass = child->getChild( "honor-passive" ); if ( pass != NULL ) { @@ -887,11 +890,11 @@ FGDigitalFilter::FGDigitalFilter(SGPropertyNode *node): void FGDigitalFilter::update(double dt) { - if ( (input_prop != NULL && - enable_prop != NULL && + if ( input_prop != NULL && ( + ( _condition != NULL && _condition->test() ) || + ( enable_prop != NULL && enable_prop->getStringValue() == enable_value) || - (enable_prop == NULL && - input_prop != NULL) ) { + (enable_prop == NULL && _condition == NULL ) ) ) { input.push_front(input_prop->getDoubleValue()); input.resize(samples + 1, 0.0);