1
0
Fork 0

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:
Torsten Dreyer 2012-02-01 22:24:06 +01:00
parent 5c3b6a2cc4
commit 72483d565b
3 changed files with 11 additions and 5 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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");