FGAIBase(object_type ot);
virtual ~FGAIBase();
- inline const Point3D& GetPos() const { return(pos); }
virtual void readFromScenario(SGPropertyNode* scFileNode);
virtual void bind();
virtual void unbind();
- void setManager(FGAIManager* mgr);
+ void setManager(FGAIManager* mgr, SGPropertyNode* p);
void setPath( const char* model );
void setSpeed( double speed_KTAS );
void setAltitude( double altitude_ft );
FGAIManager* manager;
// these describe the model's actual state
- Point3D pos; // WGS84 lat & lon in degrees, elev above sea-level in meters
+ SGGeod pos; // WGS84 lat & lon in degrees, elev above sea-level in meters
double hdg; // True heading in degrees
double roll; // degrees, left is negative
double pitch; // degrees, nose-down is negative
double speed; // knots true airspeed
- double altitude; // meters above sea level
- double vs; // vertical speed, feet per minute
+ double altitude_ft; // feet above sea level
+ double vs; // vertical speed, feet per minute
double turn_radius_ft; // turn radius ft at 15 kts rudder angle 15 degrees
double ft_per_deg_lon;
double ft_per_deg_lat;
// these describe the model's desired state
- double tgt_heading; // target heading, degrees true
- double tgt_altitude; // target altitude, *feet* above sea level
- double tgt_speed; // target speed, KTAS
+ double tgt_heading; // target heading, degrees true
+ double tgt_altitude_ft; // target altitude, *feet* above sea level
+ double tgt_speed; // target speed, KTAS
double tgt_roll;
double tgt_pitch;
double tgt_yaw;
double x_shift; // value used by radar display instrument
double y_shift; // value used by radar display instrument
double rotation; // value used by radar display instrument
-
+ double ht_diff; // value used by radar display instrument
string model_path; //Path to the 3D model
ssgSharedPtr<ssgBranch> model; //The 3D model object
double rho;
double T; // temperature, degs farenheit
double p; // pressure lbs/sq ft
- double a; // speed of sound at altitude (ft/s)
- double Mach; // Mach number
-
+ double a; // speed of sound at altitude (ft/s)
+ double Mach; // Mach number
+
static const double e;
static const double lbs_to_slugs;
inline double _getRange() { return range; };
- ssgBranch * load3DModel(const string& fg_root,
- const string &path,
- SGPropertyNode *prop_root,
- double sim_time_sec);
+ ssgBranch * load3DModel(const string& fg_root,
+ const string &path,
+ SGPropertyNode *prop_root,
+ double sim_time_sec);
static bool _isNight();
};
-inline void FGAIBase::setManager(FGAIManager* mgr) {
- manager = mgr;
+inline void FGAIBase::setManager(FGAIManager* mgr, SGPropertyNode* p) {
+ manager = mgr;
+ props = p;
}
inline void FGAIBase::setPath(const char* model ) {
- model_path.append(model);
+ model_path.append(model);
}
inline void FGAIBase::setSpeed( double speed_KTAS ) {
- speed = tgt_speed = speed_KTAS;
+ speed = tgt_speed = speed_KTAS;
}
inline void FGAIBase::setRadius( double radius ) {
- turn_radius_ft = radius;
+ turn_radius_ft = radius;
}
inline void FGAIBase::setHeading( double heading ) {
- hdg = tgt_heading = heading;
+ hdg = tgt_heading = heading;
}
-inline void FGAIBase::setAltitude( double altitude_ft ) {
- altitude = tgt_altitude = altitude_ft;
- pos.setelev(altitude * SG_FEET_TO_METER);
+inline void FGAIBase::setAltitude( double alt_ft ) {
+ altitude_ft = tgt_altitude_ft = alt_ft;
+ pos.setElevationFt(altitude_ft);
}
inline void FGAIBase::setBank( double bank ) {
- roll = tgt_roll = bank;
- no_roll = false;
+ roll = tgt_roll = bank;
+ no_roll = false;
}
inline void FGAIBase::setPitch( double newpitch ) {
- pitch = tgt_pitch = newpitch;
+ pitch = tgt_pitch = newpitch;
}
inline void FGAIBase::setLongitude( double longitude ) {
- pos.setlon( longitude );
+ pos.setLongitudeDeg( longitude );
}
inline void FGAIBase::setLatitude ( double latitude ) {
- pos.setlat( latitude );
+ pos.setLatitudeDeg( latitude );
}
inline void FGAIBase::setDie( bool die ) { delete_me = die; }