X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInstrumentation%2Fheading_indicator_fg.cxx;h=32332a3e1a648a257cabee0e140e8eaef96909e3;hb=1867ccb4a8484b9bc856c88629e09e25bcc35d42;hp=406300f12f01b158fb1519cead55d11a6a2ad28d;hpb=9fa790bcac7e535bb06cd228ae15178f1b10b26f;p=flightgear.git diff --git a/src/Instrumentation/heading_indicator_fg.cxx b/src/Instrumentation/heading_indicator_fg.cxx index 406300f12..32332a3e1 100644 --- a/src/Instrumentation/heading_indicator_fg.cxx +++ b/src/Instrumentation/heading_indicator_fg.cxx @@ -14,7 +14,6 @@ #include #include -#include #include #include
@@ -61,22 +60,30 @@ HeadingIndicatorFG::init () string branch; branch = "/instrumentation/" + name; - _heading_in_node = fgGetNode("/orientation/heading-deg", true); + _heading_in_node = fgGetNode("/orientation/heading-deg", true); SGPropertyNode *node = fgGetNode(branch.c_str(), num, 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 ); + _offset_node->setDoubleValue( -fgGetDouble("/environment/magnetic-variation-deg") ); } _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); + _error_node = node->getChild("heading-bug-error-deg", 0, true); + _nav1_error_node = node->getChild("nav1-course-error-deg", 0, true); _heading_out_node = node->getChild("indicated-heading-deg", 0, true); _off_node = node->getChild("off-flag", 0, true); + _electrical_node = fgGetNode("/systems/electrical/outputs/DG", true); + + reinit(); +} + +void +HeadingIndicatorFG::reinit () +{ _last_heading_deg = (_heading_in_node->getDoubleValue() + _offset_node->getDoubleValue()); - _electrical_node = fgGetNode("/systems/electrical/outputs/DG", true); + _gyro.reinit(); } void @@ -91,7 +98,6 @@ HeadingIndicatorFG::bind () &_gyro, &Gyro::is_serviceable, &Gyro::set_serviceable); fgTie((branch + "/spin").c_str(), &_gyro, &Gyro::get_spin_norm, &Gyro::set_spin_norm); - } void @@ -154,7 +160,7 @@ HeadingIndicatorFG::update (double dt) // calculate the difference between the indicated heading // and the selected heading for use with an autopilot - static SGPropertyNode *bnode + SGPropertyNode *bnode = fgGetNode( "/autopilot/settings/heading-bug-deg", false ); double diff = 0; if ( bnode ){