+
+ SGPath path;
+ SGPropertyNode_ptr rootNode = new SGPropertyNode;
+ if (!XMLLoader::findAirportData(mRunway->airport()->ident(), "ils", path)) {
+ return;
+ }
+
+ readProperties(path.str(), rootNode);
+ SGPropertyNode* runwayNode, *ilsNode;
+ for (int i=0; (runwayNode = rootNode->getChild("runway", i)) != NULL; ++i) {
+ for (int j=0; (ilsNode = runwayNode->getChild("ils", j)) != NULL; ++j) {
+ // 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);
+ return;
+ }
+ } // of ILS iteration
+ } // of runway iteration
+}
+
+void FGNavRecord::processSceneryILS(SGPropertyNode* aILSNode)
+{
+ double hdgDeg = aILSNode->getDoubleValue("hdg-deg"),
+ lon = aILSNode->getDoubleValue("lon"),
+ lat = aILSNode->getDoubleValue("lat"),
+ elevM = aILSNode->getDoubleValue("elev-m");
+
+ mPosition = SGGeod::fromDegM(lon, lat, elevM);
+ multiuse = hdgDeg;