Moved ActiveVessel check from UpdateModules to FixedUpdate
Moved ActiveVessel check from UpdateModules to FixedUpdate

file:a/.gitignore -> file:b/.gitignore
--- a/.gitignore
+++ b/.gitignore
@@ -24,7 +24,6 @@
 *_i.c
 *_p.c
 *.ilk
-*.meta
 *.obj
 *.pch
 *.pdb

--- /dev/null
+++ b/Assets/Images.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 3e6865de7d6b77640961d0da684aa385
+folderAsset: yes
+timeCreated: 1457221974
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: images
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Images/app-launcher-icon.psd.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: 9b641aac8f6b8d442a1d9e317ac542f9
+timeCreated: 1457613015
+licenseType: Free
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 2048
+  textureSettings:
+    filterMode: -1
+    aniso: 16
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Images/flight-menu-background.psd.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: b0b9654f43265a049b8697f74bb0849c
+timeCreated: 1457613015
+licenseType: Free
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 2048
+  textureSettings:
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Images/ui-drop-down.psd.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: 58f5bc9b7425c6345a4d4d4606f9ac8e
+timeCreated: 1457613015
+licenseType: Free
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 2048
+  textureSettings:
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 875d74857184ef6439f113ed1f885aa6
+folderAsset: yes
+timeCreated: 1459538298
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Editor.meta
@@ -1,1 +1,8 @@
+fileFormatVersion: 2
+guid: 6825d390ddd6a104ab08bbef4144ea9d
+folderAsset: yes
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Editor/InternalSpaceEditor.cs.meta
@@ -1,1 +1,11 @@
+fileFormatVersion: 2
+guid: f25203942364fe847885998615141196
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Editor/KSPParticleEmitterEditor.cs.meta
@@ -1,1 +1,11 @@
+fileFormatVersion: 2
+guid: ec0ca0dfc44166742a8df645cae06a42
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Editor/PartToolsEditor.cs.meta
@@ -1,1 +1,11 @@
+fileFormatVersion: 2
+guid: 399da387f38a32d43a8c29af87908f97
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Editor/PartToolsWindows.cs.meta
@@ -1,1 +1,11 @@
+fileFormatVersion: 2
+guid: b94b712974ed85e448020fb2a316991d
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Editor/PropEditor.cs.meta
@@ -1,1 +1,11 @@
+fileFormatVersion: 2
+guid: eafc25f2da5fd1645934e987f4c7aff3
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Lib.meta
@@ -1,1 +1,8 @@
+fileFormatVersion: 2
+guid: 7aac1871fcd83264a93348d747b113d6
+folderAsset: yes
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Lib/PartTools.dll.meta
@@ -1,1 +1,19 @@
+fileFormatVersion: 2
+guid: 90118262cf80c7549ab37dd61d08c605
+PluginImporter:
+  serializedVersion: 1
+  iconMap: {}
+  executionOrder: {}
+  isPreloaded: 0
+  platformData:
+    Any:
+      enabled: 1
+      settings: {}
+    Editor:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Lib/PartToolsEditor.dll.meta
@@ -1,1 +1,19 @@
+fileFormatVersion: 2
+guid: e4331bf5e4a45a4488507f28195caf59
+PluginImporter:
+  serializedVersion: 1
+  iconMap: {}
+  executionOrder: {}
+  isPreloaded: 0
+  platformData:
+    Any:
+      enabled: 1
+      settings: {}
+    Editor:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders.meta
@@ -1,1 +1,8 @@
+fileFormatVersion: 2
+guid: f576d8acaf7e5e846ba0cab5c556ee3b
+folderAsset: yes
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/Alpha.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: 91f6e47e2b98cb344bf578969233905c
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/AlphaAdditive.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 6203aefd0f9f41e439681638e43b2602
+timeCreated: 1448468481
+licenseType: Free
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/AlphaSpecular.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: 5e5bd0c65e5edba469513d146dbd61f9
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/Bumped.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: 32714c7f3312f3a4f8728c7ad5fbfd6e
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/BumpedSpecular.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: 03614ee71852fb74c8e7a1042975206f
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/Cutoff.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: 1559851e491ace04180a0025375a30ff
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/CutoffBumped.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: 9db68454b5978314184a231e296a74c9
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/DepthMask.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 90b3f11cfafacdb458ea8f85df8f35a0
+timeCreated: 1457700589
+licenseType: Free
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/Diffuse.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: dfa5576d281e6484790ed88b05bf6c15
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/Emissive.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: 37a01900db115ab4781976bceb4f7057
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/EmissiveBumpedSpecular.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: 857ba6549eff78c4e9e8faafbc93b15e
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/EmissiveSpecular.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 9bb4f07ad47d6044590bf8e2546a6658
+timeCreated: 1448128444
+licenseType: Free
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/InternalBumpedSpecular 1.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 7c0652604e6b38842b3cdf1ee486761e
+timeCreated: 1458202379
+licenseType: Free
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/InternalBumpedSpecular.shader.meta
@@ -1,1 +1,8 @@
+fileFormatVersion: 2
+guid: b53675eb8ece2834bbe8d2edd1ce3ba9
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/KSPParticle AddSmooth.shader.meta
@@ -1,1 +1,6 @@
+fileFormatVersion: 2
+guid: 1752db0aa4762064fa141b2b41eb3eae
+ShaderImporter:
+  defaultTextures: []
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/LightingKSP.cginc.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 6766600fc1203e447be7a1fdcabadea5
+timeCreated: 1455115714
+licenseType: Free
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/LightwrapSpecular.shader.meta
@@ -1,1 +1,8 @@
+fileFormatVersion: 2
+guid: 2563106331ba0f844b342a439bd0837b
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/PBR.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 9952cedaea0c1b84a82b97271046a88d
+folderAsset: yes
+timeCreated: 1448566539
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/PBR/KSP_Standard_Bumped.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 9e273bc4aa80cca4aa7b1d829cece604
+timeCreated: 1456319206
+licenseType: Free
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/ParticleAdd.shader.meta
@@ -1,1 +1,6 @@
+fileFormatVersion: 2
+guid: a45acd8adee64ea4cac55b22bfebe6cb
+ShaderImporter:
+  defaultTextures: []
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/ParticleAdditiveFresnel.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 2319550d1ff59fa4c8fe967d9b6b5adc
+timeCreated: 1446560191
+licenseType: Free
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/ParticleAlpha.shader.meta
@@ -1,1 +1,6 @@
+fileFormatVersion: 2
+guid: 0119f0967dbebbc42bc9f4a0f8224c0b
+ShaderImporter:
+  defaultTextures: []
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/ScrollingUnlit.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: fecf7d1b793420b42bd7aceca03cc705
+timeCreated: 1457959736
+licenseType: Free
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/SolidColorAlpha.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: 1c305ae90596a6446a4ccb724cab1d13
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/Specular.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: 2ebca85d3473f60439b7ab95440e83d8
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/SpecularBumpTransparent.shader.meta
@@ -1,1 +1,6 @@
+fileFormatVersion: 2
+guid: a300027f5fc1d00408c43714110ed874
+ShaderImporter:
+  defaultTextures: []
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/SpecularTransparent.shader.meta
@@ -1,1 +1,6 @@
+fileFormatVersion: 2
+guid: 9734ff0747239d44db81bfccdd6b3eee
+ShaderImporter:
+  defaultTextures: []
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/Unlit.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: bb8ca88c4046c074bb3f3af45d9c855b
+ShaderImporter:
+  userData: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/UnlitColor.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 37009ed9069dfce43a12d30fc381f931
+timeCreated: 1457970059
+licenseType: Free
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/PartTools/Shaders/UnlitTransparent.shader.meta
@@ -1,1 +1,5 @@
+fileFormatVersion: 2
+guid: f7dfb55ef5c52b14c9c18cf4ac48bb24
+ShaderImporter:
+  userData: 
 

file:b/Assets/Parts.meta (new)
--- /dev/null
+++ b/Assets/Parts.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: b2511734b411fd244b463113e5f5c57f
+folderAsset: yes
+timeCreated: 1459537564
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Parts/EngineerChip.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 1d5671e027f0be444a8ddeff7715a3f7
+folderAsset: yes
+timeCreated: 1459539095
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Parts/EngineerChip/EngineerChip.dae.meta
@@ -1,1 +1,89 @@
+fileFormatVersion: 2
+guid: ba92dc968cd43984281a4466efba7b6e
+timeCreated: 1459539468
+licenseType: Free
+ModelImporter:
+  serializedVersion: 18
+  fileIDToRecycleName:
+    100000: Camera
+    100002: //RootNode
+    100004: EngineerChip
+    100006: Lamp
+    100008: node_collider
+    400000: Camera
+    400002: //RootNode
+    400004: EngineerChip
+    400006: Lamp
+    400008: node_collider
+    2300000: EngineerChip
+    2300002: node_collider
+    3300000: EngineerChip
+    3300002: node_collider
+    4300000: node_collider
+    4300002: EngineerChip
+    9500000: //RootNode
+  materials:
+    importMaterials: 0
+    materialName: 0
+    materialSearch: 1
+  animations:
+    legacyGenerateAnimations: 4
+    bakeSimulation: 0
+    optimizeGameObjects: 0
+    motionNodeName: 
+    animationImportErrors: 
+    animationImportWarnings: 
+    animationRetargetingWarnings: 
+    animationDoRetargetingWarnings: 0
+    animationCompression: 1
+    animationRotationError: .5
+    animationPositionError: .5
+    animationScaleError: .5
+    animationWrapMode: 0
+    extraExposedTransformPaths: []
+    clipAnimations: []
+    isReadable: 1
+  meshes:
+    lODScreenPercentages: []
+    globalScale: 1
+    meshCompression: 0
+    addColliders: 0
+    importBlendShapes: 1
+    swapUVChannels: 0
+    generateSecondaryUV: 0
+    useFileUnits: 1
+    optimizeMeshForGPU: 1
+    keepQuads: 0
+    weldVertices: 1
+    secondaryUVAngleDistortion: 8
+    secondaryUVAreaDistortion: 15.000001
+    secondaryUVHardAngle: 88
+    secondaryUVPackMargin: 4
+    useFileScale: 1
+  tangentSpace:
+    normalSmoothAngle: 60
+    splitTangentsAcrossUV: 1
+    normalImportMode: 0
+    tangentImportMode: 1
+  importAnimation: 0
+  copyAvatar: 0
+  humanDescription:
+    human: []
+    skeleton: []
+    armTwist: .5
+    foreArmTwist: .5
+    upperLegTwist: .5
+    legTwist: .5
+    armStretch: .0500000007
+    legStretch: .0500000007
+    feetSpacing: 0
+    rootMotionBoneName: 
+    hasTranslationDoF: 0
+  lastHumanDescriptionAvatarSource: {instanceID: 0}
+  animationType: 0
+  humanoidOversampling: 1
+  additionalBone: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Parts/EngineerChip/EngineerChip.mat.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: 508aa968b16438c438042fefca86dcc9
+timeCreated: 1459539468
+licenseType: Free
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Parts/EngineerChip/EngineerChip.png.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: 59f78834f4b43ba4f849098d80347825
+timeCreated: 1459540984
+licenseType: Free
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 2048
+  textureSettings:
+    filterMode: -1
+    aniso: 16
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 1
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 0
+  textureType: 0
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Parts/EngineerChip/EngineerChip.prefab.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: 7e9829171b5503e44bed3ac61e6e7a18
+timeCreated: 1459539385
+licenseType: Free
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Plugins.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 5301f1a87c4751f4eab615946f0935ff
+folderAsset: yes
+timeCreated: 1446757351
+licenseType: Pro
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Plugins/KSPAssets.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 7810c03ce9571f74183306825d39e103
+folderAsset: yes
+timeCreated: 1456139982
+licenseType: Pro
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Plugins/KSPAssets/KSPAssetCompiler.dll.meta
@@ -1,1 +1,73 @@
+fileFormatVersion: 2
+guid: 0890400b9503e704f8990f50af9b31e0
+timeCreated: 1454319587
+licenseType: Pro
+PluginImporter:
+  serializedVersion: 1
+  iconMap: {}
+  executionOrder: {}
+  isPreloaded: 0
+  platformData:
+    Android:
+      enabled: 0
+      settings:
+        CPU: AnyCPU
+    Any:
+      enabled: 0
+      settings: {}
+    Editor:
+      enabled: 1
+      settings:
+        CPU: AnyCPU
+        DefaultValueInitialized: true
+        OS: AnyOS
+    Linux:
+      enabled: 0
+      settings:
+        CPU: x86
+    Linux64:
+      enabled: 0
+      settings:
+        CPU: x86_64
+    OSXIntel:
+      enabled: 0
+      settings:
+        CPU: AnyCPU
+    OSXIntel64:
+      enabled: 0
+      settings:
+        CPU: AnyCPU
+    SamsungTV:
+      enabled: 0
+      settings:
+        STV_MODEL: STANDARD_13
+    WP8:
+      enabled: 0
+      settings:
+        CPU: AnyCPU
+        DontProcess: False
+        PlaceholderPath: 
+    Win:
+      enabled: 0
+      settings:
+        CPU: AnyCPU
+    Win64:
+      enabled: 0
+      settings:
+        CPU: AnyCPU
+    WindowsStoreApps:
+      enabled: 0
+      settings:
+        CPU: AnyCPU
+        DontProcess: False
+        PlaceholderPath: 
+        SDK: AnySDK
+    iOS:
+      enabled: 0
+      settings:
+        CompileFlags: 
+        FrameworkDependencies: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Plugins/KSPAssets/KSPAssets.dll.meta
@@ -1,1 +1,21 @@
+fileFormatVersion: 2
+guid: 7f5bed1f9aa762b41942b1832536a846
+timeCreated: 1454319588
+licenseType: Pro
+PluginImporter:
+  serializedVersion: 1
+  iconMap: {}
+  executionOrder: {}
+  isPreloaded: 0
+  platformData:
+    Any:
+      enabled: 1
+      settings: {}
+    Editor:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Plugins/KSPAssets/ReadMe.txt.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: 3ee644d0f5d6a744f9d2f7ab6e346c0f
+timeCreated: 1456140045
+licenseType: Pro
+TextScriptImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

 Binary files a/Assets/Plugins/KerbalEngineer.Unity.dll and b/Assets/Plugins/KerbalEngineer.Unity.dll differ
--- /dev/null
+++ b/Assets/Plugins/KerbalEngineer.Unity.dll.meta
@@ -1,1 +1,21 @@
+fileFormatVersion: 2
+guid: 4ffb1bf511e31af45bdeaa3d272d49d4
+timeCreated: 1457613014
+licenseType: Free
+PluginImporter:
+  serializedVersion: 1
+  iconMap: {}
+  executionOrder: {}
+  isPreloaded: 0
+  platformData:
+    Any:
+      enabled: 1
+      settings: {}
+    Editor:
+      enabled: 0
+      settings:
+        DefaultValueInitialized: true
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Prefabs.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 0c33c8c1a93dd2249b4d1bf169077a78
+folderAsset: yes
+timeCreated: 1457222170
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: prefabs
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Prefabs/FlightMenu.prefab.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: 2a64d6ba13a07d7438fd2e141e4157a8
+timeCreated: 1457613015
+licenseType: Free
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Prefabs/FlightMenuSection.prefab.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: 2147dc5ac8aa16a4ca2003dfcd024533
+timeCreated: 1457613015
+licenseType: Free
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Prefabs/Setting.prefab.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: 16146381062142047981225587168076
+timeCreated: 1457710740
+licenseType: Free
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Prefabs/SettingButton.prefab.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: 345debd9876196a4e95d8718febe5301
+timeCreated: 1457710933
+licenseType: Free
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Prefabs/SettingToggle.prefab.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: b0b78ee2755669241a6e82c70b5988cf
+timeCreated: 1457710992
+licenseType: Free
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Prefabs/Window.prefab.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: 1146896f042c04546abd10ef08dc0354
+timeCreated: 1457632616
+licenseType: Free
+NativeFormatImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Scenes.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 2e4ab16a0164fdf4f84c814ca9495a27
+folderAsset: yes
+timeCreated: 1457227379
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Scenes/main.unity.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: ad19e4eab46995a49bb549b93716d17a
+timeCreated: 1457613013
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Scenes/parts.unity.meta
@@ -1,1 +1,9 @@
+fileFormatVersion: 2
+guid: 7acc810afbef3ad4d806529a3dcb56bd
+timeCreated: 1459539554
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Scripts.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 1f7422cd34745d649bb149b57dee13af
+folderAsset: yes
+timeCreated: 1457221965
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Scripts/Editor.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 81f5a3b513213974c9c2438bbf0fd0c4
+folderAsset: yes
+timeCreated: 1457222059
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Scripts/Editor/BuildAssetBundles.cs.meta
@@ -1,1 +1,13 @@
+fileFormatVersion: 2
+guid: bd4e722ff5c69f34a90381d01b1376a2
+timeCreated: 1457613014
+licenseType: Free
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 405aeda35f216a14c88580cad5a58e75
+folderAsset: yes
+timeCreated: 1447334757
+licenseType: Pro
+DefaultImporter:
+  userData: 
+  assetBundleName: squadcore
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/KSPedia.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: ea681fdd8e1bcc2449f008a8ac4fdc92
+folderAsset: yes
+timeCreated: 1448011261
+licenseType: Pro
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/KSPedia/Backgrounds.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 47990fb03129e824caf678339b9eff94
+folderAsset: yes
+timeCreated: 1448011267
+licenseType: Pro
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/KSPedia/Backgrounds/BackgroundBlack.png.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: b1fc6fdc0f80cbf49b77f83ad3db33aa
+timeCreated: 1455648612
+licenseType: Pro
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 1024
+  textureSettings:
+    filterMode: -1
+    aniso: 16
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: KSPedia
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/KSPedia/Backgrounds/BackgroundBlue.png.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: e8621dd15bfcce340b91d8bbc8d9f084
+timeCreated: 1455648613
+licenseType: Pro
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 1024
+  textureSettings:
+    filterMode: -1
+    aniso: 16
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/KSPedia/Backgrounds/BackgroundBlueGrid.png.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: 647bbf5cf6c08c04c8d4b753202b0808
+timeCreated: 1455648610
+licenseType: Pro
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 1024
+  textureSettings:
+    filterMode: -1
+    aniso: 16
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/KSPedia/Backgrounds/BackgroundKSC.png.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: cdbc96a0c719a1d48901892fcf30182f
+timeCreated: 1455648613
+licenseType: Pro
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 1024
+  textureSettings:
+    filterMode: -1
+    aniso: 16
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/KSPedia/Backgrounds/BackgroundWhite.png.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: 7fbafb50c77e28d49a117a7810a321bf
+timeCreated: 1455648611
+licenseType: Pro
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 1024
+  textureSettings:
+    filterMode: -1
+    aniso: 16
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: KSPedia
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: bfea133dc2cd936468fd26de9985455d
+folderAsset: yes
+timeCreated: 1447334764
+licenseType: Pro
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/Alpha.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 6d85e30bba4b9974ab34d7d199c19c39
+timeCreated: 1447334820
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/AlphaSpecular.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 5342206a32fc49a44b5aa0b52a72a8b0
+timeCreated: 1447334820
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/Bumped.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: c9da217290ee74a43907fc1205e4c146
+timeCreated: 1447334822
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/BumpedSpecular.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: ac859b44038643d40b88f24aceac191c
+timeCreated: 1447334821
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/Cutoff.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: b3b035681f285f740b32cf2bc12a8de6
+timeCreated: 1447334822
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/CutoffBumped.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: bbe7a2e17e83a9a45bc517140d3ca1a6
+timeCreated: 1447334822
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/Diffuse.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 4eb23d6a8a22cd2408ed28ac1ce15ed3
+timeCreated: 1447334819
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/Emissive.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 59fa1cb2eebf7564ebb45f1250bba1d0
+timeCreated: 1447334820
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/EmissiveBumpedSpecular.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 8deb5d99e5582cb4fa66782c19ee43ad
+timeCreated: 1447334821
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/EmissiveSpecular.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 0785b2a0f9690d44dbdf4e24de04ca3e
+timeCreated: 1447334818
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/KSPParticle AddSmooth.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 57cb714d3a5ee604bb1098b92cdce428
+timeCreated: 1447334820
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/ParticleAdd.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: db1d6aee2b6c25c4fbf0e07e9076c6b5
+timeCreated: 1447334822
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/ParticleAlpha.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: a785e1a01d15b0345ac27359a32c9857
+timeCreated: 1447334821
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/SolidColorAlpha.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 28d4a56e9512d05479c0952c7b2fa008
+timeCreated: 1447334818
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/Specular.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 440ec76b6cd2107448cec7a61105b099
+timeCreated: 1447334819
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/SpecularBumpTransparent.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: ab0281620a104dd4ca96a6bf906f8011
+timeCreated: 1447334821
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/SpecularTransparent.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 4270ab78ac4263e4dba328c5b4c6eafb
+timeCreated: 1447334819
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/Unlit.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: ea11f8443dca92f4f816a6cddd06b775
+timeCreated: 1447334823
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/SquadCore/Shaders/UnlitTransparent.shader.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: e4d5952eef9f9814c8dddd4e0da8347a
+timeCreated: 1447334823
+licenseType: Pro
+ShaderImporter:
+  defaultTextures: []
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Testing.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: 8bb88b5ef17b72442a504c8ab8cb6910
+folderAsset: yes
+timeCreated: 1457227463
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Testing/background-editor.png.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: 696e4ea6d01cf324889c1a7fa0c2fb06
+timeCreated: 1457613015
+licenseType: Free
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 2048
+  textureSettings:
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- /dev/null
+++ b/Assets/Testing/background-flight.png.meta
@@ -1,1 +1,57 @@
+fileFormatVersion: 2
+guid: 4105bbb9c3877934f99f89c091ba0b8b
+timeCreated: 1457613015
+licenseType: Free
+TextureImporter:
+  fileIDToRecycleName: {}
+  serializedVersion: 2
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    linearTexture: 0
+    correctGamma: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: .25
+    normalMapFilter: 0
+  isReadable: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 0
+  cubemapConvolution: 0
+  cubemapConvolutionSteps: 8
+  cubemapConvolutionExponent: 1.5
+  seamlessCubemap: 0
+  textureFormat: -1
+  maxTextureSize: 2048
+  textureSettings:
+    filterMode: -1
+    aniso: -1
+    mipBias: -1
+    wrapMode: 1
+  nPOTScale: 0
+  lightmap: 0
+  rGBM: 0
+  compressionQuality: 50
+  allowsAlphaSplitting: 0
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: .5, y: .5}
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spritePixelsToUnits: 100
+  alphaIsTransparency: 1
+  textureType: 8
+  buildTargetSettings: []
+  spriteSheet:
+    sprites: []
+  spritePackingTag: 
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

file:b/Assets/XML.meta (new)
--- /dev/null
+++ b/Assets/XML.meta
@@ -1,1 +1,10 @@
+fileFormatVersion: 2
+guid: fef14382d4de3d34ca7abdf5eee105c2
+folderAsset: yes
+timeCreated: 1459537692
+licenseType: Free
+DefaultImporter:
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
 

--- a/Documents/CHANGES.txt
+++ b/Documents/CHANGES.txt
@@ -1,5 +1,13 @@
-1.1.0.2
+1.1.0.2, 2016-04-19, KSP Build #1230
+    Added: Altitude (terrain) readout now shows the altitude above underwater terrain when splashed down.
+    Added: Usage of the stock IPartMassModifier for handling the modifying of part module staged mass.
+    Added: Support for thrustTranformMultipliers
+    Changed: Fairing specific mass adjustments now make use of the generic staged mass modifier implementation.
+    Changed: App launcher button handling works with KSP build 1205 changes.
+    Changed: Impact lat/long readouts to use DMS form.
     Fixed: Log spam and physics issue caused when using the EngineerChip part due to a convex mesh collider (now uses a box collider).
+    Fixed: Issues with the disabling/enabling of the toolbar app launcher button in flight when in career mode.
+    Fixed: Bug with impact calculations.
 
 1.1.0.1, 2016-04-01, KSP Build #1179
     Fixed: Heat shields acting as staged decouplers when not set to be staged.

--- a/KerbalEngineer.Unity/CanvasGroupFader.cs
+++ b/KerbalEngineer.Unity/CanvasGroupFader.cs
@@ -100,6 +100,7 @@
                 yield return null;
             }
 
+            //print(m_CanvasGroup.alpha);
             callback?.Invoke();
 
             m_FadeCoroutine = null;

--- a/KerbalEngineer/AppLauncherButton.cs
+++ b/KerbalEngineer/AppLauncherButton.cs
@@ -28,6 +28,17 @@
         private ApplicationLauncherButton m_Button;
 
         /// <summary>
+        ///     Gets the wrapped application launcher button object.
+        /// </summary>
+        public ApplicationLauncherButton Button
+        {
+            get
+            {
+                return m_Button;
+            }
+        }
+
+        /// <summary>
         ///     Gets or sets the toggle button state.
         /// </summary>
         public bool IsOn
@@ -35,7 +46,7 @@
             get
             {
                 return m_Button != null &&
-                       m_Button.toggleButton.Button.interactable &&
+                       m_Button.IsEnabled &&
                        m_Button.toggleButton.CurrentState == UIRadioButton.State.True;
             }
             set
@@ -61,7 +72,7 @@
         /// </summary>
         public void Disable()
         {
-            if (m_Button != null && m_Button.toggleButton.Button.interactable)
+            if (m_Button != null && m_Button.IsEnabled)
             {
                 m_Button.Disable();
             }
@@ -72,7 +83,7 @@
         /// </summary>
         public void Enable()
         {
-            if (m_Button != null && m_Button.toggleButton.Button.interactable == false)
+            if (m_Button != null && !m_Button.IsEnabled)
             {
                 m_Button.Enable();
             }

--- a/KerbalEngineer/EngineerGlobals.cs
+++ b/KerbalEngineer/EngineerGlobals.cs
@@ -25,7 +25,7 @@
         /// <summary>
         ///     Current version of the Kerbal Engineer assembly.
         /// </summary>
-        public const string ASSEMBLY_VERSION = "1.1.0.1";
+        public const string ASSEMBLY_VERSION = "1.1.0.2";
 
         private static string assemblyFile;
         private static string assemblyName;

--- a/KerbalEngineer/Extensions/PartExtensions.cs
+++ b/KerbalEngineer/Extensions/PartExtensions.cs
@@ -100,7 +100,7 @@
             {
                 PartModule pm = part.Modules[i];
                 if (pm is IPartCostModifier)
-                    cost += (pm as IPartCostModifier).GetModuleCost(defaultCost);
+                    cost += (pm as IPartCostModifier).GetModuleCost(defaultCost, ModifierStagingSituation.CURRENT);
             }
             return cost;
         }

--- a/KerbalEngineer/Flight/FlightAppLauncher.cs
+++ b/KerbalEngineer/Flight/FlightAppLauncher.cs
@@ -27,7 +27,7 @@
     [KSPAddon(KSPAddon.Startup.Flight, false)]
     public class FlightAppLauncher : AppLauncherButton, IFlightAppLauncher
     {
-        private static FlightAppLauncher m_Instance;
+        private static FlightAppLauncher s_Instance;
         private FlightMenu m_FlightMenu;
         private GameObject m_MenuObject;
         private GameObject m_MenuPrefab;
@@ -39,7 +39,7 @@
         {
             get
             {
-                return m_Instance;
+                return s_Instance;
             }
         }
 
@@ -145,7 +145,7 @@
             base.Awake();
 
             // set singleton instance
-            m_Instance = this;
+            s_Instance = this;
 
             // cache menu prefab
             if (m_MenuPrefab == null && AssetBundleLoader.Prefabs != null)
@@ -175,6 +175,21 @@
         protected override void OnTrue()
         {
             Open();
+        }
+
+        protected virtual void Update()
+        {
+            if (Button == null)
+                return;
+
+            if (FlightEngineerCore.IsDisplayable && Button.IsEnabled == false)
+            {
+                Enable();
+            }
+            else if (FlightEngineerCore.IsDisplayable == false && Button.IsEnabled)
+            {
+                Disable();
+            }
         }
 
         /// <summary>

--- a/KerbalEngineer/Flight/FlightEngineerCore.cs
+++ b/KerbalEngineer/Flight/FlightEngineerCore.cs
@@ -290,6 +290,9 @@
         /// </summary>
         private void FixedUpdate()
         {
+            if (FlightGlobals.ActiveVessel == null)
+                return;
+
             try
             {
                 SectionLibrary.FixedUpdate();
@@ -351,6 +354,9 @@
         /// </summary>
         private void Update()
         {
+            if (FlightGlobals.ActiveVessel == null)
+                return;
+
             try
             {
                 SectionLibrary.Update();

--- /dev/null
+++ b/KerbalEngineer/Flight/Readouts/Miscellaneous/LogSimToggle.cs
@@ -1,1 +1,56 @@
+// 
+//     Kerbal Engineer Redux
+// 
+//     Copyright (C) 2014 CYBUTEK
+// 
+//     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/>.
+// 
 
+namespace KerbalEngineer.Flight.Readouts.Miscellaneous
+{
+    #region Using Directives
+
+    using Sections;
+    using UnityEngine;
+    using VesselSimulator;
+
+    #endregion
+
+    public class LogSimToggle : ReadoutModule
+    {
+        #region Constructors
+
+        public LogSimToggle()
+        {
+            this.Name = "Log Simulation";
+            this.Category = ReadoutCategory.GetCategory("Miscellaneous");
+            this.HelpString = "Shows a button that allows you to make the next run of the simulation code dump extra debugging output.";
+            this.IsDefault = false;
+        }
+
+        #endregion
+
+        #region Methods
+
+        public override void Draw(SectionModule section)
+        {
+            GUILayout.BeginHorizontal();
+            GUILayout.Label("Log Simulation: ", this.NameStyle);
+            SimManager.logOutput = GUILayout.Toggle(SimManager.logOutput, "ENABLED", this.ButtonStyle);
+            GUILayout.EndHorizontal();
+        }
+
+        #endregion
+    }
+}

--- a/KerbalEngineer/Flight/Readouts/ReadoutLibrary.cs
+++ b/KerbalEngineer/Flight/Readouts/ReadoutLibrary.cs
@@ -100,7 +100,6 @@
                 // Surface
 				readouts.Add(new AltitudeSeaLevel());
 				readouts.Add(new AltitudeTerrain());
-				readouts.Add(new AltitudeUnderWater());
                 readouts.Add(new VerticalSpeed());
                 readouts.Add(new VerticalAcceleration());
                 readouts.Add(new HorizontalSpeed());
@@ -193,6 +192,7 @@
                 readouts.Add(new SimulationDelay());
                 readouts.Add(new VectoredThrustToggle());
                 readouts.Add(new SystemTime());
+                readouts.Add(new LogSimToggle());
 
                 LoadHelpStrings();
             }

--- a/KerbalEngineer/Flight/Readouts/Surface/AltitudeTerrain.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/AltitudeTerrain.cs
@@ -1,7 +1,7 @@
 // 
 //     Kerbal Engineer Redux
 // 
-//     Copyright (C) 2014 CYBUTEK
+//     Copyright (C) 2016 CYBUTEK
 // 
 //     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
@@ -12,55 +12,36 @@
 //     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/>.
-// 
-
-#region Using Directives
-
-#endregion
+//  
 
 namespace KerbalEngineer.Flight.Readouts.Surface
 {
-    #region Using Directives
-
     using Extensions;
     using Sections;
-
-    #endregion
+    using Vessel = global::Vessel;
 
     public class AltitudeTerrain : ReadoutModule
     {
-        #region Constructors
-
         public AltitudeTerrain()
         {
-			this.Name = "Altitude (Terrain)";
-            this.Category = ReadoutCategory.GetCategory("Surface");
-            this.HelpString = "Shows the vessel's altitude above the terrain. Turns off if splashed.";
-            this.IsDefault = true;
+            Name = "Altitude (Terrain)";
+            Category = ReadoutCategory.GetCategory("Surface");
+            HelpString = "Shows the vessel's altitude above the terrain and water's surface, or altitude above underwater terrain whilst splashed down.";
+            IsDefault = true;
         }
 
-        #endregion
-
-        #region Methods
-
         public override void Draw(SectionModule section)
-		{
-			if (ScienceUtil.GetExperimentSituation (FlightGlobals.ActiveVessel) != ExperimentSituations.SrfSplashed) 
-			{
-				if (FlightGlobals.ActiveVessel.terrainAltitude > 0.0) 
-				{
-					this.DrawLine ((FlightGlobals.ship_altitude - FlightGlobals.ActiveVessel.terrainAltitude).ToDistance (), section.IsHud);
-				} 
-				else 
-				{
-					this.DrawLine ((FlightGlobals.ship_altitude).ToDistance (), section.IsHud);
-				}
-			}
+        {
+            if (FlightGlobals.ActiveVessel.terrainAltitude > 0.0 || FlightGlobals.ActiveVessel.situation == Vessel.Situations.SPLASHED)
+            {
+                DrawLine((FlightGlobals.ship_altitude - FlightGlobals.ActiveVessel.terrainAltitude).ToDistance(), section.IsHud);
+            }
+            else
+            {
+                DrawLine((FlightGlobals.ship_altitude).ToDistance(), section.IsHud);
+            }
         }
-
-        #endregion
     }
 }

--- a/KerbalEngineer/Flight/Readouts/Surface/AltitudeUnderWater.cs
+++ /dev/null
@@ -1,55 +1,1 @@
-// 
-//     Kerbal Engineer Redux
-// 
-//     Copyright (C) 2014 CYBUTEK
-// 
-//     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/>.
-// 
 
-#region Using Directives
-
-using KerbalEngineer.Extensions;
-using KerbalEngineer.Flight.Sections;
-
-#endregion
-
-namespace KerbalEngineer.Flight.Readouts.Surface
-{
-    public class AltitudeUnderWater : ReadoutModule
-    {
-        #region Constructors
-
-        public AltitudeUnderWater()
-        {
-            this.Name = "Altitude (Terrain Under Water)";
-            this.Category = ReadoutCategory.GetCategory("Surface");
-            this.HelpString = "While splashed shows the vessel's altitude to the under water Terrain.";
-            this.IsDefault = false;
-        }
-
-        #endregion
-
-        #region Methods: public
-
-        public override void Draw(SectionModule section)
-        {
-			if (ScienceUtil.GetExperimentSituation (FlightGlobals.ActiveVessel) == ExperimentSituations.SrfSplashed) 
-			{
-				this.DrawLine ((-(FlightGlobals.ActiveVessel.terrainAltitude - FlightGlobals.ship_altitude)).ToDistance (), section.IsHud);
-			}
-        }
-
-        #endregion
-    }
-}

--- a/KerbalEngineer/Flight/Readouts/Surface/HorizontalSpeed.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/HorizontalSpeed.cs
@@ -45,11 +45,12 @@
 
         public override void Draw(SectionModule section)
         {
-            // Used to do this but the bug-fix to horizontalSrfSpeed in KSP 1.0.3 actually made it worse so workaround
-            //this.DrawLine(FlightGlobals.ActiveVessel.horizontalSrfSpeed.ToSpeed(), section.IsHud);
-            var ves = FlightGlobals.ActiveVessel;
-            double horizSpeed = Math.Sqrt(ves.srfSpeed * ves.srfSpeed - ves.verticalSpeed * ves.verticalSpeed);
-            this.DrawLine(horizSpeed.ToSpeed(), section.IsHud);
+            this.DrawLine(FlightGlobals.ActiveVessel.horizontalSrfSpeed.ToSpeed(), section.IsHud);
+
+            // This workaround was used for KSP 1.0.3 and 1.0.4 where horizontalSrfSpeed was really badly broken
+            //var ves = FlightGlobals.ActiveVessel;
+            //double horizSpeed = Math.Sqrt(ves.srfSpeed * ves.srfSpeed - ves.verticalSpeed * ves.verticalSpeed);
+            //this.DrawLine(horizSpeed.ToSpeed(), section.IsHud);
         }
 
         #endregion

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactLatitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactLatitude.cs
@@ -21,6 +21,7 @@
 
 using KerbalEngineer.Extensions;
 using KerbalEngineer.Flight.Sections;
+using KerbalEngineer.Helpers;
 
 #endregion
 
@@ -46,7 +47,7 @@
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.DrawLine(ImpactProcessor.Latitude.ToAngle(), section.IsHud);
+                this.DrawLine(Units.ToAngleDMS(ImpactProcessor.Latitude) + (ImpactProcessor.Latitude < 0 ? " S" : " N"), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactLongitude.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactLongitude.cs
@@ -21,6 +21,7 @@
 
 using KerbalEngineer.Extensions;
 using KerbalEngineer.Flight.Sections;
+using KerbalEngineer.Helpers;
 
 #endregion
 
@@ -46,7 +47,7 @@
         {
             if (ImpactProcessor.ShowDetails)
             {
-                this.DrawLine(ImpactProcessor.Longitude.ToAngle(), section.IsHud);
+                this.DrawLine(Units.ToAngleDMS(ImpactProcessor.Longitude) + (ImpactProcessor.Longitude < 0.0 ? "W" : " E"), section.IsHud);
             }
         }
 

--- a/KerbalEngineer/Flight/Readouts/Surface/ImpactProcessor.cs
+++ b/KerbalEngineer/Flight/Readouts/Surface/ImpactProcessor.cs
@@ -113,7 +113,7 @@
                 this.impactAltitude = 0;
                 var e = FlightGlobals.ActiveVessel.orbit.eccentricity;
                 //get current position direction vector
-                var currentpos = this.RadiusDirection(FlightGlobals.ActiveVessel.orbit.trueAnomaly);
+                var currentpos = this.RadiusDirection(FlightGlobals.ActiveVessel.orbit.trueAnomaly * 180.0 / Math.PI);
                 //calculate longitude in inertial reference frame from that
                 var currentirflong = 180 * Math.Atan2(currentpos.x, currentpos.y) / Math.PI;
 

--- a/KerbalEngineer/KerbalEngineer.csproj
+++ b/KerbalEngineer/KerbalEngineer.csproj
@@ -54,6 +54,7 @@
     <Compile Include="Flight\ActionMenuGui.cs" />
     <Compile Include="Flight\FlightAppLauncher.cs" />
     <Compile Include="Flight\Presets\Preset.cs" />
+    <Compile Include="Flight\Readouts\Miscellaneous\LogSimToggle.cs" />
     <Compile Include="Flight\Readouts\Miscellaneous\SystemTime.cs" />
     <Compile Include="Flight\Readouts\Miscellaneous\VectoredThrustToggle.cs" />
     <Compile Include="Flight\Readouts\Miscellaneous\Separator.cs" />
@@ -97,7 +98,6 @@
     <Compile Include="Flight\Readouts\Rendezvous\SemiMajorAxis.cs" />
     <Compile Include="Flight\Readouts\Rendezvous\TimeToRelativeDescendingNode.cs" />
     <Compile Include="Flight\Readouts\Rendezvous\TimeToRelativeAscendingNode.cs" />
-    <Compile Include="Flight\Readouts\Surface\AltitudeUnderWater.cs" />
     <Compile Include="Flight\Readouts\Surface\ImpactBiome.cs" />
     <Compile Include="Flight\Readouts\Surface\Slope.cs" />
     <Compile Include="Flight\Readouts\Surface\Biome.cs" />

--- a/KerbalEngineer/VesselSimulator/AttachNodeSim.cs
+++ b/KerbalEngineer/VesselSimulator/AttachNodeSim.cs
@@ -51,7 +51,10 @@
             return nodeSim;
         }
 
-        static private void Reset(AttachNodeSim attachNodeSim) { }
+        static private void Reset(AttachNodeSim attachNodeSim)
+        {
+            attachNodeSim.attachedPartSim = null;
+        }
 
 
         public void Release()

--- a/KerbalEngineer/VesselSimulator/EngineSim.cs
+++ b/KerbalEngineer/VesselSimulator/EngineSim.cs
@@ -54,6 +54,7 @@
         {
             engineSim.resourceConsumptions.Reset();
             engineSim.resourceFlowModes.Reset();
+            engineSim.partSim = null;
             engineSim.actualThrust = 0;
             engineSim.isActive = false;
             engineSim.isp = 0;
@@ -72,26 +73,33 @@
         }
 
         public static EngineSim New(PartSim theEngine,
-                         double atmosphere,
-                         float machNumber,
-                         float maxFuelFlow,
-                         float minFuelFlow,
-                         float thrustPercentage,
-                         Vector3 vecThrust,
-                         FloatCurve atmosphereCurve,
-                         bool atmChangeFlow,
-                         FloatCurve atmCurve,
-                         FloatCurve velCurve,
-                         float currentThrottle,
-                         float IspG,
-                         bool throttleLocked,
-                         List<Propellant> propellants,
-                         bool active,
-                         float resultingThrust,
-                         List<Transform> thrustTransforms,
-                        LogMsg log)
-        {
-            EngineSim engineSim = pool.Borrow();
+									ModuleEngines engineMod,
+									double atmosphere,
+									float machNumber,
+									bool vectoredThrust,
+									bool fullThrust,
+									LogMsg log)
+        {
+            float maxFuelFlow = engineMod.maxFuelFlow;
+            float minFuelFlow = engineMod.minFuelFlow;
+            float thrustPercentage = engineMod.thrustPercentage;
+            List<Transform> thrustTransforms = engineMod.thrustTransforms;
+            List<float> thrustTransformMultipliers = engineMod.thrustTransformMultipliers;
+            Vector3 vecThrust = CalculateThrustVector(vectoredThrust ? thrustTransforms : null,
+                                                        vectoredThrust ? thrustTransformMultipliers : null,
+                                                        log);
+            FloatCurve atmosphereCurve = engineMod.atmosphereCurve;
+            bool atmChangeFlow = engineMod.atmChangeFlow;
+            FloatCurve atmCurve = engineMod.useAtmCurve ? engineMod.atmCurve : null;
+            FloatCurve velCurve = engineMod.useVelCurve ? engineMod.velCurve : null;
+            float currentThrottle = engineMod.currentThrottle;
+            float IspG = engineMod.g;
+            bool throttleLocked = engineMod.throttleLocked || fullThrust;
+            List<Propellant> propellants = engineMod.propellants;
+            bool active = engineMod.isOperational;
+            float resultingThrust = engineMod.resultingThrust;
+			
+			EngineSim engineSim = pool.Borrow();
 
             engineSim.isp = 0.0;
             engineSim.maxMach = 0.0f;
@@ -120,7 +128,7 @@
                     log.buf.AppendFormat("actual  = {0:g6}\n", engineSim.actualThrust);
                 }
 
-                if (throttleLocked)
+				if (throttleLocked)
                 {
                     if (log != null) log.buf.AppendLine("throttleLocked is true, using thrust for flowRate");
                     flowRate = GetFlowRate(engineSim.thrust, engineSim.isp);
@@ -129,7 +137,8 @@
                 {
                     if (currentThrottle > 0.0f && engineSim.partSim.isLanded == false)
                     {
-                        if (log != null) log.buf.AppendLine("throttled up and not landed, using actualThrust for flowRate");
+						// TODO: This bit doesn't work for RF engines
+						if (log != null) log.buf.AppendLine("throttled up and not landed, using actualThrust for flowRate");
                         flowRate = GetFlowRate(engineSim.actualThrust, engineSim.isp);
                     }
                     else
@@ -190,19 +199,44 @@
                 engineSim.resourceFlowModes.Add(propellant.id, (double)propellant.GetFlowMode());
             }
 
-            double thrustPerThrustTransform = engineSim.thrust / thrustTransforms.Count;
             for (int i = 0; i < thrustTransforms.Count; i++)
             {
                 Transform thrustTransform = thrustTransforms[i];
                 Vector3d direction = thrustTransform.forward.normalized;
                 Vector3d position = thrustTransform.position;
 
-                AppliedForce appliedForce = AppliedForce.New(direction * thrustPerThrustTransform, position);
+                AppliedForce appliedForce = AppliedForce.New(direction * engineSim.thrust * thrustTransformMultipliers[i], position);
                 engineSim.appliedForces.Add(appliedForce);
             }
 
             return engineSim;
         }
+
+		private static Vector3 CalculateThrustVector(List<Transform> thrustTransforms, List<float> thrustTransformMultipliers, LogMsg log)
+		{
+			if (thrustTransforms == null)
+			{
+				return Vector3.forward;
+			}
+
+			Vector3 thrustvec = Vector3.zero;
+			for (int i = 0; i < thrustTransforms.Count; ++i)
+			{
+				Transform trans = thrustTransforms[i];
+
+				if (log != null) log.buf.AppendFormat("Transform = ({0:g6}, {1:g6}, {2:g6})   length = {3:g6}\n", trans.forward.x, trans.forward.y, trans.forward.z, trans.forward.magnitude);
+
+				thrustvec -= (trans.forward * thrustTransformMultipliers[i]);
+			}
+
+			if (log != null) log.buf.AppendFormat("ThrustVec  = ({0:g6}, {1:g6}, {2:g6})   length = {3:g6}\n", thrustvec.x, thrustvec.y, thrustvec.z, thrustvec.magnitude);
+
+			thrustvec.Normalize();
+
+			if (log != null) log.buf.AppendFormat("ThrustVecN = ({0:g6}, {1:g6}, {2:g6})   length = {3:g6}\n", thrustvec.x, thrustvec.y, thrustvec.z, thrustvec.magnitude);
+
+			return thrustvec;
+		}
 
         public ResourceContainer ResourceConsumptions
         {

--- a/KerbalEngineer/VesselSimulator/PartSim.cs
+++ b/KerbalEngineer/VesselSimulator/PartSim.cs
@@ -56,8 +56,8 @@
         public bool isLanded;
         public bool isNoPhysics;
         public bool isSepratron;
-        public bool isFairing;
-        public float fairingMass;
+        //public bool isFairing;
+        public float postStageMassAdjust;
         public int stageIndex;
         public String name;
         public String noCrossFeedNodeKey;
@@ -86,9 +86,11 @@
             }
             partSim.attachNodes.Clear();
             partSim.fuelTargets.Clear();
+            partSim.surfaceMountFuelTargets.Clear();
             partSim.resourceDrains.Reset();
             partSim.resourceFlowStates.Reset();
             partSim.resources.Reset();
+            partSim.parent = null;
             partSim.baseCost = 0d;
             partSim.baseMass = 0d;
             partSim.baseMassForCoM = 0d;
@@ -100,62 +102,77 @@
             pool.Release(this);
         }
 
-        public static PartSim New(Part thePart, int id, double atmosphere, LogMsg log)
+        public static PartSim New(Part p, int id, double atmosphere, LogMsg log)
         {
             PartSim partSim = pool.Borrow();
 
-            partSim.part = thePart;
-            partSim.centerOfMass = thePart.transform.TransformPoint(thePart.CoMOffset);
+            partSim.part = p;
+            partSim.centerOfMass = p.transform.TransformPoint(p.CoMOffset);
             partSim.partId = id;
-            partSim.name = partSim.part.partInfo.name;
+            partSim.name = p.partInfo.name;
 
             if (log != null) log.buf.AppendLine("Create PartSim for " + partSim.name);
 
             partSim.parent = null;
-            partSim.parentAttach = partSim.part.attachMode;
-            partSim.fuelCrossFeed = partSim.part.fuelCrossFeed;
-            partSim.noCrossFeedNodeKey = partSim.part.NoCrossFeedNodeKey;
-            partSim.decoupledInStage = partSim.DecoupledInStage(partSim.part);
-            partSim.isFuelLine = partSim.part.HasModule<CModuleFuelLine>();
-            partSim.isFuelTank = partSim.part is FuelTank;
+            partSim.parentAttach = p.attachMode;
+            partSim.fuelCrossFeed = p.fuelCrossFeed;
+            partSim.noCrossFeedNodeKey = p.NoCrossFeedNodeKey;
+            partSim.decoupledInStage = partSim.DecoupledInStage(p);
+            partSim.isFuelLine = p.HasModule<CModuleFuelLine>();
+            partSim.isFuelTank = p is FuelTank;
             partSim.isSepratron = partSim.IsSepratron();
-            partSim.isFairing = partSim.IsFairing(partSim.part);
-            partSim.inverseStage = partSim.part.inverseStage;
+            partSim.inverseStage = p.inverseStage;
             //MonoBehaviour.print("inverseStage = " + inverseStage);
 
-            partSim.baseCost = partSim.part.GetCostDry();
+            partSim.baseCost = p.GetCostDry();
 
             if (log != null)
             {
-                log.buf.AppendLine("Parent part = " + (partSim.part.parent == null ? "null" : partSim.part.parent.partInfo.name));
-                log.buf.AppendLine("physicalSignificance = " + partSim.part.physicalSignificance);
-                log.buf.AppendLine("PhysicsSignificance = " + partSim.part.PhysicsSignificance);
+                log.buf.AppendLine("Parent part = " + (p.parent == null ? "null" : p.parent.partInfo.name));
+                log.buf.AppendLine("physicalSignificance = " + p.physicalSignificance);
+                log.buf.AppendLine("PhysicsSignificance = " + p.PhysicsSignificance);
             }
 
             // Work out if the part should have no physical significance
             // The root part is never "no physics"
-            partSim.isNoPhysics = partSim.part.physicalSignificance == Part.PhysicalSignificance.NONE ||
-                                    partSim.part.PhysicsSignificance == 1;
-
-            if (partSim.part.HasModule<LaunchClamp>())
+            partSim.isNoPhysics = p.physicalSignificance == Part.PhysicalSignificance.NONE ||
+                                    p.PhysicsSignificance == 1;
+
+            if (p.HasModule<LaunchClamp>())
             {
                 partSim.realMass = 0d;
                 if (log != null) log.buf.AppendLine("Ignoring mass of launch clamp");
             }
             else
             {
-                partSim.realMass = partSim.part.mass;
-                if (log != null) log.buf.AppendLine("Using part.mass of " + partSim.part.mass);
-            }
-
-            if (partSim.isFairing)
-            {
-                partSim.fairingMass = partSim.part.GetModuleMass((float)partSim.realMass);
-            }
-
-            for (int i = 0; i < partSim.part.Resources.Count; i++)
-            {
-                PartResource resource = partSim.part.Resources[i];
+                partSim.realMass = p.mass;
+                if (log != null) log.buf.AppendLine("Using part.mass of " + p.mass);
+            }
+
+            partSim.postStageMassAdjust = 0f;
+            if (log != null) log.buf.AppendLine("Calculating postStageMassAdjust, prefabMass = " + p.prefabMass);
+            int count = p.Modules.Count;
+            for (int i = 0; i < count; i++)
+            {
+                if (log != null) log.buf.AppendLine("Module: " + p.Modules[i].moduleName);
+                IPartMassModifier partMassModifier = p.Modules[i] as IPartMassModifier;
+                if (partMassModifier != null)
+                {
+                    if (log != null) log.buf.AppendLine("ChangeWhen = " + partMassModifier.GetModuleMassChangeWhen());
+                    if (partMassModifier.GetModuleMassChangeWhen() == ModifierChangeWhen.STAGED)
+                    {
+                        float preStage = partMassModifier.GetModuleMass(p.prefabMass, ModifierStagingSituation.UNSTAGED);
+                        float postStage = partMassModifier.GetModuleMass(p.prefabMass, ModifierStagingSituation.STAGED);
+                        if (log != null) log.buf.AppendLine("preStage = " + preStage + "   postStage = " + postStage);
+                        partSim.postStageMassAdjust += (postStage - preStage);
+                    }
+                }
+            }
+            if (log != null) log.buf.AppendLine("postStageMassAdjust = " + partSim.postStageMassAdjust);
+
+            for (int i = 0; i < p.Resources.Count; i++)
+            {
+                PartResource resource = p.Resources[i];
 
                 // Make sure it isn't NaN as this messes up the part mass and hence most of the values
                 // This can happen if a resource capacity is 0 and tweakable
@@ -173,17 +190,17 @@
                 }
             }
 
-            partSim.hasVessel = (partSim.part.vessel != null);
-            partSim.isLanded = partSim.hasVessel && partSim.part.vessel.Landed;
+            partSim.hasVessel = (p.vessel != null);
+            partSim.isLanded = partSim.hasVessel && p.vessel.Landed;
             if (partSim.hasVessel)
             {
-                partSim.vesselName = partSim.part.vessel.vesselName;
-                partSim.vesselType = partSim.part.vesselType;
-            }
-            partSim.initialVesselName = partSim.part.initialVesselName;
-
-            partSim.hasMultiModeEngine = partSim.part.HasModule<MultiModeEngine>();
-            partSim.hasModuleEngines = partSim.part.HasModule<ModuleEngines>();
+                partSim.vesselName = p.vessel.vesselName;
+                partSim.vesselType = p.vesselType;
+            }
+            partSim.initialVesselName = p.initialVesselName;
+
+            partSim.hasMultiModeEngine = p.HasModule<MultiModeEngine>();
+            partSim.hasModuleEngines = p.HasModule<ModuleEngines>();
 
             partSim.isEngine = partSim.hasMultiModeEngine || partSim.hasModuleEngines;
 
@@ -234,27 +251,13 @@
                     {
                         if (log != null) log.buf.AppendLine("Module: " + engine.moduleName);
 
-                        Vector3 thrustvec = this.CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log);
-
                         EngineSim engineSim = EngineSim.New(
                             this,
-                            atmosphere,
+							engine,
+							atmosphere,
                             (float)mach,
-                            engine.maxFuelFlow,
-                            engine.minFuelFlow,
-                            engine.thrustPercentage,
-                            thrustvec,
-                            engine.atmosphereCurve,
-                            engine.atmChangeFlow,
-                            engine.useAtmCurve ? engine.atmCurve : null,
-                            engine.useVelCurve ? engine.velCurve : null,
-                            engine.currentThrottle,
-                            engine.g,
-                            engine.throttleLocked || fullThrust,
-                            engine.propellants,
-                            engine.isOperational,
-                            engine.resultingThrust,
-                            engine.thrustTransforms,
+							vectoredThrust,
+							fullThrust,
                             log);
                         allEngines.Add(engineSim);
                     }
@@ -268,28 +271,14 @@
                     ModuleEngines engine = engines[i];
                     if (log != null) log.buf.AppendLine("Module: " + engine.moduleName);
 
-                    Vector3 thrustvec = this.CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log);
-
                     EngineSim engineSim = EngineSim.New(
                         this,
+						engine,
                         atmosphere,
                         (float)mach,
-                        engine.maxFuelFlow,
-                        engine.minFuelFlow,
-                        engine.thrustPercentage,
-                        thrustvec,
-                        engine.atmosphereCurve,
-                        engine.atmChangeFlow,
-                        engine.useAtmCurve ? engine.atmCurve : null,
-                        engine.useVelCurve ? engine.velCurve : null,
-                        engine.currentThrottle,
-                        engine.g,
-                        engine.throttleLocked || fullThrust,
-                        engine.propellants,
-                        engine.isOperational,
-                        engine.resultingThrust,
-                        engine.thrustTransforms,
-                        log);
+						vectoredThrust,
+						fullThrust,
+						log);
                     allEngines.Add(engineSim);
                 }
             }
@@ -417,9 +406,9 @@
                 mass += resources.GetResourceMass(resources.Types[i]);
             }
 
-            if (isFairing && currentStage > inverseStage)
-            {
-                mass += fairingMass;
+            if (postStageMassAdjust != 0.0 && currentStage <= inverseStage)
+            {
+                mass += postStageMassAdjust;
             }
 
             return mass;
@@ -639,6 +628,17 @@
                     this.fuelTargets[i] = null;
                 }
             }
+
+            // Loop through the surface attached fuel targets (surface attached parts for new flow modes)
+            for (int i = 0; i < this.surfaceMountFuelTargets.Count; i++)
+            {
+                PartSim fuelTargetSim = this.surfaceMountFuelTargets[i];
+                // If the part is in the set then "remove" it by clearing the PartSim reference
+                if (fuelTargetSim != null && partSims.Contains(fuelTargetSim))
+                {
+                    this.surfaceMountFuelTargets[i] = null;
+                }
+            }
         }
 
         public void SetupAttachNodes(Dictionary<Part, PartSim> partSimLookup, LogMsg log)
@@ -780,11 +780,6 @@
             return thePart.GetProtoModuleDecoupler()?.IsStageEnabled ?? false;
         }
 
-        private bool IsFairing(Part thePart)
-        {
-            return thePart.HasModule<ModuleProceduralFairing>();
-        }
-
         private bool IsSepratron()
         {
             if (!part.ActivatesEvenIfDisconnected)

 Binary files a/Output/KerbalEngineer/KerbalEngineer.Unity.dll and b/Output/KerbalEngineer/KerbalEngineer.Unity.dll differ
 Binary files a/Output/KerbalEngineer/KerbalEngineer.dll and b/Output/KerbalEngineer/KerbalEngineer.dll differ
--- a/Output/KerbalEngineer/KerbalEngineer.version
+++ b/Output/KerbalEngineer/KerbalEngineer.version
@@ -6,7 +6,7 @@
 		"MAJOR":1,
 		"MINOR":1,
 		"PATCH":0,
-		"BUILD":1
+		"BUILD":2
 	},
 	"KSP_VERSION":
 	{

 Binary files a/Output/KerbalEngineer/MiniAVC.dll and b/Output/KerbalEngineer/MiniAVC.dll differ