X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAIAircraft.hxx;h=26ceb51207bbdf630c2592950a58a635a6ddc409;hb=b4fbde72b275dc75e8ecf7b44261aba642e5da0f;hp=d609ef92aa74cff62a7b780b27692579f385acc5;hpb=667e64e1ebc86a0c53112b92b53475898f315c36;p=flightgear.git diff --git a/src/AIModel/AIAircraft.hxx b/src/AIModel/AIAircraft.hxx index d609ef92a..26ceb5120 100644 --- a/src/AIModel/AIAircraft.hxx +++ b/src/AIModel/AIAircraft.hxx @@ -26,9 +26,9 @@ #include #include +#include #include -using std::string; class PerformanceData; @@ -53,6 +53,7 @@ public: 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); @@ -63,18 +64,26 @@ public: 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; }; @@ -83,7 +92,8 @@ public: 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); @@ -98,6 +108,8 @@ private: double dt_elev_count; double headingChangeRate; double headingError; + double minBearing; + double speedFraction; double groundTargetSpeed; double groundOffset; double dt; @@ -112,11 +124,14 @@ private: 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(); @@ -125,11 +140,13 @@ private: 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; @@ -139,7 +156,10 @@ private: bool _getGearDown() const; + const char * _getTransponderCode() const; + bool reachedWaypoint; + bool needsTaxiClearance; time_t timeElapsed; PerformanceData* _performance; // the performance data for this aircraft