VOID_Tools: New CelestialBody tools.
VOID_Tools: New CelestialBody tools.

--- a/VOID_HUDAdvanced.cs
+++ b/VOID_HUDAdvanced.cs
@@ -134,7 +134,7 @@
 					VOID_Data.vesselAngularVelocity.ToSIString(2)
 				);
 
-				if (VOID_Data.stageNominalThrust != 0)
+				if (VOID_Data.stageNominalThrust != 0d)
 				{
 					leftHUD.AppendFormat(
 						string.Intern("Thrust Offset: {0}\n"),
@@ -239,7 +239,7 @@
 				this.leftHUDPos.value = GUI.Window(
 					VOID_Core.Instance.windowID,
 					this.leftHUDPos,
-					this.leftHUDWindow,
+					VOID_Tools.GetWindowHandler(this.leftHUDWindow),
 					GUIContent.none,
 					GUIStyle.none
 				);
@@ -249,7 +249,7 @@
 					this.rightHUDPos.value = GUI.Window(
 						VOID_Core.Instance.windowID,
 						this.rightHUDPos,
-						this.rightHUDWindow,
+						VOID_Tools.GetWindowHandler(this.leftHUDWindow),
 						GUIContent.none,
 						GUIStyle.none
 					);

--- a/VOID_Tools.cs
+++ b/VOID_Tools.cs
@@ -35,6 +35,64 @@
 {
 	public static partial class VOID_Tools
 	{
+		#region CelestialBody Utilities
+		public static bool hasAncestor(this CelestialBody bodyA, CelestialBody bodyB)
+		{
+			if (bodyA == null || bodyB == null)
+			{
+				return false;
+			}
+
+			while (bodyA.orbitDriver != null)
+			{
+				if (bodyA.orbit.referenceBody == bodyB)
+				{
+					return true;
+				}
+
+				bodyA = bodyA.orbit.referenceBody;
+			} 
+
+			return false;
+		}
+
+		public static bool NearestRelatedParents(ref CelestialBody bodyA, ref CelestialBody bodyB)
+		{
+			if (bodyA == null || bodyB == null || bodyA.orbitDriver == null || bodyB.orbitDriver == null)
+			{
+				throw new ArgumentException(string.Concat(
+					"CelestialBody::FindRelatedParents: ",
+					"Neither body may be null, and both bodies must have orbits."
+				));
+			}
+
+			CelestialBody a, b;
+
+			a = bodyA;
+
+			while (bodyA.orbitDriver != null)
+			{
+				b = bodyB;
+
+				while (b.orbitDriver != null)
+				{
+					if (a.orbit.referenceBody == b.orbit.referenceBody)
+					{
+						bodyA = a;
+						bodyB = b;
+						return true;
+					}
+
+					b = b.orbit.referenceBody;
+				}
+
+				a = a.orbit.referenceBody;
+			}
+
+			return false;
+		}
+		#endregion
+
 		#region VESSEL_EXTENSIONS_SCIENCE
 		public static CBAttributeMap.MapAttribute GetBiome(this Vessel vessel)
 		{