#include "AIManager.hxx"
#include "AIBase.hxx"
+#include <Traffic/SchedFlight.hxx>
+#include <Traffic/Schedule.hxx>
+
#include <string>
SG_USING_STD(string);
} 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();
+ virtual void bind();
+ virtual void unbind();
void update(double dt);
void SetPerformance(const PERF_STRUCT *ps);
+ void SetFlightPlan(FGAIFlightPlan *f);
+ FGAIFlightPlan* GetFlightPlan() const { 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);
-
-private:
+ void ProcessFlightPlan( double dt, time_t now );
+ void getGroundElev(double dt);
+ void loadNextLeg ();
+
+ 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);
+
+ string acType;
+ string company;
+ int spinCounter;
+ double prevSpeed;
+ double prev_dist_to_go;
+
+ bool _getGearDown() const;
+ bool reachedWaypoint;
};
+
#endif // _FG_AIAircraft_HXX