#ifndef _FG_AIAircraft_HXX
#define _FG_AIAircraft_HXX
-#include "AIManager.hxx"
#include "AIBase.hxx"
-#include <Traffic/SchedFlight.hxx>
-#include <Traffic/Schedule.hxx>
-#include <ATC/trafficcontrol.hxx>
-
#include <string>
class PerformanceData;
+class FGAISchedule;
+class FGAIFlightPlan;
+class FGATCController;
+class FGATCInstruction;
+class FGAIWaypoint;
class FGAIAircraft : public FGAIBase {
// virtual bool init(bool search_in_AI_path=false);
virtual void bind();
virtual void update(double dt);
+ virtual void unbind();
void setPerformance(const std::string& acType, const std::string& perfString);
// void setPerformance(PerformanceData *ps);
FGATCController * getATCController() { return controller; };
+ void clearATCController();
protected:
void Run(double dt);
private:
FGAISchedule *trafficRef;
- FGATCController *controller,
+ FGATCController *controller,
*prevController,
*towerController; // Only needed to make a pre-announcement
void updateActualState();
void updateModelProperties(double dt);
void handleATCRequests();
- void checkVisibility();
inline bool isStationary() { return ((fabs(speed)<=0.0001)&&(fabs(tgt_speed)<=0.0001));}
inline bool needGroundElevation() { if (!isStationary()) _needsGroundElevation=true;return _needsGroundElevation;}
const char * _getTransponderCode() const;
- bool reachedWaypoint;
bool needsTaxiClearance;
bool _needsGroundElevation;
int takeOffStatus; // 1 = joined departure cue; 2 = Passed DepartureHold waypoint; handover control to tower; 0 = any other state.