]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIAircraft.cxx
Interim windows build fix
[flightgear.git] / src / AIModel / AIAircraft.cxx
index 5e803ef5e159b81e6c3934a73c060f13ab96a16a..285c3fee80f6efe85c3288ac85ae12db8dec696a 100644 (file)
@@ -29,6 +29,7 @@
 #include <Airports/dynamics.hxx>
 #include <Airports/airport.hxx>
 #include <Main/util.hxx>
+#include <Traffic/Schedule.hxx>
 
 #include <simgear/structure/exception.hxx>
 
@@ -39,7 +40,9 @@
 // defined in AIShip.cxx
 extern double fgIsFinite(double x);
 
+#include "AIManager.hxx"
 #include "AIAircraft.hxx"
+#include "AIFlightPlan.hxx"
 #include "performancedata.hxx"
 #include "performancedb.hxx"
 #include <signal.h>
@@ -133,6 +136,12 @@ void FGAIAircraft::update(double dt) {
     Transform();
 }
 
+void FGAIAircraft::unbind()
+{
+    FGAIBase::unbind();
+    clearATCController();
+}
+
 void FGAIAircraft::setPerformance(const std::string& acType, const std::string& acclass)
 {
   static PerformanceDB perfdb; //TODO make it a global service
@@ -408,6 +417,13 @@ double FGAIAircraft::calcVerticalSpeed(double vert_ft, double dist_m, double spe
     return vs;
 }
 
+void FGAIAircraft::clearATCController()
+{
+    controller = 0;
+    prevController = 0;
+    towerController = 0;
+}
+
 void FGAIAircraft::assertSpeed(double speed)
 {
     if ((speed < -50) || (speed > 1000)) {
@@ -581,8 +597,8 @@ void FGAIAircraft::announcePositionToController() {
             controller = trafficRef->getDepartureAirport()->getDynamics()->getStartupController();
         break;
     case 2:              // Taxiing to runway
-        if (trafficRef->getDepartureAirport()->getDynamics()->getGroundNetwork()->exists())
-            controller = trafficRef->getDepartureAirport()->getDynamics()->getGroundNetwork();
+        if (trafficRef->getDepartureAirport()->getDynamics()->getGroundController()->exists())
+            controller = trafficRef->getDepartureAirport()->getDynamics()->getGroundController();
         break;
     case 3:              //Take off tower controller
         if (trafficRef->getDepartureAirport()->getDynamics()) {
@@ -593,13 +609,13 @@ void FGAIAircraft::announcePositionToController() {
         }
         break;
     case 6:
-         if (trafficRef->getDepartureAirport()->getDynamics()) {
+         if (trafficRef->getArrivalAirport()->getDynamics()) {
              controller = trafficRef->getArrivalAirport()->getDynamics()->getApproachController();
           }
           break;
     case 8:              // Taxiing for parking
-        if (trafficRef->getArrivalAirport()->getDynamics()->getGroundNetwork()->exists())
-            controller = trafficRef->getArrivalAirport()->getDynamics()->getGroundNetwork();
+        if (trafficRef->getArrivalAirport()->getDynamics()->getGroundController()->exists())
+            controller = trafficRef->getArrivalAirport()->getDynamics()->getGroundController();
         break;
     default:
         controller = 0;