X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCockpit%2Fdme.cxx;h=ed3615298d7f789b2ab3bd18e88024f51da52ac5;hb=fee003e8cc17f0aa9a1e9280dd823d20e231e967;hp=4c965e7093505ee820f9aac519b3f3c5f6c90c5a;hpb=78155104e8ab63d654bdac0ad1003d16c0c83910;p=flightgear.git diff --git a/src/Cockpit/dme.cxx b/src/Cockpit/dme.cxx index 4c965e709..ed3615298 100644 --- a/src/Cockpit/dme.cxx +++ b/src/Cockpit/dme.cxx @@ -2,7 +2,7 @@ // // Written by Curtis Olson, started April 2000. // -// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -31,8 +31,6 @@ #include #include -#include -#include #include #include "dme.hxx" @@ -80,6 +78,7 @@ FGDME::FGDME() : navcom2_freq(fgGetNode("/radios/nav[1]/frequencies/selected-mhz", true)), need_update(true), freq(0.0), + bias(0.0), dist(0.0), prev_dist(0.0), spd(0.0), @@ -161,6 +160,11 @@ FGDME::update(double dt) SGTimeStamp current_time; station = Point3D( x, y, z ); dist = aircraft.distance3D( station ) * SG_METER_TO_NM; + dist -= bias; + if ( dist < 0.0 ) { + dist = 0.0; + } + current_time.stamp(); long dMs = (current_time - last_time) / 1000; // Update every second @@ -218,33 +222,20 @@ void FGDME::search() inrange = false; } - FGILS *ils; - FGNav *nav; - - if ( (ils = current_ilslist->findByFreq( freq, lon, lat, elev )) != NULL ) { - if ( ils->get_has_dme() ) { - valid = true; - lon = ils->get_loclon(); - lat = ils->get_loclat(); - elev = ils->get_gselev(); - range = FG_ILS_DEFAULT_RANGE; - effective_range = kludgeRange(elev, elev, range); - x = ils->get_dme_x(); - y = ils->get_dme_y(); - z = ils->get_dme_z(); - } - } else if ( (nav = current_navlist->findByFreq(freq, lon, lat, elev)) != NULL ) { - if (nav->get_has_dme()) { - valid = true; - lon = nav->get_lon(); - lat = nav->get_lat(); - elev = nav->get_elev_ft(); - range = nav->get_range(); - effective_range = kludgeRange(elev, elev, range); - x = nav->get_x(); - y = nav->get_y(); - z = nav->get_z(); - } + FGNavRecord *dme + = globals->get_dmelist()->findByFreq( freq, lon, lat, elev ); + + if ( dme != NULL ) { + valid = true; + lon = dme->get_lon(); + lat = dme->get_lat(); + elev = dme->get_elev_ft(); + bias = dme->get_multiuse(); + range = FG_LOC_DEFAULT_RANGE; + effective_range = kludgeRange(elev, elev, range); + x = dme->get_x(); + y = dme->get_y(); + z = dme->get_z(); } else { valid = false; dist = 0;