1
0
Fork 0

Some more work on AI/ATC user interaction integration:

* Update AI aircraft object based on user position.
* Process flightplan
* Don't try to update the radar information for AIAircraft that don't have a valid manager pointer
This commit is contained in:
Durk Talsma 2011-04-29 20:44:05 +02:00
parent b9b2d9386c
commit 17fececa9f
3 changed files with 15 additions and 1 deletions

View file

@ -165,7 +165,12 @@ void FGAIAircraft::setPerformance(const std::string& acclass) {
handleATCRequests(); // ATC also has a word to say
updateSecondaryTargetValues(); // target roll, vertical speed, pitch
updateActualState();
UpdateRadar(manager);
// We currently have one situation in which an AIAircraft object is used that is not attached to the
// AI manager. In this particular case, the AIAircraft is used to shadow the user's aircraft's behavior in the AI world.
// Since we perhaps don't want a radar entry of our own aircraft, the following conditional should probably be adequate
// enough
if (manager)
UpdateRadar(manager);
checkVisibility();
}

View file

@ -1,3 +1,4 @@
// FGAIAircraft - AIBase derived class creates an AI aircraft
//
// Written by David Culp, started October 2003.

View file

@ -149,6 +149,7 @@ void FGATCManager::init() {
fp->restart();
fp->setLeg(leg);
ai_ac.SetFlightPlan(fp);
if (controller) {
controller->announcePosition(ai_ac.getID(), fp, fp->getCurrentWaypoint()->routeIndex,
@ -186,6 +187,13 @@ void FGATCManager::update ( double time ) {
altitude, time);
//string airport = fgGetString("/sim/presets/airport-id");
//FGAirport *apt = FGAirport::findByIdent(airport);
// AT this stage we should update the flightplan, so that waypoint incrementing is conducted as well as leg loading.
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->render();
//cerr << "Adding groundnetWork to the scenegraph::update" << endl;
}