Added build overlay and flight engineer options to the settings window.
Added build overlay and flight engineer options to the settings window.

 Binary files a/Assets/Plugins/KerbalEngineer.Unity.dll and b/Assets/Plugins/KerbalEngineer.Unity.dll differ
--- a/Assets/Prefabs/Setting.prefab
+++ b/Assets/Prefabs/Setting.prefab
@@ -133,9 +133,9 @@
     m_Right: 0
     m_Top: 0
     m_Bottom: 0
-  m_ChildAlignment: 4
-  m_Spacing: 0
-  m_ChildForceExpandWidth: 1
+  m_ChildAlignment: 5
+  m_Spacing: 2
+  m_ChildForceExpandWidth: 0
   m_ChildForceExpandHeight: 1
 --- !u!222 &22284884
 CanvasRenderer:
@@ -155,10 +155,10 @@
   m_Children: []
   m_Father: {fileID: 22475724}
   m_RootOrder: 1
-  m_AnchorMin: {x: 1, y: 0}
+  m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
   m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 150, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 1, y: .5}
 --- !u!224 &22457826
 RectTransform:
@@ -173,9 +173,9 @@
   m_Father: {fileID: 22475724}
   m_RootOrder: 0
   m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: 0, y: 0}
-  m_SizeDelta: {x: 0, y: 0}
+  m_AnchorMax: {x: .5, y: 1}
+  m_AnchoredPosition: {x: 2.5, y: 0}
+  m_SizeDelta: {x: -5, y: 0}
   m_Pivot: {x: .5, y: .5}
 --- !u!224 &22475724
 RectTransform:
@@ -239,6 +239,34 @@
       propertyPath: m_PreferredWidth
       value: 400
       objectReference: {fileID: 0}
+    - target: {fileID: 0}
+      propertyPath: m_AnchorMin.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 0}
+      propertyPath: m_SizeDelta.x
+      value: -5
+      objectReference: {fileID: 0}
+    - target: {fileID: 0}
+      propertyPath: m_AnchorMax.x
+      value: .5
+      objectReference: {fileID: 0}
+    - target: {fileID: 0}
+      propertyPath: m_Spacing
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 0}
+      propertyPath: m_AnchoredPosition.x
+      value: 2.5
+      objectReference: {fileID: 0}
+    - target: {fileID: 0}
+      propertyPath: m_ChildForceExpandWidth
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 0}
+      propertyPath: m_ChildAlignment
+      value: 5
+      objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_ParentPrefab: {fileID: 0}
   m_RootGameObject: {fileID: 139342}

--- a/Assets/Prefabs/SettingButton.prefab
+++ b/Assets/Prefabs/SettingButton.prefab
@@ -12,6 +12,7 @@
   - 114: {fileID: 11467924}
   - 114: {fileID: 11423954}
   - 114: {fileID: 11425436}
+  - 114: {fileID: 11431978}
   m_Layer: 5
   m_Name: SettingButton
   m_TagString: Untagged
@@ -121,6 +122,24 @@
   m_Name: 
   m_EditorClassIdentifier: 
   m_ElementType: 3
+--- !u!114 &11431978
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 168214}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: -1
+  m_PreferredHeight: -1
+  m_FlexibleWidth: -1
+  m_FlexibleHeight: -1
 --- !u!114 &11467924
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -230,6 +249,10 @@
       propertyPath: m_FontData.m_FontStyle
       value: 1
       objectReference: {fileID: 0}
+    - target: {fileID: 0}
+      propertyPath: m_FlexibleWidth
+      value: -1
+      objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_ParentPrefab: {fileID: 0}
   m_RootGameObject: {fileID: 168214}

--- a/Assets/Prefabs/SettingToggle.prefab
+++ b/Assets/Prefabs/SettingToggle.prefab
@@ -29,6 +29,7 @@
   - 114: {fileID: 11474744}
   - 114: {fileID: 11492986}
   - 114: {fileID: 11473012}
+  - 114: {fileID: 11469566}
   m_Layer: 5
   m_Name: SettingToggle
   m_TagString: Untagged
@@ -80,6 +81,24 @@
   m_FillAmount: 1
   m_FillClockwise: 1
   m_FillOrigin: 0
+--- !u!114 &11469566
+MonoBehaviour:
+  m_ObjectHideFlags: 1
+  m_PrefabParentObject: {fileID: 0}
+  m_PrefabInternal: {fileID: 100100000}
+  m_GameObject: {fileID: 153220}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: -1
+  m_PreferredHeight: -1
+  m_FlexibleWidth: -1
+  m_FlexibleHeight: -1
 --- !u!114 &11473012
 MonoBehaviour:
   m_ObjectHideFlags: 1
@@ -314,6 +333,10 @@
       propertyPath: toggleTransition
       value: 0
       objectReference: {fileID: 0}
+    - target: {fileID: 0}
+      propertyPath: m_FlexibleWidth
+      value: -1
+      objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_ParentPrefab: {fileID: 0}
   m_RootGameObject: {fileID: 153220}

--- a/KerbalEngineer.CSharp.Editor.csproj
+++ b/KerbalEngineer.CSharp.Editor.csproj
@@ -55,6 +55,9 @@
     <Reference Include="UnityEditor">
       <HintPath>Library\UnityAssemblies\UnityEditor.dll</HintPath>
     </Reference>
+    <Reference Include="UnityEngine.Advertisements">
+      <HintPath>Library\UnityAssemblies\UnityEngine.Advertisements.dll</HintPath>
+    </Reference>
     <Reference Include="UnityEditor.Advertisements">
       <HintPath>Library\UnityAssemblies\UnityEditor.Advertisements.dll</HintPath>
     </Reference>
@@ -69,6 +72,9 @@
     </Reference>
     <Reference Include="UnityEditor.Networking">
       <HintPath>Library\UnityAssemblies\UnityEditor.Networking.dll</HintPath>
+    </Reference>
+    <Reference Include="UnityEngine.Analytics">
+      <HintPath>Library\UnityAssemblies\UnityEngine.Analytics.dll</HintPath>
     </Reference>
     <Reference Include="UnityEditor.Graphs">
       <HintPath>Library\UnityAssemblies\UnityEditor.Graphs.dll</HintPath>

--- a/KerbalEngineer.Unity/Setting.cs
+++ b/KerbalEngineer.Unity/Setting.cs
@@ -1,5 +1,6 @@
 namespace KerbalEngineer.Unity
 {
+    using System;
     using UnityEngine;
     using UnityEngine.Events;
     using UnityEngine.UI;
@@ -18,36 +19,53 @@
         [SerializeField]
         private GameObject m_SettingTogglePrefab = null;
 
-        public GameObject AddButton(string text, UnityAction onClick)
+        private Action m_OnUpdate;
+
+        public Button AddButton(string text, float width, UnityAction onClick)
         {
-            GameObject buttonObject = null;
+            Button button = null;
 
             if (m_SettingButtonPrefab != null)
             {
-                buttonObject = Instantiate(m_SettingButtonPrefab);
+                GameObject buttonObject = Instantiate(m_SettingButtonPrefab);
+                if (buttonObject != null)
+                {
+                    button = buttonObject.GetComponent<Button>();
 
-                SetParentTransform(buttonObject, m_ButtonsTransform);
-                SetText(buttonObject, text);
-                SetButton(buttonObject, onClick);
+                    SetParentTransform(buttonObject, m_ButtonsTransform);
+                    SetWidth(buttonObject, width);
+                    SetText(buttonObject, text);
+                    SetButton(buttonObject, onClick);
+                }
             }
 
-            return buttonObject;
+            return button;
         }
 
-        public GameObject AddToggle(string text, UnityAction<bool> onValueChanged)
+        public Toggle AddToggle(string text, float width, UnityAction<bool> onValueChanged)
         {
-            GameObject toggleObject = null;
+            Toggle toggle = null;
 
             if (m_SettingTogglePrefab != null)
             {
-                toggleObject = Instantiate(m_SettingTogglePrefab);
+                GameObject toggleObject = Instantiate(m_SettingTogglePrefab);
+                if (toggleObject != null)
+                {
+                    toggle = toggleObject.GetComponent<Toggle>();
 
-                SetParentTransform(toggleObject, m_ButtonsTransform);
-                SetText(toggleObject, text);
-                SetToggle(toggleObject, onValueChanged);
+                    SetParentTransform(toggleObject, m_ButtonsTransform);
+                    SetWidth(toggleObject, width);
+                    SetText(toggleObject, text);
+                    SetToggle(toggleObject, onValueChanged);
+                }
             }
 
-            return toggleObject;
+            return toggle;
+        }
+
+        public void AddUpdateHandler(Action onUpdate)
+        {
+            m_OnUpdate = onUpdate;
         }
 
         public void SetLabel(string text)
@@ -56,6 +74,11 @@
             {
                 m_Label.text = text;
             }
+        }
+
+        protected virtual void Update()
+        {
+            m_OnUpdate?.Invoke();
         }
 
         private static void SetButton(GameObject buttonObject, UnityAction onClick)
@@ -101,5 +124,24 @@
                 }
             }
         }
+
+        private static void SetWidth(GameObject parentObject, float width)
+        {
+            if (parentObject != null)
+            {
+                LayoutElement layout = parentObject.GetComponent<LayoutElement>();
+                if (layout != null)
+                {
+                    if (width > 0.0f)
+                    {
+                        layout.preferredWidth = width;
+                    }
+                    else
+                    {
+                        layout.flexibleWidth = 1.0f;
+                    }
+                }
+            }
+        }
     }
 }

--- a/KerbalEngineer/Settings/SettingsWindow.cs
+++ b/KerbalEngineer/Settings/SettingsWindow.cs
@@ -1,10 +1,16 @@
 namespace KerbalEngineer.Settings
 {
+    using System;
+    using Editor;
+    using Flight;
     using KeyBinding;
     using Unity;
     using Unity.UI;
+    using UnityEngine;
+    using UnityEngine.Events;
+    using UnityEngine.UI;
 
-    public static class SettingsWindow
+    public class SettingsWindow : MonoBehaviour
     {
         private static Window m_Window;
 
@@ -20,13 +26,65 @@
         {
             if (m_Window == null)
             {
-                m_Window = StyleManager.CreateWindow("SETTINGS", 400.0f);
+                m_Window = StyleManager.CreateWindow("SETTINGS", 600.0f);
+
                 Setting keyBindings = StyleManager.CreateSetting("Key Bindings", m_Window);
-                if (keyBindings != null)
+                AddButton(keyBindings, "EDIT KEY BINDINGS", 304.0f, KeyBinder.Show);
+
+
+                Setting buildOverlay = StyleManager.CreateSetting("Build Engineer Overlay", m_Window);
+                Toggle buildOverlayVisible = AddToggle(buildOverlay, "VISIBLE", 100.0f, value => BuildOverlay.Visible = value);
+                Toggle buildOverlayNamesOnly = AddToggle(buildOverlay, "NAMES ONLY", 100.0f, value => BuildOverlayPartInfo.NamesOnly = value);
+                Toggle buildOverlayClickToOpen = AddToggle(buildOverlay, "CLICK TO OPEN", 100.0f, value => BuildOverlayPartInfo.ClickToOpen = value);
+                AddUpdateHandler(buildOverlay, () =>
                 {
-                    keyBindings.AddButton("EDIT KEY BINDINGS", KeyBinder.Show);
-                }
+                    buildOverlayVisible.isOn = BuildOverlay.Visible;
+                    buildOverlayNamesOnly.isOn = BuildOverlayPartInfo.NamesOnly;
+                    buildOverlayClickToOpen.isOn = BuildOverlayPartInfo.ClickToOpen;
+                });
+
+                Setting flightActivationMode = StyleManager.CreateSetting("Flight Engineer Activation Mode", m_Window);
+                Toggle flightActivationModeCareer = AddToggle(flightActivationMode, "CAREER", 100.0f, value => FlightEngineerCore.IsCareerMode = value);
+                Toggle flightActivationModePartless = AddToggle(flightActivationMode, "PARTLESS", 100.0f, value => FlightEngineerCore.IsCareerMode = !value);
+                AddUpdateHandler(flightActivationMode, () =>
+                {
+                    flightActivationModeCareer.isOn = FlightEngineerCore.IsCareerMode;
+                    flightActivationModePartless.isOn = !FlightEngineerCore.IsCareerMode;
+                });
+
                 StyleManager.Process(m_Window);
+            }
+        }
+
+        private static Button AddButton(Setting setting, string text, float width, UnityAction onClick)
+        {
+            Button button = null;
+
+            if (setting != null)
+            {
+                button = setting.AddButton(text,width, onClick);
+            }
+
+            return button;
+        }
+
+        private static Toggle AddToggle(Setting setting, string text,  float width,UnityAction<bool> onValueChanged)
+        {
+            Toggle toggle = null;
+
+            if (setting != null)
+            {
+                toggle = setting.AddToggle(text, width, onValueChanged);
+            }
+
+            return toggle;
+        }
+
+        private static void AddUpdateHandler(Setting setting, Action onUpdate)
+        {
+            if (setting != null && onUpdate != null)
+            {
+                setting.AddUpdateHandler(onUpdate);
             }
         }
     }

 Binary files a/Output/KerbalEngineer/KerbalEngineer and b/Output/KerbalEngineer/KerbalEngineer differ
 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
 Binary files a/Output/KerbalEngineer/prefabs and b/Output/KerbalEngineer/prefabs differ
--- a/Output/KerbalEngineer/prefabs.manifest
+++ b/Output/KerbalEngineer/prefabs.manifest
@@ -1,12 +1,12 @@
 ManifestFileVersion: 0
-CRC: 1698654434
+CRC: 3210499501
 Hashes:
   AssetFileHash:
     serializedVersion: 2
-    Hash: 720182f6f522b8ce002cea3c19195a98
+    Hash: 82a83dd0d6754676160fa0160fdd2f82
   TypeTreeHash:
     serializedVersion: 2
-    Hash: 82e496775b4e38025794c1bd0deaafef
+    Hash: f08f4b318e7775189aba716ae3ef79f9
 HashAppended: 0
 ClassTypes:
 - Class: 1
@@ -38,11 +38,11 @@
 - Class: 114
   Script: {fileID: -1842827791, guid: 4ffb1bf511e31af45bdeaa3d272d49d4, type: 3}
 - Class: 114
+  Script: {fileID: 644905346, guid: 4ffb1bf511e31af45bdeaa3d272d49d4, type: 3}
+- Class: 114
   Script: {fileID: 323546239, guid: 4ffb1bf511e31af45bdeaa3d272d49d4, type: 3}
 - Class: 114
   Script: {fileID: 604723565, guid: 4ffb1bf511e31af45bdeaa3d272d49d4, type: 3}
-- Class: 114
-  Script: {fileID: 644905346, guid: 4ffb1bf511e31af45bdeaa3d272d49d4, type: 3}
 - Class: 115
   Script: {instanceID: 0}
 - Class: 128