Added project file.
Added project file.

--- a/CoreStrut.cs
+++ b/CoreStrut.cs
@@ -6,9 +6,6 @@
 // Continued from QuantumStrut, © 2013 BoJaN.  Used with permission.
 
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
 using UnityEngine;
 
 namespace QuantumStrut

--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -6,13 +6,9 @@
 // set of attributes. Change these attribute values to modify the information
 // associated with an assembly.
 [assembly: AssemblyTitle("QuantumStrutsContinued")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
+[assembly: AssemblyDescription("A KSP part mod that provides magical struts for rigidifying vessels constructed outside the VAB.")]
 [assembly: AssemblyProduct("QuantumStrutsContinued")]
 [assembly: AssemblyCopyright("Copyright © 2014 toadicus")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
 
 // Setting ComVisible to false makes the types in this assembly not visible 
 // to COM components.  If you need to access a type in this assembly from 
@@ -32,6 +28,5 @@
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
 // [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion("1.0.*")]
 

--- a/QuantumStrut.cs
+++ b/QuantumStrut.cs
@@ -5,10 +5,8 @@
 //
 // Continued from QuantumStrut, © 2013 BoJaN.  Used with permission.
 
+using KSP;
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
 using UnityEngine;
 
 namespace QuantumStrut
@@ -59,33 +57,35 @@
 		[KSPAction("Activate")]
 		public void ActivateStrut(KSPActionParam param)
 		{
+			this.ActivateStrut();
+		}
+
+		[KSPAction("Deactivate")]
+		public void DeactivateStrut(KSPActionParam param)
+		{
+			this.DeactivateStrut();
+		}
+
+		#endregion
+
+		#region Events
+
+		[KSPEvent(guiActive = true, guiName = "Activate", active = true, guiActiveUnfocused = true, unfocusedRange = 2f)]
+		public void ActivateStrut()
+		{
 			IsEnabled = true;
 			CheckHit();
-		}
-
-		[KSPAction("Deactivate")]
-		public void DeactivateStrut(KSPActionParam param)
+			this.Events["ActivateStrut"].guiActiveEditor = false;
+			this.Events["DeactivateStrut"].guiActiveEditor = true;
+		}
+
+		[KSPEvent(guiActive = true, guiName = "Deactivate", active = false, guiActiveUnfocused = true, unfocusedRange = 2f)]
+		public void DeactivateStrut()
 		{
 			IsEnabled = false;
 			CheckHit();
-		}
-
-		#endregion
-
-		#region Events
-
-		[KSPEvent(guiActive = true, guiName = "Activate", active = true, guiActiveUnfocused = true, unfocusedRange = 2f)]
-		public void ActivateStrut()
-		{
-			IsEnabled = true;
-			CheckHit();
-		}
-
-		[KSPEvent(guiActive = true, guiName = "Deactivate", active = false, guiActiveUnfocused = true, unfocusedRange = 2f)]
-		public void DeactivateStrut()
-		{
-			IsEnabled = false;
-			CheckHit();
+			this.Events["ActivateStrut"].guiActiveEditor = true;
+			this.Events["DeactivateStrut"].guiActiveEditor = false;
 		}
 
 		#endregion
@@ -178,15 +178,10 @@
 			base.OnStart(state);
 		}
 
-		public override void OnFixedUpdate()
-		{
-			base.OnFixedUpdate();
-		}
-
-		public override void OnUpdate()
-		{
-			Events["ActivateStrut"].active = !IsEnabled;
-			Events["DeactivateStrut"].active = IsEnabled;
+		public void Update()
+		{
+			Events["ActivateStrut"].guiActiveEditor = Events["ActivateStrut"].active = !IsEnabled;
+			Events["DeactivateStrut"].guiActiveEditor = Events["DeactivateStrut"].active = IsEnabled;
 
 			if (IsEnabled)
 			{
@@ -224,37 +219,68 @@
 
 		void CheckHit()
 		{
+			if (HighLogic.LoadedSceneIsEditor)
+			{
+				Tools.PostDebugMessage(this, "Checking bailing out: in the editor!");
+				return;
+			}
+
 			if (!isEnabled)
 			{
+				Tools.PostDebugMessage(this, "Destroying strut.");
+
 				strut.Destroy();
 				strut = null;
 				return;
 			}
 
+			Tools.PostDebugMessage(this, "Checking for ray hit.");
+
+			Tools.PostDebugMessage(this, "Enabled, continuing.");
+
 			if (strut == null || strut.isDestroyed)
 			{
+				Tools.PostDebugMessage(this, "We have no strut, or the strut has been destroyed.");
+
 				Vector3 dir = getTransform().TransformDirection(Dir);
 				Vector3 start = getTransform().TransformPoint(Start);
 
+				Tools.PostDebugMessage(this, "Got transforms.  Checking for raycast hit.");
+
 				UnityEngine.RaycastHit info = new RaycastHit();
 				bool hit = Physics.Raycast(new UnityEngine.Ray(start + (dir * 0.05f), dir), out info, 10);
+
 				if (hit)
 				{
+					Tools.PostDebugMessage(this, "Found raycast hit.  Fetching target part.");
+
 					Part targetPart = Util.partFromRaycast(info);
 
-					if (targetPart && vessel.parts.Contains(targetPart) && Util.GetEnergy(part.vessel) > 5 * TimeWarp.fixedDeltaTime)
+					Tools.PostDebugMessage(this, "Found target part.");
+
+					if (
+						targetPart && vessel.parts.Contains(targetPart) &&
+						Util.GetEnergy(part.vessel) > 5 * TimeWarp.fixedDeltaTime
+					)
 					{
+						Tools.PostDebugMessage(this, "Target part is in our vessel and we have the energy to continue.");
+
 						strut = new Strut(
 							part,
 							targetPart,
 							targetPart.transform.InverseTransformPoint(info.point),
 							getTransform()
 						);
+
+						Tools.PostDebugMessage(this, "Built a new strut, setting material, colors, and sizes.");
+
 						strut.Material = material;
 						strut.StartColor = startColor;
 						strut.EndColor = endColor;
 						strut.StartSize = StartSize;
 						strut.EndSize = EndSize;
+
+						Tools.PostDebugMessage(this, "Strut all done!");
 					}
 				}
 			}
@@ -304,7 +330,7 @@
 
 					UnityEngine.RaycastHit info = new RaycastHit();
 					bool hit = Physics.Raycast(new UnityEngine.Ray(start + (dir * 0.05f), dir), out info, 10);
-					if (hit)
+					if (hit && IsEnabled)
 					{
 						if (Util.isValid(material))
 							lr.material = material;

--- a/QuantumStrutCore.cs
+++ b/QuantumStrutCore.cs
@@ -5,13 +5,12 @@
 //
 // Continued from QuantumStrut, © 2013 BoJaN.  Used with permission.
 
+using KSP;
+using KSP.IO;
 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
-using System.Linq;
-using System.Text;
 using UnityEngine;
-using KSP.IO;
 
 namespace QuantumStrut
 {

--- /dev/null
+++ b/QuantumStrutsContinued.csproj
@@ -1,1 +1,78 @@
-
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug_win</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D6EC2150-27A5-4CB2-ACF9-C53FF7754A77}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <RootNamespace>QuantumStrutsContinued</RootNamespace>
+    <AssemblyName>QuantumStrutsContinued</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug_win|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <ConsolePause>false</ConsolePause>
+    <CustomCommands>
+      <CustomCommands>
+        <Command type="AfterBuild" command="xcopy /Y ${TargetFile} ..\..\..\Games\KSP_win\GameData\QuantumStrutsContinued\Plugins\" />
+      </CustomCommands>
+    </CustomCommands>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release_win|AnyCPU' ">
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <PlatformTarget>x86</PlatformTarget>
+    <ConsolePause>false</ConsolePause>
+    <CustomCommands>
+      <CustomCommands>
+        <Command type="AfterBuild" command="xcopy /Y ${TargetFile} ..\..\..\Games\KSP_win\GameData\QuantumStrutsContinued\Plugins\" />
+      </CustomCommands>
+    </CustomCommands>
+  </PropertyGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <ItemGroup>
+    <Reference Include="System">
+      <HintPath>..\..\..\Games\KSP_win\KSP_Data\Managed\System.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="Assembly-CSharp">
+      <HintPath>..\..\..\Games\KSP_win\KSP_Data\Managed\Assembly-CSharp.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+    <Reference Include="UnityEngine">
+      <HintPath>..\..\..\Games\KSP_win\KSP_Data\Managed\UnityEngine.dll</HintPath>
+      <Private>False</Private>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="CoreStrut.cs" />
+    <Compile Include="QuantumStrut.cs" />
+    <Compile Include="QuantumStrutCore.cs" />
+    <Compile Include="Strut.cs" />
+    <Compile Include="Util.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="..\ToadicusTools\Tools.cs">
+      <Link>Tools.cs</Link>
+    </Compile>
+  </ItemGroup>
+  <ProjectExtensions>
+    <MonoDevelop>
+      <Properties>
+        <Policies>
+          <StandardHeader Text="${ProjectName} © ${Year} ${AuthorName}&#xA;&#xA;This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. To view a&#xA;copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/3.0/&#xA;&#xA;Continued from QuantumStrut, © 2013 BoJaN.  Used with permission." IncludeInNewFiles="True" />
+        </Policies>
+      </Properties>
+    </MonoDevelop>
+  </ProjectExtensions>
+</Project>

file:a/Strut.cs -> file:b/Strut.cs
--- a/Strut.cs
+++ b/Strut.cs
@@ -5,10 +5,8 @@
 //
 // Continued from QuantumStrut, © 2013 BoJaN.  Used with permission.
 
+using KSP;
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
 using UnityEngine;
 
 namespace QuantumStrut

file:a/Util.cs -> file:b/Util.cs
--- a/Util.cs
+++ b/Util.cs
@@ -5,12 +5,9 @@
 //
 // Continued from QuantumStrut, © 2013 BoJaN.  Used with permission.
 
+using KSP.IO;
 using System;
-using System.Collections.Generic;
 using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using KSP.IO;
 using UnityEngine;
 
 namespace QuantumStrut