]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/AIBallistic.hxx
Interim windows build fix
[flightgear.git] / src / AIModel / AIBallistic.hxx
index 9b28efdae9144de7c0940f4473bbe8306eb36ca1..7abe4f2cda7b124f4175234a4c28eb0723647a6a 100644 (file)
@@ -22,7 +22,7 @@
 #ifndef _FG_AIBALLISTIC_HXX
 #define _FG_AIBALLISTIC_HXX
 
-#include <math.h>
+#include <cmath>
 #include <vector>
 #include <simgear/structure/SGSharedPtr.hxx>
 #include <simgear/scene/material/mat.hxx>
@@ -31,9 +31,6 @@
 #include "AIManager.hxx"
 #include "AIBase.hxx"
 
-using std::vector;
-using std::list;
-
 class FGAIBallistic : public FGAIBase {
 
 public:
@@ -54,6 +51,8 @@ public:
 
     void setAzimuth( double az );
     void setElevation( double el );
+    void setAzimuthRandomError(double error);
+    void setElevationRandomError(double error);
     void setRoll( double rl );
     void setStabilisation( bool val );
     void setDragArea( double a );
@@ -62,25 +61,25 @@ public:
     void setWind_from_east( double fps );
     void setWind_from_north( double fps );
     void setWind( bool val );
-    void setCd( double c );
+    void setCd(double cd);
+    void setCdRandomness(double randomness);
     void setMass( double m );
     void setWeight( double w );
     void setNoRoll( bool nr );
     void setRandom( bool r );
-    void setRandomness( double r );
-//    void setName(const string&);
+    void setLifeRandomness(double randomness);
     void setCollision(bool c);
     void setExpiry(bool e);
     void setImpact(bool i);
-    void setImpactReportNode(const string&);
+    void setImpactReportNode(const std::string&);
     void setContentsNode(const SGPropertyNode_ptr);
     void setFuseRange(double f);
-    void setSMPath(const string&);
+    void setSMPath(const std::string&);
     void setSubID(int i);
-    void setSubmodel(const string&);
+    void setSubmodel(const std::string&);
     void setExternalForce( bool f );
-    void setForcePath(const string&);
-    void setContentsPath(const string&);
+    void setForcePath(const std::string&);
+    void setContentsPath(const std::string&);
     void setForceStabilisation( bool val );
     void setGroundOffset(double g);
     void setLoadOffset(double l);
@@ -110,7 +109,6 @@ public:
 
     bool getHtAGL(double start);
     bool getSlaved() const;
-//    bool getFormate() const;
     bool getSlavedLoad() const;
 
     FGAIBallistic *ballistic;
@@ -122,8 +120,11 @@ public:
     SGPropertyNode_ptr _force_azimuth_node;
     SGPropertyNode_ptr _force_elevation_node;
 
-    SGPropertyNode_ptr _pnode; // node for parent model
-    SGPropertyNode_ptr _p_pos_node; // nodes for parent parameters
+    // Node for parent model
+    SGPropertyNode_ptr _pnode;
+
+    // Nodes for parent parameters
+    SGPropertyNode_ptr _p_pos_node;
     SGPropertyNode_ptr _p_lat_node;
     SGPropertyNode_ptr _p_lon_node;
     SGPropertyNode_ptr _p_alt_node;
@@ -170,15 +171,19 @@ public:
 
 private:
 
+    double _az_random_error; // maximum azimuth error in degrees
+    double _el_random_error; // maximum elevation error in degrees
     bool   _aero_stabilised; // if true, object will align with trajectory
     double _drag_area;       // equivalent drag area in ft2
-    double _life_timer;      // seconds
+    double _cd;              // current drag coefficient
+    double _init_cd;         // initial drag coefficient
+    double _cd_randomness;   // randomness of Cd. 1.0 means +- 100%, 0.0 means no randomness
     double _buoyancy;        // fps^2
+    double _life_timer;      // seconds
     bool   _wind;            // if true, local wind will be applied to object
-    double _Cd;              // drag coefficient
     double _mass;            // slugs
     bool   _random;          // modifier for Cd, life, az
-    double _randomness;                 // dimension for _random, only applies to life at present
+    double _life_randomness; // dimension for _random, only applies to life at present
     double _load_resistance; // ground load resistanc N/m^2
     double _frictionFactor;  // dimensionless modifier for Coefficient of Friction
     bool   _solid;           // if true ground is solid for FDMs
@@ -188,7 +193,7 @@ private:
     bool   _slave_load_to_ac;// if true, object will be slaved to the parent ac pos
     double _contents_lb;     // contents of the object
     double _weight_lb;       // weight of the object (no contents if appropriate) (lbs)
-    string _mat_name;
+    std::string _mat_name;
 
     bool   _report_collision;       // if true a collision point with AI Objects is calculated
     bool   _report_impact;          // if true an impact point on the terrain is calculated
@@ -197,28 +202,14 @@ private:
 
     SGPropertyNode_ptr _impact_report_node;  // report node for impact and collision
     SGPropertyNode_ptr _contents_node;  // node for droptank etc. contents
-    //SGPropertyNode_ptr _pnode; // node for parent model
-    //SGPropertyNode_ptr _p_pos_node; // nodes for parent parameters
-    //SGPropertyNode_ptr _p_lat_node;
-    //SGPropertyNode_ptr _p_lon_node;
-    //SGPropertyNode_ptr _p_alt_node;
-    //SGPropertyNode_ptr _p_agl_node;
-    //SGPropertyNode_ptr _p_ori_node;
-    //SGPropertyNode_ptr _p_pch_node;
-    //SGPropertyNode_ptr _p_rll_node;
-    //SGPropertyNode_ptr _p_hdg_node;
-    //SGPropertyNode_ptr _p_vel_node;
-    //SGPropertyNode_ptr _p_spd_node;
 
     double _fuse_range;
-    double _distance;
-    double _dt_count;
-    double _next_run;
 
-    string _submodel;
-    string _force_path;
-    string _contents_path;
+    std::string _submodel;
+    std::string _force_path;
+    std::string _contents_path;
 
+    void handleEndOfLife(double);
     void handle_collision();
     void handle_expiry();
     void handle_impact();
@@ -227,30 +218,17 @@ private:
     void setContents(double c);
     void calcVSHS();
     void calcNE();
-    //void setOffsetPos(SGGeod pos, double heading, double pitch, double roll);
-    //void setOffsetVelocity(double dt, SGGeod pos);
 
-    SGVec3d getCartUserPos() const;
     SGVec3d getCartOffsetPos(SGGeod pos, double heading, double pitch, double roll) const;
 
-    //double getDistanceLoadToHitch() const;
-    //double getElevLoadToHitch() const;
-    //double getBearingLoadToHitch() const;
     double getRecip(double az);
     double getMass() const;
 
     double _ground_offset;
     double _load_offset;
-    double _old_height;
 
     SGVec3d _oldcartoffsetPos;
     SGVec3d _oldcartPos;
-
-    //SGGeod _parentpos;
-    //SGGeod _oldpos;
-    //SGGeod _offsetpos;
-    //SGGeod _oldoffsetpos;
-
 };
 
 #endif  // _FG_AIBALLISTIC_HXX