]> 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 d49336438bc664322725f08efd0d0f4a9d426d1c..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();
@@ -73,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 );
@@ -93,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;
@@ -176,6 +191,7 @@ protected:
 private:
     int _refID;
     object_type _otype;
+    bool _initialized;
 
 public:
     object_type getType();
@@ -189,6 +205,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 +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;
@@ -248,11 +267,9 @@ 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 +327,29 @@ 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::setDie( bool die ) { delete_me = die; }