#include <Traffic/SchedFlight.hxx>
#include <Traffic/Schedule.hxx>
+#include <ATC/trafficcontrol.hxx>
#include <string>
-using std::string;
class PerformanceData;
void initializeFlightPlan();
FGAIFlightPlan* GetFlightPlan() const { return fp; };
void ProcessFlightPlan( double dt, time_t now );
+ time_t checkForArrivalTime(string wptName);
void AccelTo(double speed);
void PitchTo(double angle);
void getGroundElev(double dt); //TODO these 3 really need to be public?
void doGroundAltitude();
- void loadNextLeg ();
+ bool loadNextLeg (double dist=0);
+ void resetPositionFromFlightPlan();
+ double getBearing(double crse);
- void setAcType(const string& ac) { acType = ac; };
- void setCompany(const string& comp) { company = comp;};
+ void setAcType(const std::string& ac) { acType = ac; };
+ void setCompany(const std::string& comp) { company = comp;};
void announcePositionToController(); //TODO have to be public?
void processATC(FGATCInstruction instruction);
+ void setTaxiClearanceRequest(bool arg) { needsTaxiClearance = arg; };
+ bool getTaxiClearanceRequest() { return needsTaxiClearance; };
FGAISchedule * getTrafficRef() { return trafficRef; };
virtual const char* getTypeString(void) const { return "aircraft"; }
+ std::string GetTransponderCode() { return transponderCode; };
+ void SetTransponderCode(const std::string& tc) { transponderCode = tc;};
+
// included as performance data needs them, who else?
+ inline PerformanceData* getPerformance() { return _performance; };
inline bool onGround() const { return no_roll; };
inline double getSpeed() const { return speed; };
inline double getRoll() const { return roll; };
inline double getVerticalSpeed() const { return vs; };
inline double altitudeAGL() const { return props->getFloatValue("position/altitude-agl-ft");};
inline double airspeed() const { return props->getFloatValue("velocities/airspeed-kt");};
- string atGate();
+ std::string atGate();
+
protected:
void Run(double dt);
double dt_elev_count;
double headingChangeRate;
double headingError;
+ double minBearing;
+ double speedFraction;
double groundTargetSpeed;
double groundOffset;
double dt;
void handleFirstWaypoint(void);
bool leadPointReached(FGAIFlightPlan::waypoint* curr);
bool handleAirportEndPoints(FGAIFlightPlan::waypoint* prev, time_t now);
+ bool reachedEndOfCruise(double&);
bool aiTrafficVisible(void);
void controlHeading(FGAIFlightPlan::waypoint* curr);
void controlSpeed(FGAIFlightPlan::waypoint* curr,
FGAIFlightPlan::waypoint* next);
- void updatePrimaryTargetValues();
+
+ void updatePrimaryTargetValues(bool& flightplanActive, bool& aiOutOfSight);
+
void updateSecondaryTargetValues();
void updatePosition();
void updateHeading();
void updatePitchAngleTarget();
void updateActualState();
void handleATCRequests();
+ void checkVisibility();
double sign(double x);
- string acType;
- string company;
+ std::string acType;
+ std::string company;
+ std::string transponderCode;
int spinCounter;
double prevSpeed;
bool _getGearDown() const;
+ const char * _getTransponderCode() const;
+
bool reachedWaypoint;
+ bool needsTaxiClearance;
time_t timeElapsed;
PerformanceData* _performance; // the performance data for this aircraft