class FGAIAircraft : public FGAIBase {
+
+private:
+
+ typedef struct {
+ double accel;
+ double decel;
+ double climb_rate;
+ double descent_rate;
+ double takeoff_speed;
+ double climb_speed;
+ double cruise_speed;
+ double descent_speed;
+ double land_speed;
+ } PERF_STRUCT;
public:
+
+ enum aircraft_e {LIGHT=0, WW2_FIGHTER, JET_TRANSPORT, JET_FIGHTER, TANKER};
+ static const PERF_STRUCT settings[];
- FGAIAircraft();
+ FGAIAircraft(FGAIManager* mgr);
~FGAIAircraft();
bool init();
+ virtual void bind();
+ virtual void unbind();
void update(double dt);
- void SetPerformance(PERF_STRUCT ps);
+ void SetPerformance(const PERF_STRUCT *ps);
+ void SetFlightPlan(FGAIFlightPlan *f);
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 );
+
+ inline void SetTanker(bool setting) { isTanker = setting; };
+
private:
bool hdg_lock;
bool alt_lock;
-
+ double dt_count;
double dt;
- PERF_STRUCT performance;
+ const PERF_STRUCT *performance;
+ bool use_perf_vs;
+ SGPropertyNode* refuel_node;
+ bool isTanker;
void Run(double dt);
double sign(double x);
+
+ bool _getGearDown() const;
};
+
#endif // _FG_AIAircraft_HXX