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:
parent
b9b2d9386c
commit
17fececa9f
3 changed files with 15 additions and 1 deletions
|
@ -165,7 +165,12 @@ void FGAIAircraft::setPerformance(const std::string& acclass) {
|
||||||
handleATCRequests(); // ATC also has a word to say
|
handleATCRequests(); // ATC also has a word to say
|
||||||
updateSecondaryTargetValues(); // target roll, vertical speed, pitch
|
updateSecondaryTargetValues(); // target roll, vertical speed, pitch
|
||||||
updateActualState();
|
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();
|
checkVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
// FGAIAircraft - AIBase derived class creates an AI aircraft
|
// FGAIAircraft - AIBase derived class creates an AI aircraft
|
||||||
//
|
//
|
||||||
// Written by David Culp, started October 2003.
|
// Written by David Culp, started October 2003.
|
||||||
|
|
|
@ -149,6 +149,7 @@ void FGATCManager::init() {
|
||||||
|
|
||||||
|
|
||||||
fp->restart();
|
fp->restart();
|
||||||
|
fp->setLeg(leg);
|
||||||
ai_ac.SetFlightPlan(fp);
|
ai_ac.SetFlightPlan(fp);
|
||||||
if (controller) {
|
if (controller) {
|
||||||
controller->announcePosition(ai_ac.getID(), fp, fp->getCurrentWaypoint()->routeIndex,
|
controller->announcePosition(ai_ac.getID(), fp, fp->getCurrentWaypoint()->routeIndex,
|
||||||
|
@ -186,6 +187,13 @@ void FGATCManager::update ( double time ) {
|
||||||
altitude, time);
|
altitude, time);
|
||||||
//string airport = fgGetString("/sim/presets/airport-id");
|
//string airport = fgGetString("/sim/presets/airport-id");
|
||||||
//FGAirport *apt = FGAirport::findByIdent(airport);
|
//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();
|
controller->render();
|
||||||
//cerr << "Adding groundnetWork to the scenegraph::update" << endl;
|
//cerr << "Adding groundnetWork to the scenegraph::update" << endl;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue