wind_from_north_fps = 0;
wind_from_east_fps = 0;
wind_from_down_fps = 0;
+ thermal_lift_fps = 0;
+ ridge_lift_fps= 0;
altitude_half_to_sun_m = 1000;
altitude_tropo_top_m = 10000;
+ #ifdef USING_TABLES
_setup_tables();
+ #endif
_recalc_density();
_recalc_relative_humidity();
-
+ live_update = true;
}
FGEnvironment::FGEnvironment()
maybe_copy_value(this, node, "turbulence/rate-hz",
&FGEnvironment::set_turbulence_rate_hz);
- _recalc_alt_temperature();
+ // calculate derived properties here to avoid duplicate expensive computations
+ _recalc_ne();
- _recalc_alt_pressure();
++ _recalc_alt_pt();
+ _recalc_alt_dewpoint();
+ _recalc_density();
+ _recalc_relative_humidity();
+
+ set_live_update(live_update);
}
temperature_sea_level_degc = t;
if (dewpoint_sea_level_degc > t)
dewpoint_sea_level_degc = t;
- _recalc_alt_pt();
- _recalc_density();
+ if( live_update ) {
- _recalc_alt_temperature();
++ _recalc_alt_pt();
+ _recalc_density();
+ }
}
void
FGEnvironment::set_temperature_degc (double t)
{
temperature_degc = t;
- _recalc_sl_temperature();
- _recalc_sl_pressure();
- _recalc_alt_pt();
- _recalc_density();
- _recalc_relative_humidity();
+ if( live_update ) {
+ _recalc_sl_temperature();
++ _recalc_sl_pressure();
++ _recalc_alt_pt();
+ _recalc_density();
+ _recalc_relative_humidity();
+ }
}
void
FGEnvironment::set_pressure_sea_level_inhg (double p)
{
pressure_sea_level_inhg = p;
- _recalc_alt_pt();
- _recalc_density();
+ if( live_update ) {
- _recalc_alt_pressure();
++ _recalc_alt_pt();
+ _recalc_density();
+ }
}
void
FGEnvironment::set_elevation_ft (double e)
{
elevation_ft = e;
- _recalc_alt_dewpoint();
- _recalc_alt_pt();
- _recalc_density();
- _recalc_relative_humidity();
+ if( live_update ) {
- _recalc_alt_temperature();
+ _recalc_alt_dewpoint();
- _recalc_alt_pressure();
++ _recalc_alt_pt();
+ _recalc_density();
+ _recalc_relative_humidity();
+ }
}
void
sin(wind_from_heading_deg * SGD_DEGREES_TO_RADIANS);
}
+void
+FGEnvironment::_recalc_updraft ()
+{
+ wind_from_down_fps = thermal_lift_fps + ridge_lift_fps ;
+}
+
+ // Intended to help with the interpretation of METAR data,
+ // not for random in-flight outside-air temperatures.
void
FGEnvironment::_recalc_sl_temperature ()
{
(do_interp(env1->get_turbulence_rate_hz(),
env2->get_turbulence_rate_hz(),
fraction));
- result->_recalc_alt_temperature();
+
+ // calculate derived properties here to avoid duplicate expensive computations
+ result->_recalc_ne();
- result->_recalc_alt_pressure();
++ result->_recalc_alt_pt();
+ result->_recalc_alt_dewpoint();
+ result->_recalc_density();
+ result->_recalc_relative_humidity();
+
+ result->set_live_update(live_update);
}
// end of environment.cxx