]> git.mxchange.org Git - flightgear.git/blobdiff - src/Systems/submodel.hxx
Boris Koenig:
[flightgear.git] / src / Systems / submodel.hxx
index 8fe23f6d25bccc92b3d281b8e95fd0d9431b6688..a0c4dd6398e51e3f78b9626bf767c5b800b70a3d 100644 (file)
@@ -13,7 +13,7 @@
 
 #include <simgear/props/props.hxx>
 #include <simgear/structure/subsystem_mgr.hxx>
-#include <AIModel/AIManager.hxx>
+#include <AIModel/AIBase.hxx>
 #include <vector>
 #include <string>
 SG_USING_STD(vector);
@@ -25,8 +25,12 @@ class SubmodelSystem : public SGSubsystem
 
 public:
 
+
  typedef struct {
-  SGPropertyNode_ptr trigger;
+  SGPropertyNode* trigger;
+  SGPropertyNode* prop;
+  SGPropertyNode* contents_node;
+  
   string             name;
   string             model;
   double             speed;
@@ -40,15 +44,33 @@ public:
   double             z_offset;
   double             yaw_offset;
   double             pitch_offset;
+  double             drag_area; 
+  double             life;
+  double             buoyancy;
+  bool               wind;
+  bool               first_time;
+  double             cd;
+  double             weight;
+  double             contents;
  } submodel; 
 
  typedef struct {
   double     lat;
   double     lon;
   double     alt;
+  double     roll;
   double     azimuth;
   double     elevation;
   double     speed;
+  double     wind_from_east;
+  double     wind_from_north;
+  double     speed_down_fps;
+  double     speed_east_fps;
+  double     speed_north_fps;
+  double     total_speed_down;
+  double     total_speed_east;
+  double     total_speed_north;
+  double     mass;
  } IC_struct;  
 
     SubmodelSystem ();
@@ -61,6 +83,7 @@ public:
     void update (double dt);
     bool release (submodel* sm, double dt);
     void transform (submodel* sm);
+    void updatelat( double lat );
 
 private:
 
@@ -70,22 +93,48 @@ private:
     submodel_vector_type       submodels;
     submodel_vector_iterator   submodel_iterator;
 
+    float trans[3][3];
+    float in[3];
+    float out[3];
+
+    double Rx, Ry, Rz;
+    double Sx, Sy, Sz;
+    double Tx, Ty, Tz;
+
+    float cosRx, sinRx;
+    float cosRy, sinRy;
+    float cosRz, sinRz;
+
+    double ft_per_deg_longitude;
+    double ft_per_deg_latitude;
 
     double x_offset, y_offset, z_offset;
     double pitch_offset, yaw_offset;
 
-    SGPropertyNode_ptr _serviceable_node;
-    SGPropertyNode_ptr _user_lat_node;
-    SGPropertyNode_ptr _user_lon_node;
-    SGPropertyNode_ptr _user_heading_node;
-    SGPropertyNode_ptr _user_alt_node;
-    SGPropertyNode_ptr _user_pitch_node;
-    SGPropertyNode_ptr _user_roll_node;
-    SGPropertyNode_ptr _user_yaw_node;
-    SGPropertyNode_ptr _user_speed_node;
+    static const double lbs_to_slugs; //conversion factor
+
+    SGPropertyNode* _serviceable_node;
+    SGPropertyNode* _user_lat_node;
+    SGPropertyNode* _user_lon_node;
+    SGPropertyNode* _user_heading_node;
+    SGPropertyNode* _user_alt_node;
+    SGPropertyNode* _user_pitch_node;
+    SGPropertyNode* _user_roll_node;
+    SGPropertyNode* _user_yaw_node;
+    SGPropertyNode* _user_alpha_node;
+    SGPropertyNode* _user_speed_node;
+    SGPropertyNode* _user_wind_from_east_node;
+    SGPropertyNode* _user_wind_from_north_node;
+    SGPropertyNode* _user_speed_down_fps_node;
+    SGPropertyNode* _user_speed_east_fps_node;
+    SGPropertyNode* _user_speed_north_fps_node;
 
     FGAIManager* ai;
     IC_struct  IC;
+
 };
 
 #endif // __SYSTEMS_SUBMODEL_HXX
+
+
+