result_queue.pop();
if ( result.m != NULL ) {
update_metar_properties( result.m );
- fgSetString("/environment/metar/last-metar", result.m->getData());
delete result.m;
update_env_config();
env->reinit();
double d;
char s[128];
+ fgSetString("/environment/metar/real-metar", m->getData());
+ // don't update with real weather when we use a custom weather scenario
+ if( strcmp(fgGetString("/environment/weather-scenario", "METAR"), "METAR") )
+ return;
+ fgSetString("/environment/metar/last-metar", m->getData());
fgSetString("/environment/metar/station-id", m->getId());
fgSetDouble("/environment/metar/min-visibility-m",
m->getMinVisibility().getVisibility_m() );
_controller->setEnvironment(_environment);
set_subsystem("controller", _controller, 0.5);
- fgClouds = new FGClouds;
+ fgClouds = new FGClouds( _controller );
}
FGEnvironmentMgr::~FGEnvironmentMgr ()
#include <Airports/simple.hxx>
#include <Main/util.hxx>
+#include "environment_ctrl.hxx"
#include "environment_mgr.hxx"
#include "fgmetar.hxx"
#include "fgclouds.hxx"
extern SGSky *thesky;
-FGClouds::FGClouds() :
+FGClouds::FGClouds(FGEnvironmentCtrl * controller) :
station_elevation_ft(0.0),
+ _controller( controller ),
snd_lightning(NULL)
{
update_event = 0;
FGMetar *m = new FGMetar( station + fakeMetar );
update_metar_properties( m );
update_env_config();
+ // propagate aloft tables
+ _controller->reinit();
+
fgSetString("/environment/metar/last-metar", m->getData());
// TODO:desactivate real metar updates
if( scenario == "Fair weather" ) {
string scenario = fgGetString("/environment/weather-scenario", "METAR");
if( scenario == "METAR" ) {
- string realMetar = fgGetString("/environment/metar/last-metar", "");
+ string realMetar = fgGetString("/environment/metar/real-metar", "");
if( realMetar != "" ) {
+ fgSetString("/environment/metar/last-metar", realMetar.c_str());
FGMetar *m = new FGMetar( realMetar );
update_metar_properties( m );
update_env_config();
+ // propagate aloft tables
+ _controller->reinit();
}
buildMETAR();
}
class SGNewCloud;
class SGCloudField;
class FGMetar;
+class FGEnvironmentCtrl;
class FGClouds {
int update_event;
SGSoundSample *snd_lightning;
-
+ FGEnvironmentCtrl * _controller;
float station_elevation_ft;
public:
- FGClouds();
+ FGClouds(FGEnvironmentCtrl * controller);
~FGClouds();
void build(void);
};
-#endif // _FGCLOUDS_HXX
\ No newline at end of file
+#endif // _FGCLOUDS_HXX
fgGetDouble("/environment/metar/rain-norm", 0.0),
fgGetDouble("/environment/metar/snow-norm", 0.0),
fgGetDouble("/environment/metar/hail-norm", 0.0),
- fgGetDouble("/orientation/pitch-deg", 0.0),
- fgGetDouble("/orientation/roll-deg", 0.0),
+ current__view->getPitch_deg() - current__view->getPitchOffset_deg(),
+ current__view->getRoll_deg() + current__view->getRollOffset_deg(),
+ - current__view->getHeadingOffset_deg(),
fgGetDouble("/velocities/airspeed-kt", 0.0));
if ( draw_otw ) {