--- FlightGear-0.9.9/src/Instrumentation/clock.cxx +++ FlightGear-0.9.9/src/Instrumentation/clock.cxx @@ -21,6 +21,7 @@ _indicated_hour(0), _local_hour(0), _standstill_offset(0), + _speedup_offset(0), name("clock"), num(0) { @@ -80,6 +81,10 @@ void Clock::update (double delta_time_sec) { + double old = _speedup_offset; + _speedup_offset += delta_time_sec * (fgGetInt("/sim/speed-up") - 1); + globals->inc_warp( (int) _speedup_offset - (int) old ); + if (!_serviceable_node->getBoolValue()) { if (_is_serviceable) { _string_node->setStringValue(""); --- FlightGear-0.9.9/src/Instrumentation/clock.hxx +++ FlightGear-0.9.9/src/Instrumentation/clock.hxx @@ -55,6 +55,7 @@ char _indicated_short_string[16]; char _local_short_string[16]; long _standstill_offset; + double _speedup_offset; string name; int num; --- FlightGear-0.9.9/src/Instrumentation/instrument_mgr.cxx +++ FlightGear-0.9.9/src/Instrumentation/instrument_mgr.cxx @@ -112,7 +112,7 @@ new AttitudeIndicator( node ) ); } else if ( name == "clock" ) { set_subsystem( "instrument" + temp.str(), - new Clock( node ), 0.25 ); + new Clock( node ), 0.10 ); } else if ( name == "dme" ) { set_subsystem( "instrument" + temp.str(), new DME( node ), 1.0 ); --- FlightGear-0.9.9/src/Instrumentation/vertical_speed_indicator.cxx +++ FlightGear-0.9.9/src/Instrumentation/vertical_speed_indicator.cxx @@ -70,6 +70,7 @@ double pressure = _pressure_node->getDoubleValue(); _speed_node ->setDoubleValue((_internal_pressure_inhg - pressure) * 10500); + for (int i = fgGetInt("/sim/speed-up"); i--; ) _internal_pressure_inhg = fgGetLowPass(_internal_pressure_inhg, _pressure_node->getDoubleValue(),