X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAIAircraft.hxx;h=022572563bdc9fc641b989e1880ee225c92ae738;hb=1c3e2d4942fe74dac43f1f6af542f9de7d4825db;hp=8d16f381e57136aa1134af72c1dad05750d40c30;hpb=863b0c943251fae620406ec8983e5f69e1424731;p=flightgear.git diff --git a/src/AIModel/AIAircraft.hxx b/src/AIModel/AIAircraft.hxx index 8d16f381e..022572563 100644 --- a/src/AIModel/AIAircraft.hxx +++ b/src/AIModel/AIAircraft.hxx @@ -24,6 +24,9 @@ #include "AIManager.hxx" #include "AIBase.hxx" +#include +#include + #include SG_USING_STD(string); @@ -45,11 +48,10 @@ private: } PERF_STRUCT; public: - - enum aircraft_e {LIGHT=0, WW2_FIGHTER, JET_TRANSPORT, JET_FIGHTER}; + enum aircraft_e {LIGHT=0, WW2_FIGHTER, JET_TRANSPORT, JET_FIGHTER, TANKER}; static const PERF_STRUCT settings[]; - FGAIAircraft(); + FGAIAircraft(FGAIManager* mgr, FGAISchedule *ref=0); ~FGAIAircraft(); bool init(); @@ -58,37 +60,53 @@ public: void update(double dt); void SetPerformance(const PERF_STRUCT *ps); + void SetFlightPlan(FGAIFlightPlan *f); + FGAIFlightPlan* GetFlightPlan() { return fp; }; void AccelTo(double speed); void PitchTo(double angle); void RollTo(double angle); void YawTo(double angle); void ClimbTo(double altitude); void TurnTo(double heading); + void ProcessFlightPlan( double dt, time_t now ); + void getGroundElev(double dt); + void loadNextLeg (); -protected: - static FGAIAircraft *_self; - -private: + void setAcType(string ac) { acType = ac; }; + void setCompany(string comp) { company = comp;}; + //void setSchedule(FGAISchedule *ref) { trafficRef = ref;}; + + inline void SetTanker(bool setting) { isTanker = setting; }; +private: + FGAISchedule *trafficRef; + bool hdg_lock; bool alt_lock; - + double dt_count; + double dt_elev_count; + double headingChangeRate; + double groundTargetSpeed; + double groundOffset; double dt; const PERF_STRUCT *performance; + bool use_perf_vs; + SGPropertyNode* refuel_node; + bool isTanker; void Run(double dt); double sign(double x); - - static bool _getGearDown(); + + string acType; + string company; + int spinCounter; + double prevSpeed; + double prev_dist_to_go; + + bool _getGearDown() const; + bool reachedWaypoint; }; -inline bool FGAIAircraft::_getGearDown() { - return ((fgGetFloat("/position/altitude-agl-ft") < 150.0) - && (fgGetFloat("/orientation/pitch-deg") < 0.0) - && (fgGetFloat("/velocities/airspeed-kt") - < _self->performance->land_speed*1.5)); -} - #endif // _FG_AIAircraft_HXX