+ // Test code: let my virtual co-pilot handle ATC:
+
+
+
+ FGAIFlightPlan *fp = ai_ac.GetFlightPlan();
+
+ /* test code : find out how the routing develops */
+ if (fp) {
+ int size = fp->getNrOfWayPoints();
+ //cerr << "Setting pos" << pos << " ";
+ //cerr << "setting intentions " ;
+ // This indicates that we have run out of waypoints: Im future versions, the
+ // user should be able to select a new route, but for now just shut down the
+ // system.
+ if (size < 3) {
+ //cerr << "Shutting down the atc_mgr" << endl;
+ return;
+ }
+ //cerr << "Size of waypoint cue " << size << " ";
+ //for (int i = 0; i < size; i++) {
+ // int val = fp->getRouteIndex(i);
+ //cerr << fp->getWayPoint(i)->getName() << " ";
+ //if ((val) && (val != pos)) {
+ //intentions.push_back(val);
+ //cerr << "[done ] " << endl;
+ //}
+ //}
+ //cerr << "[done ] " << endl;
+ }
+ if (fp) {
+ //cerr << "Currently at leg : " << fp->getLeg() << endl;
+ }
+ double longitude = fgGetDouble("/position/longitude-deg");
+ double latitude = fgGetDouble("/position/latitude-deg");
+ double heading = fgGetDouble("/orientation/heading-deg");
+ double speed = fgGetDouble("/velocities/groundspeed-kt");
+ double altitude = fgGetDouble("/position/altitude-ft");
+
+ /*
+ SGGeod me(SGGeod::fromDegM(longitude,
+ latitude,
+ altitude));
+ SGGeod wpt1(SGGeod::fromDegM(fp->getWayPoint(1)->getLongitude(),
+ fp->getWayPoint(1)->getLatitude(),
+ fp->getWayPoint(1)->getAltitude()));
+ SGGeod wpt2(SGGeod::fromDegM(fp->getWayPoint(1)->getLongitude(),
+ fp->getWayPoint(1)->getLatitude(),
+ fp->getWayPoint(1)->getAltitude()));
+
+ double course1, az1, dist1;
+ double course2, az2, dist2;
+ SGGeodesy::inverse(me, wpt1, course1, az1, dist1);
+
+ cerr << "Bearing to nearest waypoint : " << course1 << " " << dist1 << ". (course " << course2 << ")." << endl;
+ */
+ ai_ac.setLatitude(latitude);
+ ai_ac.setLongitude(longitude);
+ ai_ac.setAltitude(altitude);
+ ai_ac.setHeading(heading);
+ ai_ac.setSpeed(speed);
+ ai_ac.update(time);
+ controller = ai_ac.getATCController();
+ FGATCDialogNew::instance()->update(time);