- // cout << path.str() << endl;
- // cout << "Trying to create this plan dynamically" << endl;
- // cout << "Route from " << dep->id << " to " << arr->id << endl;
- time_t now = time(NULL) + fgGetLong("/sim/time/warp");
- time_t timeDiff = now-start;
- leg = 1;
-
- if ((timeDiff > 60) && (timeDiff < 1200))
- leg = 2;
- else if ((timeDiff >= 1200) && (timeDiff < 1500))
- leg = 3;
- else if ((timeDiff >= 1500) && (timeDiff < 2000))
- leg = 4;
- else if (timeDiff >= 2000)
- leg = 5;
- /*
- if (timeDiff >= 2000)
- leg = 5;
- */
- SG_LOG(SG_GENERAL, SG_INFO, "Route from " << dep->getId() << " to " << arr->getId() << ". Set leg to : " << leg << " " << ac->getTrafficRef()->getCallSign());
- wpt_iterator = waypoints.begin();
- bool dist = 0;
- 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))
- {
- //waypoints.push_back(init_waypoint);;
- waypoints.insert(i, init_waypoint);
- //cerr << "Using waypoint : " << init_waypoint->name << endl;
- }
- //if (useInitialWayPoint)
- // {
- // (*i)->speed = dist; // A hack
- // }
- //waypoints.push_back( 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;