ARConfiguration: Added configurable 'fudge factor.'
ARConfiguration: Added configurable 'fudge factor.'

--- a/ARConfiguration.cs
+++ b/ARConfiguration.cs
@@ -64,9 +64,15 @@
 				};
 
 				this.configWindowPos = this.LoadConfigValue("configWindowPos", this.configWindowPos);
+
 				AntennaRelay.requireLineOfSight = this.LoadConfigValue("requireLineOfSight", false);
+
+				AntennaRelay.radiusRatio = (1 - this.LoadConfigValue("graceRatio", .05d));
+				AntennaRelay.radiusRatio *= AntennaRelay.radiusRatio;
+
 				ARFlightController.requireConnectionForControl =
 					this.LoadConfigValue("requireConnectionForControl", false);
+
 				ModuleLimitedDataTransmitter.fixedPowerCost = this.LoadConfigValue("fixedPowerCost", false);
 
 				Debug.Log(string.Format("{0} v{1} - ARonfiguration loaded!", this.GetType().Name, this.runningVersion));
@@ -124,7 +130,7 @@
 
 			GUILayout.BeginHorizontal();
 
-			bool fixedPowerCost = GUILayout.Toggle(ModuleLimitedDataTransmitter.fixedPowerCost, "Use fixed power cost");
+			bool fixedPowerCost = GUILayout.Toggle(ModuleLimitedDataTransmitter.fixedPowerCost, "Use Fixed Power Cost");
 			if (fixedPowerCost != ModuleLimitedDataTransmitter.fixedPowerCost)
 			{
 				ModuleLimitedDataTransmitter.fixedPowerCost = fixedPowerCost;
@@ -132,6 +138,31 @@
 			}
 
 			GUILayout.EndHorizontal();
+
+			if (requireLineOfSight)
+			{
+				GUILayout.BeginHorizontal();
+
+				double graceRatio = 1d - Math.Sqrt(AntennaRelay.radiusRatio);
+				double newRatio;
+
+				GUILayout.Label(string.Format("Line of Sight 'Fudge Factor': {0:P0}", graceRatio));
+
+				GUILayout.EndHorizontal();
+
+				GUILayout.BeginHorizontal();
+
+				newRatio = GUILayout.HorizontalSlider((float)graceRatio, 0f, 1f, GUILayout.ExpandWidth(true));
+				newRatio = Math.Round(newRatio, 2);
+
+				if (newRatio != graceRatio)
+				{
+					AntennaRelay.radiusRatio = (1d - newRatio) * (1d - newRatio);
+					this.SaveConfigValue("graceRatio", newRatio);
+				}
+
+				GUILayout.EndHorizontal();
+			}
 
 			GUILayout.EndVertical();
 

--- a/ARFlightController.cs
+++ b/ARFlightController.cs
@@ -226,7 +226,7 @@
 			log.Print();
 		}
 
-		protected void Destroy()
+		protected void OnDestroy()
 		{
 			InputLockManager.RemoveControlLock(this.lockID);
 
@@ -237,6 +237,8 @@
 
 			GameEvents.onGameSceneLoadRequested.Remove(this.onSceneChangeRequested);
 			GameEvents.onVesselChange.Remove(this.onVesselChange);
+
+			print("ARFlightController: Destroyed.");
 		}
 		#endregion
 
@@ -245,6 +247,7 @@
 		{
 			if (scene != GameScenes.FLIGHT)
 			{
+				print("ARFlightController: Requesting Destruction.");
 				MonoBehaviour.Destroy(this);
 			}
 		}

--- a/AntennaRange.csproj
+++ b/AntennaRange.csproj
@@ -9,7 +9,7 @@
     <OutputType>Library</OutputType>
     <RootNamespace>AntennaRange</RootNamespace>
     <AssemblyName>AntennaRange</AssemblyName>
-    <ReleaseVersion>1.1</ReleaseVersion>
+    <ReleaseVersion>1.3</ReleaseVersion>
     <SynchReleaseVersion>false</SynchReleaseVersion>
     <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
     <UseMSBuildEngine>False</UseMSBuildEngine>

--- a/AntennaRelay.cs
+++ b/AntennaRelay.cs
@@ -36,6 +36,7 @@
 	public class AntennaRelay
 	{
 		public static bool requireLineOfSight;
+		public static double radiusRatio;
 
 		// We don't have a Bard, so we'll hide Kerbin here.
 		protected CelestialBody Kerbin;
@@ -151,7 +152,7 @@
 				(
 					requireLineOfSight &&
 					this.nearestRelay == null &&
-					!this.vessel.hasLineOfSightTo(this.Kerbin, out this._firstOccludingBody)
+					!this.vessel.hasLineOfSightTo(this.Kerbin, out this._firstOccludingBody, radiusRatio)
 				)
 			)
 			{
@@ -231,7 +232,8 @@
 				}
 
 				// Skip vessels to which we do not have line of sight.
-				if (requireLineOfSight && !this.vessel.hasLineOfSightTo(potentialVessel, out this._firstOccludingBody))
+				if (requireLineOfSight &&
+					!this.vessel.hasLineOfSightTo(potentialVessel, out this._firstOccludingBody, radiusRatio))
 				{
 					Tools.PostDebugMessage(
 						this,

--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -39,7 +39,7 @@
 // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
 // The form "{Major}.{Minor}.*" will automatically update the build and revision,
 // and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion("1.2.*")]
+[assembly: AssemblyVersion("1.3.*")]
 // The following attributes are used to specify the signing key for the assembly,
 // if desired. See the Mono documentation for more information about signing.
 //[assembly: AssemblyDelaySign(false)]