//
// This file is in the Public Domain and comes with no warranty.
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <simgear/compiler.h>
#include <iostream>
#include <string>
#include <sstream>
-#include "heading_indicator_fg.hxx"
+#include <simgear/magvar/magvar.hxx>
+#include <simgear/math/SGMath.hxx>
+
#include <Main/fg_props.hxx>
-#include <Main/util.hxx>
+#include <Main/util.hxx>
+#include "heading_indicator_fg.hxx"
+
+using std::string;
HeadingIndicatorFG::HeadingIndicatorFG ( SGPropertyNode *node )
:
_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);
// Next, calculate the indicated heading,
// introducing errors.
- double factor = 0.1 / (spin * spin * spin * spin * spin * spin);
+ double factor = 100 * (spin * spin * spin * spin * spin * spin);
double heading = _heading_in_node->getDoubleValue();
// Now, we have to get the current