Got VesselRegister ported, and coupled into the Rendezvous window as before. This seems a little messy.
Got VesselRegister ported, and coupled into the Rendezvous window as before. This seems a little messy.

--- a/VOID.csproj
+++ b/VOID.csproj
@@ -49,6 +49,7 @@
     <Compile Include="VOID_Transfer.cs" />
     <Compile Include="VOID_CBInfoBrowser.cs" />
     <Compile Include="VOID_Rendezvous.cs" />
+    <Compile Include="VOID_VesselRegister.cs" />
   </ItemGroup>
   <ItemGroup>
     <Reference Include="Assembly-CSharp">

--- a/VOID_CBInfoBrowser.cs
+++ b/VOID_CBInfoBrowser.cs
@@ -27,10 +27,6 @@
 {
 	public class VOID_CBInfoBrowser : VOID_WindowModule
 	{
-		protected List<CelestialBody> allBodies;
-
-		protected bool bodiesLoaded = false;
-
 		[AVOID_SaveValue("selectedBodyIdx1")]
 		protected VOID_SaveValue<int> selectedBodyIdx1 = 1;
 
@@ -51,19 +47,8 @@
 			this._Name = "Celestial Body Information Browser";
 		}
 
-		protected void LoadAllBodies()
-		{
-			allBodies = FlightGlobals.Bodies;
-			this.bodiesLoaded = true;
-		}
-
 		public override void ModuleWindow(int _)
 		{
-			if (!this.bodiesLoaded)
-			{
-				this.LoadAllBodies();
-			}
-
 			GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
 
 			GUILayout.BeginVertical(GUILayout.Width(150));
@@ -75,20 +60,20 @@
 
 			GUILayout.BeginVertical(GUILayout.Width(150));
 
-			selectedBody1 = allBodies[selectedBodyIdx1];
-			selectedBody2 = allBodies[selectedBodyIdx2];
+			selectedBody1 = VOID_Core.Instance.allBodies[selectedBodyIdx1];
+			selectedBody2 = VOID_Core.Instance.allBodies[selectedBodyIdx2];
 
 			GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
 			if (GUILayout.Button("<", GUILayout.ExpandWidth(false)))
 			{
 				selectedBodyIdx1--;
-				if (selectedBodyIdx1 < 0) selectedBodyIdx1 = allBodies.Count - 1;
-			}
-			GUILayout.Label(allBodies[selectedBodyIdx1].bodyName, VOID_Core.Instance.LabelStyles["center_bold"], GUILayout.ExpandWidth(true));
+				if (selectedBodyIdx1 < 0) selectedBodyIdx1 = VOID_Core.Instance.allBodies.Count - 1;
+			}
+			GUILayout.Label(VOID_Core.Instance.allBodies[selectedBodyIdx1].bodyName, VOID_Core.Instance.LabelStyles["center_bold"], GUILayout.ExpandWidth(true));
 			if (GUILayout.Button(">", GUILayout.ExpandWidth(false)))
 			{
 				selectedBodyIdx1++;
-				if (selectedBodyIdx1 > allBodies.Count - 1) selectedBodyIdx1 = 0;
+				if (selectedBodyIdx1 > VOID_Core.Instance.allBodies.Count - 1) selectedBodyIdx1 = 0;
 			}
 			GUILayout.EndHorizontal();
 			GUILayout.EndVertical();
@@ -98,13 +83,13 @@
 			if (GUILayout.Button("<", GUILayout.ExpandWidth(false)))
 			{
 				selectedBodyIdx2--;
-				if (selectedBodyIdx2 < 0) selectedBodyIdx2 = allBodies.Count - 1;
-			}
-			GUILayout.Label(allBodies[selectedBodyIdx2].bodyName, VOID_Core.Instance.LabelStyles["center_bold"], GUILayout.ExpandWidth(true));
+				if (selectedBodyIdx2 < 0) selectedBodyIdx2 = VOID_Core.Instance.allBodies.Count - 1;
+			}
+			GUILayout.Label(VOID_Core.Instance.allBodies[selectedBodyIdx2].bodyName, VOID_Core.Instance.LabelStyles["center_bold"], GUILayout.ExpandWidth(true));
 			if (GUILayout.Button(">", GUILayout.ExpandWidth(false)))
 			{
 				selectedBodyIdx2++;
-				if (selectedBodyIdx2 > allBodies.Count - 1) selectedBodyIdx2 = 0;
+				if (selectedBodyIdx2 > VOID_Core.Instance.allBodies.Count - 1) selectedBodyIdx2 = 0;
 			}
 			GUILayout.EndHorizontal();
 			GUILayout.EndVertical();

--- a/VOID_Core.cs
+++ b/VOID_Core.cs
@@ -110,6 +110,14 @@
 		[AVOID_SaveValue("resourceRate")]
 		protected VOID_SaveValue<float> resourceRate = 0.2f;
 
+		// Celestial Body Housekeeping
+		protected List<CelestialBody> _allBodies = new List<CelestialBody>();
+		protected bool bodiesLoaded = false;
+
+		// Vessel Type Housekeeping
+		protected List<VesselType> _allVesselTypes = new List<VesselType>();
+		protected bool vesselTypesLoaded = false;
+
 		public float saveTimer = 0;
 
 		protected string defaultSkin = "KSP window 2";
@@ -157,6 +165,22 @@
 			get
 			{
 				return this._LabelStyles;
+			}
+		}
+
+		public List<CelestialBody> allBodies
+		{
+			get
+			{
+				return this._allBodies;
+			}
+		}
+
+		public List<VesselType> allVesselTypes
+		{
+			get
+			{
+				return this._allVesselTypes;
 			}
 		}
 
@@ -231,6 +255,16 @@
 		{
 			this.saveTimer += Time.deltaTime;
 
+			if (!this.bodiesLoaded)
+			{
+				this.LoadAllBodies();
+			}
+
+			if (!this.vesselTypesLoaded)
+			{
+				this.LoadVesselTypes();
+			}
+
 			if (!this.guiRunning)
 			{
 				this.StartGUI ();
@@ -296,6 +330,19 @@
 			this.LabelStyles["txt_right"].alignment = TextAnchor.UpperRight;
 
 			this.GUIStylesLoaded = true;
+		}
+
+		
+		protected void LoadAllBodies()
+		{
+			this._allBodies = FlightGlobals.Bodies;
+			this.bodiesLoaded = true;
+		}
+
+		protected void LoadVesselTypes()
+		{
+			this._allVesselTypes = Enum.GetValues(typeof(VesselType)).OfType<VesselType>().ToList();
+			this.vesselTypesLoaded = true;
 		}
 
 		public void VOIDMainWindow(int _)

--- a/VOID_Rendezvous.cs
+++ b/VOID_Rendezvous.cs
@@ -20,6 +20,8 @@
 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 using KSP;
 using System;
+using System.Collections.Generic;
+using System.Linq;
 using UnityEngine;
 
 namespace VOID
@@ -32,7 +34,7 @@
 		[AVOID_SaveValue("toggleExtendedOrbital")]
 		protected VOID_SaveValue<bool> toggleExtendedOrbital = false;
 
-		protected Vessel selectedVessel;
+		protected VOID_VesselRegister RegisterModule;
 
 		public VOID_Rendezvous()
 		{
@@ -44,6 +46,8 @@
 			Vessel rendezvessel = new Vessel();
 			CelestialBody rendezbody = new CelestialBody();
 
+			this.RegisterModule = VOID_Core.Instance.Modules.Where(m => typeof(VOID_VesselRegister).IsAssignableFrom(m.GetType())).FirstOrDefault() as VOID_VesselRegister;
+
 			GUILayout.BeginVertical();
 
 			//display both
@@ -79,16 +83,16 @@
 			}
 
 			//Show Vessel Register vessel info
-			if (untoggleRegisterInfo == false)
+			if (untoggleRegisterInfo == false && this.RegisterModule != default(IVOID_Module))
 			{
 				GUILayout.Label("Vessel Register:", VOID_Core.Instance.LabelStyles["center_bold"]);
-				if (selectedVessel != null)
-				{
-					rendezvessel = selectedVessel;
+				if (this.RegisterModule.selectedVessel != null)
+				{
+					rendezvessel = this.RegisterModule.selectedVessel;
 					display_rendezvous_info(rendezvessel, null);
 
 					//show set/unset buttons
-					if (FlightGlobals.fetch.VesselTarget == null || (FlightGlobals.fetch.VesselTarget != null && FlightGlobals.fetch.VesselTarget.GetVessel() != selectedVessel))
+					if (FlightGlobals.fetch.VesselTarget == null || (FlightGlobals.fetch.VesselTarget != null && FlightGlobals.fetch.VesselTarget.GetVessel() != this.RegisterModule.selectedVessel))
 					{
 						//no Tgt set or Tgt is not this vessel
 						//show a Set button

--- /dev/null
+++ b/VOID_VesselRegister.cs
@@ -1,1 +1,150 @@
+//
+//  VOID_Orbital.cs
+//
+//  Author:
+//       toadicus <>
+//
+//  Copyright (c) 2013 toadicus
+//
+//  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/>.
+using KSP;
+using System;
+using System.Linq;
+using UnityEngine;
 
+namespace VOID
+{
+	public class VOID_VesselRegister : VOID_WindowModule
+	{
+		[AVOID_SaveValue("selectedBodyIdx")]
+		protected VOID_SaveValue<int> selectedBodyIdx = 0;
+		protected CelestialBody seletedBody;
+
+		[AVOID_SaveValue("selectedVesselTypeIdx")]
+		protected VOID_SaveValue<int> selectedVesselTypeIdx = 0;
+		protected VesselType selectedVesselType;
+
+		protected string vesselSituation = "Orbiting";
+
+		protected Vector2 selectorScrollPos = new Vector2();
+
+		protected Vessel _selectedVessel;
+
+		public Vessel selectedVessel
+		{
+			get
+			{
+				return this._selectedVessel;
+			}
+		}
+
+		public VOID_VesselRegister()
+		{
+			this._Name = "Vessel Register";
+		}
+
+		public override void ModuleWindow(int _)
+		{
+			if (!VOID_Core.Instance.allVesselTypes.Any())
+			{
+				return;
+			}
+
+			GUILayout.BeginVertical();
+
+			GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
+			if (GUILayout.Button("<"))
+			{
+				selectedBodyIdx--;
+				if (selectedBodyIdx < 0) selectedBodyIdx = VOID_Core.Instance.allBodies.Count - 1;
+			}
+			GUILayout.Label(VOID_Core.Instance.allBodies[selectedBodyIdx].bodyName, VOID_Core.Instance.LabelStyles["center_bold"], GUILayout.ExpandWidth(true));
+			if (GUILayout.Button(">"))
+			{
+				selectedBodyIdx++;
+				if (selectedBodyIdx > VOID_Core.Instance.allBodies.Count - 1) selectedBodyIdx = 0;
+			}
+			GUILayout.EndHorizontal();
+
+			seletedBody = VOID_Core.Instance.allBodies[selectedBodyIdx];
+
+			GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
+			if (GUILayout.Button("<"))
+			{
+				selectedVesselTypeIdx--;
+				if (selectedVesselTypeIdx < 0) selectedVesselTypeIdx = VOID_Core.Instance.allVesselTypes.Count - 1;
+			}
+			GUILayout.Label(VOID_Core.Instance.allVesselTypes[selectedVesselTypeIdx].ToString(), VOID_Core.Instance.LabelStyles["center_bold"], GUILayout.ExpandWidth(true));
+			if (GUILayout.Button(">"))
+			{
+				selectedVesselTypeIdx++;
+				if (selectedVesselTypeIdx > VOID_Core.Instance.allVesselTypes.Count - 1) selectedVesselTypeIdx = 0;
+			}
+			GUILayout.EndHorizontal();
+
+			selectedVesselType = VOID_Core.Instance.allVesselTypes[selectedVesselTypeIdx];
+
+			GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
+			if (GUILayout.Button("Landed", GUILayout.ExpandWidth(true))) vesselSituation = "Landed";
+			if (GUILayout.Button("Orbiting", GUILayout.ExpandWidth(true))) vesselSituation = "Orbiting";
+			GUILayout.EndHorizontal();
+
+			GUILayout.BeginHorizontal(GUILayout.ExpandWidth(true));
+			GUILayout.Label(
+				Tools.UppercaseFirst(vesselSituation) + " " + selectedVesselType.ToString() + "s  @ " + seletedBody.bodyName,
+				VOID_Core.Instance.LabelStyles["center"],
+				GUILayout.ExpandWidth(true));
+			GUILayout.EndHorizontal();
+
+			selectorScrollPos = GUILayout.BeginScrollView(selectorScrollPos, false, false);
+
+			foreach (Vessel v in FlightGlobals.Vessels)
+			{
+				if (v != vessel && v.vesselType == selectedVesselType && v.mainBody == seletedBody)
+				{
+					if ((vesselSituation == "Landed" &&
+					     (v.situation == Vessel.Situations.LANDED ||
+					 v.situation == Vessel.Situations.PRELAUNCH ||
+					 v.situation == Vessel.Situations.SPLASHED)) ||
+					    (vesselSituation == "Orbiting" &&
+					 (v.situation == Vessel.Situations.ESCAPING ||
+					 v.situation == Vessel.Situations.FLYING ||
+					 v.situation == Vessel.Situations.ORBITING ||
+					 v.situation == Vessel.Situations.SUB_ORBITAL))
+					    )
+					{
+						if (GUILayout.Button(v.vesselName, GUILayout.ExpandWidth(true)))
+						{
+							if (_selectedVessel != v)
+							{
+								_selectedVessel = v; //set clicked vessel as selected_vessel
+								this._Active = true;    //turn bool on to open the window if closed
+							}
+							else
+							{
+								_selectedVessel = null;
+							}
+						}
+					}
+				}
+			}
+
+			GUILayout.EndScrollView();
+
+			GUILayout.EndVertical();
+
+			GUI.DragWindow();
+		}
+	}
+}