X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAIAircraft.hxx;h=3ad8b8a67130db4a779e2e0ef76b2dbb817cc3e4;hb=9d995907db00728da7eac9297ecbab93ed8a7400;hp=73e98aeb3c9db2d9a2fd4fe968d510ad4e649798;hpb=7d547d128702a643c40b54809e2b4e1a38c4a16d;p=flightgear.git diff --git a/src/AIModel/AIAircraft.hxx b/src/AIModel/AIAircraft.hxx index 73e98aeb3..3ad8b8a67 100644 --- a/src/AIModel/AIAircraft.hxx +++ b/src/AIModel/AIAircraft.hxx @@ -52,7 +52,7 @@ public: void initializeFlightPlan(); FGAIFlightPlan* GetFlightPlan() const { return fp; }; void ProcessFlightPlan( double dt, time_t now ); - time_t checkForArrivalTime(string wptName); + time_t checkForArrivalTime(const std::string& wptName); void AccelTo(double speed); void PitchTo(double angle); @@ -68,12 +68,12 @@ public: double getBearing(double crse); void setAcType(const std::string& ac) { acType = ac; }; - std::string getAcType() const { return acType; } + const std::string& getAcType() const { return acType; } void setCompany(const std::string& comp) { company = comp;}; void announcePositionToController(); //TODO have to be public? - void processATC(FGATCInstruction instruction); + void processATC(const FGATCInstruction& instruction); void setTaxiClearanceRequest(bool arg) { needsTaxiClearance = arg; }; bool getTaxiClearanceRequest() { return needsTaxiClearance; }; FGAISchedule * getTrafficRef() { return trafficRef; }; @@ -86,7 +86,7 @@ public: virtual const char* getTypeString(void) const { return "aircraft"; } - std::string GetTransponderCode() { return transponderCode; }; + const std::string& GetTransponderCode() { return transponderCode; }; void SetTransponderCode(const std::string& tc) { transponderCode = tc;}; // included as performance data needs them, who else? @@ -99,7 +99,7 @@ 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");}; - std::string atGate(); + const std::string& atGate(); int getTakeOffStatus() { return takeOffStatus; }; @@ -148,14 +148,13 @@ private: void updatePrimaryTargetValues(bool& flightplanActive, bool& aiOutOfSight); void updateSecondaryTargetValues(); - void updatePosition(); void updateHeading(); void updateBankAngleTarget(); void updateVerticalSpeedTarget(); void updatePitchAngleTarget(); 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;} @@ -172,11 +171,8 @@ private: bool holdPos; - bool _getGearDown() const; - 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. @@ -185,6 +181,13 @@ private: PerformanceData* _performance; // the performance data for this aircraft void assertSpeed(double speed); + + struct + { + double remainingLength; + std::string startWptName; + std::string finalWptName; + } trackCache; };