]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIBase.hxx
Enable Ballistic objects to be slaved to any AI Object.
[flightgear.git] / src / AIModel / AIBase.hxx
index 46d287f732778dd4397f07fb6bf7cf6fccba2057..4c2c591af19594e9457c14e5e0dbc660de6542b7 100644 (file)
@@ -1,7 +1,7 @@
 // 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
 using std::string;
 using std::list;
 
+class SGMaterial;
 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,
-                       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();
@@ -93,6 +94,9 @@ public:
     SGVec3d getCartPosAt(const SGVec3d& off) const;
     SGVec3d getCartPos() const;
 
+    bool getGroundElevationM(const SGGeod& pos, double& elev,
+        const SGMaterial** material) const;
+
     double _getCartPosX() const;
     double _getCartPosY() const;
     double _getCartPosZ() const;
@@ -173,6 +177,7 @@ protected:
 
     bool _impact_reported;
     bool _collision_reported;
+    bool _expiry_reported;
 
     double _impact_lat;
     double _impact_lon;
@@ -242,6 +247,7 @@ public:
     bool   _getImpact();
     bool   _getImpactData();
     bool   _getCollisionData();
+    bool   _getExpiryData();
 
     SGPropertyNode* _getProps() const;
 
@@ -268,8 +274,8 @@ public:
     inline double _getBearing() { return bearing; };
 
     virtual osg::Node* load3DModel(const string &path,
-                           SGPropertyNode *prop_root);
+        SGPropertyNode *prop_root);
+
     static bool _isNight();
 };