-// copy from FGMetarEnvironmentCtrl until better
-void
-FGClouds::update_metar_properties( const FGMetar *m )
-{
- int i;
- double d;
- char s[128];
-
- fgSetString("/environment/metar/station-id", m->getId());
- fgSetDouble("/environment/metar/min-visibility-m",
- m->getMinVisibility().getVisibility_m() );
- fgSetDouble("/environment/metar/max-visibility-m",
- m->getMaxVisibility().getVisibility_m() );
-
- const SGMetarVisibility *dirvis = m->getDirVisibility();
- for (i = 0; i < 8; i++, dirvis++) {
- const char *min = "/environment/metar/visibility[%d]/min-m";
- const char *max = "/environment/metar/visibility[%d]/max-m";
-
- d = dirvis->getVisibility_m();
-
- snprintf(s, 128, min, i);
- fgSetDouble(s, d);
- snprintf(s, 128, max, i);
- fgSetDouble(s, d);
- }
-
- fgSetInt("/environment/metar/base-wind-range-from",
- m->getWindRangeFrom() );
- fgSetInt("/environment/metar/base-wind-range-to",
- m->getWindRangeTo() );
- fgSetDouble("/environment/metar/base-wind-speed-kt",
- m->getWindSpeed_kt() );
- fgSetDouble("/environment/metar/gust-wind-speed-kt",
- m->getGustSpeed_kt() );
- fgSetDouble("/environment/metar/temperature-degc",
- m->getTemperature_C() );
- fgSetDouble("/environment/metar/dewpoint-degc",
- m->getDewpoint_C() );
- fgSetDouble("/environment/metar/rel-humidity-norm",
- m->getRelHumidity() );
- fgSetDouble("/environment/metar/pressure-inhg",
- m->getPressure_inHg() );
-
- vector<SGMetarCloud> cv = m->getClouds();
- vector<SGMetarCloud>::const_iterator cloud;
-
- const char *cl = "/environment/clouds/layer[%i]";
- for (i = 0, cloud = cv.begin(); cloud != cv.end(); cloud++, i++) {
- const char *coverage_string[5] =
- { "clear", "few", "scattered", "broken", "overcast" };
- const double thickness[5] = { 0, 65, 600,750, 1000};
- int q;
-
- snprintf(s, 128, cl, i);
- strncat(s, "/coverage", 128);
- q = cloud->getCoverage();
- fgSetString(s, coverage_string[q] );
-
- snprintf(s, 128, cl, i);
- strncat(s, "/elevation-ft", 128);
- fgSetDouble(s, cloud->getAltitude_ft() + station_elevation_ft);
-
- snprintf(s, 128, cl, i);
- strncat(s, "/thickness-ft", 128);
- fgSetDouble(s, thickness[q]);
-
- snprintf(s, 128, cl, i);
- strncat(s, "/span-m", 128);
- fgSetDouble(s, 40000.0);
- }
-
- for (; i < FGEnvironmentMgr::MAX_CLOUD_LAYERS; i++) {
- snprintf(s, 128, cl, i);
- strncat(s, "/coverage", 128);
- fgSetString(s, "clear");
-
- snprintf(s, 128, cl, i);
- strncat(s, "/elevation-ft", 128);
- fgSetDouble(s, -9999);
-
- snprintf(s, 128, cl, i);
- strncat(s, "/thickness-ft", 128);
- fgSetDouble(s, 0);
-
- snprintf(s, 128, cl, i);
- strncat(s, "/span-m", 128);
- fgSetDouble(s, 40000.0);
- }
-
- fgSetDouble("/environment/metar/rain-norm", m->getRain());
- fgSetDouble("/environment/metar/hail-norm", m->getHail());
- fgSetDouble("/environment/metar/snow-norm", m->getSnow());
- fgSetBool("/environment/metar/snow-cover", m->getSnowCover());
-}
-
-void
-FGClouds::update_env_config ()