// FGAIBase.hxx - abstract base class for AI objects
// Written by David Culp, started Nov 2003, based on
// David Luff's FGAIEntity class.
-// - davidculp2@comcast.net
+// - davidculp2@comcast.net
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
class FGAIManager;
class FGAIFlightPlan;
-class FGAIBase : public osg::Referenced {
+class FGAIBase : public SGReferenced {
public:
enum object_type { otNull = 0, otAircraft, otShip, otCarrier, otBallistic,
- otRocket, otStorm, otThermal, otStatic, otWingman, otGroundVehicle,
- otMultiplayer,
- MAX_OBJECTS }; // Needs to be last!!!
+ otRocket, otStorm, otThermal, otStatic, otWingman, otGroundVehicle,
+ otEscort, otMultiplayer,
+ MAX_OBJECTS }; // Needs to be last!!!
FGAIBase(object_type ot);
virtual ~FGAIBase();
void setImpactLat( double lat );
void setImpactLon( double lon );
void setImpactElev( double e );
+ void setParentName(const string& p);
+ void setParentNode();
int getID() const;
int _getSubID() const;
SGVec3d getCartPos() const;
bool getGroundElevationM(const SGGeod& pos, double& elev,
- const SGMaterial** material) const;
+ const SGMaterial** material) const;
double _getCartPosX() const;
double _getCartPosY() const;
string _callsign;
string _submodel;
string _name;
+ string _parent;
SGGeod userpos;
protected:
+ SGPropertyNode_ptr _selected_ac;
SGPropertyNode_ptr props;
SGPropertyNode_ptr trigger_node;
SGPropertyNode_ptr model_removed; // where to report model removal
bool _impact_reported;
bool _collision_reported;
+ bool _expiry_reported;
double _impact_lat;
double _impact_lon;
bool _getImpact();
bool _getImpactData();
bool _getCollisionData();
+ bool _getExpiryData();
SGPropertyNode* _getProps() const;
inline double _getBearing() { return bearing; };
virtual osg::Node* load3DModel(const string &path,
- SGPropertyNode *prop_root);
-
+ SGPropertyNode *prop_root);
+
static bool _isNight();
};
_yaw_offset = y;
}
+inline void FGAIBase::setParentName(const string& p) {
+ _parent = p;
+}
+
inline void FGAIBase::setDie( bool die ) { delete_me = die; }
inline bool FGAIBase::getDie() { return delete_me; }