]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIBase.hxx
assign a unique module name to ai/mp embedded nasal (again): __model%u
[flightgear.git] / src / AIModel / AIBase.hxx
index 01102b4e6a60318f6f3c015e2f5716b24835bae9..46d287f732778dd4397f07fb6bf7cf6fccba2057 100644 (file)
@@ -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 FGAIManager;
 class FGAIFlightPlan;
 
-class FGAIBase : public SGReferenced {
+class FGAIBase : public osg::Referenced {
 
 public:
     enum object_type { otNull = 0, otAircraft, otShip, otCarrier, otBallistic,
-                       otRocket, otStorm, otThermal, otStatic, otMultiplayer,
+                       otRocket, otStorm, otThermal, otStatic, otWingman,
+                       otMultiplayer,
                        MAX_OBJECTS };  // Needs to be last!!!
 
     FGAIBase(object_type ot);
@@ -53,6 +53,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();
@@ -61,6 +62,7 @@ public:
     void setManager(FGAIManager* mgr, SGPropertyNode* p);
     void setPath( const char* model );
     void setSMPath( const string& p );
+    void setCallSign(const string& );
     void setSpeed( double speed_KTAS );
     void setAltitude( double altitude_ft );
     void setHeading( double heading );
@@ -72,6 +74,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 );
@@ -92,11 +97,22 @@ public:
     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;
 
+    SGGeod userpos;
+
+
 protected:
 
     SGPropertyNode_ptr props;
@@ -175,6 +191,7 @@ protected:
 private:
     int _refID;
     object_type _otype;
+    bool _initialized;
 
 public:
     object_type getType();
@@ -188,12 +205,12 @@ public:
     void _setLongitude( double longitude );
     void _setLatitude ( double latitude );
     void _setSubID( int s );
+    void _setUserPos();
 
     double _getVS_fps() const;
     double _getAltitude() const;
     double _getLongitude() const;
     double _getLatitude() const;
-    double _getBearing() const;
     double _getElevationFt() const;
     double _getRdot() const;
     double _getH_offset() const;
@@ -215,7 +232,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;
@@ -226,11 +245,12 @@ public:
 
     SGPropertyNode* _getProps() const;
 
-    const char* _getPath();
-    const char* _getCallsign();
-    const char* _getTriggerNode();
-    const char* _getName();
-    const char* _getSubmodel();
+    const char* _getPath() const;
+    const char* _getSMPath() const;
+    const char* _getCallsign() const;
+    const char* _getTriggerNode() const;
+    const char* _getName() const;
+    const char* _getSubmodel() const;
 
 
     // These are used in the Mach number calculations
@@ -245,11 +265,11 @@ public:
     static const double lbs_to_slugs;
 
     inline double _getRange() { return range; };
-    osg::Node* load3DModel(const string& fg_root,
-                            const string &path,
-                            SGPropertyNode *prop_root,
-                            double sim_time_sec);
+    inline double _getBearing() { return bearing; };
 
+    virtual osg::Node* load3DModel(const string &path,
+                           SGPropertyNode *prop_root);
     static bool _isNight();
 };
 
@@ -304,6 +324,33 @@ inline void FGAIBase::setLatitude ( double latitude ) {
     pos.setLatitudeDeg( 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::setDie( bool die ) { delete_me = die; }
 
 inline bool FGAIBase::getDie() { return delete_me; }