]> git.mxchange.org Git - flightgear.git/blobdiff - src/AIModel/submodel.cxx
Replace the data/Airports/basic.dat.gz and data/Airports/runways.dat.gz with
[flightgear.git] / src / AIModel / submodel.cxx
index a9992885b204eddfbc2b233ad7bef02355478e15..0e2dd42999687889055e5a1ea78b6407343d8d39 100644 (file)
@@ -26,6 +26,7 @@ FGSubmodelMgr::FGSubmodelMgr ()
   out[0] = out[1] = out[2] = 0;
   in[3] = out[3] = 1;
   string contents_node;
+  contrail_altitude = 30000.0;
 }
 
 FGSubmodelMgr::~FGSubmodelMgr ()
@@ -36,7 +37,7 @@ void
 FGSubmodelMgr::init ()
 {
     load();
-    _serviceable_node = fgGetNode("/sim/systems/submodels/serviceable", true);
+    _serviceable_node = fgGetNode("/sim/submodels/serviceable", true);
 
     _user_lat_node = fgGetNode("/position/latitude-deg", true);
     _user_lon_node = fgGetNode("/position/longitude-deg", true);
@@ -57,8 +58,12 @@ FGSubmodelMgr::init ()
     _user_speed_east_fps_node   = fgGetNode("/velocities/speed-east-fps",true);
     _user_speed_north_fps_node  = fgGetNode("/velocities/speed-north-fps",true);
 
-    ai = (FGAIManager*)globals->get_subsystem("ai_model");
+    _contrail_altitude_node = fgGetNode("/environment/params/contrail-altitude", true);
+    contrail_altitude = _contrail_altitude_node->getDoubleValue();
+    _contrail_trigger = fgGetNode("ai/submodels/contrails", true);
+    _contrail_trigger->setBoolValue(false);
 
+    ai = (FGAIManager*)globals->get_subsystem("ai_model");
 
 }
 
@@ -82,6 +87,11 @@ FGSubmodelMgr::update (double dt)
 {
   if (!(_serviceable_node->getBoolValue())) return;
   int i=-1;
+
+  if (_user_alt_node->getDoubleValue() > contrail_altitude) {
+     _contrail_trigger->setBoolValue(true);
+  }   
+
   submodel_iterator = submodels.begin();
   while(submodel_iterator != submodels.end()) {
     i++;
@@ -129,6 +139,7 @@ FGSubmodelMgr::release (submodel* sm, double dt)
   entity.wind = sm->wind;
   entity.cd = sm->cd;
   entity.mass = IC.mass;
+  entity.aero_stabilised = sm->aero_stabilised;
   ai->createBallistic( &entity );
  
   if (sm->count > 0) (sm->count)--; 
@@ -141,7 +152,7 @@ FGSubmodelMgr::load ()
 {
 
     int i;
-    SGPropertyNode *path = fgGetNode("/sim/systems/submodels/path");
+    SGPropertyNode *path = fgGetNode("/sim/submodels/path");
     SGPropertyNode root;
 
     if (path) {
@@ -184,6 +195,7 @@ FGSubmodelMgr::load ()
      sm->first_time     = false;
      sm->cd             = entry_node->getDoubleValue("cd", 0.193);
      sm->weight         = entry_node->getDoubleValue("weight", 0.25);
+     sm->aero_stabilised = entry_node->getBoolValue  ("aero-stabilised", true);
      sm->contents_node  = fgGetNode(entry_node->getStringValue("contents", "none"), true);
 
      sm->trigger->setBoolValue(false);
@@ -191,7 +203,7 @@ FGSubmodelMgr::load ()
  
      sm->contents = sm->contents_node->getDoubleValue();
  
-     sm->prop = fgGetNode("/systems/submodels/submodel", i, true);
+     sm->prop = fgGetNode("/ai/submodels/submodel", i, true);
      sm->prop->tie("count", SGRawValuePointer<int>(&(sm->count)));
 
 //   sm->prop->tie("contents", SGRawValuePointer<double>(&(sm->contents)));