1
0
Fork 0

More precise matching of ILS records to navaids.

This commit is contained in:
jmt 2009-08-31 23:11:23 +00:00 committed by Tim Moore
parent 98b5e7e6fe
commit 25c55f67bf

View file

@ -135,7 +135,11 @@ void FGNavRecord::readAirportSceneryData()
SGPropertyNode* runwayNode, *ilsNode; SGPropertyNode* runwayNode, *ilsNode;
for (int i=0; (runwayNode = rootNode->getChild("runway", i)) != NULL; ++i) { for (int i=0; (runwayNode = rootNode->getChild("runway", i)) != NULL; ++i) {
for (int j=0; (ilsNode = runwayNode->getChild("ils", j)) != NULL; ++j) { for (int j=0; (ilsNode = runwayNode->getChild("ils", j)) != NULL; ++j) {
if (ilsNode->getStringValue("nav-id") == ident()) { // must match on both nav-ident and runway ident, to support the following:
// - runways with multiple distinct ILS installations (KEWD, for example)
// - runways where both ends share the same nav ident (LFAT, for example)
if ((ilsNode->getStringValue("nav-id") == ident()) &&
(ilsNode->getStringValue("rwy") == mRunway->ident())) {
processSceneryILS(ilsNode); processSceneryILS(ilsNode);
return; return;
} }
@ -145,7 +149,6 @@ void FGNavRecord::readAirportSceneryData()
void FGNavRecord::processSceneryILS(SGPropertyNode* aILSNode) void FGNavRecord::processSceneryILS(SGPropertyNode* aILSNode)
{ {
assert(aILSNode->getStringValue("rwy") == mRunway->ident());
double hdgDeg = aILSNode->getDoubleValue("hdg-deg"), double hdgDeg = aILSNode->getDoubleValue("hdg-deg"),
lon = aILSNode->getDoubleValue("lon"), lon = aILSNode->getDoubleValue("lon"),
lat = aILSNode->getDoubleValue("lat"), lat = aILSNode->getDoubleValue("lat"),