]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIBase.hxx
Add callsign for consitency.
[flightgear.git] / src / AIModel / AIBase.hxx
index d49336438bc664322725f08efd0d0f4a9d426d1c..3d756254a21767244afb99f4f3715aaf929cd836 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
@@ -25,7 +25,6 @@
 
 #include <simgear/constants.h>
 #include <simgear/math/SGMath.hxx>
-#include <simgear/math/point3d.hxx>
 #include <simgear/scene/model/placement.hxx>
 #include <simgear/misc/sg_path.hxx>
 #include <simgear/structure/SGSharedPtr.hxx>
 #include <Main/fg_props.hxx>
 
 
-SG_USING_STD(string);
-SG_USING_STD(list);
+using std::string;
+using std::list;
 
+class SGMaterial;
 class FGAIManager;
 class FGAIFlightPlan;
 
@@ -44,8 +44,9 @@ class FGAIBase : public SGReferenced {
 
 public:
     enum object_type { otNull = 0, otAircraft, otShip, otCarrier, otBallistic,
-                       otRocket, otStorm, otThermal, otStatic, 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();
@@ -53,6 +54,7 @@ public:
     virtual void readFromScenario(SGPropertyNode* scFileNode);
 
     virtual bool init(bool search_in_AI_path=false);
+    virtual void initModel(osg::Node *node);
     virtual void update(double dt);
     virtual void bind();
     virtual void unbind();
@@ -73,6 +75,9 @@ public:
     void setXoffset( double x_offset );
     void setYoffset( double y_offset );
     void setZoffset( double z_offset );
+    void setPitchoffset( double x_offset );
+    void setRolloffset( double y_offset );
+    void setYawoffset( double z_offset );
     void setServiceable ( bool serviceable );
     void setDie( bool die );
     void setCollisionData( bool i, double lat, double lon, double elev );
@@ -80,6 +85,8 @@ public:
     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;
@@ -89,17 +96,33 @@ 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;
 
+    double _x_offset;
+    double _y_offset;
+    double _z_offset;
+
+    double _pitch_offset;
+    double _roll_offset;
+    double _yaw_offset;
+
     string _path;
     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
@@ -158,6 +181,7 @@ protected:
 
     bool _impact_reported;
     bool _collision_reported;
+    bool _expiry_reported;
 
     double _impact_lat;
     double _impact_lon;
@@ -176,6 +200,7 @@ protected:
 private:
     int _refID;
     object_type _otype;
+    bool _initialized;
 
 public:
     object_type getType();
@@ -189,6 +214,7 @@ public:
     void _setLongitude( double longitude );
     void _setLatitude ( double latitude );
     void _setSubID( int s );
+    void _setUserPos();
 
     double _getVS_fps() const;
     double _getAltitude() const;
@@ -215,7 +241,9 @@ public:
     double _getImpactPitch() const;
     double _getImpactRoll() const;
     double _getImpactSpeed() const;
-
+    double _getXOffset() const;
+    double _getYOffset() const;
+    double _getZOffset() const;
     //unsigned int _getCount() const;
 
     bool   _getServiceable() const;
@@ -223,6 +251,7 @@ public:
     bool   _getImpact();
     bool   _getImpactData();
     bool   _getCollisionData();
+    bool   _getExpiryData();
 
     SGPropertyNode* _getProps() const;
 
@@ -248,10 +277,8 @@ public:
     inline double _getRange() { return range; };
     inline double _getBearing() { return bearing; };
 
-    osg::Node* load3DModel(const string& fg_root,
-                            const string &path,
-                            SGPropertyNode *prop_root,
-                            double sim_time_sec);
+    virtual osg::Node* load3DModel(const string &path,
+        SGPropertyNode *prop_root);
 
     static bool _isNight();
 };
@@ -310,7 +337,33 @@ inline void FGAIBase::setLatitude ( double latitude ) {
 inline void FGAIBase::setCallSign(const string& s) {
     _callsign = s;
 }
+inline void FGAIBase::setXoffset(double x) {
+    _x_offset = x;
+}
+
+inline void FGAIBase::setYoffset(double y) {
+    _y_offset = y;
+}
 
+inline void FGAIBase::setZoffset(double z) {
+    _z_offset = z;
+}
+
+inline void FGAIBase::setPitchoffset(double p) {
+    _pitch_offset = p;
+}
+
+inline void FGAIBase::setRolloffset(double r) {
+    _roll_offset = r;
+} 
+
+inline void FGAIBase::setYawoffset(double y) {
+    _yaw_offset = y;
+}
+
+inline void FGAIBase::setParentName(const string& p) {
+    _parent = p;
+}
 
 inline void FGAIBase::setDie( bool die ) { delete_me = die; }