isValid = create(ac, dep,arr, leg, alt, speed, lat, lon,
firstLeg, radius, fltType, acType, airline, dist);
wpt_iterator = waypoints.begin();
- //cerr << "after create: " << (*wpt_iterator)->name << endl;
- //leg++;
- // Now that we have dynamically created a flight plan,
- // we need to add some code that pops any waypoints already past.
- //return;
}
- /*
- waypoint* init_waypoint = new waypoint;
- init_waypoint->name = string("initial position");
- init_waypoint->latitude = entity->latitude;
- init_waypoint->longitude = entity->longitude;
- init_waypoint->altitude = entity->altitude;
- init_waypoint->speed = entity->speed;
- init_waypoint->crossat = - 10000;
- init_waypoint->gear_down = false;
- init_waypoint->flaps_down = false;
- init_waypoint->finished = false;
-
- wpt_vector_iterator i = waypoints.begin();
- while (i != waypoints.end())
- {
- //cerr << "Checking status of each waypoint: " << (*i)->name << endl;
- SGWayPoint first(init_waypoint->longitude,
- init_waypoint->latitude,
- init_waypoint->altitude);
- SGWayPoint curr ((*i)->longitude,
- (*i)->latitude,
- (*i)->altitude);
- double crse, crsDiff;
- double dist;
- curr.CourseAndDistance(first, &crse, &dist);
-
- dist *= SG_METER_TO_NM;
-
- // We're only interested in the absolute value of crsDiff
- // wich should fall in the 0-180 deg range.
- crsDiff = fabs(crse-course);
- if (crsDiff > 180)
- crsDiff = 360-crsDiff;
- // These are the three conditions that we consider including
- // in our flight plan:
- // 1) current waypoint is less then 100 miles away OR
- // 2) curren waypoint is ahead of us, at any distance
-
- if ((dist > 20.0) && (crsDiff > 90.0) && ((*i)->name != string ("EOF")))
- {
- //useWpt = false;
- // Once we start including waypoints, we have to continue, even though
- // one of the following way point would suffice.
- // so once is the useWpt flag is set to true, we cannot reset it to false.
- //cerr << "Discarding waypoint: " << (*i)->name
- // << ": Course difference = " << crsDiff
- // << "Course = " << course
- // << "crse = " << crse << endl;
- }
- else
- useCurrentWayPoint = true;
-
- if (useCurrentWayPoint)
- {
- if ((dist > 100.0) && (useInitialWayPoint))
- {
- //pushBackWaypoint(init_waypoint);;
- waypoints.insert(i, init_waypoint);
- //cerr << "Using waypoint : " << init_waypoint->name << endl;
- }
- //if (useInitialWayPoint)
- // {
- // (*i)->speed = dist; // A hack
- // }
- //pushBackWaypoint( wpt );
- //cerr << "Using waypoint : " << (*i)->name
- // << ": course diff : " << crsDiff
- // << "Course = " << course
- // << "crse = " << crse << endl
- // << "distance : " << dist << endl;
- useInitialWayPoint = false;
- i++;
- }
- else
- {
- //delete wpt;
- delete *(i);
- i = waypoints.erase(i);
- }
-
- }
- */
- //for (i = waypoints.begin(); i != waypoints.end(); i++)
- // cerr << "Using waypoint : " << (*i)->name << endl;
- //wpt_iterator = waypoints.begin();
- //cout << waypoints.size() << " waypoints read." << endl;
+
}
case 1:
retVal = createPushBack(ac, firstFlight, dep, latitude, longitude,
radius, fltType, aircraftType, airline);
- // Pregenerate the
- if (retVal) {
- waypoints.back()->setName( waypoints.back()->getName() + string("legend"));
- retVal = createTakeoffTaxi(ac, false, dep, radius, fltType, aircraftType, airline);
- }
+ // Pregenerate the taxi leg.
+ //if (retVal) {
+ // waypoints.back()->setName( waypoints.back()->getName() + string("legend"));
+ // retVal = createTakeoffTaxi(ac, false, dep, radius, fltType, aircraftType, airline);
+ //}
break;
case 2:
retVal = createTakeoffTaxi(ac, firstFlight, dep, radius, fltType,
if (intentions.size()) {
intVecIterator i = intentions.begin();
if ((*i) != pos) {
- SG_LOG(SG_ATC, SG_INFO,
- "Skipping repeated intention in FGTrafficRecord::setPositionAndIntentions at " << SG_ORIGIN);
- } else {
- intentions.erase(i);
+ SG_LOG(SG_ATC, SG_ALERT,
+ "Error in FGTrafficRecord::setPositionAndIntentions at " << SG_ORIGIN);
}
+ intentions.erase(i);
} else {
//FGAIFlightPlan::waypoint* const wpt= route->getCurrentWaypoint();
int size = route->getNrOfWayPoints();
//cerr << "Setting pos" << pos << " ";
//cerr << "setting intentions ";
- for (int i = 0; i < size; i++) {
+ for (int i = 2; i < size; i++) {
int val = route->getRouteIndex(i);
- //cerr << val<< " ";
- if ((val) && (val != pos)) { // NOTE THAAT THERES A PROBLEM WITH REPEATED INTENSIONS HERE.
- intentions.push_back(val);
- //cerr << "[set] ";
- }
+ intentions.push_back(val);
}
}
}
aircraft->setLatitude(position.getLatitudeDeg());
aircraft->setLongitude(position.getLongitudeDeg());
aircraft->setAltitude(flight->getCruiseAlt()*100); // convert from FL to feet
- aircraft->setSpeed(speedKnots);
+ aircraft->setSpeed(0);
aircraft->setBank(0);
courseToDest = SGGeodesy::courseDeg(position, arr->geod());
if (!flight) {
break;
}
- //if (startingPort.empty()) {
- // startingPort = flight->getDepartureAirport()->getId();
- //}
currentDestination = flight->getArrivalAirport()->getId();
//cerr << "Current destination " << currentDestination << endl;
if (!initialized) {
string departurePort = flight->getDepartureAirport()->getId();
- //cerr << "Scheduled " << registration << " " << score << " for Flight "
- // << flight-> getCallSign() << " from " << departurePort << " to " << currentDestination << endl;
if (userPort == departurePort) {
lastRun = 1;
hits++;