X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FAIModel%2FAIAircraft.hxx;h=022572563bdc9fc641b989e1880ee225c92ae738;hb=1c3e2d4942fe74dac43f1f6af542f9de7d4825db;hp=4048deb9e3a8252cc092407a461136774301c967;hpb=009fa7371d609ce31be3a754a30312c71414c79e;p=flightgear.git diff --git a/src/AIModel/AIAircraft.hxx b/src/AIModel/AIAircraft.hxx index 4048deb9e..022572563 100644 --- a/src/AIModel/AIAircraft.hxx +++ b/src/AIModel/AIAircraft.hxx @@ -23,7 +23,9 @@ #include "AIManager.hxx" #include "AIBase.hxx" -#include "AIFlightPlan.hxx" + +#include +#include #include SG_USING_STD(string); @@ -46,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(FGAIManager* mgr); + FGAIAircraft(FGAIManager* mgr, FGAISchedule *ref=0); ~FGAIAircraft(); bool init(); @@ -60,40 +61,52 @@ public: 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 ); - //double getHeading(double lat1, double lon1, double lat2, double lon2); + 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; - FGAIFlightPlan *fp; 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("/velocities/airspeed-kt") - < _self->performance->land_speed*1.5)); -} - #endif // _FG_AIAircraft_HXX