From 0b04bf9cddab6c9ae62657d01f57898ee4fd5b7a Mon Sep 17 00:00:00 2001
From: ThorstenB <brehmt@gmail.com>
Date: Sat, 6 Aug 2011 12:54:21 +0200
Subject: [PATCH] #393: Vertical speed indicator affected by sim speed up VSI
 showed incorrect values with sim speed-up factors != 1. Time dt must be
 corrected by sim speed up factor.

---
 src/Instrumentation/vertical_speed_indicator.cxx | 4 ++++
 src/Instrumentation/vertical_speed_indicator.hxx | 1 +
 2 files changed, 5 insertions(+)

diff --git a/src/Instrumentation/vertical_speed_indicator.cxx b/src/Instrumentation/vertical_speed_indicator.cxx
index e5c9f7432..e062db010 100644
--- a/src/Instrumentation/vertical_speed_indicator.cxx
+++ b/src/Instrumentation/vertical_speed_indicator.cxx
@@ -32,6 +32,7 @@ VerticalSpeedIndicator::init ()
     _serviceable_node = node->getChild("serviceable", 0, true);
     _pressure_node = fgGetNode(_static_pressure.c_str(), true);
     _speed_node = node->getChild("indicated-speed-fpm", 0, true);
+    _speed_up_node = fgGetNode("/sim/speed-up", true);
 
                                 // Initialize at ambient pressure
     _internal_pressure_inhg = _pressure_node->getDoubleValue();
@@ -44,6 +45,9 @@ VerticalSpeedIndicator::update (double dt)
                                 // from 10000 to 10500 for manual factor
     if (_serviceable_node->getBoolValue()) {
         double pressure = _pressure_node->getDoubleValue();
+        double speed_up = _speed_up_node->getDoubleValue();
+        if( speed_up > 1 )
+            dt *= speed_up;
         _speed_node
             ->setDoubleValue((_internal_pressure_inhg - pressure) * 10500);
         _internal_pressure_inhg =
diff --git a/src/Instrumentation/vertical_speed_indicator.hxx b/src/Instrumentation/vertical_speed_indicator.hxx
index 2b6a930d4..d40aa5693 100644
--- a/src/Instrumentation/vertical_speed_indicator.hxx
+++ b/src/Instrumentation/vertical_speed_indicator.hxx
@@ -49,6 +49,7 @@ private:
     SGPropertyNode_ptr _serviceable_node;
     SGPropertyNode_ptr _pressure_node;
     SGPropertyNode_ptr _speed_node;
+    SGPropertyNode_ptr _speed_up_node;
     
 };