Merge remote-tracking branch 'harryyoung/master' into experimentals
Merge remote-tracking branch 'harryyoung/master' into experimentals

--- a/KerbalEngineer/Flight/Readouts/ReadoutLibrary.cs
+++ b/KerbalEngineer/Flight/Readouts/ReadoutLibrary.cs
@@ -98,8 +98,9 @@
                 readouts.Add(new TimeToAtmosphere());
 
                 // Surface
-                readouts.Add(new AltitudeSeaLevel());
-                readouts.Add(new AltitudeTerrain());
+				readouts.Add(new AltitudeSeaLevel());
+				readouts.Add(new AltitudeTerrain());
+				readouts.Add(new AltitudeUnderWater());
                 readouts.Add(new VerticalSpeed());
                 readouts.Add(new VerticalAcceleration());
                 readouts.Add(new HorizontalSpeed());

--- a/KerbalEngineer/Flight/Readouts/Surface/AltitudeTerrain.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/AltitudeTerrain.cs
@@ -36,9 +36,9 @@
 
         public AltitudeTerrain()
         {
-            this.Name = "Altitude (Terrain)";
+			this.Name = "Altitude (Terrain)";
             this.Category = ReadoutCategory.GetCategory("Surface");
-            this.HelpString = "Shows the vessel's altitude above the terrain.";
+            this.HelpString = "Shows the vessel's altitude above the terrain. Turns off if splashed.";
             this.IsDefault = true;
         }
 
@@ -47,15 +47,18 @@
         #region Methods
 
         public override void Draw(SectionModule section)
-        {
-            if (FlightGlobals.ActiveVessel.terrainAltitude > 0.0)
-            {
-                this.DrawLine((FlightGlobals.ship_altitude - FlightGlobals.ActiveVessel.terrainAltitude).ToDistance(), section.IsHud);
-            }
-            else
-            {
-                this.DrawLine((FlightGlobals.ship_altitude).ToDistance(), section.IsHud);
-            }
+		{
+			if (ScienceUtil.GetExperimentSituation (FlightGlobals.ActiveVessel) != ExperimentSituations.SrfSplashed) 
+			{
+				if (FlightGlobals.ActiveVessel.terrainAltitude > 0.0) 
+				{
+					this.DrawLine ((FlightGlobals.ship_altitude - FlightGlobals.ActiveVessel.terrainAltitude).ToDistance (), section.IsHud);
+				} 
+				else 
+				{
+					this.DrawLine ((FlightGlobals.ship_altitude).ToDistance (), section.IsHud);
+				}
+			}
         }
 
         #endregion

--- /dev/null
+++ b/KerbalEngineer/Flight/Readouts/Surface/AltitudeUnderWater.cs
@@ -1,1 +1,55 @@
+// 
+//     Kerbal Engineer Redux
+// 
+//     Copyright (C) 2014 CYBUTEK
+// 
+//     This program is free software: you can redistribute it and/or modify
+//     it under the terms of the GNU General Public License as published by
+//     the Free Software Foundation, either version 3 of the License, or
+//     (at your option) any later version.
+// 
+//     This program is distributed in the hope that it will be useful,
+//     but WITHOUT ANY WARRANTY; without even the implied warranty of
+//     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//     GNU General Public License for more details.
+// 
+//     You should have received a copy of the GNU General Public License
+//     along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// 
 
+#region Using Directives
+
+using KerbalEngineer.Extensions;
+using KerbalEngineer.Flight.Sections;
+
+#endregion
+
+namespace KerbalEngineer.Flight.Readouts.Surface
+{
+    public class AltitudeUnderWater : ReadoutModule
+    {
+        #region Constructors
+
+        public AltitudeUnderWater()
+        {
+            this.Name = "Altitude (Terrain Under Water)";
+            this.Category = ReadoutCategory.GetCategory("Surface");
+            this.HelpString = "While splashed shows the vessel's altitude to the under water Terrain.";
+            this.IsDefault = false;
+        }
+
+        #endregion
+
+        #region Methods: public
+
+        public override void Draw(SectionModule section)
+        {
+			if (ScienceUtil.GetExperimentSituation (FlightGlobals.ActiveVessel) == ExperimentSituations.SrfSplashed) 
+			{
+				this.DrawLine ((-(FlightGlobals.ActiveVessel.terrainAltitude - FlightGlobals.ship_altitude)).ToDistance (), section.IsHud);
+			}
+        }
+
+        #endregion
+    }
+}