From 72483d565bfcfde43e63290b49aa8c33900d6d1c Mon Sep 17 00:00:00 2001 From: Torsten Dreyer Date: Wed, 1 Feb 2012 22:24:06 +0100 Subject: [PATCH] initialize the heading-indicator/offset-deg in it's class Don't initialize the offset in the main loop but in the init method of the implementing class. This ensures it gets initialized if you instantiate more than one heading-indicator and does not initialize the property for unsused heading-indicators (no more stray heading-indicator-fg property anymore). --- src/Instrumentation/heading_indicator.cxx | 6 +++++- src/Instrumentation/heading_indicator_fg.cxx | 7 ++++++- src/Main/main.cxx | 3 --- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Instrumentation/heading_indicator.cxx b/src/Instrumentation/heading_indicator.cxx index e4b0c2438..2cbbb9f24 100644 --- a/src/Instrumentation/heading_indicator.cxx +++ b/src/Instrumentation/heading_indicator.cxx @@ -17,6 +17,7 @@ #include
#include
+#include HeadingIndicator::HeadingIndicator ( SGPropertyNode *node ) : @@ -37,7 +38,10 @@ HeadingIndicator::init () branch = "/instrumentation/" + _name; SGPropertyNode *node = fgGetNode(branch.c_str(), _num, true ); - _offset_node = node->getChild("offset-deg", 0, true); + if( NULL == (_offset_node = node->getChild("offset-deg", 0, false)) ) { + _offset_node = node->getChild("offset-deg", 0, true); + _offset_node->setDoubleValue( -globals->get_mag()->get_magvar() * SGD_RADIANS_TO_DEGREES ); + } _heading_in_node = fgGetNode("/orientation/heading-deg", true); _suction_node = fgGetNode(_suction.c_str(), true); _heading_out_node = node->getChild("indicated-heading-deg", 0, true); diff --git a/src/Instrumentation/heading_indicator_fg.cxx b/src/Instrumentation/heading_indicator_fg.cxx index dfa099c51..a485f5cdc 100644 --- a/src/Instrumentation/heading_indicator_fg.cxx +++ b/src/Instrumentation/heading_indicator_fg.cxx @@ -18,6 +18,8 @@ #include
#include
+#include + using std::string; HeadingIndicatorFG::HeadingIndicatorFG ( SGPropertyNode *node ) @@ -60,7 +62,10 @@ HeadingIndicatorFG::init () _heading_in_node = fgGetNode("/orientation/heading-deg", true); SGPropertyNode *node = fgGetNode(branch.c_str(), num, true ); - _offset_node = node->getChild("offset-deg", 0, true); + if( NULL == (_offset_node = node->getChild("offset-deg", 0, false)) ) { + _offset_node = node->getChild("offset-deg", 0, true); + _offset_node->setDoubleValue( -globals->get_mag()->get_magvar() * SGD_RADIANS_TO_DEGREES ); + } _serviceable_node = node->getChild("serviceable", 0, true); _error_node = node->getChild("heading-bug-error-deg", 0, true); _nav1_error_node = node->getChild("nav1-course-error-deg", 0, true); diff --git a/src/Main/main.cxx b/src/Main/main.cxx index b4948b259..6e70ff894 100644 --- a/src/Main/main.cxx +++ b/src/Main/main.cxx @@ -387,9 +387,6 @@ static void fgIdleFunction ( void ) { fgGetDouble("/position/altitude-ft") * SG_FEET_TO_METER, globals->get_time_params()->getJD() ); - double var = globals->get_mag()->get_magvar() * SGD_RADIANS_TO_DEGREES; - fgSetDouble("/instrumentation/heading-indicator/offset-deg", -var); - fgSetDouble("/instrumentation/heading-indicator-fg/offset-deg", -var); fgSplashProgress("initializing subsystems"); -- 2.39.5