diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/HoverCraft/HoverCraft.sln b/HoverCraft/HoverCraft.sln new file mode 100644 index 0000000..3708fe2 --- /dev/null +++ b/HoverCraft/HoverCraft.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.25420.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HoverCraft", "HoverCraft\HoverCraft.csproj", "{864D58C6-A332-4B7C-8343-4A7378ACC3E9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {864D58C6-A332-4B7C-8343-4A7378ACC3E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {864D58C6-A332-4B7C-8343-4A7378ACC3E9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {864D58C6-A332-4B7C-8343-4A7378ACC3E9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {864D58C6-A332-4B7C-8343-4A7378ACC3E9}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/HoverCraft/HoverCraft/Class2.cs b/HoverCraft/HoverCraft/Class2.cs new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/HoverCraft/HoverCraft/Class2.cs @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/HoverCraft/HoverCraft/HoverCraft.csproj b/HoverCraft/HoverCraft/HoverCraft.csproj new file mode 100644 index 0000000..ef39fd2 --- /dev/null +++ b/HoverCraft/HoverCraft/HoverCraft.csproj @@ -0,0 +1,89 @@ + + + + + Debug + AnyCPU + {864D58C6-A332-4B7C-8343-4A7378ACC3E9} + Library + Properties + HoverCraft + HoverCraft + v4.5.2 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + False + ..\..\..\..\..\..\..\Program Files\Common Files\Kerbal Space Program\KSP_x64_Data\Managed\Assembly-CSharp.dll + + + + + + + + + + + + + + False + ..\..\..\..\..\..\..\Program Files\Common Files\Kerbal Space Program\KSP_x64_Data\Managed\UnityEngine.dll + + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + \ No newline at end of file diff --git a/HoverCraft/HoverCraft/Hovercraft.cs b/HoverCraft/HoverCraft/Hovercraft.cs new file mode 100644 index 0000000..9c98364 --- /dev/null +++ b/HoverCraft/HoverCraft/Hovercraft.cs @@ -0,0 +1,302 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +//using System.Threading.Tasks; +using UnityEngine; + +public class Hovercraft : PartModule +{ + [KSPField] + public float hoverForce = 0F; + public AnimationState[] deployStates; + [KSPField(isPersistant = false)] + public bool hasDeployAnimation = true; + [KSPField(isPersistant = false)] + public string deployAnimName = "move"; + [KSPField] + public float rearoffset = 0.0F; + [KSPField] + public float fuelefficiency = 0.002F; + [KSPField] + public float liftCap = 20f; + public float upwardSpeedrl = 0f; + public float upwardSpeedl = 0f; + public float upwardSpeedrr = 0f; + public float upwardSpeedr = 0f; + float rightrcrelative = 1; + float leftrcrelative = 1; + float rearrightrcrelative = 1; + float rearleftrcrelative = 1; + Vector3 rightrcrelativePosition = Vector3.forward; + Vector3 leftrcrelativePosition = Vector3.forward; + Vector3 rearrightrcrelativePosition = Vector3.forward; + Vector3 rearleftrcrelativePosition = Vector3.forward; + Transform CoMTransform = new GameObject().transform; + + //[KSPField(guiName = "hoverdamp", guiActive = true)] + //private string damp = "None"; + + [KSPField(guiActive = false, guiActiveEditor = true, guiName = "Hover Height", isPersistant = true), UI_FloatRange(minValue = 0f, maxValue = 5f, stepIncrement = 0.1f)] + public float hoverHeight = 2.5f; + + [KSPField(guiActive = true, guiActiveEditor = true, guiName = "Max Lift", isPersistant = true), UI_FloatRange(minValue = 0f, maxValue = 20f, stepIncrement = 0.5f)] + public float maxlift = 0f; + + [KSPField(guiActive = true, guiActiveEditor = true, guiName = "DAMP", isPersistant = true), UI_FloatRange(minValue = 0f, maxValue = 2f, stepIncrement = 0.1f)] + public float hoverDamp = 1f; + + protected Transform rightrcTransform = null; + + protected Transform leftrcTransform = null; + + protected Transform rearrightrcTransform = null; + + protected Transform rearleftrcTransform = null; + + List HoverEmitters; + + public override void OnStart(PartModule.StartState state) + { + base.OnStart(state); + { + + if (state != StartState.Editor && state != StartState.None) + { + this.enabled = true; + this.part.force_activate(); + } + else + { + this.enabled = false; + } + if (base.part.FindModelTransform("rightrc") != null) + { + this.rightrcTransform = base.part.FindModelTransform("rightrc"); + } + if (base.part.FindModelTransform("leftrc") != null) + { + this.leftrcTransform = base.part.FindModelTransform("leftrc"); + } + if (base.part.FindModelTransform("rearrightrc") != null) + { + this.rearrightrcTransform = base.part.FindModelTransform("rearrightrc"); + } + if (base.part.FindModelTransform("rearleftrc") != null) + { + this.rearleftrcTransform = base.part.FindModelTransform("rearleftrc"); + } + + if (deployAnimName != "") + { + deployStates = SetUpAnimation(deployAnimName, this.part); + } + if (hasDeployAnimation) + { + deployStates = SetUpAnimation(deployAnimName, this.part); + foreach (AnimationState anim in deployStates) + { + anim.enabled = false; + } + } + foreach (var emitter in part.FindModelComponents()) + { + emitter.emit = false; + EffectBehaviour.RemoveParticleEmitter(emitter); + } + HoverEmitters = new List(); + foreach (Transform htf in part.FindModelTransforms("HoverEmi")) + { + KSPParticleEmitter kpe = htf.GetComponent(); + HoverEmitters.Add(kpe); + kpe.emit = false; + } + + } + + //CoMTransform.position = vessel.CoM; + //CoMTransform.rotation = vessel.transform.rotation; + //rightrcrelativePosition = CoMTransform.InverseTransformPoint(rightrcTransform.position); + //leftrcrelativePosition = CoMTransform.InverseTransformPoint(leftrcTransform.position); + //rearrightrcrelativePosition = CoMTransform.InverseTransformPoint(rearrightrcTransform.position); + //rearleftrcrelativePosition = CoMTransform.InverseTransformPoint(rearleftrcTransform.position); + //rightrcrelative = 1 / System.Math.Abs(rightrcrelativePosition.y); + //leftrcrelative = 1 / System.Math.Abs(leftrcrelativePosition.y); + //rearrightrcrelative = 1 / System.Math.Abs(rearrightrcrelativePosition.y); + //rearleftrcrelative = 1 / System.Math.Abs(rearleftrcrelativePosition.y); + + } + + + public override void OnFixedUpdate() + { + if (!HighLogic.LoadedSceneIsFlight) return; + Vector3 gee = FlightGlobals.getGeeForceAtPosition(transform.position); + hoverForce = vessel.GetTotalMass() * gee.magnitude; + if (base.part.FindModelTransform("rightrc") != null&&!rightrcTransform) + { + this.rightrcTransform = base.part.FindModelTransform("rightrc"); + } + if (base.part.FindModelTransform("leftrc") != null&&!leftrcTransform) + { + this.leftrcTransform = base.part.FindModelTransform("leftrc"); + } + if (base.part.FindModelTransform("rearrightrc") != null&&!rearrightrcTransform) + { + this.rearrightrcTransform = base.part.FindModelTransform("rearrightrc"); + } + if (base.part.FindModelTransform("rearleftrc") != null&&!rearleftrcTransform) + { + this.rearleftrcTransform = base.part.FindModelTransform("rearleftrc"); + } + + if (hoverHeight != 0 && maxlift != 0) + { + if (hasDeployAnimation) + { + foreach (AnimationState anim in deployStates) + { + //animation clamping + if (anim.normalizedTime > 1) + { + anim.speed = 0; + anim.normalizedTime = 1; + } + if (anim.normalizedTime < 0) + { + anim.speed = 0; + anim.normalizedTime = 0; + } + + //deploying + if (hoverHeight != 0 && maxlift != 0) + { + anim.enabled = true; + if (anim.normalizedTime < 1 && anim.speed < 1) + { + anim.speed = 1; + } + if (anim.normalizedTime == 1) + { + anim.enabled = false; + } + } + } + + } + upwardSpeedr = DoHoverForce(rightrcTransform, hoverHeight, rearoffset, hoverDamp, hoverForce, rightrcrelative, maxlift, upwardSpeedr, this.part); + upwardSpeedl = DoHoverForce(leftrcTransform, hoverHeight, rearoffset, hoverDamp, hoverForce, leftrcrelative, maxlift, upwardSpeedl, this.part); + upwardSpeedrr = DoHoverForce(rearrightrcTransform, hoverHeight, rearoffset, hoverDamp, hoverForce, rearrightrcrelative, maxlift, upwardSpeedrr, this.part); + upwardSpeedrl = DoHoverForce(rearleftrcTransform, hoverHeight, rearoffset, hoverDamp, hoverForce, rearleftrcrelative, maxlift, upwardSpeedrl, this.part); + } + else + { + upwardSpeedr = 0; + upwardSpeedl = 0; + upwardSpeedrr = 0; + upwardSpeedrl = 0; + } + + foreach (var pEmitter in HoverEmitters) + { + pEmitter.maxEmission = (int)(10f*(upwardSpeedr + upwardSpeedl + upwardSpeedrr + upwardSpeedrl)); + pEmitter.minEmission = (int)(10f * (upwardSpeedr + upwardSpeedl + upwardSpeedrr + upwardSpeedrl)); + pEmitter.Emit(); + //if (!pEmitter.useWorldSpace) + //{ + // if (pEmitter.maxEnergy < 0.5f) + // { + // float twoFrameTime = Mathf.Clamp(Time.deltaTime * 2f, 0.02f, 0.499f); + // pEmitter.maxEnergy = twoFrameTime; + // pEmitter.minEnergy = twoFrameTime / 3f; + // } + // pEmitter.Emit(); + //} + } + + if (hoverHeight == 0 || maxlift == 0) + { + if (hasDeployAnimation) + { + foreach (AnimationState anim in deployStates) + { + //animation clamping + if (anim.normalizedTime > 1) + { + anim.speed = 0; + anim.normalizedTime = 1; + } + if (anim.normalizedTime < 0) + { + anim.speed = 0; + anim.normalizedTime = 0; + } + anim.enabled = true; + if (anim.normalizedTime > 0 && anim.speed > -1) + { + anim.speed = -1; + } + if (anim.normalizedTime == 0) + { + anim.enabled = false; + } + } + } + } + } + + static float DoHoverForce(Transform rcTransform, float hoverHeight, float offset, float hoverDamp, float hoverForce, float rcrelative, float maxlift, float upwardSpeed, Part part) + { + RaycastHit hit; + Ray rcray = new Ray(rcTransform.position, rcTransform.forward); + float height = 0.0f; + bool Ray = Physics.Raycast(rcray, out hit, hoverHeight, 557057); + if (FlightGlobals.ActiveVessel.mainBody.ocean) //if mainbody has ocean we land on water before the seabed + { + height = FlightGlobals.getAltitudeAtPos(rcTransform.position); + } + if (Ray || height < hoverHeight) + { + float hoverError = 0.0f; + + if (Ray) hoverError = hoverHeight - hit.distance; + + if (!Ray || height < hit.distance) hoverError = hoverHeight - height; + + hoverError += offset; + upwardSpeed -= hoverError; + + float lift = (hoverError - upwardSpeed * hoverDamp / Time.fixedDeltaTime) * hoverForce * rcrelative; + + if (lift > maxlift * hoverForce) lift = maxlift * hoverForce; + + upwardSpeed = hoverError; + + if (hoverError >= 0.0f) part.AddForceAtPosition(-lift * rcTransform.forward, rcTransform.position); + //Debug.Log(hoverError); + //Debug.Log(lift); + } + else + { + upwardSpeed = 0f; + } + return upwardSpeed; + } + + public static AnimationState[] SetUpAnimation(string animationName, Part part) //Thanks Majiir!(From BDA) + { + var states = new List(); + foreach (var animation in part.FindModelAnimators(animationName)) + { + var animationState = animation[animationName]; + animationState.speed = 0; + animationState.enabled = true; + animationState.wrapMode = WrapMode.ClampForever; + animation.Blend(animationName); + states.Add(animationState); + } + return states.ToArray(); + } + +} + diff --git a/HoverCraft/HoverCraft/Hovermotor.cs b/HoverCraft/HoverCraft/Hovermotor.cs new file mode 100644 index 0000000..59aaebf --- /dev/null +++ b/HoverCraft/HoverCraft/Hovermotor.cs @@ -0,0 +1,171 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +//using System.Threading.Tasks; +using UnityEngine; + +public class Hovermotor : PartModule +{ + [KSPField] + public float liftratio = 1F; + [KSPField] + public float hoverForce = 0F; + [KSPField] + public float yaws = 0F; + [KSPField] + public float upwardSpeed = 0f; + [KSPField(guiActive = true, guiActiveEditor = true, guiName = "Hover Height", isPersistant = true), UI_FloatRange(minValue = 0f, maxValue = 5f, stepIncrement = 0.1f)] + public float hoverHeight = 0f; + + [KSPField(guiActive = true, guiActiveEditor = true, guiName = "Max Lift", isPersistant = true), UI_FloatRange(minValue = 0f, maxValue = 10f, stepIncrement = 0.1f)] + public float maxlift = 0f; + + [KSPField(guiActive = true, guiActiveEditor = true, guiName = "DAMP", isPersistant = true), UI_FloatRange(minValue = 0f, maxValue = 5f, stepIncrement = 0.1f)] + public float hoverDamp = 1f; + + public float fuelefficiency = 0.001F; + public Vector3 parameter = Vector3.zero; + public Vector3 parametertemp = Vector3.zero; + public bool modified = false; + + float hoverError = 0; + private float rotation = 0F; + + protected Transform RCTransform = null; + + protected Transform rotor = null; + [KSPField(guiName = "hoverdis", guiActive = true)] + private string dis = "None"; + + + + + protected Transform rotorTransform = null; + + public override void OnStart(PartModule.StartState state) + { + base.OnStart(state); + { + if (state != StartState.Editor && state != StartState.None) + { + this.enabled = true; + this.part.force_activate(); + } + else + { + this.enabled = false; + } + + if (base.part.FindModelTransform("rotor") != null) + { + this.rotor = base.part.FindModelTransform("rotor"); + } + + if (base.part.FindModelTransform("RC") != null) + { + this.RCTransform = base.part.FindModelTransform("RC"); + } + } + + } + + + public override void OnFixedUpdate() + { + + parameter = new Vector3(maxlift, hoverHeight, hoverDamp); + if (parameter != parametertemp) + { + modified = true; + } + foreach (Part p in this.vessel.Parts) + { + foreach (PartModule m in p.Modules) + { + Hovermotor motor = null; + if (m.moduleName == "Hovermotor") + { + motor = (Hovermotor)m; + if (modified == true && motor.GetInstanceID() != GetInstanceID()) + { + if (motor.modified == true) + { + hoverDamp = motor.hoverDamp; + maxlift = motor.maxlift; + hoverHeight = motor.hoverHeight; + parameter = motor.parameter; + parametertemp = motor.parameter; + + } + else + { + motor.hoverDamp = hoverDamp; + motor.maxlift = maxlift; + motor.hoverHeight = hoverHeight; + motor.parameter = parameter; + motor.parametertemp = parameter; + } + } + } + } + } + modified = false; + if (!HighLogic.LoadedSceneIsFlight || !vessel.isActiveVessel) return; + float pitch = vessel.ctrlState.pitch; + float roll = vessel.ctrlState.roll; + float yaw = vessel.ctrlState.yaw; + float y = vessel.ctrlState.Y; + float x = vessel.ctrlState.X; + float throttle = vessel.ctrlState.mainThrottle; + + Vector3 srfVelocity = vessel.GetSrfVelocity(); + float VerticalV; + VerticalV = (float)vessel.verticalSpeed; + Vector3 Airspeed = RCTransform.InverseTransformDirection(srfVelocity); + Vector3 gee = FlightGlobals.getGeeForceAtPosition(RCTransform.position); + hoverForce = vessel.GetTotalMass() * gee.magnitude; + if (FlightGlobals.ActiveVessel.altitude - FlightGlobals.ActiveVessel.pqsAltitude < 2400) + { + + //Vector3 yawsForce = vessel.GetTotalMass() * Airspeed.x * yaws * -part.transform.right; + //part.rigidbody.AddForceAtPosition(yawsForce, part.transform.position); + + RaycastHit hit; + Ray rcray = new Ray(RCTransform.position, -RCTransform.up); + //LayerMask pRayMask = 33792; + if (Physics.Raycast(rcray, out hit)) + { + hoverError = hoverHeight - hit.distance; + if (FlightGlobals.ActiveVessel.mainBody.ocean) + { + float height = FlightGlobals.getAltitudeAtPos(RCTransform.position); + if (hit.distance > height) + { + hoverError = hoverHeight - height; + } + } + upwardSpeed -= hoverError; + float lift = (hoverError - upwardSpeed * hoverDamp) * hoverForce * maxlift; + float consumption = Mathf.Abs(lift) * fuelefficiency + 0.01f; + upwardSpeed = hoverError; + dis = hit.distance.ToString("R"); + if (hoverError >= 0) + { + float resourceDrawn = this.part.RequestResource("ElectricCharge", consumption); + liftratio = resourceDrawn / consumption; + part.AddForceAtPosition(liftratio * lift * RCTransform.up, RCTransform.position); + } + rotor.transform.localEulerAngles = new Vector3( + 0, rotation, 0); + rotation += 6 * lift * 120 * TimeWarp.deltaTime; + while (rotation > 360) rotation -= 360; + while (rotation < 0) rotation += 360; + parametertemp = parameter; + + } + + } + } +} + diff --git a/HoverCraft/HoverCraft/Properties/AssemblyInfo.cs b/HoverCraft/HoverCraft/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..2081f9d --- /dev/null +++ b/HoverCraft/HoverCraft/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("HoverCraft")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("HoverCraft")] +[assembly: AssemblyCopyright("Copyright © 2017")] +[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 +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("864d58c6-a332-4b7c-8343-4a7378acc3e9")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// 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")] diff --git a/HoverCraft/HoverCraft/Properties/Resources.Designer.cs b/HoverCraft/HoverCraft/Properties/Resources.Designer.cs new file mode 100644 index 0000000..5ffede0 --- /dev/null +++ b/HoverCraft/HoverCraft/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace HoverCraft.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HoverCraft.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/HoverCraft/HoverCraft/Properties/Resources.resx b/HoverCraft/HoverCraft/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/HoverCraft/HoverCraft/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/HoverCraft/HoverCraft/Properties/Settings.Designer.cs b/HoverCraft/HoverCraft/Properties/Settings.Designer.cs new file mode 100644 index 0000000..688aa46 --- /dev/null +++ b/HoverCraft/HoverCraft/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace HoverCraft.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/HoverCraft/HoverCraft/Properties/Settings.settings b/HoverCraft/HoverCraft/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/HoverCraft/HoverCraft/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + +