From 582ca1be0db91a3b825fa9b2fc346e991de7b76c Mon Sep 17 00:00:00 2001
From: jd284 <jd284@users.noreply.github.com>
Date: Sat, 22 Jul 2017 00:33:58 +0200
Subject: [PATCH] Correctly compute relative velocity when target is in
 different SOI

FlightGlobals.ship_tgtSpeed is not correct when the target is in a different SOI. Fixed by subtracting the GetFrameVel() values instead.
---
 .../Readouts/Rendezvous/RendezvousProcessor.cs      | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/KerbalEngineer/Flight/Readouts/Rendezvous/RendezvousProcessor.cs b/KerbalEngineer/Flight/Readouts/Rendezvous/RendezvousProcessor.cs
index a26d9827..b570f58a 100644
--- a/KerbalEngineer/Flight/Readouts/Rendezvous/RendezvousProcessor.cs
+++ b/KerbalEngineer/Flight/Readouts/Rendezvous/RendezvousProcessor.cs
@@ -182,7 +182,16 @@ public void Update()
                 : FlightGlobals.ship_orbit.referenceBody.orbit;
 
             RelativeInclination = originOrbit.GetRelativeInclination(targetOrbit);
-            RelativeVelocity = FlightGlobals.ship_tgtSpeed;
+
+            if (targetOrbit.referenceBody == FlightGlobals.ship_orbit.referenceBody)
+            {
+                RelativeVelocity = FlightGlobals.ship_tgtSpeed;
+            }
+            else
+            {
+                RelativeVelocity = (FlightGlobals.ship_orbit.GetFrameVel() - targetOrbit.GetFrameVel()).magnitude;
+            }
+
             RelativeSpeed = FlightGlobals.ship_obtSpeed - targetOrbit.orbitalSpeed;
             PhaseAngle = originOrbit.GetPhaseAngle(targetOrbit);
             InterceptAngle = CalcInterceptAngle(targetOrbit, originOrbit);
@@ -229,4 +238,4 @@ private Vector3d GetDescendingNode(Orbit targetOrbit, Orbit originOrbit)
             return Vector3d.Cross(originOrbit.GetOrbitNormal(), targetOrbit.GetOrbitNormal());
         }
     }
-}
\ No newline at end of file
+}