} else if ( heading_mode == FG_HEADING_NAV1 ) {
double tgt_radial;
double cur_radial;
- tgt_radial = current_radiostack->get_nav1_radial()
- + FGBFI::getMagVar();
+ if ( current_radiostack->get_nav1_loc() ) {
+ // localizers radials are "true"
+ tgt_radial = current_radiostack->get_nav1_radial();
+ } else {
+ tgt_radial = current_radiostack->get_nav1_radial()
+ + FGBFI::getMagVar();
+ }
cur_radial = current_radiostack->get_nav1_heading();
cout << "target rad (true) = " << tgt_radial
<< " current rad (true) = " << cur_radial
double r;
if ( current_radiostack->get_nav1_inrange() ) {
- r = current_radiostack->get_nav1_heading() - FGBFI::getMagVar()
- - current_radiostack->get_nav1_radial();
+ if ( current_radiostack->get_nav1_loc() ) {
+ // localizer doesn't need magvar offset
+ r = current_radiostack->get_nav1_heading()
+ - current_radiostack->get_nav1_radial();
+ } else {
+ r = current_radiostack->get_nav1_heading() - FGBFI::getMagVar()
+ - current_radiostack->get_nav1_radial();
+ }
// cout << "Radial = " << current_radiostack->get_nav1_radial()
// << " Bearing = " << current_radiostack->get_nav1_heading()
// << endl;
double r;
if ( current_radiostack->get_nav2_inrange() ) {
- r = current_radiostack->get_nav2_heading() - FGBFI::getMagVar()
- - current_radiostack->get_nav2_radial();
+ if ( current_radiostack->get_nav2_loc() ) {
+ // localizer doesn't need magvar offset
+ r = current_radiostack->get_nav2_heading()
+ - current_radiostack->get_nav2_radial();
+ } else {
+ r = current_radiostack->get_nav2_heading() - FGBFI::getMagVar()
+ - current_radiostack->get_nav2_radial();
+ }
// cout << "Radial = " << current_radiostack->get_nav1_radial()
// << " Bearing = " << current_radiostack->get_nav1_heading() << endl;