From: Torsten Dreyer Date: Wed, 1 Feb 2012 21:24:06 +0000 (+0100) Subject: initialize the heading-indicator/offset-deg in it's class X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=72483d565bfcfde43e63290b49aa8c33900d6d1c;p=flightgear.git 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). --- 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");