]> git.mxchange.org Git - flightgear.git/commitdiff
Merge branch 'next' of git://gitorious.org/fg/flightgear
authorStuart Buchanan <stuart_d_buchanan@yahoo.co.uk>
Thu, 21 Apr 2011 19:55:49 +0000 (20:55 +0100)
committerStuart Buchanan <stuart_d_buchanan@yahoo.co.uk>
Thu, 21 Apr 2011 19:55:49 +0000 (20:55 +0100)
Conflicts:
src/Environment/environment_mgr.cxx

1  2 
src/Environment/environment_mgr.cxx

index 04208d3043fedfde8a4a3dc07f71fa5749c33258,40ca18f2052af7e3a713a1450535cd584548b5f6..c6451eef1690f14b0727d6568273d9c7d6cb1fc9
@@@ -116,73 -115,73 +116,73 @@@ FGEnvironmentMgr::bind (
    _tiedProperties.setRoot( fgGetNode( "/environment", true ) );
  
    _tiedProperties.Tie( "effective-visibility-m", thesky,
-        &SGSky::get_visibility );
+           &SGSky::get_visibility );
  
    _tiedProperties.Tie("rebuild-layers", fgClouds,
-       &FGClouds::get_update_event,
-       &FGClouds::set_update_event);
+           &FGClouds::get_update_event,
+           &FGClouds::set_update_event);
  
    _tiedProperties.Tie("turbulence/use-cloud-turbulence", &sgEnviro,
-       &SGEnviro::get_turbulence_enable_state,
-       &SGEnviro::set_turbulence_enable_state);
+           &SGEnviro::get_turbulence_enable_state,
+           &SGEnviro::set_turbulence_enable_state);
  
    for (int i = 0; i < MAX_CLOUD_LAYERS; i++) {
-     SGPropertyNode_ptr layerNode = fgGetNode("/environment/clouds",true)->getChild("layer", i, true );
+       SGPropertyNode_ptr layerNode = fgGetNode("/environment/clouds",true)->getChild("layer", i, true );
  
-     _tiedProperties.Tie( layerNode->getNode("span-m",true), this, i,
-         &FGEnvironmentMgr::get_cloud_layer_span_m,
-         &FGEnvironmentMgr::set_cloud_layer_span_m);
 -      _tiedProperties.Tie( layerNode->getNode("span-m",true), this, i, 
++      _tiedProperties.Tie( layerNode->getNode("span-m",true), this, i,
+               &FGEnvironmentMgr::get_cloud_layer_span_m,
+               &FGEnvironmentMgr::set_cloud_layer_span_m);
  
-     _tiedProperties.Tie( layerNode->getNode("elevation-ft",true), this, i,
-         &FGEnvironmentMgr::get_cloud_layer_elevation_ft,
-         &FGEnvironmentMgr::set_cloud_layer_elevation_ft);
 -      _tiedProperties.Tie( layerNode->getNode("elevation-ft",true), this, i, 
++      _tiedProperties.Tie( layerNode->getNode("elevation-ft",true), this, i,
+               &FGEnvironmentMgr::get_cloud_layer_elevation_ft,
+               &FGEnvironmentMgr::set_cloud_layer_elevation_ft);
  
-     _tiedProperties.Tie( layerNode->getNode("thickness-ft",true), this, i,
-         &FGEnvironmentMgr::get_cloud_layer_thickness_ft,
-         &FGEnvironmentMgr::set_cloud_layer_thickness_ft);
 -      _tiedProperties.Tie( layerNode->getNode("thickness-ft",true), this, i, 
++      _tiedProperties.Tie( layerNode->getNode("thickness-ft",true), this, i,
+               &FGEnvironmentMgr::get_cloud_layer_thickness_ft,
+               &FGEnvironmentMgr::set_cloud_layer_thickness_ft);
  
-     _tiedProperties.Tie( layerNode->getNode("transition-ft",true), this, i,
-         &FGEnvironmentMgr::get_cloud_layer_transition_ft,
-         &FGEnvironmentMgr::set_cloud_layer_transition_ft);
 -      _tiedProperties.Tie( layerNode->getNode("transition-ft",true), this, i, 
++      _tiedProperties.Tie( layerNode->getNode("transition-ft",true), this, i,
+               &FGEnvironmentMgr::get_cloud_layer_transition_ft,
+               &FGEnvironmentMgr::set_cloud_layer_transition_ft);
  
-     _tiedProperties.Tie( layerNode->getNode("coverage",true), this, i,
-         &FGEnvironmentMgr::get_cloud_layer_coverage,
-         &FGEnvironmentMgr::set_cloud_layer_coverage);
 -      _tiedProperties.Tie( layerNode->getNode("coverage",true), this, i, 
++      _tiedProperties.Tie( layerNode->getNode("coverage",true), this, i,
+               &FGEnvironmentMgr::get_cloud_layer_coverage,
+               &FGEnvironmentMgr::set_cloud_layer_coverage);
  
-     _tiedProperties.Tie( layerNode->getNode("coverage-type",true), this, i,
-         &FGEnvironmentMgr::get_cloud_layer_coverage_type,
-         &FGEnvironmentMgr::set_cloud_layer_coverage_type);
 -      _tiedProperties.Tie( layerNode->getNode("coverage-type",true), this, i, 
++      _tiedProperties.Tie( layerNode->getNode("coverage-type",true), this, i,
+               &FGEnvironmentMgr::get_cloud_layer_coverage_type,
+               &FGEnvironmentMgr::set_cloud_layer_coverage_type);
  
-     _tiedProperties.Tie( layerNode->getNode( "visibility-m",true), this, i,
-         &FGEnvironmentMgr::get_cloud_layer_visibility_m,
-         &FGEnvironmentMgr::set_cloud_layer_visibility_m);
+       _tiedProperties.Tie( layerNode->getNode( "visibility-m",true), this, i,
+               &FGEnvironmentMgr::get_cloud_layer_visibility_m,
+               &FGEnvironmentMgr::set_cloud_layer_visibility_m);
  
-     _tiedProperties.Tie( layerNode->getNode( "alpha",true), this, i,
-         &FGEnvironmentMgr::get_cloud_layer_maxalpha,
-         &FGEnvironmentMgr::set_cloud_layer_maxalpha);
+       _tiedProperties.Tie( layerNode->getNode( "alpha",true), this, i,
+               &FGEnvironmentMgr::get_cloud_layer_maxalpha,
+               &FGEnvironmentMgr::set_cloud_layer_maxalpha);
    }
  
    _tiedProperties.setRoot( fgGetNode("/sim/rendering", true ) );
  
    _tiedProperties.Tie( "clouds3d-enable", fgClouds,
-         &FGClouds::get_3dClouds,
-         &FGClouds::set_3dClouds);
+           &FGClouds::get_3dClouds,
+           &FGClouds::set_3dClouds);
  
    _tiedProperties.Tie( "clouds3d-density", thesky,
-         &SGSky::get_3dCloudDensity,
-         &SGSky::set_3dCloudDensity);
+           &SGSky::get_3dCloudDensity,
+           &SGSky::set_3dCloudDensity);
  
    _tiedProperties.Tie("clouds3d-vis-range", thesky,
-         &SGSky::get_3dCloudVisRange,
-         &SGSky::set_3dCloudVisRange);
+           &SGSky::get_3dCloudVisRange,
+           &SGSky::set_3dCloudVisRange);
 -  
 +
    _tiedProperties.Tie("precipitation-enable", &sgEnviro,
-         &SGEnviro::get_precipitation_enable_state,
-         &SGEnviro::set_precipitation_enable_state);
 -          &SGEnviro::get_precipitation_enable_state, 
++          &SGEnviro::get_precipitation_enable_state,
+           &SGEnviro::set_precipitation_enable_state);
  
    _tiedProperties.Tie("lightning-enable", &sgEnviro,
-       &SGEnviro::get_lightning_enable_state,
-       &SGEnviro::set_lightning_enable_state);
+           &SGEnviro::get_lightning_enable_state,
+           &SGEnviro::set_lightning_enable_state);
  
    sgEnviro.config(fgGetNode("/sim/rendering/precipitation"));
  }
@@@ -208,6 -207,33 +208,33 @@@ FGEnvironmentMgr::update (double dt
      _cloudLayersDirty = false;
      fgClouds->set_update_event( fgClouds->get_update_event()+1 );
    }
 -          const string currentId = fgGetString("/sim/airport/closest-airport-id", ""); 
+   _positionTimeToLive -= dt;
+   if( _positionTimeToLive <= 0.0 )
+   {
+       // update closest airport information
+       _positionTimeToLive = 30.0;
+       SG_LOG(SG_ALL, SG_INFO, "FGEnvironmentMgr::update: updating closest airport");
+       SGGeod pos = SGGeod::fromDeg(_longitude_n->getDoubleValue(),
+                                    _latitude_n->getDoubleValue());
+       FGAirport * nearestAirport = FGAirport::findClosest(pos, 100.0);
+       if( nearestAirport == NULL )
+       {
+           SG_LOG(SG_ALL,SG_WARN,"FGEnvironmentMgr::update: No airport within 100NM range");
+       }
+       else
+       {
++          const string currentId = fgGetString("/sim/airport/closest-airport-id", "");
+           if (currentId != nearestAirport->ident())
+           {
+               fgSetString("/sim/airport/closest-airport-id",
+                       nearestAirport->ident().c_str());
+           }
+       }
+   }
  }
  
  FGEnvironment
@@@ -347,10 -373,7 +374,7 @@@ FGEnvironmentMgr::set_cloud_layer_maxal
      thesky->get_cloud_layer(index)->setMaxAlpha(maxalpha);
  }
  
 -void 
 +void
  FGEnvironmentMgr::set_cloud_layer_coverage_type (int index, int type )
  {
    if( type < 0 || type >= SGCloudLayer::SG_MAX_CLOUD_COVERAGES ) {