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).
This commit is contained in:
parent
5c3b6a2cc4
commit
72483d565b
3 changed files with 11 additions and 5 deletions
|
@ -17,6 +17,7 @@
|
|||
#include <Main/fg_props.hxx>
|
||||
#include <Main/util.hxx>
|
||||
|
||||
#include <simgear/magvar/magvar.hxx>
|
||||
|
||||
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);
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
#include <Main/fg_props.hxx>
|
||||
#include <Main/util.hxx>
|
||||
|
||||
#include <simgear/magvar/magvar.hxx>
|
||||
|
||||
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);
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue